diff --git a/.gitignore b/.gitignore index 7528adb..6525fc3 100644 --- a/.gitignore +++ b/.gitignore @@ -132,3 +132,5 @@ bundle/ # ide stuff .idea/ +/dist +/lib diff --git a/dist/cofhe.esm.js b/dist/cofhe.esm.js new file mode 100644 index 0000000..c861263 --- /dev/null +++ b/dist/cofhe.esm.js @@ -0,0 +1,15686 @@ +function assertIs(is, expected, value) { + if (!is) { + throw new Error(`Expected value which is \`${expected}\`, received value of type \`${typeof value}\`.`); + } +} +function isString(value) { + const is = typeof value === "string"; + assertIs(is, "string", value); +} +function isNumber(value) { + const is = typeof value === "number" && !Number.isNaN(value); + assertIs(is, "number", value); +} +function isBigIntOrNumber(value) { + const is = typeof value === "bigint"; + if (!is) { + try { + isNumber(value); + } + catch (e) { + throw new Error(`Value ${value} is not a number or bigint: ${typeof value}`); + } + } +} + +const fromHexString = (hexString) => { + const cleanString = hexString.length % 2 === 1 ? `0${hexString}` : hexString; + const arr = cleanString.replace(/^0x/, "").match(/.{1,2}/g); + if (!arr) + return new Uint8Array(); + return new Uint8Array(arr.map((byte) => parseInt(byte, 16))); +}; +const toHexString$1 = (bytes) => bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, "0"), ""); +function toBigInt(value) { + return ethersToBigInt(value); +} +function toBeArray(value) { + return ethersToBeArray(value); +} +const Nibbles = "0123456789abcdef"; +// IEEE 754 support 53-bits of mantissa +const maxValue = 0x1fffffffffffff; +const BN_0$1 = BigInt(0); +/* + * Converts %%value%% to a BigInt. If %%value%% is a Uint8Array, it + * is treated as Big Endian data. + */ +function ethersToBigInt(value) { + if (value instanceof Uint8Array) { + let result = "0x0"; + for (const v of value) { + result += Nibbles[v >> 4]; + result += Nibbles[v & 0x0f]; + } + return BigInt(result); + } + return getBigInt(value); +} +function ethersToBeArray(_value) { + const value = getUint(_value); + if (value === BN_0$1) { + return new Uint8Array([]); + } + let hex = value.toString(16); + if (hex.length % 2) { + hex = "0" + hex; + } + const result = new Uint8Array(hex.length / 2); + for (let i = 0; i < result.length; i++) { + const offset = i * 2; + result[i] = parseInt(hex.substring(offset, offset + 2), 16); + } + return result; +} +/** + * Returns %%value%% as a bigint, validating it is valid as a bigint + * value and that it is positive. + */ +function getUint(value) { + const result = getBigInt(value); + assertArgument$1(result >= BN_0$1, "unsigned value cannot be negative"); + return result; +} +/** + * Gets a BigInt from %%value%%. If it is an invalid value for + * a BigInt, then an ArgumentError will be thrown for %%name%%. + */ +function getBigInt(value) { + switch (typeof value) { + case "bigint": + return value; + case "number": + assertArgument$1(Number.isInteger(value), "underflow"); + assertArgument$1(value >= -maxValue && value <= maxValue, "overflow"); + return BigInt(value); + case "string": + try { + if (value === "") { + throw new Error("empty string"); + } + if (value[0] === "-" && value[1] !== "-") { + return -BigInt(value.substring(1)); + } + return BigInt(value); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } + catch (e) { + assertArgument$1(false, `invalid BigNumberish string: ${e.message}`); + } + } + assertArgument$1(false, "invalid BigNumberish value"); +} +function assertArgument$1(check, message) { + if (!check) { + throw new Error(message); + } +} +// Uint8Array conversions +const stringToUint8Array = (value) => { + return new Uint8Array(value.split("").map((c) => c.charCodeAt(0))); +}; +const bigintToUint8Array = (bigNum) => { + const byteLength = 32; + const byteArray = new Uint8Array(byteLength); + // Create a BigInt mask for each byte + const mask = BigInt(0xff); + // Initialize an index to start from the end of the array + for (let i = 0; i < byteLength; i++) { + // Extract the last byte and assign it to the corresponding position in the array + byteArray[byteLength - 1 - i] = Number(bigNum & mask); + // Shift bigint right by 8 bits to process the next byte in the next iteration + bigNum >>= BigInt(8); + } + return byteArray; +}; + +var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function getAugmentedNamespace(n) { + if (n.__esModule) return n; + var f = n.default; + if (typeof f == "function") { + var a = function a () { + if (this instanceof a) { + return Reflect.construct(f, arguments, this.constructor); + } + return f.apply(this, arguments); + }; + a.prototype = f.prototype; + } else a = {}; + Object.defineProperty(a, '__esModule', {value: true}); + Object.keys(n).forEach(function (k) { + var d = Object.getOwnPropertyDescriptor(n, k); + Object.defineProperty(a, k, d.get ? d : { + enumerable: true, + get: function () { + return n[k]; + } + }); + }); + return a; +} + +function commonjsRequire(path) { + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.'); +} + +var naclFast = {exports: {}}; + +var _nodeResolve_empty = {}; + +var _nodeResolve_empty$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + default: _nodeResolve_empty +}); + +var require$$0 = /*@__PURE__*/getAugmentedNamespace(_nodeResolve_empty$1); + +(function (module) { + (function(nacl) { + + // Ported in 2014 by Dmitry Chestnykh and Devi Mandiri. + // Public domain. + // + // Implementation derived from TweetNaCl version 20140427. + // See for details: http://tweetnacl.cr.yp.to/ + + var gf = function(init) { + var i, r = new Float64Array(16); + if (init) for (i = 0; i < init.length; i++) r[i] = init[i]; + return r; + }; + + // Pluggable, initialized in high-level API below. + var randombytes = function(/* x, n */) { throw new Error('no PRNG'); }; + + var _0 = new Uint8Array(16); + var _9 = new Uint8Array(32); _9[0] = 9; + + var gf0 = gf(), + gf1 = gf([1]), + _121665 = gf([0xdb41, 1]), + D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]), + D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]), + X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]), + Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]), + I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]); + + function ts64(x, i, h, l) { + x[i] = (h >> 24) & 0xff; + x[i+1] = (h >> 16) & 0xff; + x[i+2] = (h >> 8) & 0xff; + x[i+3] = h & 0xff; + x[i+4] = (l >> 24) & 0xff; + x[i+5] = (l >> 16) & 0xff; + x[i+6] = (l >> 8) & 0xff; + x[i+7] = l & 0xff; + } + + function vn(x, xi, y, yi, n) { + var i,d = 0; + for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i]; + return (1 & ((d - 1) >>> 8)) - 1; + } + + function crypto_verify_16(x, xi, y, yi) { + return vn(x,xi,y,yi,16); + } + + function crypto_verify_32(x, xi, y, yi) { + return vn(x,xi,y,yi,32); + } + + function core_salsa20(o, p, k, c) { + var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, + j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, + j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, + j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, + j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, + j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, + j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, + j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, + j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, + j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, + j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, + j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, + j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, + j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, + j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, + j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; + + var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, + x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, + x15 = j15, u; + + for (var i = 0; i < 20; i += 2) { + u = x0 + x12 | 0; + x4 ^= u<<7 | u>>>(32-7); + u = x4 + x0 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x4 | 0; + x12 ^= u<<13 | u>>>(32-13); + u = x12 + x8 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x1 | 0; + x9 ^= u<<7 | u>>>(32-7); + u = x9 + x5 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x9 | 0; + x1 ^= u<<13 | u>>>(32-13); + u = x1 + x13 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x6 | 0; + x14 ^= u<<7 | u>>>(32-7); + u = x14 + x10 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x14 | 0; + x6 ^= u<<13 | u>>>(32-13); + u = x6 + x2 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x11 | 0; + x3 ^= u<<7 | u>>>(32-7); + u = x3 + x15 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x3 | 0; + x11 ^= u<<13 | u>>>(32-13); + u = x11 + x7 | 0; + x15 ^= u<<18 | u>>>(32-18); + + u = x0 + x3 | 0; + x1 ^= u<<7 | u>>>(32-7); + u = x1 + x0 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x1 | 0; + x3 ^= u<<13 | u>>>(32-13); + u = x3 + x2 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x4 | 0; + x6 ^= u<<7 | u>>>(32-7); + u = x6 + x5 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x6 | 0; + x4 ^= u<<13 | u>>>(32-13); + u = x4 + x7 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x9 | 0; + x11 ^= u<<7 | u>>>(32-7); + u = x11 + x10 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x11 | 0; + x9 ^= u<<13 | u>>>(32-13); + u = x9 + x8 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x14 | 0; + x12 ^= u<<7 | u>>>(32-7); + u = x12 + x15 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x12 | 0; + x14 ^= u<<13 | u>>>(32-13); + u = x14 + x13 | 0; + x15 ^= u<<18 | u>>>(32-18); + } + x0 = x0 + j0 | 0; + x1 = x1 + j1 | 0; + x2 = x2 + j2 | 0; + x3 = x3 + j3 | 0; + x4 = x4 + j4 | 0; + x5 = x5 + j5 | 0; + x6 = x6 + j6 | 0; + x7 = x7 + j7 | 0; + x8 = x8 + j8 | 0; + x9 = x9 + j9 | 0; + x10 = x10 + j10 | 0; + x11 = x11 + j11 | 0; + x12 = x12 + j12 | 0; + x13 = x13 + j13 | 0; + x14 = x14 + j14 | 0; + x15 = x15 + j15 | 0; + + o[ 0] = x0 >>> 0 & 0xff; + o[ 1] = x0 >>> 8 & 0xff; + o[ 2] = x0 >>> 16 & 0xff; + o[ 3] = x0 >>> 24 & 0xff; + + o[ 4] = x1 >>> 0 & 0xff; + o[ 5] = x1 >>> 8 & 0xff; + o[ 6] = x1 >>> 16 & 0xff; + o[ 7] = x1 >>> 24 & 0xff; + + o[ 8] = x2 >>> 0 & 0xff; + o[ 9] = x2 >>> 8 & 0xff; + o[10] = x2 >>> 16 & 0xff; + o[11] = x2 >>> 24 & 0xff; + + o[12] = x3 >>> 0 & 0xff; + o[13] = x3 >>> 8 & 0xff; + o[14] = x3 >>> 16 & 0xff; + o[15] = x3 >>> 24 & 0xff; + + o[16] = x4 >>> 0 & 0xff; + o[17] = x4 >>> 8 & 0xff; + o[18] = x4 >>> 16 & 0xff; + o[19] = x4 >>> 24 & 0xff; + + o[20] = x5 >>> 0 & 0xff; + o[21] = x5 >>> 8 & 0xff; + o[22] = x5 >>> 16 & 0xff; + o[23] = x5 >>> 24 & 0xff; + + o[24] = x6 >>> 0 & 0xff; + o[25] = x6 >>> 8 & 0xff; + o[26] = x6 >>> 16 & 0xff; + o[27] = x6 >>> 24 & 0xff; + + o[28] = x7 >>> 0 & 0xff; + o[29] = x7 >>> 8 & 0xff; + o[30] = x7 >>> 16 & 0xff; + o[31] = x7 >>> 24 & 0xff; + + o[32] = x8 >>> 0 & 0xff; + o[33] = x8 >>> 8 & 0xff; + o[34] = x8 >>> 16 & 0xff; + o[35] = x8 >>> 24 & 0xff; + + o[36] = x9 >>> 0 & 0xff; + o[37] = x9 >>> 8 & 0xff; + o[38] = x9 >>> 16 & 0xff; + o[39] = x9 >>> 24 & 0xff; + + o[40] = x10 >>> 0 & 0xff; + o[41] = x10 >>> 8 & 0xff; + o[42] = x10 >>> 16 & 0xff; + o[43] = x10 >>> 24 & 0xff; + + o[44] = x11 >>> 0 & 0xff; + o[45] = x11 >>> 8 & 0xff; + o[46] = x11 >>> 16 & 0xff; + o[47] = x11 >>> 24 & 0xff; + + o[48] = x12 >>> 0 & 0xff; + o[49] = x12 >>> 8 & 0xff; + o[50] = x12 >>> 16 & 0xff; + o[51] = x12 >>> 24 & 0xff; + + o[52] = x13 >>> 0 & 0xff; + o[53] = x13 >>> 8 & 0xff; + o[54] = x13 >>> 16 & 0xff; + o[55] = x13 >>> 24 & 0xff; + + o[56] = x14 >>> 0 & 0xff; + o[57] = x14 >>> 8 & 0xff; + o[58] = x14 >>> 16 & 0xff; + o[59] = x14 >>> 24 & 0xff; + + o[60] = x15 >>> 0 & 0xff; + o[61] = x15 >>> 8 & 0xff; + o[62] = x15 >>> 16 & 0xff; + o[63] = x15 >>> 24 & 0xff; + } + + function core_hsalsa20(o,p,k,c) { + var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, + j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, + j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, + j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, + j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, + j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, + j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, + j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, + j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, + j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, + j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, + j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, + j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, + j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, + j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, + j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; + + var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, + x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, + x15 = j15, u; + + for (var i = 0; i < 20; i += 2) { + u = x0 + x12 | 0; + x4 ^= u<<7 | u>>>(32-7); + u = x4 + x0 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x4 | 0; + x12 ^= u<<13 | u>>>(32-13); + u = x12 + x8 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x1 | 0; + x9 ^= u<<7 | u>>>(32-7); + u = x9 + x5 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x9 | 0; + x1 ^= u<<13 | u>>>(32-13); + u = x1 + x13 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x6 | 0; + x14 ^= u<<7 | u>>>(32-7); + u = x14 + x10 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x14 | 0; + x6 ^= u<<13 | u>>>(32-13); + u = x6 + x2 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x11 | 0; + x3 ^= u<<7 | u>>>(32-7); + u = x3 + x15 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x3 | 0; + x11 ^= u<<13 | u>>>(32-13); + u = x11 + x7 | 0; + x15 ^= u<<18 | u>>>(32-18); + + u = x0 + x3 | 0; + x1 ^= u<<7 | u>>>(32-7); + u = x1 + x0 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x1 | 0; + x3 ^= u<<13 | u>>>(32-13); + u = x3 + x2 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x4 | 0; + x6 ^= u<<7 | u>>>(32-7); + u = x6 + x5 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x6 | 0; + x4 ^= u<<13 | u>>>(32-13); + u = x4 + x7 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x9 | 0; + x11 ^= u<<7 | u>>>(32-7); + u = x11 + x10 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x11 | 0; + x9 ^= u<<13 | u>>>(32-13); + u = x9 + x8 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x14 | 0; + x12 ^= u<<7 | u>>>(32-7); + u = x12 + x15 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x12 | 0; + x14 ^= u<<13 | u>>>(32-13); + u = x14 + x13 | 0; + x15 ^= u<<18 | u>>>(32-18); + } + + o[ 0] = x0 >>> 0 & 0xff; + o[ 1] = x0 >>> 8 & 0xff; + o[ 2] = x0 >>> 16 & 0xff; + o[ 3] = x0 >>> 24 & 0xff; + + o[ 4] = x5 >>> 0 & 0xff; + o[ 5] = x5 >>> 8 & 0xff; + o[ 6] = x5 >>> 16 & 0xff; + o[ 7] = x5 >>> 24 & 0xff; + + o[ 8] = x10 >>> 0 & 0xff; + o[ 9] = x10 >>> 8 & 0xff; + o[10] = x10 >>> 16 & 0xff; + o[11] = x10 >>> 24 & 0xff; + + o[12] = x15 >>> 0 & 0xff; + o[13] = x15 >>> 8 & 0xff; + o[14] = x15 >>> 16 & 0xff; + o[15] = x15 >>> 24 & 0xff; + + o[16] = x6 >>> 0 & 0xff; + o[17] = x6 >>> 8 & 0xff; + o[18] = x6 >>> 16 & 0xff; + o[19] = x6 >>> 24 & 0xff; + + o[20] = x7 >>> 0 & 0xff; + o[21] = x7 >>> 8 & 0xff; + o[22] = x7 >>> 16 & 0xff; + o[23] = x7 >>> 24 & 0xff; + + o[24] = x8 >>> 0 & 0xff; + o[25] = x8 >>> 8 & 0xff; + o[26] = x8 >>> 16 & 0xff; + o[27] = x8 >>> 24 & 0xff; + + o[28] = x9 >>> 0 & 0xff; + o[29] = x9 >>> 8 & 0xff; + o[30] = x9 >>> 16 & 0xff; + o[31] = x9 >>> 24 & 0xff; + } + + function crypto_core_salsa20(out,inp,k,c) { + core_salsa20(out,inp,k,c); + } + + function crypto_core_hsalsa20(out,inp,k,c) { + core_hsalsa20(out,inp,k,c); + } + + var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]); + // "expand 32-byte k" + + function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) { + var z = new Uint8Array(16), x = new Uint8Array(64); + var u, i; + for (i = 0; i < 16; i++) z[i] = 0; + for (i = 0; i < 8; i++) z[i] = n[i]; + while (b >= 64) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i]; + u = 1; + for (i = 8; i < 16; i++) { + u = u + (z[i] & 0xff) | 0; + z[i] = u & 0xff; + u >>>= 8; + } + b -= 64; + cpos += 64; + mpos += 64; + } + if (b > 0) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i]; + } + return 0; + } + + function crypto_stream_salsa20(c,cpos,b,n,k) { + var z = new Uint8Array(16), x = new Uint8Array(64); + var u, i; + for (i = 0; i < 16; i++) z[i] = 0; + for (i = 0; i < 8; i++) z[i] = n[i]; + while (b >= 64) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < 64; i++) c[cpos+i] = x[i]; + u = 1; + for (i = 8; i < 16; i++) { + u = u + (z[i] & 0xff) | 0; + z[i] = u & 0xff; + u >>>= 8; + } + b -= 64; + cpos += 64; + } + if (b > 0) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < b; i++) c[cpos+i] = x[i]; + } + return 0; + } + + function crypto_stream(c,cpos,d,n,k) { + var s = new Uint8Array(32); + crypto_core_hsalsa20(s,n,k,sigma); + var sn = new Uint8Array(8); + for (var i = 0; i < 8; i++) sn[i] = n[i+16]; + return crypto_stream_salsa20(c,cpos,d,sn,s); + } + + function crypto_stream_xor(c,cpos,m,mpos,d,n,k) { + var s = new Uint8Array(32); + crypto_core_hsalsa20(s,n,k,sigma); + var sn = new Uint8Array(8); + for (var i = 0; i < 8; i++) sn[i] = n[i+16]; + return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s); + } + + /* + * Port of Andrew Moon's Poly1305-donna-16. Public domain. + * https://github.com/floodyberry/poly1305-donna + */ + + var poly1305 = function(key) { + this.buffer = new Uint8Array(16); + this.r = new Uint16Array(10); + this.h = new Uint16Array(10); + this.pad = new Uint16Array(8); + this.leftover = 0; + this.fin = 0; + + var t0, t1, t2, t3, t4, t5, t6, t7; + + t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff; + t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff; + t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03; + t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff; + t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff; + this.r[5] = ((t4 >>> 1)) & 0x1ffe; + t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff; + t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81; + t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff; + this.r[9] = ((t7 >>> 5)) & 0x007f; + + this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8; + this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8; + this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8; + this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8; + this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8; + this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8; + this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8; + this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8; + }; + + poly1305.prototype.blocks = function(m, mpos, bytes) { + var hibit = this.fin ? 0 : (1 << 11); + var t0, t1, t2, t3, t4, t5, t6, t7, c; + var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9; + + var h0 = this.h[0], + h1 = this.h[1], + h2 = this.h[2], + h3 = this.h[3], + h4 = this.h[4], + h5 = this.h[5], + h6 = this.h[6], + h7 = this.h[7], + h8 = this.h[8], + h9 = this.h[9]; + + var r0 = this.r[0], + r1 = this.r[1], + r2 = this.r[2], + r3 = this.r[3], + r4 = this.r[4], + r5 = this.r[5], + r6 = this.r[6], + r7 = this.r[7], + r8 = this.r[8], + r9 = this.r[9]; + + while (bytes >= 16) { + t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff; + t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff; + t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff; + t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff; + t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff; + h5 += ((t4 >>> 1)) & 0x1fff; + t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff; + t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff; + t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff; + h9 += ((t7 >>> 5)) | hibit; + + c = 0; + + d0 = c; + d0 += h0 * r0; + d0 += h1 * (5 * r9); + d0 += h2 * (5 * r8); + d0 += h3 * (5 * r7); + d0 += h4 * (5 * r6); + c = (d0 >>> 13); d0 &= 0x1fff; + d0 += h5 * (5 * r5); + d0 += h6 * (5 * r4); + d0 += h7 * (5 * r3); + d0 += h8 * (5 * r2); + d0 += h9 * (5 * r1); + c += (d0 >>> 13); d0 &= 0x1fff; + + d1 = c; + d1 += h0 * r1; + d1 += h1 * r0; + d1 += h2 * (5 * r9); + d1 += h3 * (5 * r8); + d1 += h4 * (5 * r7); + c = (d1 >>> 13); d1 &= 0x1fff; + d1 += h5 * (5 * r6); + d1 += h6 * (5 * r5); + d1 += h7 * (5 * r4); + d1 += h8 * (5 * r3); + d1 += h9 * (5 * r2); + c += (d1 >>> 13); d1 &= 0x1fff; + + d2 = c; + d2 += h0 * r2; + d2 += h1 * r1; + d2 += h2 * r0; + d2 += h3 * (5 * r9); + d2 += h4 * (5 * r8); + c = (d2 >>> 13); d2 &= 0x1fff; + d2 += h5 * (5 * r7); + d2 += h6 * (5 * r6); + d2 += h7 * (5 * r5); + d2 += h8 * (5 * r4); + d2 += h9 * (5 * r3); + c += (d2 >>> 13); d2 &= 0x1fff; + + d3 = c; + d3 += h0 * r3; + d3 += h1 * r2; + d3 += h2 * r1; + d3 += h3 * r0; + d3 += h4 * (5 * r9); + c = (d3 >>> 13); d3 &= 0x1fff; + d3 += h5 * (5 * r8); + d3 += h6 * (5 * r7); + d3 += h7 * (5 * r6); + d3 += h8 * (5 * r5); + d3 += h9 * (5 * r4); + c += (d3 >>> 13); d3 &= 0x1fff; + + d4 = c; + d4 += h0 * r4; + d4 += h1 * r3; + d4 += h2 * r2; + d4 += h3 * r1; + d4 += h4 * r0; + c = (d4 >>> 13); d4 &= 0x1fff; + d4 += h5 * (5 * r9); + d4 += h6 * (5 * r8); + d4 += h7 * (5 * r7); + d4 += h8 * (5 * r6); + d4 += h9 * (5 * r5); + c += (d4 >>> 13); d4 &= 0x1fff; + + d5 = c; + d5 += h0 * r5; + d5 += h1 * r4; + d5 += h2 * r3; + d5 += h3 * r2; + d5 += h4 * r1; + c = (d5 >>> 13); d5 &= 0x1fff; + d5 += h5 * r0; + d5 += h6 * (5 * r9); + d5 += h7 * (5 * r8); + d5 += h8 * (5 * r7); + d5 += h9 * (5 * r6); + c += (d5 >>> 13); d5 &= 0x1fff; + + d6 = c; + d6 += h0 * r6; + d6 += h1 * r5; + d6 += h2 * r4; + d6 += h3 * r3; + d6 += h4 * r2; + c = (d6 >>> 13); d6 &= 0x1fff; + d6 += h5 * r1; + d6 += h6 * r0; + d6 += h7 * (5 * r9); + d6 += h8 * (5 * r8); + d6 += h9 * (5 * r7); + c += (d6 >>> 13); d6 &= 0x1fff; + + d7 = c; + d7 += h0 * r7; + d7 += h1 * r6; + d7 += h2 * r5; + d7 += h3 * r4; + d7 += h4 * r3; + c = (d7 >>> 13); d7 &= 0x1fff; + d7 += h5 * r2; + d7 += h6 * r1; + d7 += h7 * r0; + d7 += h8 * (5 * r9); + d7 += h9 * (5 * r8); + c += (d7 >>> 13); d7 &= 0x1fff; + + d8 = c; + d8 += h0 * r8; + d8 += h1 * r7; + d8 += h2 * r6; + d8 += h3 * r5; + d8 += h4 * r4; + c = (d8 >>> 13); d8 &= 0x1fff; + d8 += h5 * r3; + d8 += h6 * r2; + d8 += h7 * r1; + d8 += h8 * r0; + d8 += h9 * (5 * r9); + c += (d8 >>> 13); d8 &= 0x1fff; + + d9 = c; + d9 += h0 * r9; + d9 += h1 * r8; + d9 += h2 * r7; + d9 += h3 * r6; + d9 += h4 * r5; + c = (d9 >>> 13); d9 &= 0x1fff; + d9 += h5 * r4; + d9 += h6 * r3; + d9 += h7 * r2; + d9 += h8 * r1; + d9 += h9 * r0; + c += (d9 >>> 13); d9 &= 0x1fff; + + c = (((c << 2) + c)) | 0; + c = (c + d0) | 0; + d0 = c & 0x1fff; + c = (c >>> 13); + d1 += c; + + h0 = d0; + h1 = d1; + h2 = d2; + h3 = d3; + h4 = d4; + h5 = d5; + h6 = d6; + h7 = d7; + h8 = d8; + h9 = d9; + + mpos += 16; + bytes -= 16; + } + this.h[0] = h0; + this.h[1] = h1; + this.h[2] = h2; + this.h[3] = h3; + this.h[4] = h4; + this.h[5] = h5; + this.h[6] = h6; + this.h[7] = h7; + this.h[8] = h8; + this.h[9] = h9; + }; + + poly1305.prototype.finish = function(mac, macpos) { + var g = new Uint16Array(10); + var c, mask, f, i; + + if (this.leftover) { + i = this.leftover; + this.buffer[i++] = 1; + for (; i < 16; i++) this.buffer[i] = 0; + this.fin = 1; + this.blocks(this.buffer, 0, 16); + } + + c = this.h[1] >>> 13; + this.h[1] &= 0x1fff; + for (i = 2; i < 10; i++) { + this.h[i] += c; + c = this.h[i] >>> 13; + this.h[i] &= 0x1fff; + } + this.h[0] += (c * 5); + c = this.h[0] >>> 13; + this.h[0] &= 0x1fff; + this.h[1] += c; + c = this.h[1] >>> 13; + this.h[1] &= 0x1fff; + this.h[2] += c; + + g[0] = this.h[0] + 5; + c = g[0] >>> 13; + g[0] &= 0x1fff; + for (i = 1; i < 10; i++) { + g[i] = this.h[i] + c; + c = g[i] >>> 13; + g[i] &= 0x1fff; + } + g[9] -= (1 << 13); + + mask = (c ^ 1) - 1; + for (i = 0; i < 10; i++) g[i] &= mask; + mask = ~mask; + for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i]; + + this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff; + this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff; + this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff; + this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff; + this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff; + this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff; + this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff; + this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff; + + f = this.h[0] + this.pad[0]; + this.h[0] = f & 0xffff; + for (i = 1; i < 8; i++) { + f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0; + this.h[i] = f & 0xffff; + } + + mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff; + mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff; + mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff; + mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff; + mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff; + mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff; + mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff; + mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff; + mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff; + mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff; + mac[macpos+10] = (this.h[5] >>> 0) & 0xff; + mac[macpos+11] = (this.h[5] >>> 8) & 0xff; + mac[macpos+12] = (this.h[6] >>> 0) & 0xff; + mac[macpos+13] = (this.h[6] >>> 8) & 0xff; + mac[macpos+14] = (this.h[7] >>> 0) & 0xff; + mac[macpos+15] = (this.h[7] >>> 8) & 0xff; + }; + + poly1305.prototype.update = function(m, mpos, bytes) { + var i, want; + + if (this.leftover) { + want = (16 - this.leftover); + if (want > bytes) + want = bytes; + for (i = 0; i < want; i++) + this.buffer[this.leftover + i] = m[mpos+i]; + bytes -= want; + mpos += want; + this.leftover += want; + if (this.leftover < 16) + return; + this.blocks(this.buffer, 0, 16); + this.leftover = 0; + } + + if (bytes >= 16) { + want = bytes - (bytes % 16); + this.blocks(m, mpos, want); + mpos += want; + bytes -= want; + } + + if (bytes) { + for (i = 0; i < bytes; i++) + this.buffer[this.leftover + i] = m[mpos+i]; + this.leftover += bytes; + } + }; + + function crypto_onetimeauth(out, outpos, m, mpos, n, k) { + var s = new poly1305(k); + s.update(m, mpos, n); + s.finish(out, outpos); + return 0; + } + + function crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) { + var x = new Uint8Array(16); + crypto_onetimeauth(x,0,m,mpos,n,k); + return crypto_verify_16(h,hpos,x,0); + } + + function crypto_secretbox(c,m,d,n,k) { + var i; + if (d < 32) return -1; + crypto_stream_xor(c,0,m,0,d,n,k); + crypto_onetimeauth(c, 16, c, 32, d - 32, c); + for (i = 0; i < 16; i++) c[i] = 0; + return 0; + } + + function crypto_secretbox_open(m,c,d,n,k) { + var i; + var x = new Uint8Array(32); + if (d < 32) return -1; + crypto_stream(x,0,32,n,k); + if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1; + crypto_stream_xor(m,0,c,0,d,n,k); + for (i = 0; i < 32; i++) m[i] = 0; + return 0; + } + + function set25519(r, a) { + var i; + for (i = 0; i < 16; i++) r[i] = a[i]|0; + } + + function car25519(o) { + var i, v, c = 1; + for (i = 0; i < 16; i++) { + v = o[i] + c + 65535; + c = Math.floor(v / 65536); + o[i] = v - c * 65536; + } + o[0] += c-1 + 37 * (c-1); + } + + function sel25519(p, q, b) { + var t, c = ~(b-1); + for (var i = 0; i < 16; i++) { + t = c & (p[i] ^ q[i]); + p[i] ^= t; + q[i] ^= t; + } + } + + function pack25519(o, n) { + var i, j, b; + var m = gf(), t = gf(); + for (i = 0; i < 16; i++) t[i] = n[i]; + car25519(t); + car25519(t); + car25519(t); + for (j = 0; j < 2; j++) { + m[0] = t[0] - 0xffed; + for (i = 1; i < 15; i++) { + m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1); + m[i-1] &= 0xffff; + } + m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1); + b = (m[15]>>16) & 1; + m[14] &= 0xffff; + sel25519(t, m, 1-b); + } + for (i = 0; i < 16; i++) { + o[2*i] = t[i] & 0xff; + o[2*i+1] = t[i]>>8; + } + } + + function neq25519(a, b) { + var c = new Uint8Array(32), d = new Uint8Array(32); + pack25519(c, a); + pack25519(d, b); + return crypto_verify_32(c, 0, d, 0); + } + + function par25519(a) { + var d = new Uint8Array(32); + pack25519(d, a); + return d[0] & 1; + } + + function unpack25519(o, n) { + var i; + for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8); + o[15] &= 0x7fff; + } + + function A(o, a, b) { + for (var i = 0; i < 16; i++) o[i] = a[i] + b[i]; + } + + function Z(o, a, b) { + for (var i = 0; i < 16; i++) o[i] = a[i] - b[i]; + } + + function M(o, a, b) { + var v, c, + t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, + t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, + t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, + t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, + b0 = b[0], + b1 = b[1], + b2 = b[2], + b3 = b[3], + b4 = b[4], + b5 = b[5], + b6 = b[6], + b7 = b[7], + b8 = b[8], + b9 = b[9], + b10 = b[10], + b11 = b[11], + b12 = b[12], + b13 = b[13], + b14 = b[14], + b15 = b[15]; + + v = a[0]; + t0 += v * b0; + t1 += v * b1; + t2 += v * b2; + t3 += v * b3; + t4 += v * b4; + t5 += v * b5; + t6 += v * b6; + t7 += v * b7; + t8 += v * b8; + t9 += v * b9; + t10 += v * b10; + t11 += v * b11; + t12 += v * b12; + t13 += v * b13; + t14 += v * b14; + t15 += v * b15; + v = a[1]; + t1 += v * b0; + t2 += v * b1; + t3 += v * b2; + t4 += v * b3; + t5 += v * b4; + t6 += v * b5; + t7 += v * b6; + t8 += v * b7; + t9 += v * b8; + t10 += v * b9; + t11 += v * b10; + t12 += v * b11; + t13 += v * b12; + t14 += v * b13; + t15 += v * b14; + t16 += v * b15; + v = a[2]; + t2 += v * b0; + t3 += v * b1; + t4 += v * b2; + t5 += v * b3; + t6 += v * b4; + t7 += v * b5; + t8 += v * b6; + t9 += v * b7; + t10 += v * b8; + t11 += v * b9; + t12 += v * b10; + t13 += v * b11; + t14 += v * b12; + t15 += v * b13; + t16 += v * b14; + t17 += v * b15; + v = a[3]; + t3 += v * b0; + t4 += v * b1; + t5 += v * b2; + t6 += v * b3; + t7 += v * b4; + t8 += v * b5; + t9 += v * b6; + t10 += v * b7; + t11 += v * b8; + t12 += v * b9; + t13 += v * b10; + t14 += v * b11; + t15 += v * b12; + t16 += v * b13; + t17 += v * b14; + t18 += v * b15; + v = a[4]; + t4 += v * b0; + t5 += v * b1; + t6 += v * b2; + t7 += v * b3; + t8 += v * b4; + t9 += v * b5; + t10 += v * b6; + t11 += v * b7; + t12 += v * b8; + t13 += v * b9; + t14 += v * b10; + t15 += v * b11; + t16 += v * b12; + t17 += v * b13; + t18 += v * b14; + t19 += v * b15; + v = a[5]; + t5 += v * b0; + t6 += v * b1; + t7 += v * b2; + t8 += v * b3; + t9 += v * b4; + t10 += v * b5; + t11 += v * b6; + t12 += v * b7; + t13 += v * b8; + t14 += v * b9; + t15 += v * b10; + t16 += v * b11; + t17 += v * b12; + t18 += v * b13; + t19 += v * b14; + t20 += v * b15; + v = a[6]; + t6 += v * b0; + t7 += v * b1; + t8 += v * b2; + t9 += v * b3; + t10 += v * b4; + t11 += v * b5; + t12 += v * b6; + t13 += v * b7; + t14 += v * b8; + t15 += v * b9; + t16 += v * b10; + t17 += v * b11; + t18 += v * b12; + t19 += v * b13; + t20 += v * b14; + t21 += v * b15; + v = a[7]; + t7 += v * b0; + t8 += v * b1; + t9 += v * b2; + t10 += v * b3; + t11 += v * b4; + t12 += v * b5; + t13 += v * b6; + t14 += v * b7; + t15 += v * b8; + t16 += v * b9; + t17 += v * b10; + t18 += v * b11; + t19 += v * b12; + t20 += v * b13; + t21 += v * b14; + t22 += v * b15; + v = a[8]; + t8 += v * b0; + t9 += v * b1; + t10 += v * b2; + t11 += v * b3; + t12 += v * b4; + t13 += v * b5; + t14 += v * b6; + t15 += v * b7; + t16 += v * b8; + t17 += v * b9; + t18 += v * b10; + t19 += v * b11; + t20 += v * b12; + t21 += v * b13; + t22 += v * b14; + t23 += v * b15; + v = a[9]; + t9 += v * b0; + t10 += v * b1; + t11 += v * b2; + t12 += v * b3; + t13 += v * b4; + t14 += v * b5; + t15 += v * b6; + t16 += v * b7; + t17 += v * b8; + t18 += v * b9; + t19 += v * b10; + t20 += v * b11; + t21 += v * b12; + t22 += v * b13; + t23 += v * b14; + t24 += v * b15; + v = a[10]; + t10 += v * b0; + t11 += v * b1; + t12 += v * b2; + t13 += v * b3; + t14 += v * b4; + t15 += v * b5; + t16 += v * b6; + t17 += v * b7; + t18 += v * b8; + t19 += v * b9; + t20 += v * b10; + t21 += v * b11; + t22 += v * b12; + t23 += v * b13; + t24 += v * b14; + t25 += v * b15; + v = a[11]; + t11 += v * b0; + t12 += v * b1; + t13 += v * b2; + t14 += v * b3; + t15 += v * b4; + t16 += v * b5; + t17 += v * b6; + t18 += v * b7; + t19 += v * b8; + t20 += v * b9; + t21 += v * b10; + t22 += v * b11; + t23 += v * b12; + t24 += v * b13; + t25 += v * b14; + t26 += v * b15; + v = a[12]; + t12 += v * b0; + t13 += v * b1; + t14 += v * b2; + t15 += v * b3; + t16 += v * b4; + t17 += v * b5; + t18 += v * b6; + t19 += v * b7; + t20 += v * b8; + t21 += v * b9; + t22 += v * b10; + t23 += v * b11; + t24 += v * b12; + t25 += v * b13; + t26 += v * b14; + t27 += v * b15; + v = a[13]; + t13 += v * b0; + t14 += v * b1; + t15 += v * b2; + t16 += v * b3; + t17 += v * b4; + t18 += v * b5; + t19 += v * b6; + t20 += v * b7; + t21 += v * b8; + t22 += v * b9; + t23 += v * b10; + t24 += v * b11; + t25 += v * b12; + t26 += v * b13; + t27 += v * b14; + t28 += v * b15; + v = a[14]; + t14 += v * b0; + t15 += v * b1; + t16 += v * b2; + t17 += v * b3; + t18 += v * b4; + t19 += v * b5; + t20 += v * b6; + t21 += v * b7; + t22 += v * b8; + t23 += v * b9; + t24 += v * b10; + t25 += v * b11; + t26 += v * b12; + t27 += v * b13; + t28 += v * b14; + t29 += v * b15; + v = a[15]; + t15 += v * b0; + t16 += v * b1; + t17 += v * b2; + t18 += v * b3; + t19 += v * b4; + t20 += v * b5; + t21 += v * b6; + t22 += v * b7; + t23 += v * b8; + t24 += v * b9; + t25 += v * b10; + t26 += v * b11; + t27 += v * b12; + t28 += v * b13; + t29 += v * b14; + t30 += v * b15; + + t0 += 38 * t16; + t1 += 38 * t17; + t2 += 38 * t18; + t3 += 38 * t19; + t4 += 38 * t20; + t5 += 38 * t21; + t6 += 38 * t22; + t7 += 38 * t23; + t8 += 38 * t24; + t9 += 38 * t25; + t10 += 38 * t26; + t11 += 38 * t27; + t12 += 38 * t28; + t13 += 38 * t29; + t14 += 38 * t30; + // t15 left as is + + // first car + c = 1; + v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; + v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; + v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; + v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; + v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; + v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; + v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; + v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; + v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; + v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; + v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; + v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; + v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; + v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; + v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; + v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; + t0 += c-1 + 37 * (c-1); + + // second car + c = 1; + v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; + v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; + v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; + v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; + v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; + v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; + v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; + v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; + v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; + v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; + v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; + v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; + v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; + v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; + v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; + v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; + t0 += c-1 + 37 * (c-1); + + o[ 0] = t0; + o[ 1] = t1; + o[ 2] = t2; + o[ 3] = t3; + o[ 4] = t4; + o[ 5] = t5; + o[ 6] = t6; + o[ 7] = t7; + o[ 8] = t8; + o[ 9] = t9; + o[10] = t10; + o[11] = t11; + o[12] = t12; + o[13] = t13; + o[14] = t14; + o[15] = t15; + } + + function S(o, a) { + M(o, a, a); + } + + function inv25519(o, i) { + var c = gf(); + var a; + for (a = 0; a < 16; a++) c[a] = i[a]; + for (a = 253; a >= 0; a--) { + S(c, c); + if(a !== 2 && a !== 4) M(c, c, i); + } + for (a = 0; a < 16; a++) o[a] = c[a]; + } + + function pow2523(o, i) { + var c = gf(); + var a; + for (a = 0; a < 16; a++) c[a] = i[a]; + for (a = 250; a >= 0; a--) { + S(c, c); + if(a !== 1) M(c, c, i); + } + for (a = 0; a < 16; a++) o[a] = c[a]; + } + + function crypto_scalarmult(q, n, p) { + var z = new Uint8Array(32); + var x = new Float64Array(80), r, i; + var a = gf(), b = gf(), c = gf(), + d = gf(), e = gf(), f = gf(); + for (i = 0; i < 31; i++) z[i] = n[i]; + z[31]=(n[31]&127)|64; + z[0]&=248; + unpack25519(x,p); + for (i = 0; i < 16; i++) { + b[i]=x[i]; + d[i]=a[i]=c[i]=0; + } + a[0]=d[0]=1; + for (i=254; i>=0; --i) { + r=(z[i>>>3]>>>(i&7))&1; + sel25519(a,b,r); + sel25519(c,d,r); + A(e,a,c); + Z(a,a,c); + A(c,b,d); + Z(b,b,d); + S(d,e); + S(f,a); + M(a,c,a); + M(c,b,e); + A(e,a,c); + Z(a,a,c); + S(b,a); + Z(c,d,f); + M(a,c,_121665); + A(a,a,d); + M(c,c,a); + M(a,d,f); + M(d,b,x); + S(b,e); + sel25519(a,b,r); + sel25519(c,d,r); + } + for (i = 0; i < 16; i++) { + x[i+16]=a[i]; + x[i+32]=c[i]; + x[i+48]=b[i]; + x[i+64]=d[i]; + } + var x32 = x.subarray(32); + var x16 = x.subarray(16); + inv25519(x32,x32); + M(x16,x16,x32); + pack25519(q,x16); + return 0; + } + + function crypto_scalarmult_base(q, n) { + return crypto_scalarmult(q, n, _9); + } + + function crypto_box_keypair(y, x) { + randombytes(x, 32); + return crypto_scalarmult_base(y, x); + } + + function crypto_box_beforenm(k, y, x) { + var s = new Uint8Array(32); + crypto_scalarmult(s, x, y); + return crypto_core_hsalsa20(k, _0, s, sigma); + } + + var crypto_box_afternm = crypto_secretbox; + var crypto_box_open_afternm = crypto_secretbox_open; + + function crypto_box(c, m, d, n, y, x) { + var k = new Uint8Array(32); + crypto_box_beforenm(k, y, x); + return crypto_box_afternm(c, m, d, n, k); + } + + function crypto_box_open(m, c, d, n, y, x) { + var k = new Uint8Array(32); + crypto_box_beforenm(k, y, x); + return crypto_box_open_afternm(m, c, d, n, k); + } + + var K = [ + 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, + 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, + 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, + 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, + 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, + 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, + 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, + 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, + 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, + 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, + 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, + 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, + 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, + 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, + 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, + 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, + 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, + 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, + 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, + 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, + 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, + 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, + 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, + 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, + 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, + 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, + 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, + 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, + 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, + 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, + 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, + 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, + 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, + 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, + 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, + 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, + 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, + 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, + 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, + 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 + ]; + + function crypto_hashblocks_hl(hh, hl, m, n) { + var wh = new Int32Array(16), wl = new Int32Array(16), + bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, + bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, + th, tl, i, j, h, l, a, b, c, d; + + var ah0 = hh[0], + ah1 = hh[1], + ah2 = hh[2], + ah3 = hh[3], + ah4 = hh[4], + ah5 = hh[5], + ah6 = hh[6], + ah7 = hh[7], + + al0 = hl[0], + al1 = hl[1], + al2 = hl[2], + al3 = hl[3], + al4 = hl[4], + al5 = hl[5], + al6 = hl[6], + al7 = hl[7]; + + var pos = 0; + while (n >= 128) { + for (i = 0; i < 16; i++) { + j = 8 * i + pos; + wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3]; + wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7]; + } + for (i = 0; i < 80; i++) { + bh0 = ah0; + bh1 = ah1; + bh2 = ah2; + bh3 = ah3; + bh4 = ah4; + bh5 = ah5; + bh6 = ah6; + bh7 = ah7; + + bl0 = al0; + bl1 = al1; + bl2 = al2; + bl3 = al3; + bl4 = al4; + bl5 = al5; + bl6 = al6; + bl7 = al7; + + // add + h = ah7; + l = al7; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + // Sigma1 + h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32)))); + l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32)))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // Ch + h = (ah4 & ah5) ^ (~ah4 & ah6); + l = (al4 & al5) ^ (~al4 & al6); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // K + h = K[i*2]; + l = K[i*2+1]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // w + h = wh[i%16]; + l = wl[i%16]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + th = c & 0xffff | d << 16; + tl = a & 0xffff | b << 16; + + // add + h = th; + l = tl; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + // Sigma0 + h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32)))); + l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32)))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // Maj + h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2); + l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + bh7 = (c & 0xffff) | (d << 16); + bl7 = (a & 0xffff) | (b << 16); + + // add + h = bh3; + l = bl3; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = th; + l = tl; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + bh3 = (c & 0xffff) | (d << 16); + bl3 = (a & 0xffff) | (b << 16); + + ah1 = bh0; + ah2 = bh1; + ah3 = bh2; + ah4 = bh3; + ah5 = bh4; + ah6 = bh5; + ah7 = bh6; + ah0 = bh7; + + al1 = bl0; + al2 = bl1; + al3 = bl2; + al4 = bl3; + al5 = bl4; + al6 = bl5; + al7 = bl6; + al0 = bl7; + + if (i%16 === 15) { + for (j = 0; j < 16; j++) { + // add + h = wh[j]; + l = wl[j]; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = wh[(j+9)%16]; + l = wl[(j+9)%16]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // sigma0 + th = wh[(j+1)%16]; + tl = wl[(j+1)%16]; + h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7); + l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // sigma1 + th = wh[(j+14)%16]; + tl = wl[(j+14)%16]; + h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6); + l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + wh[j] = (c & 0xffff) | (d << 16); + wl[j] = (a & 0xffff) | (b << 16); + } + } + } + + // add + h = ah0; + l = al0; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[0]; + l = hl[0]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[0] = ah0 = (c & 0xffff) | (d << 16); + hl[0] = al0 = (a & 0xffff) | (b << 16); + + h = ah1; + l = al1; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[1]; + l = hl[1]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[1] = ah1 = (c & 0xffff) | (d << 16); + hl[1] = al1 = (a & 0xffff) | (b << 16); + + h = ah2; + l = al2; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[2]; + l = hl[2]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[2] = ah2 = (c & 0xffff) | (d << 16); + hl[2] = al2 = (a & 0xffff) | (b << 16); + + h = ah3; + l = al3; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[3]; + l = hl[3]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[3] = ah3 = (c & 0xffff) | (d << 16); + hl[3] = al3 = (a & 0xffff) | (b << 16); + + h = ah4; + l = al4; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[4]; + l = hl[4]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[4] = ah4 = (c & 0xffff) | (d << 16); + hl[4] = al4 = (a & 0xffff) | (b << 16); + + h = ah5; + l = al5; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[5]; + l = hl[5]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[5] = ah5 = (c & 0xffff) | (d << 16); + hl[5] = al5 = (a & 0xffff) | (b << 16); + + h = ah6; + l = al6; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[6]; + l = hl[6]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[6] = ah6 = (c & 0xffff) | (d << 16); + hl[6] = al6 = (a & 0xffff) | (b << 16); + + h = ah7; + l = al7; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[7]; + l = hl[7]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[7] = ah7 = (c & 0xffff) | (d << 16); + hl[7] = al7 = (a & 0xffff) | (b << 16); + + pos += 128; + n -= 128; + } + + return n; + } + + function crypto_hash(out, m, n) { + var hh = new Int32Array(8), + hl = new Int32Array(8), + x = new Uint8Array(256), + i, b = n; + + hh[0] = 0x6a09e667; + hh[1] = 0xbb67ae85; + hh[2] = 0x3c6ef372; + hh[3] = 0xa54ff53a; + hh[4] = 0x510e527f; + hh[5] = 0x9b05688c; + hh[6] = 0x1f83d9ab; + hh[7] = 0x5be0cd19; + + hl[0] = 0xf3bcc908; + hl[1] = 0x84caa73b; + hl[2] = 0xfe94f82b; + hl[3] = 0x5f1d36f1; + hl[4] = 0xade682d1; + hl[5] = 0x2b3e6c1f; + hl[6] = 0xfb41bd6b; + hl[7] = 0x137e2179; + + crypto_hashblocks_hl(hh, hl, m, n); + n %= 128; + + for (i = 0; i < n; i++) x[i] = m[b-n+i]; + x[n] = 128; + + n = 256-128*(n<112?1:0); + x[n-9] = 0; + ts64(x, n-8, (b / 0x20000000) | 0, b << 3); + crypto_hashblocks_hl(hh, hl, x, n); + + for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]); + + return 0; + } + + function add(p, q) { + var a = gf(), b = gf(), c = gf(), + d = gf(), e = gf(), f = gf(), + g = gf(), h = gf(), t = gf(); + + Z(a, p[1], p[0]); + Z(t, q[1], q[0]); + M(a, a, t); + A(b, p[0], p[1]); + A(t, q[0], q[1]); + M(b, b, t); + M(c, p[3], q[3]); + M(c, c, D2); + M(d, p[2], q[2]); + A(d, d, d); + Z(e, b, a); + Z(f, d, c); + A(g, d, c); + A(h, b, a); + + M(p[0], e, f); + M(p[1], h, g); + M(p[2], g, f); + M(p[3], e, h); + } + + function cswap(p, q, b) { + var i; + for (i = 0; i < 4; i++) { + sel25519(p[i], q[i], b); + } + } + + function pack(r, p) { + var tx = gf(), ty = gf(), zi = gf(); + inv25519(zi, p[2]); + M(tx, p[0], zi); + M(ty, p[1], zi); + pack25519(r, ty); + r[31] ^= par25519(tx) << 7; + } + + function scalarmult(p, q, s) { + var b, i; + set25519(p[0], gf0); + set25519(p[1], gf1); + set25519(p[2], gf1); + set25519(p[3], gf0); + for (i = 255; i >= 0; --i) { + b = (s[(i/8)|0] >> (i&7)) & 1; + cswap(p, q, b); + add(q, p); + add(p, p); + cswap(p, q, b); + } + } + + function scalarbase(p, s) { + var q = [gf(), gf(), gf(), gf()]; + set25519(q[0], X); + set25519(q[1], Y); + set25519(q[2], gf1); + M(q[3], X, Y); + scalarmult(p, q, s); + } + + function crypto_sign_keypair(pk, sk, seeded) { + var d = new Uint8Array(64); + var p = [gf(), gf(), gf(), gf()]; + var i; + + if (!seeded) randombytes(sk, 32); + crypto_hash(d, sk, 32); + d[0] &= 248; + d[31] &= 127; + d[31] |= 64; + + scalarbase(p, d); + pack(pk, p); + + for (i = 0; i < 32; i++) sk[i+32] = pk[i]; + return 0; + } + + var L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]); + + function modL(r, x) { + var carry, i, j, k; + for (i = 63; i >= 32; --i) { + carry = 0; + for (j = i - 32, k = i - 12; j < k; ++j) { + x[j] += carry - 16 * x[i] * L[j - (i - 32)]; + carry = Math.floor((x[j] + 128) / 256); + x[j] -= carry * 256; + } + x[j] += carry; + x[i] = 0; + } + carry = 0; + for (j = 0; j < 32; j++) { + x[j] += carry - (x[31] >> 4) * L[j]; + carry = x[j] >> 8; + x[j] &= 255; + } + for (j = 0; j < 32; j++) x[j] -= carry * L[j]; + for (i = 0; i < 32; i++) { + x[i+1] += x[i] >> 8; + r[i] = x[i] & 255; + } + } + + function reduce(r) { + var x = new Float64Array(64), i; + for (i = 0; i < 64; i++) x[i] = r[i]; + for (i = 0; i < 64; i++) r[i] = 0; + modL(r, x); + } + + // Note: difference from C - smlen returned, not passed as argument. + function crypto_sign(sm, m, n, sk) { + var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64); + var i, j, x = new Float64Array(64); + var p = [gf(), gf(), gf(), gf()]; + + crypto_hash(d, sk, 32); + d[0] &= 248; + d[31] &= 127; + d[31] |= 64; + + var smlen = n + 64; + for (i = 0; i < n; i++) sm[64 + i] = m[i]; + for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i]; + + crypto_hash(r, sm.subarray(32), n+32); + reduce(r); + scalarbase(p, r); + pack(sm, p); + + for (i = 32; i < 64; i++) sm[i] = sk[i]; + crypto_hash(h, sm, n + 64); + reduce(h); + + for (i = 0; i < 64; i++) x[i] = 0; + for (i = 0; i < 32; i++) x[i] = r[i]; + for (i = 0; i < 32; i++) { + for (j = 0; j < 32; j++) { + x[i+j] += h[i] * d[j]; + } + } + + modL(sm.subarray(32), x); + return smlen; + } + + function unpackneg(r, p) { + var t = gf(), chk = gf(), num = gf(), + den = gf(), den2 = gf(), den4 = gf(), + den6 = gf(); + + set25519(r[2], gf1); + unpack25519(r[1], p); + S(num, r[1]); + M(den, num, D); + Z(num, num, r[2]); + A(den, r[2], den); + + S(den2, den); + S(den4, den2); + M(den6, den4, den2); + M(t, den6, num); + M(t, t, den); + + pow2523(t, t); + M(t, t, num); + M(t, t, den); + M(t, t, den); + M(r[0], t, den); + + S(chk, r[0]); + M(chk, chk, den); + if (neq25519(chk, num)) M(r[0], r[0], I); + + S(chk, r[0]); + M(chk, chk, den); + if (neq25519(chk, num)) return -1; + + if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]); + + M(r[3], r[0], r[1]); + return 0; + } + + function crypto_sign_open(m, sm, n, pk) { + var i; + var t = new Uint8Array(32), h = new Uint8Array(64); + var p = [gf(), gf(), gf(), gf()], + q = [gf(), gf(), gf(), gf()]; + + if (n < 64) return -1; + + if (unpackneg(q, pk)) return -1; + + for (i = 0; i < n; i++) m[i] = sm[i]; + for (i = 0; i < 32; i++) m[i+32] = pk[i]; + crypto_hash(h, m, n); + reduce(h); + scalarmult(p, q, h); + + scalarbase(q, sm.subarray(32)); + add(p, q); + pack(t, p); + + n -= 64; + if (crypto_verify_32(sm, 0, t, 0)) { + for (i = 0; i < n; i++) m[i] = 0; + return -1; + } + + for (i = 0; i < n; i++) m[i] = sm[i + 64]; + return n; + } + + var crypto_secretbox_KEYBYTES = 32, + crypto_secretbox_NONCEBYTES = 24, + crypto_secretbox_ZEROBYTES = 32, + crypto_secretbox_BOXZEROBYTES = 16, + crypto_scalarmult_BYTES = 32, + crypto_scalarmult_SCALARBYTES = 32, + crypto_box_PUBLICKEYBYTES = 32, + crypto_box_SECRETKEYBYTES = 32, + crypto_box_BEFORENMBYTES = 32, + crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES, + crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES, + crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES, + crypto_sign_BYTES = 64, + crypto_sign_PUBLICKEYBYTES = 32, + crypto_sign_SECRETKEYBYTES = 64, + crypto_sign_SEEDBYTES = 32, + crypto_hash_BYTES = 64; + + nacl.lowlevel = { + crypto_core_hsalsa20: crypto_core_hsalsa20, + crypto_stream_xor: crypto_stream_xor, + crypto_stream: crypto_stream, + crypto_stream_salsa20_xor: crypto_stream_salsa20_xor, + crypto_stream_salsa20: crypto_stream_salsa20, + crypto_onetimeauth: crypto_onetimeauth, + crypto_onetimeauth_verify: crypto_onetimeauth_verify, + crypto_verify_16: crypto_verify_16, + crypto_verify_32: crypto_verify_32, + crypto_secretbox: crypto_secretbox, + crypto_secretbox_open: crypto_secretbox_open, + crypto_scalarmult: crypto_scalarmult, + crypto_scalarmult_base: crypto_scalarmult_base, + crypto_box_beforenm: crypto_box_beforenm, + crypto_box_afternm: crypto_box_afternm, + crypto_box: crypto_box, + crypto_box_open: crypto_box_open, + crypto_box_keypair: crypto_box_keypair, + crypto_hash: crypto_hash, + crypto_sign: crypto_sign, + crypto_sign_keypair: crypto_sign_keypair, + crypto_sign_open: crypto_sign_open, + + crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES, + crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES, + crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES, + crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES, + crypto_scalarmult_BYTES: crypto_scalarmult_BYTES, + crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES, + crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES, + crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES, + crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES, + crypto_box_NONCEBYTES: crypto_box_NONCEBYTES, + crypto_box_ZEROBYTES: crypto_box_ZEROBYTES, + crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES, + crypto_sign_BYTES: crypto_sign_BYTES, + crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES, + crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES, + crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES, + crypto_hash_BYTES: crypto_hash_BYTES, + + gf: gf, + D: D, + L: L, + pack25519: pack25519, + unpack25519: unpack25519, + M: M, + A: A, + S: S, + Z: Z, + pow2523: pow2523, + add: add, + set25519: set25519, + modL: modL, + scalarmult: scalarmult, + scalarbase: scalarbase, + }; + + /* High-level API */ + + function checkLengths(k, n) { + if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size'); + if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size'); + } + + function checkBoxLengths(pk, sk) { + if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size'); + if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size'); + } + + function checkArrayTypes() { + for (var i = 0; i < arguments.length; i++) { + if (!(arguments[i] instanceof Uint8Array)) + throw new TypeError('unexpected type, use Uint8Array'); + } + } + + function cleanup(arr) { + for (var i = 0; i < arr.length; i++) arr[i] = 0; + } + + nacl.randomBytes = function(n) { + var b = new Uint8Array(n); + randombytes(b, n); + return b; + }; + + nacl.secretbox = function(msg, nonce, key) { + checkArrayTypes(msg, nonce, key); + checkLengths(key, nonce); + var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length); + var c = new Uint8Array(m.length); + for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i]; + crypto_secretbox(c, m, m.length, nonce, key); + return c.subarray(crypto_secretbox_BOXZEROBYTES); + }; + + nacl.secretbox.open = function(box, nonce, key) { + checkArrayTypes(box, nonce, key); + checkLengths(key, nonce); + var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length); + var m = new Uint8Array(c.length); + for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i]; + if (c.length < 32) return null; + if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null; + return m.subarray(crypto_secretbox_ZEROBYTES); + }; + + nacl.secretbox.keyLength = crypto_secretbox_KEYBYTES; + nacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES; + nacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES; + + nacl.scalarMult = function(n, p) { + checkArrayTypes(n, p); + if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); + if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size'); + var q = new Uint8Array(crypto_scalarmult_BYTES); + crypto_scalarmult(q, n, p); + return q; + }; + + nacl.scalarMult.base = function(n) { + checkArrayTypes(n); + if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); + var q = new Uint8Array(crypto_scalarmult_BYTES); + crypto_scalarmult_base(q, n); + return q; + }; + + nacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES; + nacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES; + + nacl.box = function(msg, nonce, publicKey, secretKey) { + var k = nacl.box.before(publicKey, secretKey); + return nacl.secretbox(msg, nonce, k); + }; + + nacl.box.before = function(publicKey, secretKey) { + checkArrayTypes(publicKey, secretKey); + checkBoxLengths(publicKey, secretKey); + var k = new Uint8Array(crypto_box_BEFORENMBYTES); + crypto_box_beforenm(k, publicKey, secretKey); + return k; + }; + + nacl.box.after = nacl.secretbox; + + nacl.box.open = function(msg, nonce, publicKey, secretKey) { + var k = nacl.box.before(publicKey, secretKey); + return nacl.secretbox.open(msg, nonce, k); + }; + + nacl.box.open.after = nacl.secretbox.open; + + nacl.box.keyPair = function() { + var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); + var sk = new Uint8Array(crypto_box_SECRETKEYBYTES); + crypto_box_keypair(pk, sk); + return {publicKey: pk, secretKey: sk}; + }; + + nacl.box.keyPair.fromSecretKey = function(secretKey) { + checkArrayTypes(secretKey); + if (secretKey.length !== crypto_box_SECRETKEYBYTES) + throw new Error('bad secret key size'); + var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); + crypto_scalarmult_base(pk, secretKey); + return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; + }; + + nacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES; + nacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES; + nacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES; + nacl.box.nonceLength = crypto_box_NONCEBYTES; + nacl.box.overheadLength = nacl.secretbox.overheadLength; + + nacl.sign = function(msg, secretKey) { + checkArrayTypes(msg, secretKey); + if (secretKey.length !== crypto_sign_SECRETKEYBYTES) + throw new Error('bad secret key size'); + var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length); + crypto_sign(signedMsg, msg, msg.length, secretKey); + return signedMsg; + }; + + nacl.sign.open = function(signedMsg, publicKey) { + checkArrayTypes(signedMsg, publicKey); + if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) + throw new Error('bad public key size'); + var tmp = new Uint8Array(signedMsg.length); + var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey); + if (mlen < 0) return null; + var m = new Uint8Array(mlen); + for (var i = 0; i < m.length; i++) m[i] = tmp[i]; + return m; + }; + + nacl.sign.detached = function(msg, secretKey) { + var signedMsg = nacl.sign(msg, secretKey); + var sig = new Uint8Array(crypto_sign_BYTES); + for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i]; + return sig; + }; + + nacl.sign.detached.verify = function(msg, sig, publicKey) { + checkArrayTypes(msg, sig, publicKey); + if (sig.length !== crypto_sign_BYTES) + throw new Error('bad signature size'); + if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) + throw new Error('bad public key size'); + var sm = new Uint8Array(crypto_sign_BYTES + msg.length); + var m = new Uint8Array(crypto_sign_BYTES + msg.length); + var i; + for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i]; + for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i]; + return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0); + }; + + nacl.sign.keyPair = function() { + var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); + var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); + crypto_sign_keypair(pk, sk); + return {publicKey: pk, secretKey: sk}; + }; + + nacl.sign.keyPair.fromSecretKey = function(secretKey) { + checkArrayTypes(secretKey); + if (secretKey.length !== crypto_sign_SECRETKEYBYTES) + throw new Error('bad secret key size'); + var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); + for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i]; + return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; + }; + + nacl.sign.keyPair.fromSeed = function(seed) { + checkArrayTypes(seed); + if (seed.length !== crypto_sign_SEEDBYTES) + throw new Error('bad seed size'); + var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); + var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); + for (var i = 0; i < 32; i++) sk[i] = seed[i]; + crypto_sign_keypair(pk, sk, true); + return {publicKey: pk, secretKey: sk}; + }; + + nacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES; + nacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES; + nacl.sign.seedLength = crypto_sign_SEEDBYTES; + nacl.sign.signatureLength = crypto_sign_BYTES; + + nacl.hash = function(msg) { + checkArrayTypes(msg); + var h = new Uint8Array(crypto_hash_BYTES); + crypto_hash(h, msg, msg.length); + return h; + }; + + nacl.hash.hashLength = crypto_hash_BYTES; + + nacl.verify = function(x, y) { + checkArrayTypes(x, y); + // Zero length arguments are considered not equal. + if (x.length === 0 || y.length === 0) return false; + if (x.length !== y.length) return false; + return (vn(x, 0, y, 0, x.length) === 0) ? true : false; + }; + + nacl.setPRNG = function(fn) { + randombytes = fn; + }; + + (function() { + // Initialize PRNG if environment provides CSPRNG. + // If not, methods calling randombytes will throw. + var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null; + if (crypto && crypto.getRandomValues) { + // Browsers. + var QUOTA = 65536; + nacl.setPRNG(function(x, n) { + var i, v = new Uint8Array(n); + for (i = 0; i < n; i += QUOTA) { + crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA))); + } + for (i = 0; i < n; i++) x[i] = v[i]; + cleanup(v); + }); + } else if (typeof commonjsRequire !== 'undefined') { + // Node.js. + crypto = require$$0; + if (crypto && crypto.randomBytes) { + nacl.setPRNG(function(x, n) { + var i, v = crypto.randomBytes(n); + for (i = 0; i < n; i++) x[i] = v[i]; + cleanup(v); + }); + } + } + })(); + + })(module.exports ? module.exports : (self.nacl = self.nacl || {})); +} (naclFast)); + +var naclFastExports = naclFast.exports; + +var naclUtil = {exports: {}}; + +(function (module) { + // Written in 2014-2016 by Dmitry Chestnykh and Devi Mandiri. + // Public domain. + (function(root, f) { + if (module.exports) module.exports = f(); + else if (root.nacl) root.nacl.util = f(); + else { + root.nacl = {}; + root.nacl.util = f(); + } + }(commonjsGlobal, function() { + + var util = {}; + + function validateBase64(s) { + if (!(/^(?:[A-Za-z0-9+\/]{2}[A-Za-z0-9+\/]{2})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/.test(s))) { + throw new TypeError('invalid encoding'); + } + } + + util.decodeUTF8 = function(s) { + if (typeof s !== 'string') throw new TypeError('expected string'); + var i, d = unescape(encodeURIComponent(s)), b = new Uint8Array(d.length); + for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i); + return b; + }; + + util.encodeUTF8 = function(arr) { + var i, s = []; + for (i = 0; i < arr.length; i++) s.push(String.fromCharCode(arr[i])); + return decodeURIComponent(escape(s.join(''))); + }; + + if (typeof atob === 'undefined') { + // Node.js + + if (typeof Buffer.from !== 'undefined') { + // Node v6 and later + util.encodeBase64 = function (arr) { // v6 and later + return Buffer.from(arr).toString('base64'); + }; + + util.decodeBase64 = function (s) { + validateBase64(s); + return new Uint8Array(Array.prototype.slice.call(Buffer.from(s, 'base64'), 0)); + }; + + } else { + // Node earlier than v6 + util.encodeBase64 = function (arr) { // v6 and later + return (new Buffer(arr)).toString('base64'); + }; + + util.decodeBase64 = function(s) { + validateBase64(s); + return new Uint8Array(Array.prototype.slice.call(new Buffer(s, 'base64'), 0)); + }; + } + + } else { + // Browsers + + util.encodeBase64 = function(arr) { + var i, s = [], len = arr.length; + for (i = 0; i < len; i++) s.push(String.fromCharCode(arr[i])); + return btoa(s.join('')); + }; + + util.decodeBase64 = function(s) { + validateBase64(s); + var i, d = atob(s), b = new Uint8Array(d.length); + for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i); + return b; + }; + + } + + return util; + + })); +} (naclUtil)); + +var naclUtilExports = naclUtil.exports; + +const PRIVATE_KEY_LENGTH = 64; +const PUBLIC_KEY_LENGTH = 64; +/** + * A class representing a SealingKey which provides cryptographic sealing (encryption) + * and unsealing (decryption) capabilities. + */ +class SealingKey { + /** + * Constructs a SealingKey instance with the given private and public keys. + * + * @param {string} privateKey - The private key used for decryption. + * @param {string} publicKey - The public key used for encryption. + * @throws Will throw an error if the provided keys lengths do not match + * the required lengths for private and public keys. + */ + constructor(privateKey, publicKey) { + /** + * Unseals (decrypts) the provided ciphertext using the instance's private key. + * + * @param {string | Uint8Array} ciphertext - The encrypted data to be decrypted. + * @returns BigInt - The decrypted message as a bigint. + * @throws Will throw an error if the decryption process fails. + */ + this.unseal = (ciphertext) => { + let parsedData = undefined; + try { + if (typeof ciphertext === "string") { + parsedData = JSON.parse(ciphertext); + } + } + catch { + // ignore errors + } + if (!parsedData) { + const toDecrypt = typeof ciphertext === "string" ? fromHexString(ciphertext) : ciphertext; + // decode json structure that gets returned from the chain + const jsonString = Buffer.from(toDecrypt).toString("utf8"); + parsedData = JSON.parse(jsonString); + } + if (!parsedData) { + throw new Error("Failed to parse sealed data"); + } + // assemble decryption parameters + const nonce = naclUtilExports.decodeBase64(parsedData.nonce); + const ephemPublicKey = naclUtilExports.decodeBase64(parsedData.ephemPublicKey); + const dataToDecrypt = naclUtilExports.decodeBase64(parsedData.ciphertext); + // call the nacl box function to decrypt the data + const decryptedMessage = naclFastExports.box.open(dataToDecrypt, nonce, ephemPublicKey, fromHexString(this.privateKey)); + if (!decryptedMessage) { + throw new Error("Failed to decrypt message"); + } + return toBigInt(decryptedMessage); + }; + if (privateKey.length !== PRIVATE_KEY_LENGTH) { + throw new Error(`Private key must be of length ${PRIVATE_KEY_LENGTH}`); + } + if (publicKey.length !== PUBLIC_KEY_LENGTH) { + throw new Error(`Private key must be of length ${PUBLIC_KEY_LENGTH}`); + } + this.privateKey = privateKey; + this.publicKey = publicKey; + } +} +/** + * Seals (encrypts) the provided message for a receiver with the specified public key. + * + * @param {bigint | number} value - The message to be encrypted. + * @param {string} publicKey - The public key of the intended recipient. + * @returns string - The encrypted message in hexadecimal format. + * @static + * @throws Will throw if the provided publicKey or value do not meet defined preconditions. + */ +SealingKey.seal = (value, publicKey) => { + isString(publicKey); + isBigIntOrNumber(value); + // generate ephemeral keypair + const ephemeralKeyPair = naclFastExports.box.keyPair(); + const nonce = naclFastExports.randomBytes(naclFastExports.box.nonceLength); + const encryptedMessage = naclFastExports.box(toBeArray(value), nonce, fromHexString(publicKey), ephemeralKeyPair.secretKey); + // handle encrypted data + const output = { + version: "x25519-xsalsa20-poly1305", + nonce: naclUtilExports.encodeBase64(nonce), + ephemPublicKey: naclUtilExports.encodeBase64(ephemeralKeyPair.publicKey), + ciphertext: naclUtilExports.encodeBase64(encryptedMessage), + }; + // mimicking encoding from the chain + return toHexString$1(Buffer.from(JSON.stringify(output))); +}; +/** + * Asynchronously generates a new SealingKey. + * This function uses the 'nacl' library to create a new public/private key pair for sealing purposes. + * A sealing key is used to encrypt data such that it can only be unsealed (decrypted) by the owner of the corresponding private key. + * @returns {Promise} - A promise that resolves to a new SealingKey object containing the hexadecimal strings of the public and private keys. + */ +const GenerateSealingKey = async () => { + const sodiumKeypair = naclFastExports.box.keyPair(); + return new SealingKey(toHexString$1(sodiumKeypair.secretKey), toHexString$1(sodiumKeypair.publicKey)); +}; + +let wasm$1; +const heap = new Array(128).fill(undefined); +heap.push(undefined, null, true, false); +let heap_next = heap.length; +function addHeapObject(obj) { + if (heap_next === heap.length) + heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + heap[idx] = obj; + return idx; +} +function getObject(idx) { + return heap[idx]; +} +function dropObject(idx) { + if (idx < 132) + return; + heap[idx] = heap_next; + heap_next = idx; +} +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; +} +const cachedTextDecoder = typeof TextDecoder !== "undefined" + ? new TextDecoder("utf-8", { ignoreBOM: true, fatal: true }) + : { + decode: () => { + throw Error("TextDecoder not available"); + }, + }; +if (typeof TextDecoder !== "undefined") { + cachedTextDecoder.decode(); +} +let cachedUint8Memory0 = null; +function getUint8Memory0() { + if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) { + cachedUint8Memory0 = new Uint8Array(wasm$1.memory.buffer); + } + return cachedUint8Memory0; +} +function getStringFromWasm0(ptr, len) { + ptr = ptr >>> 0; + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); +} +function isLikeNone(x) { + return x === undefined || x === null; +} +let cachedBigInt64Memory0 = null; +function getBigInt64Memory0() { + if (cachedBigInt64Memory0 === null || + cachedBigInt64Memory0.byteLength === 0) { + cachedBigInt64Memory0 = new BigInt64Array(wasm$1.memory.buffer); + } + return cachedBigInt64Memory0; +} +let cachedInt32Memory0 = null; +function getInt32Memory0() { + if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) { + cachedInt32Memory0 = new Int32Array(wasm$1.memory.buffer); + } + return cachedInt32Memory0; +} +function debugString(val) { + // primitive types + const type = typeof val; + if (type == "number" || type == "boolean" || val == null) { + return `${val}`; + } + if (type == "string") { + return `"${val}"`; + } + if (type == "symbol") { + const description = val.description; + if (description == null) { + return "Symbol"; + } + else { + return `Symbol(${description})`; + } + } + if (type == "function") { + const name = val.name; + if (typeof name == "string" && name.length > 0) { + return `Function(${name})`; + } + else { + return "Function"; + } + } + // objects + if (Array.isArray(val)) { + const length = val.length; + let debug = "["; + if (length > 0) { + debug += debugString(val[0]); + } + for (let i = 1; i < length; i++) { + debug += ", " + debugString(val[i]); + } + debug += "]"; + return debug; + } + // Test for built-in + const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); + let className; + if (builtInMatches.length > 1) { + className = builtInMatches[1]; + } + else { + // Failed to match the standard '[object ClassName]' + return toString.call(val); + } + if (className == "Object") { + // we're a user defined class or Object + // JSON.stringify avoids problems with cycles, and is generally much + // easier than looping through ownProperties of `val`. + try { + return "Object(" + JSON.stringify(val) + ")"; + } + catch (_) { + return "Object"; + } + } + // errors + if (val instanceof Error) { + return `${val.name}: ${val.message}\n${val.stack}`; + } + // TODO we could test for more things here, like `Set`s and `Map`s. + return className; +} +let WASM_VECTOR_LEN = 0; +const cachedTextEncoder = typeof TextEncoder !== "undefined" + ? new TextEncoder("utf-8") + : { + encode: () => { + throw Error("TextEncoder not available"); + }, + }; +const encodeString = typeof cachedTextEncoder.encodeInto === "function" + ? function (arg, view) { + return cachedTextEncoder.encodeInto(arg, view); + } + : function (arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length, + }; + }; +function passStringToWasm0(arg, malloc, realloc) { + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length, 1) >>> 0; + getUint8Memory0() + .subarray(ptr, ptr + buf.length) + .set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + let len = arg.length; + let ptr = malloc(len, 1) >>> 0; + const mem = getUint8Memory0(); + let offset = 0; + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 0x7f) + break; + mem[ptr + offset] = code; + } + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr = realloc(ptr, len, (len = offset + arg.length * 3), 1) >>> 0; + const view = getUint8Memory0().subarray(ptr + offset, ptr + len); + const ret = encodeString(arg, view); + offset += ret.written; + } + WASM_VECTOR_LEN = offset; + return ptr; +} +function _assertClass(instance, klass) { + if (!(instance instanceof klass)) { + throw new Error(`expected instance of ${klass.name}`); + } + return instance.ptr; +} +function getArrayU8FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len); +} +function passArray8ToWasm0(arg, malloc) { + const ptr = malloc(arg.length * 1, 1) >>> 0; + getUint8Memory0().set(arg, ptr / 1); + WASM_VECTOR_LEN = arg.length; + return ptr; +} +function handleError(f, args) { + try { + return f.apply(this, args); + } + catch (e) { + wasm$1.__wbindgen_exn_store(addHeapObject(e)); + } +} +/** + */ +class CompactFheBool { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(CompactFheBool.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_compactfhebool_free(ptr); + } + /** + * @param {boolean} value + * @param {TfheCompactPublicKey} client_key + * @returns {CompactFheBool} + */ + static encrypt_with_compact_public_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheCompactPublicKey); + wasm$1.compactfhebool_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheBool.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {FheBool} + */ + expand() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfhebool_expand(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheBool.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfhebool_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {CompactFheBool} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfhebool_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheBool.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfhebool_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {CompactFheBool} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfhebool_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheBool.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } +} +/** + */ +class CompactFheUint128 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(CompactFheUint128.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_compactfheuint128_free(ptr); + } + /** + * @param {any} value + * @param {TfheCompactPublicKey} client_key + * @returns {CompactFheUint128} + */ + static encrypt_with_compact_public_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheCompactPublicKey); + wasm$1.compactfheuint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {FheUint128} + */ + expand() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheint128_expand(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint128_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {CompactFheUint128} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint128_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {CompactFheUint128} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } +} +/** + */ +class CompactFheUint16 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(CompactFheUint16.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_compactfheuint16_free(ptr); + } + /** + * @param {number} value + * @param {TfheCompactPublicKey} client_key + * @returns {CompactFheUint16} + */ + static encrypt_with_compact_public_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheCompactPublicKey); + wasm$1.compactfheuint16_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {FheUint16} + */ + expand() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheint128_expand(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint16_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {CompactFheUint16} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint16_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {CompactFheUint16} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } +} +/** + */ +class CompactFheUint160 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(CompactFheUint160.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_compactfheuint160_free(ptr); + } + /** + * @param {any} value + * @param {TfheCompactPublicKey} client_key + * @returns {CompactFheUint160} + */ + static encrypt_with_compact_public_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheCompactPublicKey); + wasm$1.compactfheuint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {FheUint160} + */ + expand() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheint128_expand(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint160_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {CompactFheUint160} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint160_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {CompactFheUint160} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } +} +/** + */ +class CompactFheUint256 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(CompactFheUint256.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_compactfheuint256_free(ptr); + } + /** + * @param {any} value + * @param {TfheCompactPublicKey} client_key + * @returns {CompactFheUint256} + */ + static encrypt_with_compact_public_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheCompactPublicKey); + wasm$1.compactfheuint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {FheUint256} + */ + expand() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheint128_expand(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint256_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {CompactFheUint256} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint256_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {CompactFheUint256} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } +} +/** + */ +class CompactFheUint32 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(CompactFheUint32.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_compactfheuint32_free(ptr); + } + /** + * @param {number} value + * @param {TfheCompactPublicKey} client_key + * @returns {CompactFheUint32} + */ + static encrypt_with_compact_public_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheCompactPublicKey); + wasm$1.compactfheuint32_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {FheUint32} + */ + expand() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheint128_expand(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint32_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {CompactFheUint32} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint32_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {CompactFheUint32} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } +} +/** + */ +class CompactFheUint64 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(CompactFheUint64.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_compactfheuint64_free(ptr); + } + /** + * @param {bigint} value + * @param {TfheCompactPublicKey} client_key + * @returns {CompactFheUint64} + */ + static encrypt_with_compact_public_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheCompactPublicKey); + wasm$1.compactfheuint64_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {FheUint64} + */ + expand() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheint128_expand(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint64_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {CompactFheUint64} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint64_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {CompactFheUint64} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } +} +/** + */ +class CompactFheUint8 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(CompactFheUint8.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_compactfheuint8_free(ptr); + } + /** + * @param {number} value + * @param {TfheCompactPublicKey} client_key + * @returns {CompactFheUint8} + */ + static encrypt_with_compact_public_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheCompactPublicKey); + wasm$1.compactfheuint8_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {FheUint8} + */ + expand() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheint128_expand(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint8_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {CompactFheUint8} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint8_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {CompactFheUint8} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } +} +/** + */ +class FheBool { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheBool.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fhebool_free(ptr); + } + /** + * @param {boolean} value + * @param {TfheClientKey} client_key + * @returns {FheBool} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fhebool_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheBool.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {boolean} value + * @param {TfhePublicKey} public_key + * @returns {FheBool} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fhebool_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheBool.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {boolean} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheBool} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fhebool_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheBool.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {boolean} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheBool} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fhebool_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheBool.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {boolean} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fhebool_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return r0 !== 0; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fhebool_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheBool} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fhebool_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheBool.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fhebool_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheBool} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fhebool_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheBool.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } +} +/** + */ +class FheInt128 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheInt128.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheint128_free(ptr); + } + /** + * @param {any} value + * @param {TfheClientKey} client_key + * @returns {FheInt128} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint128_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfhePublicKey} public_key + * @returns {FheInt128} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheint128_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheInt128} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheint128_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheInt128} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {any} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint128_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint128_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheInt128} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint128_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheInt128} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } +} +/** + */ +class FheInt16 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheInt16.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheint16_free(ptr); + } + /** + * @param {number} value + * @param {TfheClientKey} client_key + * @returns {FheInt16} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint16_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfhePublicKey} public_key + * @returns {FheInt16} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheint16_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheInt16} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheint16_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheInt16} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheint16_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {number} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint16_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return r0; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint16_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheInt16} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint16_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheInt16} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } +} +/** + */ +class FheInt160 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheInt160.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheint160_free(ptr); + } + /** + * @param {any} value + * @param {TfheClientKey} client_key + * @returns {FheInt160} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint160_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfhePublicKey} public_key + * @returns {FheInt160} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheint160_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheInt160} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheint160_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheInt160} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {any} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint160_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint160_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheInt160} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint160_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheInt160} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } +} +/** + */ +class FheInt256 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheInt256.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheint256_free(ptr); + } + /** + * @param {any} value + * @param {TfheClientKey} client_key + * @returns {FheInt256} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint256_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfhePublicKey} public_key + * @returns {FheInt256} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheint256_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheInt256} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheint256_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheInt256} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {any} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint256_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint256_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheInt256} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint256_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheInt256} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } +} +/** + */ +class FheInt32 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheInt32.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheint32_free(ptr); + } + /** + * @param {number} value + * @param {TfheClientKey} client_key + * @returns {FheInt32} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint32_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfhePublicKey} public_key + * @returns {FheInt32} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheint32_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheInt32} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheint32_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheInt32} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheint32_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {number} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint32_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return r0; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint32_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheInt32} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint32_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheInt32} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } +} +/** + */ +class FheInt64 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheInt64.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheint64_free(ptr); + } + /** + * @param {bigint} value + * @param {TfheClientKey} client_key + * @returns {FheInt64} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint64_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} value + * @param {TfhePublicKey} public_key + * @returns {FheInt64} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheint64_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheInt64} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheint64_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheInt64} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheint64_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {bigint} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint64_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getBigInt64Memory0()[retptr / 8 + 0]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + return r0; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint64_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheInt64} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint64_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheInt64} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } +} +/** + */ +class FheInt8 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheInt8.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheint8_free(ptr); + } + /** + * @param {number} value + * @param {TfheClientKey} client_key + * @returns {FheInt8} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint8_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfhePublicKey} public_key + * @returns {FheInt8} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheint8_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheInt8} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheint8_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheInt8} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheint8_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {number} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint8_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return r0; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint8_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheInt8} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint8_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheInt8} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } +} +/** + */ +class FheUint128 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheUint128.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheuint128_free(ptr); + } + /** + * @param {any} value + * @param {TfheClientKey} client_key + * @returns {FheUint128} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint128_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfhePublicKey} public_key + * @returns {FheUint128} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheuint128_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheUint128} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheuint128_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheUint128} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheuint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {any} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint128_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint128_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheUint128} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint128_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheUint128} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } +} +/** + */ +class FheUint16 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheUint16.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheuint16_free(ptr); + } + /** + * @param {number} value + * @param {TfheClientKey} client_key + * @returns {FheUint16} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint16_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfhePublicKey} public_key + * @returns {FheUint16} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheuint16_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheUint16} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheuint16_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheUint16} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheuint16_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {number} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint16_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return r0; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint16_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheUint16} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint16_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheUint16} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } +} +/** + */ +class FheUint160 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheUint160.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheuint160_free(ptr); + } + /** + * @param {any} value + * @param {TfheClientKey} client_key + * @returns {FheUint160} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint160_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfhePublicKey} public_key + * @returns {FheUint160} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheuint160_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheUint160} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheuint160_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheUint160} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheuint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {any} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint160_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint160_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheUint160} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint160_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheUint160} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } +} +/** + */ +class FheUint256 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheUint256.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheuint256_free(ptr); + } + /** + * @param {any} value + * @param {TfheClientKey} client_key + * @returns {FheUint256} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint256_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfhePublicKey} public_key + * @returns {FheUint256} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheuint256_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheUint256} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheuint256_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheUint256} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheuint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {any} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint256_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint256_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheUint256} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint256_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheUint256} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } +} +/** + */ +class FheUint32 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheUint32.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheuint32_free(ptr); + } + /** + * @param {number} value + * @param {TfheClientKey} client_key + * @returns {FheUint32} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint32_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfhePublicKey} public_key + * @returns {FheUint32} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheuint32_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheUint32} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheuint32_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheUint32} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheuint32_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {number} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint32_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return r0 >>> 0; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint32_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheUint32} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint32_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheUint32} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } +} +/** + */ +class FheUint64 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheUint64.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheuint64_free(ptr); + } + /** + * @param {bigint} value + * @param {TfheClientKey} client_key + * @returns {FheUint64} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint64_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} value + * @param {TfhePublicKey} public_key + * @returns {FheUint64} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheuint64_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheUint64} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheuint64_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheUint64} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheuint64_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {bigint} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint64_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getBigInt64Memory0()[retptr / 8 + 0]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + return BigInt.asUintN(64, r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint64_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheUint64} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint64_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheUint64} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } +} +/** + */ +class FheUint8 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheUint8.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheuint8_free(ptr); + } + /** + * @param {number} value + * @param {TfheClientKey} client_key + * @returns {FheUint8} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint8_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfhePublicKey} public_key + * @returns {FheUint8} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheuint8_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheUint8} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheuint8_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheUint8} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheuint8_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {number} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint8_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return r0; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint8_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheUint8} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint8_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheUint8} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } +} +/** + */ +class TfheClientKey { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(TfheClientKey.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_tfheclientkey_free(ptr); + } + /** + * @param {TfheConfig} config + * @returns {TfheClientKey} + */ + static generate(config) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(config, TfheConfig); + wasm$1.tfheclientkey_generate(retptr, config.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return TfheClientKey.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheConfig} config + * @param {any} seed + * @returns {TfheClientKey} + */ + static generate_with_seed(config, seed) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(config, TfheConfig); + wasm$1.tfheclientkey_generate_with_seed(retptr, config.__wbg_ptr, addHeapObject(seed)); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return TfheClientKey.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.tfheclientkey_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {TfheClientKey} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.tfheclientkey_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return TfheClientKey.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } +} +/** + */ +class TfheCompactPublicKey { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(TfheCompactPublicKey.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_tfhecompactpublickey_free(ptr); + } + /** + * @param {TfheClientKey} client_key + * @returns {TfheCompactPublicKey} + */ + static new(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.tfhecompactpublickey_new(retptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return TfheCompactPublicKey.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.tfhecompactpublickey_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {TfheCompactPublicKey} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.tfhecompactpublickey_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return TfheCompactPublicKey.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } +} +/** + */ +class TfheCompressedPublicKey { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(TfheCompressedPublicKey.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_tfhecompressedpublickey_free(ptr); + } + /** + * @param {TfheClientKey} client_key + * @returns {TfheCompressedPublicKey} + */ + static new(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.tfhecompressedpublickey_new(retptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return TfheCompressedPublicKey.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {TfhePublicKey} + */ + decompress() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.tfhecompressedpublickey_decompress(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return TfhePublicKey.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.tfhecompressedpublickey_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {TfheCompressedPublicKey} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.tfhecompressedpublickey_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return TfheCompressedPublicKey.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } +} +/** + */ +class TfheConfig { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(TfheConfig.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_tfheconfig_free(ptr); + } +} +/** + */ +class TfheConfigBuilder { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(TfheConfigBuilder.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_tfheconfigbuilder_free(ptr); + } + /** + * @returns {TfheConfigBuilder} + */ + static default() { + const ret = wasm$1.tfheconfigbuilder_default(); + return TfheConfigBuilder.__wrap(ret); + } + /** + * @returns {TfheConfigBuilder} + */ + static default_with_small_encryption() { + const ret = wasm$1.tfheconfigbuilder_default_with_small_encryption(); + return TfheConfigBuilder.__wrap(ret); + } + /** + * @returns {TfheConfigBuilder} + */ + static default_with_big_encryption() { + const ret = wasm$1.tfheconfigbuilder_default(); + return TfheConfigBuilder.__wrap(ret); + } + /** + * @returns {TfheConfig} + */ + build() { + const ptr = this.__destroy_into_raw(); + const ret = wasm$1.tfheconfigbuilder_build(ptr); + return TfheConfig.__wrap(ret); + } +} +/** + */ +class TfhePublicKey { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(TfhePublicKey.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_tfhepublickey_free(ptr); + } + /** + * @param {TfheClientKey} client_key + * @returns {TfhePublicKey} + */ + static new(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.tfhepublickey_new(retptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return TfhePublicKey.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.tfhepublickey_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {TfhePublicKey} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.tfhepublickey_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return TfhePublicKey.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } +} +async function __wbg_load(module, imports) { + if (typeof Response === "function" && module instanceof Response) { + if (typeof WebAssembly.instantiateStreaming === "function") { + try { + return await WebAssembly.instantiateStreaming(module, imports); + } + catch (e) { + if (module.headers.get("Content-Type") != "application/wasm") { + console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); + } + else { + throw e; + } + } + } + const bytes = await module.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); + } + else { + const instance = await WebAssembly.instantiate(module, imports); + if (instance instanceof WebAssembly.Instance) { + return { instance, module }; + } + else { + return instance; + } + } +} +function __wbg_get_imports() { + const imports = {}; + imports.wbg = {}; + imports.wbg.__wbindgen_bigint_from_u64 = function (arg0) { + const ret = BigInt.asUintN(64, arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_shr = function (arg0, arg1) { + const ret = getObject(arg0) >> getObject(arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_object_drop_ref = function (arg0) { + takeObject(arg0); + }; + imports.wbg.__wbindgen_bigint_from_i64 = function (arg0) { + const ret = arg0; + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_jsval_eq = function (arg0, arg1) { + const ret = getObject(arg0) === getObject(arg1); + return ret; + }; + imports.wbg.__wbindgen_error_new = function (arg0, arg1) { + const ret = new Error(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_bigint_from_i128 = function (arg0, arg1) { + const ret = (arg0 << BigInt(64)) | BigInt.asUintN(64, arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_bigint_from_u128 = function (arg0, arg1) { + const ret = (BigInt.asUintN(64, arg0) << BigInt(64)) | BigInt.asUintN(64, arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheuint16_new = function (arg0) { + const ret = FheUint16.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheuint160_new = function (arg0) { + const ret = FheUint160.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheuint256_new = function (arg0) { + const ret = FheUint256.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheuint32_new = function (arg0) { + const ret = FheUint32.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheuint128_new = function (arg0) { + const ret = FheUint128.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheuint8_new = function (arg0) { + const ret = FheUint8.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheuint64_new = function (arg0) { + const ret = FheUint64.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheint32_new = function (arg0) { + const ret = FheInt32.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheint64_new = function (arg0) { + const ret = FheInt64.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fhebool_new = function (arg0) { + const ret = FheBool.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheint256_new = function (arg0) { + const ret = FheInt256.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheint160_new = function (arg0) { + const ret = FheInt160.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheint16_new = function (arg0) { + const ret = FheInt16.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheint8_new = function (arg0) { + const ret = FheInt8.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheint128_new = function (arg0) { + const ret = FheInt128.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_boolean_get = function (arg0) { + const v = getObject(arg0); + const ret = typeof v === "boolean" ? (v ? 1 : 0) : 2; + return ret; + }; + imports.wbg.__wbindgen_bigint_from_str = function (arg0, arg1) { + const ret = BigInt(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_bit_and = function (arg0, arg1) { + const ret = getObject(arg0) & getObject(arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_number_new = function (arg0) { + const ret = arg0; + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_lt = function (arg0, arg1) { + const ret = getObject(arg0) < getObject(arg1); + return ret; + }; + imports.wbg.__wbindgen_neg = function (arg0) { + const ret = -getObject(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_shl = function (arg0, arg1) { + const ret = getObject(arg0) << getObject(arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_add = function (arg0, arg1) { + const ret = getObject(arg0) + getObject(arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_bit_or = function (arg0, arg1) { + const ret = getObject(arg0) | getObject(arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbg_new_abda76e883ba8a5f = function () { + const ret = new Error(); + return addHeapObject(ret); + }; + imports.wbg.__wbg_stack_658279fe44541cf6 = function (arg0, arg1) { + const ret = getObject(arg1).stack; + const ptr1 = passStringToWasm0(ret, wasm$1.__wbindgen_malloc, wasm$1.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; + imports.wbg.__wbg_error_f851667af71bcfc6 = function (arg0, arg1) { + let deferred0_0; + let deferred0_1; + try { + deferred0_0 = arg0; + deferred0_1 = arg1; + console.error(getStringFromWasm0(arg0, arg1)); + } + finally { + wasm$1.__wbindgen_free(deferred0_0, deferred0_1, 1); + } + }; + imports.wbg.__wbg_crypto_70a96de3b6b73dac = function (arg0) { + const ret = getObject(arg0).crypto; + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_is_object = function (arg0) { + const val = getObject(arg0); + const ret = typeof val === "object" && val !== null; + return ret; + }; + imports.wbg.__wbg_process_dd1577445152112e = function (arg0) { + const ret = getObject(arg0).process; + return addHeapObject(ret); + }; + imports.wbg.__wbg_versions_58036bec3add9e6f = function (arg0) { + const ret = getObject(arg0).versions; + return addHeapObject(ret); + }; + imports.wbg.__wbg_node_6a9d28205ed5b0d8 = function (arg0) { + const ret = getObject(arg0).node; + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_is_string = function (arg0) { + const ret = typeof getObject(arg0) === "string"; + return ret; + }; + imports.wbg.__wbg_require_f05d779769764e82 = function () { + return handleError(function () { + const ret = module.require; + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbindgen_string_new = function (arg0, arg1) { + const ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbg_msCrypto_adbc770ec9eca9c7 = function (arg0) { + const ret = getObject(arg0).msCrypto; + return addHeapObject(ret); + }; + imports.wbg.__wbg_randomFillSync_e950366c42764a07 = function () { + return handleError(function (arg0, arg1) { + getObject(arg0).randomFillSync(takeObject(arg1)); + }, arguments); + }; + imports.wbg.__wbg_getRandomValues_3774744e221a22ad = function () { + return handleError(function (arg0, arg1) { + getObject(arg0).getRandomValues(getObject(arg1)); + }, arguments); + }; + imports.wbg.__wbindgen_is_function = function (arg0) { + const ret = typeof getObject(arg0) === "function"; + return ret; + }; + imports.wbg.__wbg_newnoargs_e643855c6572a4a8 = function (arg0, arg1) { + const ret = new Function(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_call_f96b398515635514 = function () { + return handleError(function (arg0, arg1) { + const ret = getObject(arg0).call(getObject(arg1)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_self_b9aad7f1c618bfaf = function () { + return handleError(function () { + const ret = self.self; + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_window_55e469842c98b086 = function () { + return handleError(function () { + const ret = window.window; + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_globalThis_d0957e302752547e = function () { + return handleError(function () { + const ret = globalThis.globalThis; + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_global_ae2f87312b8987fb = function () { + return handleError(function () { + const ret = global.global; + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbindgen_is_undefined = function (arg0) { + const ret = getObject(arg0) === undefined; + return ret; + }; + imports.wbg.__wbg_call_35782e9a1aa5e091 = function () { + return handleError(function (arg0, arg1, arg2) { + const ret = getObject(arg0).call(getObject(arg1), getObject(arg2)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_buffer_fcbfb6d88b2732e9 = function (arg0) { + const ret = getObject(arg0).buffer; + return addHeapObject(ret); + }; + imports.wbg.__wbg_newwithbyteoffsetandlength_92c251989c485785 = function (arg0, arg1, arg2) { + const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_new_bc5d9aad3f9ac80e = function (arg0) { + const ret = new Uint8Array(getObject(arg0)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_set_4b3aa8445ac1e91c = function (arg0, arg1, arg2) { + getObject(arg0).set(getObject(arg1), arg2 >>> 0); + }; + imports.wbg.__wbg_newwithlength_89eca18f2603a999 = function (arg0) { + const ret = new Uint8Array(arg0 >>> 0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_subarray_7649d027b2b141b3 = function (arg0, arg1, arg2) { + const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_object_clone_ref = function (arg0) { + const ret = getObject(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_bigint_get_as_i64 = function (arg0, arg1) { + const v = getObject(arg1); + const ret = typeof v === "bigint" ? v : undefined; + getBigInt64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? BigInt(0) : ret; + getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret); + }; + imports.wbg.__wbindgen_debug_string = function (arg0, arg1) { + const ret = debugString(getObject(arg1)); + const ptr1 = passStringToWasm0(ret, wasm$1.__wbindgen_malloc, wasm$1.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; + imports.wbg.__wbindgen_throw = function (arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + }; + imports.wbg.__wbindgen_memory = function () { + const ret = wasm$1.memory; + return addHeapObject(ret); + }; + return imports; +} +function __wbg_finalize_init(instance, module) { + wasm$1 = instance.exports; + __wbg_init.__wbindgen_wasm_module = module; + cachedBigInt64Memory0 = null; + cachedInt32Memory0 = null; + cachedUint8Memory0 = null; + return wasm$1; +} +async function __wbg_init(input) { + if (wasm$1 !== undefined) + return wasm$1; + // FHENIX: disabling this because it fucks with frameworks that try to resolve it + // if (typeof input === 'undefined') { + // input = new URL('tfhe_bg.wasm', import.meta.url); + // } + const imports = __wbg_get_imports(); + if (typeof input === "string" || + (typeof Request === "function" && input instanceof Request) || + (typeof URL === "function" && input instanceof URL)) { + input = fetch(input); + } + const { instance, module } = await __wbg_load(await input, imports); + return __wbg_finalize_init(instance, module); +} + +const createTfheKeypair = () => { + // const block_params = new ShortintParameters( + // ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS, + // ); + const config = TfheConfigBuilder.default() + //..(block_params) + .build(); + const clientKey = TfheClientKey.generate(config); + let publicKey = TfheCompactPublicKey.new(clientKey); + publicKey = TfheCompactPublicKey.deserialize(publicKey.serialize()); + return { clientKey, publicKey }; +}; +const createTfhePublicKey = () => { + const { publicKey } = createTfheKeypair(); + return toHexString(publicKey.serialize()); +}; +const toHexString = (bytes) => bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, "0"), ""); + +/** + * An enumeration of supported encryption types. + * uint8, uint16, and uint32 represent the different sizes of integers that can be encrypted. + */ +var EncryptionTypes; +(function (EncryptionTypes) { + EncryptionTypes["bool"] = "bool"; + EncryptionTypes["uint8"] = "uint8"; + EncryptionTypes["uint16"] = "uint16"; + EncryptionTypes["uint32"] = "uint32"; + EncryptionTypes["uint64"] = "uint64"; + EncryptionTypes["uint128"] = "uint128"; + EncryptionTypes["uint256"] = "uint256"; + EncryptionTypes["address"] = "address"; +})(EncryptionTypes || (EncryptionTypes = {})); +/** + * Mapping of encryption types to their utype integer + */ +var FheUType; +(function (FheUType) { + FheUType[FheUType["bool"] = 13] = "bool"; + FheUType[FheUType["uint8"] = 0] = "uint8"; + FheUType[FheUType["uint16"] = 1] = "uint16"; + FheUType[FheUType["uint32"] = 2] = "uint32"; + FheUType[FheUType["uint64"] = 3] = "uint64"; + FheUType[FheUType["uint128"] = 4] = "uint128"; + FheUType[FheUType["uint256"] = 5] = "uint256"; + FheUType[FheUType["address"] = 12] = "address"; +})(FheUType || (FheUType = {})); +/** + * List of All FHE uint types (excludes bool and address) + */ +const FheUintUTypes = [ + FheUType.uint8, + FheUType.uint16, + FheUType.uint32, + FheUType.uint64, + FheUType.uint128, + FheUType.uint256, +]; +/** + * List of All FHE types (uints, bool, and address) + */ +const FheAllUTypes = [ + FheUType.bool, + FheUType.uint8, + FheUType.uint16, + FheUType.uint32, + FheUType.uint64, + FheUType.uint128, + FheUType.uint256, + FheUType.address, +]; + +const Encryptable = { + bool: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.bool }), + uint8: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint8 }), + uint16: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint16 }), + uint32: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint32 }), + uint64: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint64 }), + uint128: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint128 }), + uint256: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint256 }), + address: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.address }), +}; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function isEncryptableItem(value) { + return (typeof value === "object" && + value !== null && + ["string", "number", "bigint", "boolean"].includes(typeof value.data) && + typeof value.securityZone === "number" && + FheAllUTypes.includes(value.utype)); +} + +const ResultErr = (error) => ({ + success: false, + data: null, + error, +}); +const ResultOk = (data) => ({ + success: true, + data, + error: null, +}); + +// Determine if `value` is an instance of a `sealedItem` { data: string, utype: 0-5 | 12 | 13 } +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function getAsSealedItem(value) { + if (Array.isArray(value) && + value.length === 2 && + typeof value[0] === "string" && + FheAllUTypes.includes(parseInt(`${value[1]}`))) + return { + data: value[0], + utype: value[1], + }; + if (typeof value === "object" && + value !== null && + typeof value.data === "string" && + FheAllUTypes.includes(value.utype)) + return value; + return undefined; +} +function isSealedBool(value) { + return parseInt(`${value.utype}`) === FheUType.bool; +} +function isSealedUint(value) { + return FheUintUTypes.includes(parseInt(`${value.utype}`)); +} +function isSealedAddress(value) { + return parseInt(`${value.utype}`) === FheUType.address; +} + +const createStoreImpl = (createState) => { + let state; + const listeners = /* @__PURE__ */ new Set(); + const setState = (partial, replace) => { + const nextState = typeof partial === "function" ? partial(state) : partial; + if (!Object.is(nextState, state)) { + const previousState = state; + state = (replace != null ? replace : typeof nextState !== "object" || nextState === null) ? nextState : Object.assign({}, state, nextState); + listeners.forEach((listener) => listener(state, previousState)); + } + }; + const getState = () => state; + const getInitialState = () => initialState; + const subscribe = (listener) => { + listeners.add(listener); + return () => listeners.delete(listener); + }; + const api = { setState, getState, getInitialState, subscribe }; + const initialState = state = createState(setState, getState, api); + return api; +}; +const createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl; + +function createJSONStorage(getStorage, options) { + let storage; + try { + storage = getStorage(); + } catch (e) { + return; + } + const persistStorage = { + getItem: (name) => { + var _a; + const parse = (str2) => { + if (str2 === null) { + return null; + } + return JSON.parse(str2, void 0 ); + }; + const str = (_a = storage.getItem(name)) != null ? _a : null; + if (str instanceof Promise) { + return str.then(parse); + } + return parse(str); + }, + setItem: (name, newValue) => storage.setItem( + name, + JSON.stringify(newValue, void 0 ) + ), + removeItem: (name) => storage.removeItem(name) + }; + return persistStorage; +} +const toThenable = (fn) => (input) => { + try { + const result = fn(input); + if (result instanceof Promise) { + return result; + } + return { + then(onFulfilled) { + return toThenable(onFulfilled)(result); + }, + catch(_onRejected) { + return this; + } + }; + } catch (e) { + return { + then(_onFulfilled) { + return this; + }, + catch(onRejected) { + return toThenable(onRejected)(e); + } + }; + } +}; +const persistImpl = (config, baseOptions) => (set, get, api) => { + let options = { + storage: createJSONStorage(() => localStorage), + partialize: (state) => state, + version: 0, + merge: (persistedState, currentState) => ({ + ...currentState, + ...persistedState + }), + ...baseOptions + }; + let hasHydrated = false; + const hydrationListeners = /* @__PURE__ */ new Set(); + const finishHydrationListeners = /* @__PURE__ */ new Set(); + let storage = options.storage; + if (!storage) { + return config( + (...args) => { + console.warn( + `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.` + ); + set(...args); + }, + get, + api + ); + } + const setItem = () => { + const state = options.partialize({ ...get() }); + return storage.setItem(options.name, { + state, + version: options.version + }); + }; + const savedSetState = api.setState; + api.setState = (state, replace) => { + savedSetState(state, replace); + void setItem(); + }; + const configResult = config( + (...args) => { + set(...args); + void setItem(); + }, + get, + api + ); + api.getInitialState = () => configResult; + let stateFromStorage; + const hydrate = () => { + var _a, _b; + if (!storage) return; + hasHydrated = false; + hydrationListeners.forEach((cb) => { + var _a2; + return cb((_a2 = get()) != null ? _a2 : configResult); + }); + const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0; + return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => { + if (deserializedStorageValue) { + if (typeof deserializedStorageValue.version === "number" && deserializedStorageValue.version !== options.version) { + if (options.migrate) { + return [ + true, + options.migrate( + deserializedStorageValue.state, + deserializedStorageValue.version + ) + ]; + } + console.error( + `State loaded from storage couldn't be migrated since no migrate function was provided` + ); + } else { + return [false, deserializedStorageValue.state]; + } + } + return [false, void 0]; + }).then((migrationResult) => { + var _a2; + const [migrated, migratedState] = migrationResult; + stateFromStorage = options.merge( + migratedState, + (_a2 = get()) != null ? _a2 : configResult + ); + set(stateFromStorage, true); + if (migrated) { + return setItem(); + } + }).then(() => { + postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0); + stateFromStorage = get(); + hasHydrated = true; + finishHydrationListeners.forEach((cb) => cb(stateFromStorage)); + }).catch((e) => { + postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e); + }); + }; + api.persist = { + setOptions: (newOptions) => { + options = { + ...options, + ...newOptions + }; + if (newOptions.storage) { + storage = newOptions.storage; + } + }, + clearStorage: () => { + storage == null ? void 0 : storage.removeItem(options.name); + }, + getOptions: () => options, + rehydrate: () => hydrate(), + hasHydrated: () => hasHydrated, + onHydrate: (cb) => { + hydrationListeners.add(cb); + return () => { + hydrationListeners.delete(cb); + }; + }, + onFinishHydration: (cb) => { + finishHydrationListeners.add(cb); + return () => { + finishHydrationListeners.delete(cb); + }; + } + }; + if (!options.skipHydration) { + hydrate(); + } + return stateFromStorage || configResult; +}; +const persist = persistImpl; + +// src/utils/env.ts +var NOTHING = Symbol.for("immer-nothing"); +var DRAFTABLE = Symbol.for("immer-draftable"); +var DRAFT_STATE = Symbol.for("immer-state"); + +// src/utils/errors.ts +var errors = process.env.NODE_ENV !== "production" ? [ + // All error codes, starting by 0: + function(plugin) { + return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \`enable${plugin}()\` when initializing your application.`; + }, + function(thing) { + return `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`; + }, + "This object has been frozen and should not be mutated", + function(data) { + return "Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? " + data; + }, + "An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.", + "Immer forbids circular references", + "The first or second argument to `produce` must be a function", + "The third argument to `produce` must be a function or undefined", + "First argument to `createDraft` must be a plain object, an array, or an immerable object", + "First argument to `finishDraft` must be a draft returned by `createDraft`", + function(thing) { + return `'current' expects a draft, got: ${thing}`; + }, + "Object.defineProperty() cannot be used on an Immer draft", + "Object.setPrototypeOf() cannot be used on an Immer draft", + "Immer only supports deleting array indices", + "Immer only supports setting array indices and the 'length' property", + function(thing) { + return `'original' expects a draft, got: ${thing}`; + } + // Note: if more errors are added, the errorOffset in Patches.ts should be increased + // See Patches.ts for additional errors +] : []; +function die(error, ...args) { + if (process.env.NODE_ENV !== "production") { + const e = errors[error]; + const msg = typeof e === "function" ? e.apply(null, args) : e; + throw new Error(`[Immer] ${msg}`); + } + throw new Error( + `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf` + ); +} + +// src/utils/common.ts +var getPrototypeOf = Object.getPrototypeOf; +function isDraft(value) { + return !!value && !!value[DRAFT_STATE]; +} +function isDraftable(value) { + if (!value) + return false; + return isPlainObject(value) || Array.isArray(value) || !!value[DRAFTABLE] || !!value.constructor?.[DRAFTABLE] || isMap(value) || isSet(value); +} +var objectCtorString = Object.prototype.constructor.toString(); +function isPlainObject(value) { + if (!value || typeof value !== "object") + return false; + const proto = getPrototypeOf(value); + if (proto === null) { + return true; + } + const Ctor = Object.hasOwnProperty.call(proto, "constructor") && proto.constructor; + if (Ctor === Object) + return true; + return typeof Ctor == "function" && Function.toString.call(Ctor) === objectCtorString; +} +function each(obj, iter) { + if (getArchtype(obj) === 0 /* Object */) { + Reflect.ownKeys(obj).forEach((key) => { + iter(key, obj[key], obj); + }); + } else { + obj.forEach((entry, index) => iter(index, entry, obj)); + } +} +function getArchtype(thing) { + const state = thing[DRAFT_STATE]; + return state ? state.type_ : Array.isArray(thing) ? 1 /* Array */ : isMap(thing) ? 2 /* Map */ : isSet(thing) ? 3 /* Set */ : 0 /* Object */; +} +function has(thing, prop) { + return getArchtype(thing) === 2 /* Map */ ? thing.has(prop) : Object.prototype.hasOwnProperty.call(thing, prop); +} +function set(thing, propOrOldValue, value) { + const t = getArchtype(thing); + if (t === 2 /* Map */) + thing.set(propOrOldValue, value); + else if (t === 3 /* Set */) { + thing.add(value); + } else + thing[propOrOldValue] = value; +} +function is(x, y) { + if (x === y) { + return x !== 0 || 1 / x === 1 / y; + } else { + return x !== x && y !== y; + } +} +function isMap(target) { + return target instanceof Map; +} +function isSet(target) { + return target instanceof Set; +} +function latest(state) { + return state.copy_ || state.base_; +} +function shallowCopy(base, strict) { + if (isMap(base)) { + return new Map(base); + } + if (isSet(base)) { + return new Set(base); + } + if (Array.isArray(base)) + return Array.prototype.slice.call(base); + const isPlain = isPlainObject(base); + if (strict === true || strict === "class_only" && !isPlain) { + const descriptors = Object.getOwnPropertyDescriptors(base); + delete descriptors[DRAFT_STATE]; + let keys = Reflect.ownKeys(descriptors); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const desc = descriptors[key]; + if (desc.writable === false) { + desc.writable = true; + desc.configurable = true; + } + if (desc.get || desc.set) + descriptors[key] = { + configurable: true, + writable: true, + // could live with !!desc.set as well here... + enumerable: desc.enumerable, + value: base[key] + }; + } + return Object.create(getPrototypeOf(base), descriptors); + } else { + const proto = getPrototypeOf(base); + if (proto !== null && isPlain) { + return { ...base }; + } + const obj = Object.create(proto); + return Object.assign(obj, base); + } +} +function freeze(obj, deep = false) { + if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) + return obj; + if (getArchtype(obj) > 1) { + obj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections; + } + Object.freeze(obj); + if (deep) + Object.entries(obj).forEach(([key, value]) => freeze(value, true)); + return obj; +} +function dontMutateFrozenCollections() { + die(2); +} +function isFrozen(obj) { + return Object.isFrozen(obj); +} + +// src/utils/plugins.ts +var plugins = {}; +function getPlugin(pluginKey) { + const plugin = plugins[pluginKey]; + if (!plugin) { + die(0, pluginKey); + } + return plugin; +} + +// src/core/scope.ts +var currentScope; +function getCurrentScope() { + return currentScope; +} +function createScope(parent_, immer_) { + return { + drafts_: [], + parent_, + immer_, + // Whenever the modified draft contains a draft from another scope, we + // need to prevent auto-freezing so the unowned draft can be finalized. + canAutoFreeze_: true, + unfinalizedDrafts_: 0 + }; +} +function usePatchesInScope(scope, patchListener) { + if (patchListener) { + getPlugin("Patches"); + scope.patches_ = []; + scope.inversePatches_ = []; + scope.patchListener_ = patchListener; + } +} +function revokeScope(scope) { + leaveScope(scope); + scope.drafts_.forEach(revokeDraft); + scope.drafts_ = null; +} +function leaveScope(scope) { + if (scope === currentScope) { + currentScope = scope.parent_; + } +} +function enterScope(immer2) { + return currentScope = createScope(currentScope, immer2); +} +function revokeDraft(draft) { + const state = draft[DRAFT_STATE]; + if (state.type_ === 0 /* Object */ || state.type_ === 1 /* Array */) + state.revoke_(); + else + state.revoked_ = true; +} + +// src/core/finalize.ts +function processResult(result, scope) { + scope.unfinalizedDrafts_ = scope.drafts_.length; + const baseDraft = scope.drafts_[0]; + const isReplaced = result !== void 0 && result !== baseDraft; + if (isReplaced) { + if (baseDraft[DRAFT_STATE].modified_) { + revokeScope(scope); + die(4); + } + if (isDraftable(result)) { + result = finalize(scope, result); + if (!scope.parent_) + maybeFreeze(scope, result); + } + if (scope.patches_) { + getPlugin("Patches").generateReplacementPatches_( + baseDraft[DRAFT_STATE].base_, + result, + scope.patches_, + scope.inversePatches_ + ); + } + } else { + result = finalize(scope, baseDraft, []); + } + revokeScope(scope); + if (scope.patches_) { + scope.patchListener_(scope.patches_, scope.inversePatches_); + } + return result !== NOTHING ? result : void 0; +} +function finalize(rootScope, value, path) { + if (isFrozen(value)) + return value; + const state = value[DRAFT_STATE]; + if (!state) { + each( + value, + (key, childValue) => finalizeProperty(rootScope, state, value, key, childValue, path) + ); + return value; + } + if (state.scope_ !== rootScope) + return value; + if (!state.modified_) { + maybeFreeze(rootScope, state.base_, true); + return state.base_; + } + if (!state.finalized_) { + state.finalized_ = true; + state.scope_.unfinalizedDrafts_--; + const result = state.copy_; + let resultEach = result; + let isSet2 = false; + if (state.type_ === 3 /* Set */) { + resultEach = new Set(result); + result.clear(); + isSet2 = true; + } + each( + resultEach, + (key, childValue) => finalizeProperty(rootScope, state, result, key, childValue, path, isSet2) + ); + maybeFreeze(rootScope, result, false); + if (path && rootScope.patches_) { + getPlugin("Patches").generatePatches_( + state, + path, + rootScope.patches_, + rootScope.inversePatches_ + ); + } + } + return state.copy_; +} +function finalizeProperty(rootScope, parentState, targetObject, prop, childValue, rootPath, targetIsSet) { + if (process.env.NODE_ENV !== "production" && childValue === targetObject) + die(5); + if (isDraft(childValue)) { + const path = rootPath && parentState && parentState.type_ !== 3 /* Set */ && // Set objects are atomic since they have no keys. + !has(parentState.assigned_, prop) ? rootPath.concat(prop) : void 0; + const res = finalize(rootScope, childValue, path); + set(targetObject, prop, res); + if (isDraft(res)) { + rootScope.canAutoFreeze_ = false; + } else + return; + } else if (targetIsSet) { + targetObject.add(childValue); + } + if (isDraftable(childValue) && !isFrozen(childValue)) { + if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) { + return; + } + finalize(rootScope, childValue); + if ((!parentState || !parentState.scope_.parent_) && typeof prop !== "symbol" && Object.prototype.propertyIsEnumerable.call(targetObject, prop)) + maybeFreeze(rootScope, childValue); + } +} +function maybeFreeze(scope, value, deep = false) { + if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) { + freeze(value, deep); + } +} + +// src/core/proxy.ts +function createProxyProxy(base, parent) { + const isArray = Array.isArray(base); + const state = { + type_: isArray ? 1 /* Array */ : 0 /* Object */, + // Track which produce call this is associated with. + scope_: parent ? parent.scope_ : getCurrentScope(), + // True for both shallow and deep changes. + modified_: false, + // Used during finalization. + finalized_: false, + // Track which properties have been assigned (true) or deleted (false). + assigned_: {}, + // The parent draft state. + parent_: parent, + // The base state. + base_: base, + // The base proxy. + draft_: null, + // set below + // The base copy with any updated values. + copy_: null, + // Called by the `produce` function. + revoke_: null, + isManual_: false + }; + let target = state; + let traps = objectTraps; + if (isArray) { + target = [state]; + traps = arrayTraps; + } + const { revoke, proxy } = Proxy.revocable(target, traps); + state.draft_ = proxy; + state.revoke_ = revoke; + return proxy; +} +var objectTraps = { + get(state, prop) { + if (prop === DRAFT_STATE) + return state; + const source = latest(state); + if (!has(source, prop)) { + return readPropFromProto(state, source, prop); + } + const value = source[prop]; + if (state.finalized_ || !isDraftable(value)) { + return value; + } + if (value === peek(state.base_, prop)) { + prepareCopy(state); + return state.copy_[prop] = createProxy(value, state); + } + return value; + }, + has(state, prop) { + return prop in latest(state); + }, + ownKeys(state) { + return Reflect.ownKeys(latest(state)); + }, + set(state, prop, value) { + const desc = getDescriptorFromProto(latest(state), prop); + if (desc?.set) { + desc.set.call(state.draft_, value); + return true; + } + if (!state.modified_) { + const current2 = peek(latest(state), prop); + const currentState = current2?.[DRAFT_STATE]; + if (currentState && currentState.base_ === value) { + state.copy_[prop] = value; + state.assigned_[prop] = false; + return true; + } + if (is(value, current2) && (value !== void 0 || has(state.base_, prop))) + return true; + prepareCopy(state); + markChanged(state); + } + if (state.copy_[prop] === value && // special case: handle new props with value 'undefined' + (value !== void 0 || prop in state.copy_) || // special case: NaN + Number.isNaN(value) && Number.isNaN(state.copy_[prop])) + return true; + state.copy_[prop] = value; + state.assigned_[prop] = true; + return true; + }, + deleteProperty(state, prop) { + if (peek(state.base_, prop) !== void 0 || prop in state.base_) { + state.assigned_[prop] = false; + prepareCopy(state); + markChanged(state); + } else { + delete state.assigned_[prop]; + } + if (state.copy_) { + delete state.copy_[prop]; + } + return true; + }, + // Note: We never coerce `desc.value` into an Immer draft, because we can't make + // the same guarantee in ES5 mode. + getOwnPropertyDescriptor(state, prop) { + const owner = latest(state); + const desc = Reflect.getOwnPropertyDescriptor(owner, prop); + if (!desc) + return desc; + return { + writable: true, + configurable: state.type_ !== 1 /* Array */ || prop !== "length", + enumerable: desc.enumerable, + value: owner[prop] + }; + }, + defineProperty() { + die(11); + }, + getPrototypeOf(state) { + return getPrototypeOf(state.base_); + }, + setPrototypeOf() { + die(12); + } +}; +var arrayTraps = {}; +each(objectTraps, (key, fn) => { + arrayTraps[key] = function() { + arguments[0] = arguments[0][0]; + return fn.apply(this, arguments); + }; +}); +arrayTraps.deleteProperty = function(state, prop) { + if (process.env.NODE_ENV !== "production" && isNaN(parseInt(prop))) + die(13); + return arrayTraps.set.call(this, state, prop, void 0); +}; +arrayTraps.set = function(state, prop, value) { + if (process.env.NODE_ENV !== "production" && prop !== "length" && isNaN(parseInt(prop))) + die(14); + return objectTraps.set.call(this, state[0], prop, value, state[0]); +}; +function peek(draft, prop) { + const state = draft[DRAFT_STATE]; + const source = state ? latest(state) : draft; + return source[prop]; +} +function readPropFromProto(state, source, prop) { + const desc = getDescriptorFromProto(source, prop); + return desc ? `value` in desc ? desc.value : ( + // This is a very special case, if the prop is a getter defined by the + // prototype, we should invoke it with the draft as context! + desc.get?.call(state.draft_) + ) : void 0; +} +function getDescriptorFromProto(source, prop) { + if (!(prop in source)) + return void 0; + let proto = getPrototypeOf(source); + while (proto) { + const desc = Object.getOwnPropertyDescriptor(proto, prop); + if (desc) + return desc; + proto = getPrototypeOf(proto); + } + return void 0; +} +function markChanged(state) { + if (!state.modified_) { + state.modified_ = true; + if (state.parent_) { + markChanged(state.parent_); + } + } +} +function prepareCopy(state) { + if (!state.copy_) { + state.copy_ = shallowCopy( + state.base_, + state.scope_.immer_.useStrictShallowCopy_ + ); + } +} + +// src/core/immerClass.ts +var Immer2 = class { + constructor(config) { + this.autoFreeze_ = true; + this.useStrictShallowCopy_ = false; + /** + * The `produce` function takes a value and a "recipe function" (whose + * return value often depends on the base state). The recipe function is + * free to mutate its first argument however it wants. All mutations are + * only ever applied to a __copy__ of the base state. + * + * Pass only a function to create a "curried producer" which relieves you + * from passing the recipe function every time. + * + * Only plain objects and arrays are made mutable. All other objects are + * considered uncopyable. + * + * Note: This function is __bound__ to its `Immer` instance. + * + * @param {any} base - the initial state + * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified + * @param {Function} patchListener - optional function that will be called with all the patches produced here + * @returns {any} a new state, or the initial state if nothing was modified + */ + this.produce = (base, recipe, patchListener) => { + if (typeof base === "function" && typeof recipe !== "function") { + const defaultBase = recipe; + recipe = base; + const self = this; + return function curriedProduce(base2 = defaultBase, ...args) { + return self.produce(base2, (draft) => recipe.call(this, draft, ...args)); + }; + } + if (typeof recipe !== "function") + die(6); + if (patchListener !== void 0 && typeof patchListener !== "function") + die(7); + let result; + if (isDraftable(base)) { + const scope = enterScope(this); + const proxy = createProxy(base, void 0); + let hasError = true; + try { + result = recipe(proxy); + hasError = false; + } finally { + if (hasError) + revokeScope(scope); + else + leaveScope(scope); + } + usePatchesInScope(scope, patchListener); + return processResult(result, scope); + } else if (!base || typeof base !== "object") { + result = recipe(base); + if (result === void 0) + result = base; + if (result === NOTHING) + result = void 0; + if (this.autoFreeze_) + freeze(result, true); + if (patchListener) { + const p = []; + const ip = []; + getPlugin("Patches").generateReplacementPatches_(base, result, p, ip); + patchListener(p, ip); + } + return result; + } else + die(1, base); + }; + this.produceWithPatches = (base, recipe) => { + if (typeof base === "function") { + return (state, ...args) => this.produceWithPatches(state, (draft) => base(draft, ...args)); + } + let patches, inversePatches; + const result = this.produce(base, recipe, (p, ip) => { + patches = p; + inversePatches = ip; + }); + return [result, patches, inversePatches]; + }; + if (typeof config?.autoFreeze === "boolean") + this.setAutoFreeze(config.autoFreeze); + if (typeof config?.useStrictShallowCopy === "boolean") + this.setUseStrictShallowCopy(config.useStrictShallowCopy); + } + createDraft(base) { + if (!isDraftable(base)) + die(8); + if (isDraft(base)) + base = current(base); + const scope = enterScope(this); + const proxy = createProxy(base, void 0); + proxy[DRAFT_STATE].isManual_ = true; + leaveScope(scope); + return proxy; + } + finishDraft(draft, patchListener) { + const state = draft && draft[DRAFT_STATE]; + if (!state || !state.isManual_) + die(9); + const { scope_: scope } = state; + usePatchesInScope(scope, patchListener); + return processResult(void 0, scope); + } + /** + * Pass true to automatically freeze all copies created by Immer. + * + * By default, auto-freezing is enabled. + */ + setAutoFreeze(value) { + this.autoFreeze_ = value; + } + /** + * Pass true to enable strict shallow copy. + * + * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties. + */ + setUseStrictShallowCopy(value) { + this.useStrictShallowCopy_ = value; + } + applyPatches(base, patches) { + let i; + for (i = patches.length - 1; i >= 0; i--) { + const patch = patches[i]; + if (patch.path.length === 0 && patch.op === "replace") { + base = patch.value; + break; + } + } + if (i > -1) { + patches = patches.slice(i + 1); + } + const applyPatchesImpl = getPlugin("Patches").applyPatches_; + if (isDraft(base)) { + return applyPatchesImpl(base, patches); + } + return this.produce( + base, + (draft) => applyPatchesImpl(draft, patches) + ); + } +}; +function createProxy(value, parent) { + const draft = isMap(value) ? getPlugin("MapSet").proxyMap_(value, parent) : isSet(value) ? getPlugin("MapSet").proxySet_(value, parent) : createProxyProxy(value, parent); + const scope = parent ? parent.scope_ : getCurrentScope(); + scope.drafts_.push(draft); + return draft; +} + +// src/core/current.ts +function current(value) { + if (!isDraft(value)) + die(10, value); + return currentImpl(value); +} +function currentImpl(value) { + if (!isDraftable(value) || isFrozen(value)) + return value; + const state = value[DRAFT_STATE]; + let copy; + if (state) { + if (!state.modified_) + return state.base_; + state.finalized_ = true; + copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_); + } else { + copy = shallowCopy(value, true); + } + each(copy, (key, childValue) => { + set(copy, key, currentImpl(childValue)); + }); + if (state) { + state.finalized_ = false; + } + return copy; +} + +// src/immer.ts +var immer = new Immer2(); +var produce = immer.produce; +immer.produceWithPatches.bind( + immer +); +immer.setAutoFreeze.bind(immer); +immer.setUseStrictShallowCopy.bind(immer); +immer.applyPatches.bind(immer); +immer.createDraft.bind(immer); +immer.finishDraft.bind(immer); + +/* Do NOT modify this file; see /src.ts/_admin/update-version.ts */ +/** + * The current version of Ethers. + */ +const version = "6.13.1"; + +/** + * Property helper functions. + * + * @_subsection api/utils:Properties [about-properties] + */ +/** + * Assigns the %%values%% to %%target%% as read-only values. + * + * It %%types%% is specified, the values are checked. + */ +function defineProperties(target, values, types) { + for (let key in values) { + let value = values[key]; + Object.defineProperty(target, key, { enumerable: true, value, writable: false }); + } +} + +/** + * All errors in ethers include properties to ensure they are both + * human-readable (i.e. ``.message``) and machine-readable (i.e. ``.code``). + * + * The [[isError]] function can be used to check the error ``code`` and + * provide a type guard for the properties present on that error interface. + * + * @_section: api/utils/errors:Errors [about-errors] + */ +function stringify(value) { + if (value == null) { + return "null"; + } + if (Array.isArray(value)) { + return "[ " + (value.map(stringify)).join(", ") + " ]"; + } + if (value instanceof Uint8Array) { + const HEX = "0123456789abcdef"; + let result = "0x"; + for (let i = 0; i < value.length; i++) { + result += HEX[value[i] >> 4]; + result += HEX[value[i] & 0xf]; + } + return result; + } + if (typeof (value) === "object" && typeof (value.toJSON) === "function") { + return stringify(value.toJSON()); + } + switch (typeof (value)) { + case "boolean": + case "symbol": + return value.toString(); + case "bigint": + return BigInt(value).toString(); + case "number": + return (value).toString(); + case "string": + return JSON.stringify(value); + case "object": { + const keys = Object.keys(value); + keys.sort(); + return "{ " + keys.map((k) => `${stringify(k)}: ${stringify(value[k])}`).join(", ") + " }"; + } + } + return `[ COULD NOT SERIALIZE ]`; +} +/** + * Returns a new Error configured to the format ethers emits errors, with + * the %%message%%, [[api:ErrorCode]] %%code%% and additional properties + * for the corresponding EthersError. + * + * Each error in ethers includes the version of ethers, a + * machine-readable [[ErrorCode]], and depending on %%code%%, additional + * required properties. The error message will also include the %%message%%, + * ethers version, %%code%% and all additional properties, serialized. + */ +function makeError(message, code, info) { + let shortMessage = message; + { + const details = []; + if (info) { + if ("message" in info || "code" in info || "name" in info) { + throw new Error(`value will overwrite populated values: ${stringify(info)}`); + } + for (const key in info) { + if (key === "shortMessage") { + continue; + } + const value = (info[key]); + // try { + details.push(key + "=" + stringify(value)); + // } catch (error: any) { + // console.log("MMM", error.message); + // details.push(key + "=[could not serialize object]"); + // } + } + } + details.push(`code=${code}`); + details.push(`version=${version}`); + if (details.length) { + message += " (" + details.join(", ") + ")"; + } + } + let error; + switch (code) { + case "INVALID_ARGUMENT": + error = new TypeError(message); + break; + case "NUMERIC_FAULT": + case "BUFFER_OVERRUN": + error = new RangeError(message); + break; + default: + error = new Error(message); + } + defineProperties(error, { code }); + if (info) { + Object.assign(error, info); + } + if (error.shortMessage == null) { + defineProperties(error, { shortMessage }); + } + return error; +} +/** + * Throws an EthersError with %%message%%, %%code%% and additional error + * %%info%% when %%check%% is falsish.. + * + * @see [[api:makeError]] + */ +function assert(check, message, code, info) { + if (!check) { + throw makeError(message, code, info); + } +} +/** + * A simple helper to simply ensuring provided arguments match expected + * constraints, throwing if not. + * + * In TypeScript environments, the %%check%% has been asserted true, so + * any further code does not need additional compile-time checks. + */ +function assertArgument(check, message, name, value) { + assert(check, message, "INVALID_ARGUMENT", { argument: name, value: value }); +} +["NFD", "NFC", "NFKD", "NFKC"].reduce((accum, form) => { + try { + // General test for normalize + /* c8 ignore start */ + if ("test".normalize(form) !== "test") { + throw new Error("bad"); + } + ; + /* c8 ignore stop */ + if (form === "NFD") { + const check = String.fromCharCode(0xe9).normalize("NFD"); + const expected = String.fromCharCode(0x65, 0x0301); + /* c8 ignore start */ + if (check !== expected) { + throw new Error("broken"); + } + /* c8 ignore stop */ + } + accum.push(form); + } + catch (error) { } + return accum; +}, []); + +/** + * Some data helpers. + * + * + * @_subsection api/utils:Data Helpers [about-data] + */ +function _getBytes(value, name, copy) { + if (value instanceof Uint8Array) { + return value; + } + if (typeof (value) === "string" && value.match(/^0x(?:[0-9a-f][0-9a-f])*$/i)) { + const result = new Uint8Array((value.length - 2) / 2); + let offset = 2; + for (let i = 0; i < result.length; i++) { + result[i] = parseInt(value.substring(offset, offset + 2), 16); + offset += 2; + } + return result; + } + assertArgument(false, "invalid BytesLike value", name || "value", value); +} +/** + * Get a typed Uint8Array for %%value%%. If already a Uint8Array + * the original %%value%% is returned; if a copy is required use + * [[getBytesCopy]]. + * + * @see: getBytesCopy + */ +function getBytes(value, name) { + return _getBytes(value, name); +} +const HexCharacters = "0123456789abcdef"; +/** + * Returns a [[DataHexString]] representation of %%data%%. + */ +function hexlify(data) { + const bytes = getBytes(data); + let result = "0x"; + for (let i = 0; i < bytes.length; i++) { + const v = bytes[i]; + result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f]; + } + return result; +} + +/** + * Using strings in Ethereum (or any security-basd system) requires + * additional care. These utilities attempt to mitigate some of the + * safety issues as well as provide the ability to recover and analyse + * strings. + * + * @_subsection api/utils:Strings and UTF-8 [about-strings] + */ +// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array +/** + * Returns the UTF-8 byte representation of %%str%%. + * + * If %%form%% is specified, the string is normalized. + */ +function toUtf8Bytes(str, form) { + assertArgument(typeof (str) === "string", "invalid string value", "str", str); + let result = []; + for (let i = 0; i < str.length; i++) { + const c = str.charCodeAt(i); + if (c < 0x80) { + result.push(c); + } + else if (c < 0x800) { + result.push((c >> 6) | 0xc0); + result.push((c & 0x3f) | 0x80); + } + else if ((c & 0xfc00) == 0xd800) { + i++; + const c2 = str.charCodeAt(i); + assertArgument(i < str.length && ((c2 & 0xfc00) === 0xdc00), "invalid surrogate pair", "str", str); + // Surrogate Pair + const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff); + result.push((pair >> 18) | 0xf0); + result.push(((pair >> 12) & 0x3f) | 0x80); + result.push(((pair >> 6) & 0x3f) | 0x80); + result.push((pair & 0x3f) | 0x80); + } + else { + result.push((c >> 12) | 0xe0); + result.push(((c >> 6) & 0x3f) | 0x80); + result.push((c & 0x3f) | 0x80); + } + } + return new Uint8Array(result); +} + +function number(n) { + if (!Number.isSafeInteger(n) || n < 0) + throw new Error(`Wrong positive integer: ${n}`); +} +function bytes(b, ...lengths) { + if (!(b instanceof Uint8Array)) + throw new Error('Expected Uint8Array'); + if (lengths.length > 0 && !lengths.includes(b.length)) + throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`); +} +function exists(instance, checkFinished = true) { + if (instance.destroyed) + throw new Error('Hash instance has been destroyed'); + if (checkFinished && instance.finished) + throw new Error('Hash#digest() has already been called'); +} +function output(out, instance) { + bytes(out); + const min = instance.outputLen; + if (out.length < min) { + throw new Error(`digestInto() expects output buffer of length at least ${min}`); + } +} + +/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */ +// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+. +// node.js versions earlier than v19 don't declare it in global scope. +// For node.js, package.json#exports field mapping rewrites import +// from `crypto` to `cryptoNode`, which imports native module. +// Makes the utils un-importable in browsers without a bundler. +// Once node.js 18 is deprecated, we can just drop the import. +const u8a = (a) => a instanceof Uint8Array; +const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4)); +// big-endian hardware is rare. Just in case someone still decides to run hashes: +// early-throw an error because we don't support BE yet. +const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44; +if (!isLE) + throw new Error('Non little-endian hardware is not supported'); +/** + * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99]) + */ +function utf8ToBytes(str) { + if (typeof str !== 'string') + throw new Error(`utf8ToBytes expected string, got ${typeof str}`); + return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809 +} +/** + * Normalizes (non-hex) string or Uint8Array to Uint8Array. + * Warning: when Uint8Array is passed, it would NOT get copied. + * Keep in mind for future mutable operations. + */ +function toBytes(data) { + if (typeof data === 'string') + data = utf8ToBytes(data); + if (!u8a(data)) + throw new Error(`expected Uint8Array, got ${typeof data}`); + return data; +} +// For runtime check if class implements interface +class Hash { + // Safe version that clones internal state + clone() { + return this._cloneInto(); + } +} +function wrapConstructor(hashCons) { + const hashC = (msg) => hashCons().update(toBytes(msg)).digest(); + const tmp = hashCons(); + hashC.outputLen = tmp.outputLen; + hashC.blockLen = tmp.blockLen; + hashC.create = () => hashCons(); + return hashC; +} + +const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1); +const _32n = /* @__PURE__ */ BigInt(32); +// We are not using BigUint64Array, because they are extremely slow as per 2022 +function fromBig(n, le = false) { + if (le) + return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) }; + return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 }; +} +function split(lst, le = false) { + let Ah = new Uint32Array(lst.length); + let Al = new Uint32Array(lst.length); + for (let i = 0; i < lst.length; i++) { + const { h, l } = fromBig(lst[i], le); + [Ah[i], Al[i]] = [h, l]; + } + return [Ah, Al]; +} +// Left rotate for Shift in [1, 32) +const rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s)); +const rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s)); +// Left rotate for Shift in (32, 64), NOTE: 32 is special case. +const rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s)); +const rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s)); + +// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size. +// It's called a sponge function. +// Various per round constants calculations +const [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []]; +const _0n = /* @__PURE__ */ BigInt(0); +const _1n = /* @__PURE__ */ BigInt(1); +const _2n = /* @__PURE__ */ BigInt(2); +const _7n = /* @__PURE__ */ BigInt(7); +const _256n = /* @__PURE__ */ BigInt(256); +const _0x71n = /* @__PURE__ */ BigInt(0x71); +for (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) { + // Pi + [x, y] = [y, (2 * x + 3 * y) % 5]; + SHA3_PI.push(2 * (5 * y + x)); + // Rotational + SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64); + // Iota + let t = _0n; + for (let j = 0; j < 7; j++) { + R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n; + if (R & _2n) + t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n); + } + _SHA3_IOTA.push(t); +} +const [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true); +// Left rotation (without 0, 32, 64) +const rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s)); +const rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s)); +// Same as keccakf1600, but allows to skip some rounds +function keccakP(s, rounds = 24) { + const B = new Uint32Array(5 * 2); + // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js) + for (let round = 24 - rounds; round < 24; round++) { + // Theta θ + for (let x = 0; x < 10; x++) + B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40]; + for (let x = 0; x < 10; x += 2) { + const idx1 = (x + 8) % 10; + const idx0 = (x + 2) % 10; + const B0 = B[idx0]; + const B1 = B[idx0 + 1]; + const Th = rotlH(B0, B1, 1) ^ B[idx1]; + const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1]; + for (let y = 0; y < 50; y += 10) { + s[x + y] ^= Th; + s[x + y + 1] ^= Tl; + } + } + // Rho (ρ) and Pi (π) + let curH = s[2]; + let curL = s[3]; + for (let t = 0; t < 24; t++) { + const shift = SHA3_ROTL[t]; + const Th = rotlH(curH, curL, shift); + const Tl = rotlL(curH, curL, shift); + const PI = SHA3_PI[t]; + curH = s[PI]; + curL = s[PI + 1]; + s[PI] = Th; + s[PI + 1] = Tl; + } + // Chi (χ) + for (let y = 0; y < 50; y += 10) { + for (let x = 0; x < 10; x++) + B[x] = s[y + x]; + for (let x = 0; x < 10; x++) + s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10]; + } + // Iota (ι) + s[0] ^= SHA3_IOTA_H[round]; + s[1] ^= SHA3_IOTA_L[round]; + } + B.fill(0); +} +class Keccak extends Hash { + // NOTE: we accept arguments in bytes instead of bits here. + constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) { + super(); + this.blockLen = blockLen; + this.suffix = suffix; + this.outputLen = outputLen; + this.enableXOF = enableXOF; + this.rounds = rounds; + this.pos = 0; + this.posOut = 0; + this.finished = false; + this.destroyed = false; + // Can be passed from user as dkLen + number(outputLen); + // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes + if (0 >= this.blockLen || this.blockLen >= 200) + throw new Error('Sha3 supports only keccak-f1600 function'); + this.state = new Uint8Array(200); + this.state32 = u32(this.state); + } + keccak() { + keccakP(this.state32, this.rounds); + this.posOut = 0; + this.pos = 0; + } + update(data) { + exists(this); + const { blockLen, state } = this; + data = toBytes(data); + const len = data.length; + for (let pos = 0; pos < len;) { + const take = Math.min(blockLen - this.pos, len - pos); + for (let i = 0; i < take; i++) + state[this.pos++] ^= data[pos++]; + if (this.pos === blockLen) + this.keccak(); + } + return this; + } + finish() { + if (this.finished) + return; + this.finished = true; + const { state, suffix, pos, blockLen } = this; + // Do the padding + state[pos] ^= suffix; + if ((suffix & 0x80) !== 0 && pos === blockLen - 1) + this.keccak(); + state[blockLen - 1] ^= 0x80; + this.keccak(); + } + writeInto(out) { + exists(this, false); + bytes(out); + this.finish(); + const bufferOut = this.state; + const { blockLen } = this; + for (let pos = 0, len = out.length; pos < len;) { + if (this.posOut >= blockLen) + this.keccak(); + const take = Math.min(blockLen - this.posOut, len - pos); + out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos); + this.posOut += take; + pos += take; + } + return out; + } + xofInto(out) { + // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF + if (!this.enableXOF) + throw new Error('XOF is not possible for this instance'); + return this.writeInto(out); + } + xof(bytes) { + number(bytes); + return this.xofInto(new Uint8Array(bytes)); + } + digestInto(out) { + output(out, this); + if (this.finished) + throw new Error('digest() was already called'); + this.writeInto(out); + this.destroy(); + return out; + } + digest() { + return this.digestInto(new Uint8Array(this.outputLen)); + } + destroy() { + this.destroyed = true; + this.state.fill(0); + } + _cloneInto(to) { + const { blockLen, suffix, outputLen, rounds, enableXOF } = this; + to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds)); + to.state32.set(this.state32); + to.pos = this.pos; + to.posOut = this.posOut; + to.finished = this.finished; + to.rounds = rounds; + // Suffix can change in cSHAKE + to.suffix = suffix; + to.outputLen = outputLen; + to.enableXOF = enableXOF; + to.destroyed = this.destroyed; + return to; + } +} +const gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen)); +/** + * keccak-256 hash function. Different from SHA3-256. + * @param message - that would be hashed + */ +const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8); + +/** + * Cryptographic hashing functions + * + * @_subsection: api/crypto:Hash Functions [about-crypto-hashing] + */ +let locked = false; +const _keccak256 = function (data) { + return keccak_256(data); +}; +let __keccak256 = _keccak256; +/** + * Compute the cryptographic KECCAK256 hash of %%data%%. + * + * The %%data%% **must** be a data representation, to compute the + * hash of UTF-8 data use the [[id]] function. + * + * @returns DataHexstring + * @example: + * keccak256("0x") + * //_result: + * + * keccak256("0x1337") + * //_result: + * + * keccak256(new Uint8Array([ 0x13, 0x37 ])) + * //_result: + * + * // Strings are assumed to be DataHexString, otherwise it will + * // throw. To hash UTF-8 data, see the note above. + * keccak256("Hello World") + * //_error: + */ +function keccak256(_data) { + const data = getBytes(_data, "data"); + return hexlify(__keccak256(data)); +} +keccak256._ = _keccak256; +keccak256.lock = function () { locked = true; }; +keccak256.register = function (func) { + if (locked) { + throw new TypeError("keccak256 is locked"); + } + __keccak256 = func; +}; +Object.freeze(keccak256); + +/** + * A constant for the zero address. + * + * (**i.e.** ``"0x0000000000000000000000000000000000000000"``) + */ +const ZeroAddress = "0x0000000000000000000000000000000000000000"; + +const BN_0 = BigInt(0); +const BN_36 = BigInt(36); +function getChecksumAddress(address) { + // if (!isHexString(address, 20)) { + // logger.throwArgumentError("invalid address", "address", address); + // } + address = address.toLowerCase(); + const chars = address.substring(2).split(""); + const expanded = new Uint8Array(40); + for (let i = 0; i < 40; i++) { + expanded[i] = chars[i].charCodeAt(0); + } + const hashed = getBytes(keccak256(expanded)); + for (let i = 0; i < 40; i += 2) { + if ((hashed[i >> 1] >> 4) >= 8) { + chars[i] = chars[i].toUpperCase(); + } + if ((hashed[i >> 1] & 0x0f) >= 8) { + chars[i + 1] = chars[i + 1].toUpperCase(); + } + } + return "0x" + chars.join(""); +} +// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number +// Create lookup table +const ibanLookup = {}; +for (let i = 0; i < 10; i++) { + ibanLookup[String(i)] = String(i); +} +for (let i = 0; i < 26; i++) { + ibanLookup[String.fromCharCode(65 + i)] = String(10 + i); +} +// How many decimal digits can we process? (for 64-bit float, this is 15) +// i.e. Math.floor(Math.log10(Number.MAX_SAFE_INTEGER)); +const safeDigits = 15; +function ibanChecksum(address) { + address = address.toUpperCase(); + address = address.substring(4) + address.substring(0, 2) + "00"; + let expanded = address.split("").map((c) => { return ibanLookup[c]; }).join(""); + // Javascript can handle integers safely up to 15 (decimal) digits + while (expanded.length >= safeDigits) { + let block = expanded.substring(0, safeDigits); + expanded = parseInt(block, 10) % 97 + expanded.substring(block.length); + } + let checksum = String(98 - (parseInt(expanded, 10) % 97)); + while (checksum.length < 2) { + checksum = "0" + checksum; + } + return checksum; +} +const Base36 = (function () { + const result = {}; + for (let i = 0; i < 36; i++) { + const key = "0123456789abcdefghijklmnopqrstuvwxyz"[i]; + result[key] = BigInt(i); + } + return result; +})(); +function fromBase36(value) { + value = value.toLowerCase(); + let result = BN_0; + for (let i = 0; i < value.length; i++) { + result = result * BN_36 + Base36[value[i]]; + } + return result; +} +/** + * Returns a normalized and checksumed address for %%address%%. + * This accepts non-checksum addresses, checksum addresses and + * [[getIcapAddress]] formats. + * + * The checksum in Ethereum uses the capitalization (upper-case + * vs lower-case) of the characters within an address to encode + * its checksum, which offers, on average, a checksum of 15-bits. + * + * If %%address%% contains both upper-case and lower-case, it is + * assumed to already be a checksum address and its checksum is + * validated, and if the address fails its expected checksum an + * error is thrown. + * + * If you wish the checksum of %%address%% to be ignore, it should + * be converted to lower-case (i.e. ``.toLowercase()``) before + * being passed in. This should be a very rare situation though, + * that you wish to bypass the safegaurds in place to protect + * against an address that has been incorrectly copied from another + * source. + * + * @example: + * // Adds the checksum (via upper-casing specific letters) + * getAddress("0x8ba1f109551bd432803012645ac136ddd64dba72") + * //_result: + * + * // Converts ICAP address and adds checksum + * getAddress("XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36"); + * //_result: + * + * // Throws an error if an address contains mixed case, + * // but the checksum fails + * getAddress("0x8Ba1f109551bD432803012645Ac136ddd64DBA72") + * //_error: + */ +function getAddress(address) { + assertArgument(typeof (address) === "string", "invalid address", "address", address); + if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) { + // Missing the 0x prefix + if (!address.startsWith("0x")) { + address = "0x" + address; + } + const result = getChecksumAddress(address); + // It is a checksummed address with a bad checksum + assertArgument(!address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) || result === address, "bad address checksum", "address", address); + return result; + } + // Maybe ICAP? (we only support direct mode) + if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) { + // It is an ICAP address with a bad checksum + assertArgument(address.substring(2, 4) === ibanChecksum(address), "bad icap checksum", "address", address); + let result = fromBase36(address.substring(4)).toString(16); + while (result.length < 40) { + result = "0" + result; + } + return getChecksumAddress("0x" + result); + } + assertArgument(false, "invalid address", "address", address); +} + +/** + * Returns true if %%value%% is a valid address. + * + * @example: + * // Valid address + * isAddress("0x8ba1f109551bD432803012645Ac136ddd64DBA72") + * //_result: + * + * // Valid ICAP address + * isAddress("XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36") + * //_result: + * + * // Invalid checksum + * isAddress("0x8Ba1f109551bD432803012645Ac136ddd64DBa72") + * //_result: + * + * // Invalid ICAP checksum + * isAddress("0x8Ba1f109551bD432803012645Ac136ddd64DBA72") + * //_result: + * + * // Not an address (an ENS name requires a provided and an + * // asynchronous API to access) + * isAddress("ricmoo.eth") + * //_result: + */ +function isAddress(value) { + try { + getAddress(value); + return true; + } + catch (error) { } + return false; +} + +/** + * A simple hashing function which operates on UTF-8 strings to + * compute an 32-byte identifier. + * + * This simply computes the [UTF-8 bytes](toUtf8Bytes) and computes + * the [[keccak256]]. + * + * @example: + * id("hello world") + * //_result: + */ +function id(value) { + return keccak256(toUtf8Bytes(value)); +} + +const PermitV2SignatureAllFields = [ + { name: "issuer", type: "address" }, + { name: "expiration", type: "uint64" }, + { name: "contracts", type: "address[]" }, + { name: "projects", type: "string[]" }, + { name: "recipient", type: "address" }, + { name: "validatorId", type: "uint256" }, + { name: "validatorContract", type: "address" }, + { name: "sealingKey", type: "bytes32" }, + { name: "issuerSignature", type: "bytes" }, +]; +const SignatureTypes = { + PermissionedV2IssuerSelf: [ + "issuer", + "expiration", + "contracts", + "projects", + "recipient", + "validatorId", + "validatorContract", + "sealingKey", + ], + PermissionedV2IssuerShared: [ + "issuer", + "expiration", + "contracts", + "projects", + "recipient", + "validatorId", + "validatorContract", + ], + PermissionedV2Recipient: [ + "sealingKey", + "issuerSignature", + ], +}; +const getSignatureTypesAndMessage = (primaryType, fields, values) => { + const types = { + [primaryType]: PermitV2SignatureAllFields.filter((fieldType) => fields.includes(fieldType.name)), + }; + const message = {}; + fields.forEach((field) => { + if (field in values) { + message[field] = values[field]; + } + }); + return { types, primaryType, message: message }; +}; +const getSignatureDomain = (chainId) => ({ + name: "Fhenix Permission v2.0.0", + version: "v2.0.0", + chainId: parseInt(chainId), + verifyingContract: ZeroAddress, +}); + +var util; +(function (util) { + util.assertEqual = (val) => val; + function assertIs(_arg) { } + util.assertIs = assertIs; + function assertNever(_x) { + throw new Error(); + } + util.assertNever = assertNever; + util.arrayToEnum = (items) => { + const obj = {}; + for (const item of items) { + obj[item] = item; + } + return obj; + }; + util.getValidEnumValues = (obj) => { + const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== "number"); + const filtered = {}; + for (const k of validKeys) { + filtered[k] = obj[k]; + } + return util.objectValues(filtered); + }; + util.objectValues = (obj) => { + return util.objectKeys(obj).map(function (e) { + return obj[e]; + }); + }; + util.objectKeys = typeof Object.keys === "function" // eslint-disable-line ban/ban + ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban + : (object) => { + const keys = []; + for (const key in object) { + if (Object.prototype.hasOwnProperty.call(object, key)) { + keys.push(key); + } + } + return keys; + }; + util.find = (arr, checker) => { + for (const item of arr) { + if (checker(item)) + return item; + } + return undefined; + }; + util.isInteger = typeof Number.isInteger === "function" + ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban + : (val) => typeof val === "number" && isFinite(val) && Math.floor(val) === val; + function joinValues(array, separator = " | ") { + return array + .map((val) => (typeof val === "string" ? `'${val}'` : val)) + .join(separator); + } + util.joinValues = joinValues; + util.jsonStringifyReplacer = (_, value) => { + if (typeof value === "bigint") { + return value.toString(); + } + return value; + }; +})(util || (util = {})); +var objectUtil; +(function (objectUtil) { + objectUtil.mergeShapes = (first, second) => { + return { + ...first, + ...second, // second overwrites first + }; + }; +})(objectUtil || (objectUtil = {})); +const ZodParsedType = util.arrayToEnum([ + "string", + "nan", + "number", + "integer", + "float", + "boolean", + "date", + "bigint", + "symbol", + "function", + "undefined", + "null", + "array", + "object", + "unknown", + "promise", + "void", + "never", + "map", + "set", +]); +const getParsedType = (data) => { + const t = typeof data; + switch (t) { + case "undefined": + return ZodParsedType.undefined; + case "string": + return ZodParsedType.string; + case "number": + return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number; + case "boolean": + return ZodParsedType.boolean; + case "function": + return ZodParsedType.function; + case "bigint": + return ZodParsedType.bigint; + case "symbol": + return ZodParsedType.symbol; + case "object": + if (Array.isArray(data)) { + return ZodParsedType.array; + } + if (data === null) { + return ZodParsedType.null; + } + if (data.then && + typeof data.then === "function" && + data.catch && + typeof data.catch === "function") { + return ZodParsedType.promise; + } + if (typeof Map !== "undefined" && data instanceof Map) { + return ZodParsedType.map; + } + if (typeof Set !== "undefined" && data instanceof Set) { + return ZodParsedType.set; + } + if (typeof Date !== "undefined" && data instanceof Date) { + return ZodParsedType.date; + } + return ZodParsedType.object; + default: + return ZodParsedType.unknown; + } +}; + +const ZodIssueCode = util.arrayToEnum([ + "invalid_type", + "invalid_literal", + "custom", + "invalid_union", + "invalid_union_discriminator", + "invalid_enum_value", + "unrecognized_keys", + "invalid_arguments", + "invalid_return_type", + "invalid_date", + "invalid_string", + "too_small", + "too_big", + "invalid_intersection_types", + "not_multiple_of", + "not_finite", +]); +const quotelessJson = (obj) => { + const json = JSON.stringify(obj, null, 2); + return json.replace(/"([^"]+)":/g, "$1:"); +}; +class ZodError extends Error { + constructor(issues) { + super(); + this.issues = []; + this.addIssue = (sub) => { + this.issues = [...this.issues, sub]; + }; + this.addIssues = (subs = []) => { + this.issues = [...this.issues, ...subs]; + }; + const actualProto = new.target.prototype; + if (Object.setPrototypeOf) { + // eslint-disable-next-line ban/ban + Object.setPrototypeOf(this, actualProto); + } + else { + this.__proto__ = actualProto; + } + this.name = "ZodError"; + this.issues = issues; + } + get errors() { + return this.issues; + } + format(_mapper) { + const mapper = _mapper || + function (issue) { + return issue.message; + }; + const fieldErrors = { _errors: [] }; + const processError = (error) => { + for (const issue of error.issues) { + if (issue.code === "invalid_union") { + issue.unionErrors.map(processError); + } + else if (issue.code === "invalid_return_type") { + processError(issue.returnTypeError); + } + else if (issue.code === "invalid_arguments") { + processError(issue.argumentsError); + } + else if (issue.path.length === 0) { + fieldErrors._errors.push(mapper(issue)); + } + else { + let curr = fieldErrors; + let i = 0; + while (i < issue.path.length) { + const el = issue.path[i]; + const terminal = i === issue.path.length - 1; + if (!terminal) { + curr[el] = curr[el] || { _errors: [] }; + // if (typeof el === "string") { + // curr[el] = curr[el] || { _errors: [] }; + // } else if (typeof el === "number") { + // const errorArray: any = []; + // errorArray._errors = []; + // curr[el] = curr[el] || errorArray; + // } + } + else { + curr[el] = curr[el] || { _errors: [] }; + curr[el]._errors.push(mapper(issue)); + } + curr = curr[el]; + i++; + } + } + } + }; + processError(this); + return fieldErrors; + } + static assert(value) { + if (!(value instanceof ZodError)) { + throw new Error(`Not a ZodError: ${value}`); + } + } + toString() { + return this.message; + } + get message() { + return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2); + } + get isEmpty() { + return this.issues.length === 0; + } + flatten(mapper = (issue) => issue.message) { + const fieldErrors = {}; + const formErrors = []; + for (const sub of this.issues) { + if (sub.path.length > 0) { + fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || []; + fieldErrors[sub.path[0]].push(mapper(sub)); + } + else { + formErrors.push(mapper(sub)); + } + } + return { formErrors, fieldErrors }; + } + get formErrors() { + return this.flatten(); + } +} +ZodError.create = (issues) => { + const error = new ZodError(issues); + return error; +}; + +const errorMap = (issue, _ctx) => { + let message; + switch (issue.code) { + case ZodIssueCode.invalid_type: + if (issue.received === ZodParsedType.undefined) { + message = "Required"; + } + else { + message = `Expected ${issue.expected}, received ${issue.received}`; + } + break; + case ZodIssueCode.invalid_literal: + message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`; + break; + case ZodIssueCode.unrecognized_keys: + message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, ", ")}`; + break; + case ZodIssueCode.invalid_union: + message = `Invalid input`; + break; + case ZodIssueCode.invalid_union_discriminator: + message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`; + break; + case ZodIssueCode.invalid_enum_value: + message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`; + break; + case ZodIssueCode.invalid_arguments: + message = `Invalid function arguments`; + break; + case ZodIssueCode.invalid_return_type: + message = `Invalid function return type`; + break; + case ZodIssueCode.invalid_date: + message = `Invalid date`; + break; + case ZodIssueCode.invalid_string: + if (typeof issue.validation === "object") { + if ("includes" in issue.validation) { + message = `Invalid input: must include "${issue.validation.includes}"`; + if (typeof issue.validation.position === "number") { + message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`; + } + } + else if ("startsWith" in issue.validation) { + message = `Invalid input: must start with "${issue.validation.startsWith}"`; + } + else if ("endsWith" in issue.validation) { + message = `Invalid input: must end with "${issue.validation.endsWith}"`; + } + else { + util.assertNever(issue.validation); + } + } + else if (issue.validation !== "regex") { + message = `Invalid ${issue.validation}`; + } + else { + message = "Invalid"; + } + break; + case ZodIssueCode.too_small: + if (issue.type === "array") + message = `Array must contain ${issue.exact ? "exactly" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`; + else if (issue.type === "string") + message = `String must contain ${issue.exact ? "exactly" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`; + else if (issue.type === "number") + message = `Number must be ${issue.exact + ? `exactly equal to ` + : issue.inclusive + ? `greater than or equal to ` + : `greater than `}${issue.minimum}`; + else if (issue.type === "date") + message = `Date must be ${issue.exact + ? `exactly equal to ` + : issue.inclusive + ? `greater than or equal to ` + : `greater than `}${new Date(Number(issue.minimum))}`; + else + message = "Invalid input"; + break; + case ZodIssueCode.too_big: + if (issue.type === "array") + message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`; + else if (issue.type === "string") + message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`; + else if (issue.type === "number") + message = `Number must be ${issue.exact + ? `exactly` + : issue.inclusive + ? `less than or equal to` + : `less than`} ${issue.maximum}`; + else if (issue.type === "bigint") + message = `BigInt must be ${issue.exact + ? `exactly` + : issue.inclusive + ? `less than or equal to` + : `less than`} ${issue.maximum}`; + else if (issue.type === "date") + message = `Date must be ${issue.exact + ? `exactly` + : issue.inclusive + ? `smaller than or equal to` + : `smaller than`} ${new Date(Number(issue.maximum))}`; + else + message = "Invalid input"; + break; + case ZodIssueCode.custom: + message = `Invalid input`; + break; + case ZodIssueCode.invalid_intersection_types: + message = `Intersection results could not be merged`; + break; + case ZodIssueCode.not_multiple_of: + message = `Number must be a multiple of ${issue.multipleOf}`; + break; + case ZodIssueCode.not_finite: + message = "Number must be finite"; + break; + default: + message = _ctx.defaultError; + util.assertNever(issue); + } + return { message }; +}; + +let overrideErrorMap = errorMap; +function setErrorMap(map) { + overrideErrorMap = map; +} +function getErrorMap() { + return overrideErrorMap; +} + +const makeIssue = (params) => { + const { data, path, errorMaps, issueData } = params; + const fullPath = [...path, ...(issueData.path || [])]; + const fullIssue = { + ...issueData, + path: fullPath, + }; + if (issueData.message !== undefined) { + return { + ...issueData, + path: fullPath, + message: issueData.message, + }; + } + let errorMessage = ""; + const maps = errorMaps + .filter((m) => !!m) + .slice() + .reverse(); + for (const map of maps) { + errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message; + } + return { + ...issueData, + path: fullPath, + message: errorMessage, + }; +}; +const EMPTY_PATH = []; +function addIssueToContext(ctx, issueData) { + const overrideMap = getErrorMap(); + const issue = makeIssue({ + issueData: issueData, + data: ctx.data, + path: ctx.path, + errorMaps: [ + ctx.common.contextualErrorMap, + ctx.schemaErrorMap, + overrideMap, + overrideMap === errorMap ? undefined : errorMap, // then global default map + ].filter((x) => !!x), + }); + ctx.common.issues.push(issue); +} +class ParseStatus { + constructor() { + this.value = "valid"; + } + dirty() { + if (this.value === "valid") + this.value = "dirty"; + } + abort() { + if (this.value !== "aborted") + this.value = "aborted"; + } + static mergeArray(status, results) { + const arrayValue = []; + for (const s of results) { + if (s.status === "aborted") + return INVALID; + if (s.status === "dirty") + status.dirty(); + arrayValue.push(s.value); + } + return { status: status.value, value: arrayValue }; + } + static async mergeObjectAsync(status, pairs) { + const syncPairs = []; + for (const pair of pairs) { + const key = await pair.key; + const value = await pair.value; + syncPairs.push({ + key, + value, + }); + } + return ParseStatus.mergeObjectSync(status, syncPairs); + } + static mergeObjectSync(status, pairs) { + const finalObject = {}; + for (const pair of pairs) { + const { key, value } = pair; + if (key.status === "aborted") + return INVALID; + if (value.status === "aborted") + return INVALID; + if (key.status === "dirty") + status.dirty(); + if (value.status === "dirty") + status.dirty(); + if (key.value !== "__proto__" && + (typeof value.value !== "undefined" || pair.alwaysSet)) { + finalObject[key.value] = value.value; + } + } + return { status: status.value, value: finalObject }; + } +} +const INVALID = Object.freeze({ + status: "aborted", +}); +const DIRTY = (value) => ({ status: "dirty", value }); +const OK = (value) => ({ status: "valid", value }); +const isAborted = (x) => x.status === "aborted"; +const isDirty = (x) => x.status === "dirty"; +const isValid = (x) => x.status === "valid"; +const isAsync = (x) => typeof Promise !== "undefined" && x instanceof Promise; + +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ + +function __classPrivateFieldGet(receiver, state, kind, f) { + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return state.get(receiver); +} + +function __classPrivateFieldSet(receiver, state, value, kind, f) { + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (state.set(receiver, value)), value; +} + +typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; +}; + +var errorUtil; +(function (errorUtil) { + errorUtil.errToObj = (message) => typeof message === "string" ? { message } : message || {}; + errorUtil.toString = (message) => typeof message === "string" ? message : message === null || message === void 0 ? void 0 : message.message; +})(errorUtil || (errorUtil = {})); + +var _ZodEnum_cache, _ZodNativeEnum_cache; +class ParseInputLazyPath { + constructor(parent, value, path, key) { + this._cachedPath = []; + this.parent = parent; + this.data = value; + this._path = path; + this._key = key; + } + get path() { + if (!this._cachedPath.length) { + if (this._key instanceof Array) { + this._cachedPath.push(...this._path, ...this._key); + } + else { + this._cachedPath.push(...this._path, this._key); + } + } + return this._cachedPath; + } +} +const handleResult = (ctx, result) => { + if (isValid(result)) { + return { success: true, data: result.value }; + } + else { + if (!ctx.common.issues.length) { + throw new Error("Validation failed but no issues detected."); + } + return { + success: false, + get error() { + if (this._error) + return this._error; + const error = new ZodError(ctx.common.issues); + this._error = error; + return this._error; + }, + }; + } +}; +function processCreateParams(params) { + if (!params) + return {}; + const { errorMap, invalid_type_error, required_error, description } = params; + if (errorMap && (invalid_type_error || required_error)) { + throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`); + } + if (errorMap) + return { errorMap: errorMap, description }; + const customMap = (iss, ctx) => { + var _a, _b; + const { message } = params; + if (iss.code === "invalid_enum_value") { + return { message: message !== null && message !== void 0 ? message : ctx.defaultError }; + } + if (typeof ctx.data === "undefined") { + return { message: (_a = message !== null && message !== void 0 ? message : required_error) !== null && _a !== void 0 ? _a : ctx.defaultError }; + } + if (iss.code !== "invalid_type") + return { message: ctx.defaultError }; + return { message: (_b = message !== null && message !== void 0 ? message : invalid_type_error) !== null && _b !== void 0 ? _b : ctx.defaultError }; + }; + return { errorMap: customMap, description }; +} +class ZodType { + constructor(def) { + /** Alias of safeParseAsync */ + this.spa = this.safeParseAsync; + this._def = def; + this.parse = this.parse.bind(this); + this.safeParse = this.safeParse.bind(this); + this.parseAsync = this.parseAsync.bind(this); + this.safeParseAsync = this.safeParseAsync.bind(this); + this.spa = this.spa.bind(this); + this.refine = this.refine.bind(this); + this.refinement = this.refinement.bind(this); + this.superRefine = this.superRefine.bind(this); + this.optional = this.optional.bind(this); + this.nullable = this.nullable.bind(this); + this.nullish = this.nullish.bind(this); + this.array = this.array.bind(this); + this.promise = this.promise.bind(this); + this.or = this.or.bind(this); + this.and = this.and.bind(this); + this.transform = this.transform.bind(this); + this.brand = this.brand.bind(this); + this.default = this.default.bind(this); + this.catch = this.catch.bind(this); + this.describe = this.describe.bind(this); + this.pipe = this.pipe.bind(this); + this.readonly = this.readonly.bind(this); + this.isNullable = this.isNullable.bind(this); + this.isOptional = this.isOptional.bind(this); + } + get description() { + return this._def.description; + } + _getType(input) { + return getParsedType(input.data); + } + _getOrReturnCtx(input, ctx) { + return (ctx || { + common: input.parent.common, + data: input.data, + parsedType: getParsedType(input.data), + schemaErrorMap: this._def.errorMap, + path: input.path, + parent: input.parent, + }); + } + _processInputParams(input) { + return { + status: new ParseStatus(), + ctx: { + common: input.parent.common, + data: input.data, + parsedType: getParsedType(input.data), + schemaErrorMap: this._def.errorMap, + path: input.path, + parent: input.parent, + }, + }; + } + _parseSync(input) { + const result = this._parse(input); + if (isAsync(result)) { + throw new Error("Synchronous parse encountered promise."); + } + return result; + } + _parseAsync(input) { + const result = this._parse(input); + return Promise.resolve(result); + } + parse(data, params) { + const result = this.safeParse(data, params); + if (result.success) + return result.data; + throw result.error; + } + safeParse(data, params) { + var _a; + const ctx = { + common: { + issues: [], + async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false, + contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap, + }, + path: (params === null || params === void 0 ? void 0 : params.path) || [], + schemaErrorMap: this._def.errorMap, + parent: null, + data, + parsedType: getParsedType(data), + }; + const result = this._parseSync({ data, path: ctx.path, parent: ctx }); + return handleResult(ctx, result); + } + async parseAsync(data, params) { + const result = await this.safeParseAsync(data, params); + if (result.success) + return result.data; + throw result.error; + } + async safeParseAsync(data, params) { + const ctx = { + common: { + issues: [], + contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap, + async: true, + }, + path: (params === null || params === void 0 ? void 0 : params.path) || [], + schemaErrorMap: this._def.errorMap, + parent: null, + data, + parsedType: getParsedType(data), + }; + const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx }); + const result = await (isAsync(maybeAsyncResult) + ? maybeAsyncResult + : Promise.resolve(maybeAsyncResult)); + return handleResult(ctx, result); + } + refine(check, message) { + const getIssueProperties = (val) => { + if (typeof message === "string" || typeof message === "undefined") { + return { message }; + } + else if (typeof message === "function") { + return message(val); + } + else { + return message; + } + }; + return this._refinement((val, ctx) => { + const result = check(val); + const setError = () => ctx.addIssue({ + code: ZodIssueCode.custom, + ...getIssueProperties(val), + }); + if (typeof Promise !== "undefined" && result instanceof Promise) { + return result.then((data) => { + if (!data) { + setError(); + return false; + } + else { + return true; + } + }); + } + if (!result) { + setError(); + return false; + } + else { + return true; + } + }); + } + refinement(check, refinementData) { + return this._refinement((val, ctx) => { + if (!check(val)) { + ctx.addIssue(typeof refinementData === "function" + ? refinementData(val, ctx) + : refinementData); + return false; + } + else { + return true; + } + }); + } + _refinement(refinement) { + return new ZodEffects({ + schema: this, + typeName: ZodFirstPartyTypeKind.ZodEffects, + effect: { type: "refinement", refinement }, + }); + } + superRefine(refinement) { + return this._refinement(refinement); + } + optional() { + return ZodOptional.create(this, this._def); + } + nullable() { + return ZodNullable.create(this, this._def); + } + nullish() { + return this.nullable().optional(); + } + array() { + return ZodArray.create(this, this._def); + } + promise() { + return ZodPromise.create(this, this._def); + } + or(option) { + return ZodUnion.create([this, option], this._def); + } + and(incoming) { + return ZodIntersection.create(this, incoming, this._def); + } + transform(transform) { + return new ZodEffects({ + ...processCreateParams(this._def), + schema: this, + typeName: ZodFirstPartyTypeKind.ZodEffects, + effect: { type: "transform", transform }, + }); + } + default(def) { + const defaultValueFunc = typeof def === "function" ? def : () => def; + return new ZodDefault({ + ...processCreateParams(this._def), + innerType: this, + defaultValue: defaultValueFunc, + typeName: ZodFirstPartyTypeKind.ZodDefault, + }); + } + brand() { + return new ZodBranded({ + typeName: ZodFirstPartyTypeKind.ZodBranded, + type: this, + ...processCreateParams(this._def), + }); + } + catch(def) { + const catchValueFunc = typeof def === "function" ? def : () => def; + return new ZodCatch({ + ...processCreateParams(this._def), + innerType: this, + catchValue: catchValueFunc, + typeName: ZodFirstPartyTypeKind.ZodCatch, + }); + } + describe(description) { + const This = this.constructor; + return new This({ + ...this._def, + description, + }); + } + pipe(target) { + return ZodPipeline.create(this, target); + } + readonly() { + return ZodReadonly.create(this); + } + isOptional() { + return this.safeParse(undefined).success; + } + isNullable() { + return this.safeParse(null).success; + } +} +const cuidRegex = /^c[^\s-]{8,}$/i; +const cuid2Regex = /^[0-9a-z]+$/; +const ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/; +// const uuidRegex = +// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i; +const uuidRegex = /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i; +const nanoidRegex = /^[a-z0-9_-]{21}$/i; +const durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/; +// from https://stackoverflow.com/a/46181/1550155 +// old version: too slow, didn't support unicode +// const emailRegex = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i; +//old email regex +// const emailRegex = /^(([^<>()[\].,;:\s@"]+(\.[^<>()[\].,;:\s@"]+)*)|(".+"))@((?!-)([^<>()[\].,;:\s@"]+\.)+[^<>()[\].,;:\s@"]{1,})[^-<>()[\].,;:\s@"]$/i; +// eslint-disable-next-line +// const emailRegex = +// /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\])|(\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\.[A-Za-z]{2,})+))$/; +// const emailRegex = +// /^[a-zA-Z0-9\.\!\#\$\%\&\'\*\+\/\=\?\^\_\`\{\|\}\~\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/; +// const emailRegex = +// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/i; +const emailRegex = /^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i; +// const emailRegex = +// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\.[a-z0-9\-]+)*$/i; +// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression +const _emojiRegex = `^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`; +let emojiRegex; +// faster, simpler, safer +const ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/; +const ipv6Regex = /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/; +// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript +const base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/; +// simple +// const dateRegexSource = `\\d{4}-\\d{2}-\\d{2}`; +// no leap year validation +// const dateRegexSource = `\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\d|2\\d))`; +// with leap year validation +const dateRegexSource = `((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`; +const dateRegex = new RegExp(`^${dateRegexSource}$`); +function timeRegexSource(args) { + // let regex = `\\d{2}:\\d{2}:\\d{2}`; + let regex = `([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d`; + if (args.precision) { + regex = `${regex}\\.\\d{${args.precision}}`; + } + else if (args.precision == null) { + regex = `${regex}(\\.\\d+)?`; + } + return regex; +} +function timeRegex(args) { + return new RegExp(`^${timeRegexSource(args)}$`); +} +// Adapted from https://stackoverflow.com/a/3143231 +function datetimeRegex(args) { + let regex = `${dateRegexSource}T${timeRegexSource(args)}`; + const opts = []; + opts.push(args.local ? `Z?` : `Z`); + if (args.offset) + opts.push(`([+-]\\d{2}:?\\d{2})`); + regex = `${regex}(${opts.join("|")})`; + return new RegExp(`^${regex}$`); +} +function isValidIP(ip, version) { + if ((version === "v4" || !version) && ipv4Regex.test(ip)) { + return true; + } + if ((version === "v6" || !version) && ipv6Regex.test(ip)) { + return true; + } + return false; +} +class ZodString extends ZodType { + _parse(input) { + if (this._def.coerce) { + input.data = String(input.data); + } + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.string) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.string, + received: ctx.parsedType, + }); + return INVALID; + } + const status = new ParseStatus(); + let ctx = undefined; + for (const check of this._def.checks) { + if (check.kind === "min") { + if (input.data.length < check.value) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: check.value, + type: "string", + inclusive: true, + exact: false, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "max") { + if (input.data.length > check.value) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: check.value, + type: "string", + inclusive: true, + exact: false, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "length") { + const tooBig = input.data.length > check.value; + const tooSmall = input.data.length < check.value; + if (tooBig || tooSmall) { + ctx = this._getOrReturnCtx(input, ctx); + if (tooBig) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: check.value, + type: "string", + inclusive: true, + exact: true, + message: check.message, + }); + } + else if (tooSmall) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: check.value, + type: "string", + inclusive: true, + exact: true, + message: check.message, + }); + } + status.dirty(); + } + } + else if (check.kind === "email") { + if (!emailRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "email", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "emoji") { + if (!emojiRegex) { + emojiRegex = new RegExp(_emojiRegex, "u"); + } + if (!emojiRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "emoji", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "uuid") { + if (!uuidRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "uuid", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "nanoid") { + if (!nanoidRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "nanoid", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "cuid") { + if (!cuidRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "cuid", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "cuid2") { + if (!cuid2Regex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "cuid2", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "ulid") { + if (!ulidRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "ulid", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "url") { + try { + new URL(input.data); + } + catch (_a) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "url", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "regex") { + check.regex.lastIndex = 0; + const testResult = check.regex.test(input.data); + if (!testResult) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "regex", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "trim") { + input.data = input.data.trim(); + } + else if (check.kind === "includes") { + if (!input.data.includes(check.value, check.position)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: { includes: check.value, position: check.position }, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "toLowerCase") { + input.data = input.data.toLowerCase(); + } + else if (check.kind === "toUpperCase") { + input.data = input.data.toUpperCase(); + } + else if (check.kind === "startsWith") { + if (!input.data.startsWith(check.value)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: { startsWith: check.value }, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "endsWith") { + if (!input.data.endsWith(check.value)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: { endsWith: check.value }, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "datetime") { + const regex = datetimeRegex(check); + if (!regex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: "datetime", + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "date") { + const regex = dateRegex; + if (!regex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: "date", + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "time") { + const regex = timeRegex(check); + if (!regex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: "time", + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "duration") { + if (!durationRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "duration", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "ip") { + if (!isValidIP(input.data, check.version)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "ip", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "base64") { + if (!base64Regex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "base64", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } + else { + util.assertNever(check); + } + } + return { status: status.value, value: input.data }; + } + _regex(regex, validation, message) { + return this.refinement((data) => regex.test(data), { + validation, + code: ZodIssueCode.invalid_string, + ...errorUtil.errToObj(message), + }); + } + _addCheck(check) { + return new ZodString({ + ...this._def, + checks: [...this._def.checks, check], + }); + } + email(message) { + return this._addCheck({ kind: "email", ...errorUtil.errToObj(message) }); + } + url(message) { + return this._addCheck({ kind: "url", ...errorUtil.errToObj(message) }); + } + emoji(message) { + return this._addCheck({ kind: "emoji", ...errorUtil.errToObj(message) }); + } + uuid(message) { + return this._addCheck({ kind: "uuid", ...errorUtil.errToObj(message) }); + } + nanoid(message) { + return this._addCheck({ kind: "nanoid", ...errorUtil.errToObj(message) }); + } + cuid(message) { + return this._addCheck({ kind: "cuid", ...errorUtil.errToObj(message) }); + } + cuid2(message) { + return this._addCheck({ kind: "cuid2", ...errorUtil.errToObj(message) }); + } + ulid(message) { + return this._addCheck({ kind: "ulid", ...errorUtil.errToObj(message) }); + } + base64(message) { + return this._addCheck({ kind: "base64", ...errorUtil.errToObj(message) }); + } + ip(options) { + return this._addCheck({ kind: "ip", ...errorUtil.errToObj(options) }); + } + datetime(options) { + var _a, _b; + if (typeof options === "string") { + return this._addCheck({ + kind: "datetime", + precision: null, + offset: false, + local: false, + message: options, + }); + } + return this._addCheck({ + kind: "datetime", + precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === "undefined" ? null : options === null || options === void 0 ? void 0 : options.precision, + offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false, + local: (_b = options === null || options === void 0 ? void 0 : options.local) !== null && _b !== void 0 ? _b : false, + ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message), + }); + } + date(message) { + return this._addCheck({ kind: "date", message }); + } + time(options) { + if (typeof options === "string") { + return this._addCheck({ + kind: "time", + precision: null, + message: options, + }); + } + return this._addCheck({ + kind: "time", + precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === "undefined" ? null : options === null || options === void 0 ? void 0 : options.precision, + ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message), + }); + } + duration(message) { + return this._addCheck({ kind: "duration", ...errorUtil.errToObj(message) }); + } + regex(regex, message) { + return this._addCheck({ + kind: "regex", + regex: regex, + ...errorUtil.errToObj(message), + }); + } + includes(value, options) { + return this._addCheck({ + kind: "includes", + value: value, + position: options === null || options === void 0 ? void 0 : options.position, + ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message), + }); + } + startsWith(value, message) { + return this._addCheck({ + kind: "startsWith", + value: value, + ...errorUtil.errToObj(message), + }); + } + endsWith(value, message) { + return this._addCheck({ + kind: "endsWith", + value: value, + ...errorUtil.errToObj(message), + }); + } + min(minLength, message) { + return this._addCheck({ + kind: "min", + value: minLength, + ...errorUtil.errToObj(message), + }); + } + max(maxLength, message) { + return this._addCheck({ + kind: "max", + value: maxLength, + ...errorUtil.errToObj(message), + }); + } + length(len, message) { + return this._addCheck({ + kind: "length", + value: len, + ...errorUtil.errToObj(message), + }); + } + /** + * @deprecated Use z.string().min(1) instead. + * @see {@link ZodString.min} + */ + nonempty(message) { + return this.min(1, errorUtil.errToObj(message)); + } + trim() { + return new ZodString({ + ...this._def, + checks: [...this._def.checks, { kind: "trim" }], + }); + } + toLowerCase() { + return new ZodString({ + ...this._def, + checks: [...this._def.checks, { kind: "toLowerCase" }], + }); + } + toUpperCase() { + return new ZodString({ + ...this._def, + checks: [...this._def.checks, { kind: "toUpperCase" }], + }); + } + get isDatetime() { + return !!this._def.checks.find((ch) => ch.kind === "datetime"); + } + get isDate() { + return !!this._def.checks.find((ch) => ch.kind === "date"); + } + get isTime() { + return !!this._def.checks.find((ch) => ch.kind === "time"); + } + get isDuration() { + return !!this._def.checks.find((ch) => ch.kind === "duration"); + } + get isEmail() { + return !!this._def.checks.find((ch) => ch.kind === "email"); + } + get isURL() { + return !!this._def.checks.find((ch) => ch.kind === "url"); + } + get isEmoji() { + return !!this._def.checks.find((ch) => ch.kind === "emoji"); + } + get isUUID() { + return !!this._def.checks.find((ch) => ch.kind === "uuid"); + } + get isNANOID() { + return !!this._def.checks.find((ch) => ch.kind === "nanoid"); + } + get isCUID() { + return !!this._def.checks.find((ch) => ch.kind === "cuid"); + } + get isCUID2() { + return !!this._def.checks.find((ch) => ch.kind === "cuid2"); + } + get isULID() { + return !!this._def.checks.find((ch) => ch.kind === "ulid"); + } + get isIP() { + return !!this._def.checks.find((ch) => ch.kind === "ip"); + } + get isBase64() { + return !!this._def.checks.find((ch) => ch.kind === "base64"); + } + get minLength() { + let min = null; + for (const ch of this._def.checks) { + if (ch.kind === "min") { + if (min === null || ch.value > min) + min = ch.value; + } + } + return min; + } + get maxLength() { + let max = null; + for (const ch of this._def.checks) { + if (ch.kind === "max") { + if (max === null || ch.value < max) + max = ch.value; + } + } + return max; + } +} +ZodString.create = (params) => { + var _a; + return new ZodString({ + checks: [], + typeName: ZodFirstPartyTypeKind.ZodString, + coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false, + ...processCreateParams(params), + }); +}; +// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034 +function floatSafeRemainder(val, step) { + const valDecCount = (val.toString().split(".")[1] || "").length; + const stepDecCount = (step.toString().split(".")[1] || "").length; + const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount; + const valInt = parseInt(val.toFixed(decCount).replace(".", "")); + const stepInt = parseInt(step.toFixed(decCount).replace(".", "")); + return (valInt % stepInt) / Math.pow(10, decCount); +} +class ZodNumber extends ZodType { + constructor() { + super(...arguments); + this.min = this.gte; + this.max = this.lte; + this.step = this.multipleOf; + } + _parse(input) { + if (this._def.coerce) { + input.data = Number(input.data); + } + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.number) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.number, + received: ctx.parsedType, + }); + return INVALID; + } + let ctx = undefined; + const status = new ParseStatus(); + for (const check of this._def.checks) { + if (check.kind === "int") { + if (!util.isInteger(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: "integer", + received: "float", + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "min") { + const tooSmall = check.inclusive + ? input.data < check.value + : input.data <= check.value; + if (tooSmall) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: check.value, + type: "number", + inclusive: check.inclusive, + exact: false, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "max") { + const tooBig = check.inclusive + ? input.data > check.value + : input.data >= check.value; + if (tooBig) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: check.value, + type: "number", + inclusive: check.inclusive, + exact: false, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "multipleOf") { + if (floatSafeRemainder(input.data, check.value) !== 0) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.not_multiple_of, + multipleOf: check.value, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "finite") { + if (!Number.isFinite(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.not_finite, + message: check.message, + }); + status.dirty(); + } + } + else { + util.assertNever(check); + } + } + return { status: status.value, value: input.data }; + } + gte(value, message) { + return this.setLimit("min", value, true, errorUtil.toString(message)); + } + gt(value, message) { + return this.setLimit("min", value, false, errorUtil.toString(message)); + } + lte(value, message) { + return this.setLimit("max", value, true, errorUtil.toString(message)); + } + lt(value, message) { + return this.setLimit("max", value, false, errorUtil.toString(message)); + } + setLimit(kind, value, inclusive, message) { + return new ZodNumber({ + ...this._def, + checks: [ + ...this._def.checks, + { + kind, + value, + inclusive, + message: errorUtil.toString(message), + }, + ], + }); + } + _addCheck(check) { + return new ZodNumber({ + ...this._def, + checks: [...this._def.checks, check], + }); + } + int(message) { + return this._addCheck({ + kind: "int", + message: errorUtil.toString(message), + }); + } + positive(message) { + return this._addCheck({ + kind: "min", + value: 0, + inclusive: false, + message: errorUtil.toString(message), + }); + } + negative(message) { + return this._addCheck({ + kind: "max", + value: 0, + inclusive: false, + message: errorUtil.toString(message), + }); + } + nonpositive(message) { + return this._addCheck({ + kind: "max", + value: 0, + inclusive: true, + message: errorUtil.toString(message), + }); + } + nonnegative(message) { + return this._addCheck({ + kind: "min", + value: 0, + inclusive: true, + message: errorUtil.toString(message), + }); + } + multipleOf(value, message) { + return this._addCheck({ + kind: "multipleOf", + value: value, + message: errorUtil.toString(message), + }); + } + finite(message) { + return this._addCheck({ + kind: "finite", + message: errorUtil.toString(message), + }); + } + safe(message) { + return this._addCheck({ + kind: "min", + inclusive: true, + value: Number.MIN_SAFE_INTEGER, + message: errorUtil.toString(message), + })._addCheck({ + kind: "max", + inclusive: true, + value: Number.MAX_SAFE_INTEGER, + message: errorUtil.toString(message), + }); + } + get minValue() { + let min = null; + for (const ch of this._def.checks) { + if (ch.kind === "min") { + if (min === null || ch.value > min) + min = ch.value; + } + } + return min; + } + get maxValue() { + let max = null; + for (const ch of this._def.checks) { + if (ch.kind === "max") { + if (max === null || ch.value < max) + max = ch.value; + } + } + return max; + } + get isInt() { + return !!this._def.checks.find((ch) => ch.kind === "int" || + (ch.kind === "multipleOf" && util.isInteger(ch.value))); + } + get isFinite() { + let max = null, min = null; + for (const ch of this._def.checks) { + if (ch.kind === "finite" || + ch.kind === "int" || + ch.kind === "multipleOf") { + return true; + } + else if (ch.kind === "min") { + if (min === null || ch.value > min) + min = ch.value; + } + else if (ch.kind === "max") { + if (max === null || ch.value < max) + max = ch.value; + } + } + return Number.isFinite(min) && Number.isFinite(max); + } +} +ZodNumber.create = (params) => { + return new ZodNumber({ + checks: [], + typeName: ZodFirstPartyTypeKind.ZodNumber, + coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false, + ...processCreateParams(params), + }); +}; +class ZodBigInt extends ZodType { + constructor() { + super(...arguments); + this.min = this.gte; + this.max = this.lte; + } + _parse(input) { + if (this._def.coerce) { + input.data = BigInt(input.data); + } + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.bigint) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.bigint, + received: ctx.parsedType, + }); + return INVALID; + } + let ctx = undefined; + const status = new ParseStatus(); + for (const check of this._def.checks) { + if (check.kind === "min") { + const tooSmall = check.inclusive + ? input.data < check.value + : input.data <= check.value; + if (tooSmall) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + type: "bigint", + minimum: check.value, + inclusive: check.inclusive, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "max") { + const tooBig = check.inclusive + ? input.data > check.value + : input.data >= check.value; + if (tooBig) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + type: "bigint", + maximum: check.value, + inclusive: check.inclusive, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "multipleOf") { + if (input.data % check.value !== BigInt(0)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.not_multiple_of, + multipleOf: check.value, + message: check.message, + }); + status.dirty(); + } + } + else { + util.assertNever(check); + } + } + return { status: status.value, value: input.data }; + } + gte(value, message) { + return this.setLimit("min", value, true, errorUtil.toString(message)); + } + gt(value, message) { + return this.setLimit("min", value, false, errorUtil.toString(message)); + } + lte(value, message) { + return this.setLimit("max", value, true, errorUtil.toString(message)); + } + lt(value, message) { + return this.setLimit("max", value, false, errorUtil.toString(message)); + } + setLimit(kind, value, inclusive, message) { + return new ZodBigInt({ + ...this._def, + checks: [ + ...this._def.checks, + { + kind, + value, + inclusive, + message: errorUtil.toString(message), + }, + ], + }); + } + _addCheck(check) { + return new ZodBigInt({ + ...this._def, + checks: [...this._def.checks, check], + }); + } + positive(message) { + return this._addCheck({ + kind: "min", + value: BigInt(0), + inclusive: false, + message: errorUtil.toString(message), + }); + } + negative(message) { + return this._addCheck({ + kind: "max", + value: BigInt(0), + inclusive: false, + message: errorUtil.toString(message), + }); + } + nonpositive(message) { + return this._addCheck({ + kind: "max", + value: BigInt(0), + inclusive: true, + message: errorUtil.toString(message), + }); + } + nonnegative(message) { + return this._addCheck({ + kind: "min", + value: BigInt(0), + inclusive: true, + message: errorUtil.toString(message), + }); + } + multipleOf(value, message) { + return this._addCheck({ + kind: "multipleOf", + value, + message: errorUtil.toString(message), + }); + } + get minValue() { + let min = null; + for (const ch of this._def.checks) { + if (ch.kind === "min") { + if (min === null || ch.value > min) + min = ch.value; + } + } + return min; + } + get maxValue() { + let max = null; + for (const ch of this._def.checks) { + if (ch.kind === "max") { + if (max === null || ch.value < max) + max = ch.value; + } + } + return max; + } +} +ZodBigInt.create = (params) => { + var _a; + return new ZodBigInt({ + checks: [], + typeName: ZodFirstPartyTypeKind.ZodBigInt, + coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false, + ...processCreateParams(params), + }); +}; +class ZodBoolean extends ZodType { + _parse(input) { + if (this._def.coerce) { + input.data = Boolean(input.data); + } + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.boolean) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.boolean, + received: ctx.parsedType, + }); + return INVALID; + } + return OK(input.data); + } +} +ZodBoolean.create = (params) => { + return new ZodBoolean({ + typeName: ZodFirstPartyTypeKind.ZodBoolean, + coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false, + ...processCreateParams(params), + }); +}; +class ZodDate extends ZodType { + _parse(input) { + if (this._def.coerce) { + input.data = new Date(input.data); + } + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.date) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.date, + received: ctx.parsedType, + }); + return INVALID; + } + if (isNaN(input.data.getTime())) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_date, + }); + return INVALID; + } + const status = new ParseStatus(); + let ctx = undefined; + for (const check of this._def.checks) { + if (check.kind === "min") { + if (input.data.getTime() < check.value) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + message: check.message, + inclusive: true, + exact: false, + minimum: check.value, + type: "date", + }); + status.dirty(); + } + } + else if (check.kind === "max") { + if (input.data.getTime() > check.value) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + message: check.message, + inclusive: true, + exact: false, + maximum: check.value, + type: "date", + }); + status.dirty(); + } + } + else { + util.assertNever(check); + } + } + return { + status: status.value, + value: new Date(input.data.getTime()), + }; + } + _addCheck(check) { + return new ZodDate({ + ...this._def, + checks: [...this._def.checks, check], + }); + } + min(minDate, message) { + return this._addCheck({ + kind: "min", + value: minDate.getTime(), + message: errorUtil.toString(message), + }); + } + max(maxDate, message) { + return this._addCheck({ + kind: "max", + value: maxDate.getTime(), + message: errorUtil.toString(message), + }); + } + get minDate() { + let min = null; + for (const ch of this._def.checks) { + if (ch.kind === "min") { + if (min === null || ch.value > min) + min = ch.value; + } + } + return min != null ? new Date(min) : null; + } + get maxDate() { + let max = null; + for (const ch of this._def.checks) { + if (ch.kind === "max") { + if (max === null || ch.value < max) + max = ch.value; + } + } + return max != null ? new Date(max) : null; + } +} +ZodDate.create = (params) => { + return new ZodDate({ + checks: [], + coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false, + typeName: ZodFirstPartyTypeKind.ZodDate, + ...processCreateParams(params), + }); +}; +class ZodSymbol extends ZodType { + _parse(input) { + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.symbol) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.symbol, + received: ctx.parsedType, + }); + return INVALID; + } + return OK(input.data); + } +} +ZodSymbol.create = (params) => { + return new ZodSymbol({ + typeName: ZodFirstPartyTypeKind.ZodSymbol, + ...processCreateParams(params), + }); +}; +class ZodUndefined extends ZodType { + _parse(input) { + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.undefined) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.undefined, + received: ctx.parsedType, + }); + return INVALID; + } + return OK(input.data); + } +} +ZodUndefined.create = (params) => { + return new ZodUndefined({ + typeName: ZodFirstPartyTypeKind.ZodUndefined, + ...processCreateParams(params), + }); +}; +class ZodNull extends ZodType { + _parse(input) { + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.null) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.null, + received: ctx.parsedType, + }); + return INVALID; + } + return OK(input.data); + } +} +ZodNull.create = (params) => { + return new ZodNull({ + typeName: ZodFirstPartyTypeKind.ZodNull, + ...processCreateParams(params), + }); +}; +class ZodAny extends ZodType { + constructor() { + super(...arguments); + // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject. + this._any = true; + } + _parse(input) { + return OK(input.data); + } +} +ZodAny.create = (params) => { + return new ZodAny({ + typeName: ZodFirstPartyTypeKind.ZodAny, + ...processCreateParams(params), + }); +}; +class ZodUnknown extends ZodType { + constructor() { + super(...arguments); + // required + this._unknown = true; + } + _parse(input) { + return OK(input.data); + } +} +ZodUnknown.create = (params) => { + return new ZodUnknown({ + typeName: ZodFirstPartyTypeKind.ZodUnknown, + ...processCreateParams(params), + }); +}; +class ZodNever extends ZodType { + _parse(input) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.never, + received: ctx.parsedType, + }); + return INVALID; + } +} +ZodNever.create = (params) => { + return new ZodNever({ + typeName: ZodFirstPartyTypeKind.ZodNever, + ...processCreateParams(params), + }); +}; +class ZodVoid extends ZodType { + _parse(input) { + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.undefined) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.void, + received: ctx.parsedType, + }); + return INVALID; + } + return OK(input.data); + } +} +ZodVoid.create = (params) => { + return new ZodVoid({ + typeName: ZodFirstPartyTypeKind.ZodVoid, + ...processCreateParams(params), + }); +}; +class ZodArray extends ZodType { + _parse(input) { + const { ctx, status } = this._processInputParams(input); + const def = this._def; + if (ctx.parsedType !== ZodParsedType.array) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.array, + received: ctx.parsedType, + }); + return INVALID; + } + if (def.exactLength !== null) { + const tooBig = ctx.data.length > def.exactLength.value; + const tooSmall = ctx.data.length < def.exactLength.value; + if (tooBig || tooSmall) { + addIssueToContext(ctx, { + code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small, + minimum: (tooSmall ? def.exactLength.value : undefined), + maximum: (tooBig ? def.exactLength.value : undefined), + type: "array", + inclusive: true, + exact: true, + message: def.exactLength.message, + }); + status.dirty(); + } + } + if (def.minLength !== null) { + if (ctx.data.length < def.minLength.value) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: def.minLength.value, + type: "array", + inclusive: true, + exact: false, + message: def.minLength.message, + }); + status.dirty(); + } + } + if (def.maxLength !== null) { + if (ctx.data.length > def.maxLength.value) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: def.maxLength.value, + type: "array", + inclusive: true, + exact: false, + message: def.maxLength.message, + }); + status.dirty(); + } + } + if (ctx.common.async) { + return Promise.all([...ctx.data].map((item, i) => { + return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i)); + })).then((result) => { + return ParseStatus.mergeArray(status, result); + }); + } + const result = [...ctx.data].map((item, i) => { + return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i)); + }); + return ParseStatus.mergeArray(status, result); + } + get element() { + return this._def.type; + } + min(minLength, message) { + return new ZodArray({ + ...this._def, + minLength: { value: minLength, message: errorUtil.toString(message) }, + }); + } + max(maxLength, message) { + return new ZodArray({ + ...this._def, + maxLength: { value: maxLength, message: errorUtil.toString(message) }, + }); + } + length(len, message) { + return new ZodArray({ + ...this._def, + exactLength: { value: len, message: errorUtil.toString(message) }, + }); + } + nonempty(message) { + return this.min(1, message); + } +} +ZodArray.create = (schema, params) => { + return new ZodArray({ + type: schema, + minLength: null, + maxLength: null, + exactLength: null, + typeName: ZodFirstPartyTypeKind.ZodArray, + ...processCreateParams(params), + }); +}; +function deepPartialify(schema) { + if (schema instanceof ZodObject) { + const newShape = {}; + for (const key in schema.shape) { + const fieldSchema = schema.shape[key]; + newShape[key] = ZodOptional.create(deepPartialify(fieldSchema)); + } + return new ZodObject({ + ...schema._def, + shape: () => newShape, + }); + } + else if (schema instanceof ZodArray) { + return new ZodArray({ + ...schema._def, + type: deepPartialify(schema.element), + }); + } + else if (schema instanceof ZodOptional) { + return ZodOptional.create(deepPartialify(schema.unwrap())); + } + else if (schema instanceof ZodNullable) { + return ZodNullable.create(deepPartialify(schema.unwrap())); + } + else if (schema instanceof ZodTuple) { + return ZodTuple.create(schema.items.map((item) => deepPartialify(item))); + } + else { + return schema; + } +} +class ZodObject extends ZodType { + constructor() { + super(...arguments); + this._cached = null; + /** + * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped. + * If you want to pass through unknown properties, use `.passthrough()` instead. + */ + this.nonstrict = this.passthrough; + // extend< + // Augmentation extends ZodRawShape, + // NewOutput extends util.flatten<{ + // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation + // ? Augmentation[k]["_output"] + // : k extends keyof Output + // ? Output[k] + // : never; + // }>, + // NewInput extends util.flatten<{ + // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation + // ? Augmentation[k]["_input"] + // : k extends keyof Input + // ? Input[k] + // : never; + // }> + // >( + // augmentation: Augmentation + // ): ZodObject< + // extendShape, + // UnknownKeys, + // Catchall, + // NewOutput, + // NewInput + // > { + // return new ZodObject({ + // ...this._def, + // shape: () => ({ + // ...this._def.shape(), + // ...augmentation, + // }), + // }) as any; + // } + /** + * @deprecated Use `.extend` instead + * */ + this.augment = this.extend; + } + _getCached() { + if (this._cached !== null) + return this._cached; + const shape = this._def.shape(); + const keys = util.objectKeys(shape); + return (this._cached = { shape, keys }); + } + _parse(input) { + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.object) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.object, + received: ctx.parsedType, + }); + return INVALID; + } + const { status, ctx } = this._processInputParams(input); + const { shape, keys: shapeKeys } = this._getCached(); + const extraKeys = []; + if (!(this._def.catchall instanceof ZodNever && + this._def.unknownKeys === "strip")) { + for (const key in ctx.data) { + if (!shapeKeys.includes(key)) { + extraKeys.push(key); + } + } + } + const pairs = []; + for (const key of shapeKeys) { + const keyValidator = shape[key]; + const value = ctx.data[key]; + pairs.push({ + key: { status: "valid", value: key }, + value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)), + alwaysSet: key in ctx.data, + }); + } + if (this._def.catchall instanceof ZodNever) { + const unknownKeys = this._def.unknownKeys; + if (unknownKeys === "passthrough") { + for (const key of extraKeys) { + pairs.push({ + key: { status: "valid", value: key }, + value: { status: "valid", value: ctx.data[key] }, + }); + } + } + else if (unknownKeys === "strict") { + if (extraKeys.length > 0) { + addIssueToContext(ctx, { + code: ZodIssueCode.unrecognized_keys, + keys: extraKeys, + }); + status.dirty(); + } + } + else if (unknownKeys === "strip") ; + else { + throw new Error(`Internal ZodObject error: invalid unknownKeys value.`); + } + } + else { + // run catchall validation + const catchall = this._def.catchall; + for (const key of extraKeys) { + const value = ctx.data[key]; + pairs.push({ + key: { status: "valid", value: key }, + value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value) + ), + alwaysSet: key in ctx.data, + }); + } + } + if (ctx.common.async) { + return Promise.resolve() + .then(async () => { + const syncPairs = []; + for (const pair of pairs) { + const key = await pair.key; + const value = await pair.value; + syncPairs.push({ + key, + value, + alwaysSet: pair.alwaysSet, + }); + } + return syncPairs; + }) + .then((syncPairs) => { + return ParseStatus.mergeObjectSync(status, syncPairs); + }); + } + else { + return ParseStatus.mergeObjectSync(status, pairs); + } + } + get shape() { + return this._def.shape(); + } + strict(message) { + errorUtil.errToObj; + return new ZodObject({ + ...this._def, + unknownKeys: "strict", + ...(message !== undefined + ? { + errorMap: (issue, ctx) => { + var _a, _b, _c, _d; + const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError; + if (issue.code === "unrecognized_keys") + return { + message: (_d = errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : defaultError, + }; + return { + message: defaultError, + }; + }, + } + : {}), + }); + } + strip() { + return new ZodObject({ + ...this._def, + unknownKeys: "strip", + }); + } + passthrough() { + return new ZodObject({ + ...this._def, + unknownKeys: "passthrough", + }); + } + // const AugmentFactory = + // (def: Def) => + // ( + // augmentation: Augmentation + // ): ZodObject< + // extendShape, Augmentation>, + // Def["unknownKeys"], + // Def["catchall"] + // > => { + // return new ZodObject({ + // ...def, + // shape: () => ({ + // ...def.shape(), + // ...augmentation, + // }), + // }) as any; + // }; + extend(augmentation) { + return new ZodObject({ + ...this._def, + shape: () => ({ + ...this._def.shape(), + ...augmentation, + }), + }); + } + /** + * Prior to zod@1.0.12 there was a bug in the + * inferred type of merged objects. Please + * upgrade if you are experiencing issues. + */ + merge(merging) { + const merged = new ZodObject({ + unknownKeys: merging._def.unknownKeys, + catchall: merging._def.catchall, + shape: () => ({ + ...this._def.shape(), + ...merging._def.shape(), + }), + typeName: ZodFirstPartyTypeKind.ZodObject, + }); + return merged; + } + // merge< + // Incoming extends AnyZodObject, + // Augmentation extends Incoming["shape"], + // NewOutput extends { + // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation + // ? Augmentation[k]["_output"] + // : k extends keyof Output + // ? Output[k] + // : never; + // }, + // NewInput extends { + // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation + // ? Augmentation[k]["_input"] + // : k extends keyof Input + // ? Input[k] + // : never; + // } + // >( + // merging: Incoming + // ): ZodObject< + // extendShape>, + // Incoming["_def"]["unknownKeys"], + // Incoming["_def"]["catchall"], + // NewOutput, + // NewInput + // > { + // const merged: any = new ZodObject({ + // unknownKeys: merging._def.unknownKeys, + // catchall: merging._def.catchall, + // shape: () => + // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()), + // typeName: ZodFirstPartyTypeKind.ZodObject, + // }) as any; + // return merged; + // } + setKey(key, schema) { + return this.augment({ [key]: schema }); + } + // merge( + // merging: Incoming + // ): //ZodObject = (merging) => { + // ZodObject< + // extendShape>, + // Incoming["_def"]["unknownKeys"], + // Incoming["_def"]["catchall"] + // > { + // // const mergedShape = objectUtil.mergeShapes( + // // this._def.shape(), + // // merging._def.shape() + // // ); + // const merged: any = new ZodObject({ + // unknownKeys: merging._def.unknownKeys, + // catchall: merging._def.catchall, + // shape: () => + // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()), + // typeName: ZodFirstPartyTypeKind.ZodObject, + // }) as any; + // return merged; + // } + catchall(index) { + return new ZodObject({ + ...this._def, + catchall: index, + }); + } + pick(mask) { + const shape = {}; + util.objectKeys(mask).forEach((key) => { + if (mask[key] && this.shape[key]) { + shape[key] = this.shape[key]; + } + }); + return new ZodObject({ + ...this._def, + shape: () => shape, + }); + } + omit(mask) { + const shape = {}; + util.objectKeys(this.shape).forEach((key) => { + if (!mask[key]) { + shape[key] = this.shape[key]; + } + }); + return new ZodObject({ + ...this._def, + shape: () => shape, + }); + } + /** + * @deprecated + */ + deepPartial() { + return deepPartialify(this); + } + partial(mask) { + const newShape = {}; + util.objectKeys(this.shape).forEach((key) => { + const fieldSchema = this.shape[key]; + if (mask && !mask[key]) { + newShape[key] = fieldSchema; + } + else { + newShape[key] = fieldSchema.optional(); + } + }); + return new ZodObject({ + ...this._def, + shape: () => newShape, + }); + } + required(mask) { + const newShape = {}; + util.objectKeys(this.shape).forEach((key) => { + if (mask && !mask[key]) { + newShape[key] = this.shape[key]; + } + else { + const fieldSchema = this.shape[key]; + let newField = fieldSchema; + while (newField instanceof ZodOptional) { + newField = newField._def.innerType; + } + newShape[key] = newField; + } + }); + return new ZodObject({ + ...this._def, + shape: () => newShape, + }); + } + keyof() { + return createZodEnum(util.objectKeys(this.shape)); + } +} +ZodObject.create = (shape, params) => { + return new ZodObject({ + shape: () => shape, + unknownKeys: "strip", + catchall: ZodNever.create(), + typeName: ZodFirstPartyTypeKind.ZodObject, + ...processCreateParams(params), + }); +}; +ZodObject.strictCreate = (shape, params) => { + return new ZodObject({ + shape: () => shape, + unknownKeys: "strict", + catchall: ZodNever.create(), + typeName: ZodFirstPartyTypeKind.ZodObject, + ...processCreateParams(params), + }); +}; +ZodObject.lazycreate = (shape, params) => { + return new ZodObject({ + shape, + unknownKeys: "strip", + catchall: ZodNever.create(), + typeName: ZodFirstPartyTypeKind.ZodObject, + ...processCreateParams(params), + }); +}; +class ZodUnion extends ZodType { + _parse(input) { + const { ctx } = this._processInputParams(input); + const options = this._def.options; + function handleResults(results) { + // return first issue-free validation if it exists + for (const result of results) { + if (result.result.status === "valid") { + return result.result; + } + } + for (const result of results) { + if (result.result.status === "dirty") { + // add issues from dirty option + ctx.common.issues.push(...result.ctx.common.issues); + return result.result; + } + } + // return invalid + const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues)); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_union, + unionErrors, + }); + return INVALID; + } + if (ctx.common.async) { + return Promise.all(options.map(async (option) => { + const childCtx = { + ...ctx, + common: { + ...ctx.common, + issues: [], + }, + parent: null, + }; + return { + result: await option._parseAsync({ + data: ctx.data, + path: ctx.path, + parent: childCtx, + }), + ctx: childCtx, + }; + })).then(handleResults); + } + else { + let dirty = undefined; + const issues = []; + for (const option of options) { + const childCtx = { + ...ctx, + common: { + ...ctx.common, + issues: [], + }, + parent: null, + }; + const result = option._parseSync({ + data: ctx.data, + path: ctx.path, + parent: childCtx, + }); + if (result.status === "valid") { + return result; + } + else if (result.status === "dirty" && !dirty) { + dirty = { result, ctx: childCtx }; + } + if (childCtx.common.issues.length) { + issues.push(childCtx.common.issues); + } + } + if (dirty) { + ctx.common.issues.push(...dirty.ctx.common.issues); + return dirty.result; + } + const unionErrors = issues.map((issues) => new ZodError(issues)); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_union, + unionErrors, + }); + return INVALID; + } + } + get options() { + return this._def.options; + } +} +ZodUnion.create = (types, params) => { + return new ZodUnion({ + options: types, + typeName: ZodFirstPartyTypeKind.ZodUnion, + ...processCreateParams(params), + }); +}; +///////////////////////////////////////////////////// +///////////////////////////////////////////////////// +////////// ////////// +////////// ZodDiscriminatedUnion ////////// +////////// ////////// +///////////////////////////////////////////////////// +///////////////////////////////////////////////////// +const getDiscriminator = (type) => { + if (type instanceof ZodLazy) { + return getDiscriminator(type.schema); + } + else if (type instanceof ZodEffects) { + return getDiscriminator(type.innerType()); + } + else if (type instanceof ZodLiteral) { + return [type.value]; + } + else if (type instanceof ZodEnum) { + return type.options; + } + else if (type instanceof ZodNativeEnum) { + // eslint-disable-next-line ban/ban + return util.objectValues(type.enum); + } + else if (type instanceof ZodDefault) { + return getDiscriminator(type._def.innerType); + } + else if (type instanceof ZodUndefined) { + return [undefined]; + } + else if (type instanceof ZodNull) { + return [null]; + } + else if (type instanceof ZodOptional) { + return [undefined, ...getDiscriminator(type.unwrap())]; + } + else if (type instanceof ZodNullable) { + return [null, ...getDiscriminator(type.unwrap())]; + } + else if (type instanceof ZodBranded) { + return getDiscriminator(type.unwrap()); + } + else if (type instanceof ZodReadonly) { + return getDiscriminator(type.unwrap()); + } + else if (type instanceof ZodCatch) { + return getDiscriminator(type._def.innerType); + } + else { + return []; + } +}; +class ZodDiscriminatedUnion extends ZodType { + _parse(input) { + const { ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.object) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.object, + received: ctx.parsedType, + }); + return INVALID; + } + const discriminator = this.discriminator; + const discriminatorValue = ctx.data[discriminator]; + const option = this.optionsMap.get(discriminatorValue); + if (!option) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_union_discriminator, + options: Array.from(this.optionsMap.keys()), + path: [discriminator], + }); + return INVALID; + } + if (ctx.common.async) { + return option._parseAsync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }); + } + else { + return option._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }); + } + } + get discriminator() { + return this._def.discriminator; + } + get options() { + return this._def.options; + } + get optionsMap() { + return this._def.optionsMap; + } + /** + * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor. + * However, it only allows a union of objects, all of which need to share a discriminator property. This property must + * have a different value for each object in the union. + * @param discriminator the name of the discriminator property + * @param types an array of object schemas + * @param params + */ + static create(discriminator, options, params) { + // Get all the valid discriminator values + const optionsMap = new Map(); + // try { + for (const type of options) { + const discriminatorValues = getDiscriminator(type.shape[discriminator]); + if (!discriminatorValues.length) { + throw new Error(`A discriminator value for key \`${discriminator}\` could not be extracted from all schema options`); + } + for (const value of discriminatorValues) { + if (optionsMap.has(value)) { + throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`); + } + optionsMap.set(value, type); + } + } + return new ZodDiscriminatedUnion({ + typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion, + discriminator, + options, + optionsMap, + ...processCreateParams(params), + }); + } +} +function mergeValues(a, b) { + const aType = getParsedType(a); + const bType = getParsedType(b); + if (a === b) { + return { valid: true, data: a }; + } + else if (aType === ZodParsedType.object && bType === ZodParsedType.object) { + const bKeys = util.objectKeys(b); + const sharedKeys = util + .objectKeys(a) + .filter((key) => bKeys.indexOf(key) !== -1); + const newObj = { ...a, ...b }; + for (const key of sharedKeys) { + const sharedValue = mergeValues(a[key], b[key]); + if (!sharedValue.valid) { + return { valid: false }; + } + newObj[key] = sharedValue.data; + } + return { valid: true, data: newObj }; + } + else if (aType === ZodParsedType.array && bType === ZodParsedType.array) { + if (a.length !== b.length) { + return { valid: false }; + } + const newArray = []; + for (let index = 0; index < a.length; index++) { + const itemA = a[index]; + const itemB = b[index]; + const sharedValue = mergeValues(itemA, itemB); + if (!sharedValue.valid) { + return { valid: false }; + } + newArray.push(sharedValue.data); + } + return { valid: true, data: newArray }; + } + else if (aType === ZodParsedType.date && + bType === ZodParsedType.date && + +a === +b) { + return { valid: true, data: a }; + } + else { + return { valid: false }; + } +} +class ZodIntersection extends ZodType { + _parse(input) { + const { status, ctx } = this._processInputParams(input); + const handleParsed = (parsedLeft, parsedRight) => { + if (isAborted(parsedLeft) || isAborted(parsedRight)) { + return INVALID; + } + const merged = mergeValues(parsedLeft.value, parsedRight.value); + if (!merged.valid) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_intersection_types, + }); + return INVALID; + } + if (isDirty(parsedLeft) || isDirty(parsedRight)) { + status.dirty(); + } + return { status: status.value, value: merged.data }; + }; + if (ctx.common.async) { + return Promise.all([ + this._def.left._parseAsync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }), + this._def.right._parseAsync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }), + ]).then(([left, right]) => handleParsed(left, right)); + } + else { + return handleParsed(this._def.left._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }), this._def.right._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + })); + } + } +} +ZodIntersection.create = (left, right, params) => { + return new ZodIntersection({ + left: left, + right: right, + typeName: ZodFirstPartyTypeKind.ZodIntersection, + ...processCreateParams(params), + }); +}; +class ZodTuple extends ZodType { + _parse(input) { + const { status, ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.array) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.array, + received: ctx.parsedType, + }); + return INVALID; + } + if (ctx.data.length < this._def.items.length) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: this._def.items.length, + inclusive: true, + exact: false, + type: "array", + }); + return INVALID; + } + const rest = this._def.rest; + if (!rest && ctx.data.length > this._def.items.length) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: this._def.items.length, + inclusive: true, + exact: false, + type: "array", + }); + status.dirty(); + } + const items = [...ctx.data] + .map((item, itemIndex) => { + const schema = this._def.items[itemIndex] || this._def.rest; + if (!schema) + return null; + return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex)); + }) + .filter((x) => !!x); // filter nulls + if (ctx.common.async) { + return Promise.all(items).then((results) => { + return ParseStatus.mergeArray(status, results); + }); + } + else { + return ParseStatus.mergeArray(status, items); + } + } + get items() { + return this._def.items; + } + rest(rest) { + return new ZodTuple({ + ...this._def, + rest, + }); + } +} +ZodTuple.create = (schemas, params) => { + if (!Array.isArray(schemas)) { + throw new Error("You must pass an array of schemas to z.tuple([ ... ])"); + } + return new ZodTuple({ + items: schemas, + typeName: ZodFirstPartyTypeKind.ZodTuple, + rest: null, + ...processCreateParams(params), + }); +}; +class ZodRecord extends ZodType { + get keySchema() { + return this._def.keyType; + } + get valueSchema() { + return this._def.valueType; + } + _parse(input) { + const { status, ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.object) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.object, + received: ctx.parsedType, + }); + return INVALID; + } + const pairs = []; + const keyType = this._def.keyType; + const valueType = this._def.valueType; + for (const key in ctx.data) { + pairs.push({ + key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)), + value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)), + alwaysSet: key in ctx.data, + }); + } + if (ctx.common.async) { + return ParseStatus.mergeObjectAsync(status, pairs); + } + else { + return ParseStatus.mergeObjectSync(status, pairs); + } + } + get element() { + return this._def.valueType; + } + static create(first, second, third) { + if (second instanceof ZodType) { + return new ZodRecord({ + keyType: first, + valueType: second, + typeName: ZodFirstPartyTypeKind.ZodRecord, + ...processCreateParams(third), + }); + } + return new ZodRecord({ + keyType: ZodString.create(), + valueType: first, + typeName: ZodFirstPartyTypeKind.ZodRecord, + ...processCreateParams(second), + }); + } +} +class ZodMap extends ZodType { + get keySchema() { + return this._def.keyType; + } + get valueSchema() { + return this._def.valueType; + } + _parse(input) { + const { status, ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.map) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.map, + received: ctx.parsedType, + }); + return INVALID; + } + const keyType = this._def.keyType; + const valueType = this._def.valueType; + const pairs = [...ctx.data.entries()].map(([key, value], index) => { + return { + key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, "key"])), + value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, "value"])), + }; + }); + if (ctx.common.async) { + const finalMap = new Map(); + return Promise.resolve().then(async () => { + for (const pair of pairs) { + const key = await pair.key; + const value = await pair.value; + if (key.status === "aborted" || value.status === "aborted") { + return INVALID; + } + if (key.status === "dirty" || value.status === "dirty") { + status.dirty(); + } + finalMap.set(key.value, value.value); + } + return { status: status.value, value: finalMap }; + }); + } + else { + const finalMap = new Map(); + for (const pair of pairs) { + const key = pair.key; + const value = pair.value; + if (key.status === "aborted" || value.status === "aborted") { + return INVALID; + } + if (key.status === "dirty" || value.status === "dirty") { + status.dirty(); + } + finalMap.set(key.value, value.value); + } + return { status: status.value, value: finalMap }; + } + } +} +ZodMap.create = (keyType, valueType, params) => { + return new ZodMap({ + valueType, + keyType, + typeName: ZodFirstPartyTypeKind.ZodMap, + ...processCreateParams(params), + }); +}; +class ZodSet extends ZodType { + _parse(input) { + const { status, ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.set) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.set, + received: ctx.parsedType, + }); + return INVALID; + } + const def = this._def; + if (def.minSize !== null) { + if (ctx.data.size < def.minSize.value) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: def.minSize.value, + type: "set", + inclusive: true, + exact: false, + message: def.minSize.message, + }); + status.dirty(); + } + } + if (def.maxSize !== null) { + if (ctx.data.size > def.maxSize.value) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: def.maxSize.value, + type: "set", + inclusive: true, + exact: false, + message: def.maxSize.message, + }); + status.dirty(); + } + } + const valueType = this._def.valueType; + function finalizeSet(elements) { + const parsedSet = new Set(); + for (const element of elements) { + if (element.status === "aborted") + return INVALID; + if (element.status === "dirty") + status.dirty(); + parsedSet.add(element.value); + } + return { status: status.value, value: parsedSet }; + } + const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i))); + if (ctx.common.async) { + return Promise.all(elements).then((elements) => finalizeSet(elements)); + } + else { + return finalizeSet(elements); + } + } + min(minSize, message) { + return new ZodSet({ + ...this._def, + minSize: { value: minSize, message: errorUtil.toString(message) }, + }); + } + max(maxSize, message) { + return new ZodSet({ + ...this._def, + maxSize: { value: maxSize, message: errorUtil.toString(message) }, + }); + } + size(size, message) { + return this.min(size, message).max(size, message); + } + nonempty(message) { + return this.min(1, message); + } +} +ZodSet.create = (valueType, params) => { + return new ZodSet({ + valueType, + minSize: null, + maxSize: null, + typeName: ZodFirstPartyTypeKind.ZodSet, + ...processCreateParams(params), + }); +}; +class ZodFunction extends ZodType { + constructor() { + super(...arguments); + this.validate = this.implement; + } + _parse(input) { + const { ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.function) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.function, + received: ctx.parsedType, + }); + return INVALID; + } + function makeArgsIssue(args, error) { + return makeIssue({ + data: args, + path: ctx.path, + errorMaps: [ + ctx.common.contextualErrorMap, + ctx.schemaErrorMap, + getErrorMap(), + errorMap, + ].filter((x) => !!x), + issueData: { + code: ZodIssueCode.invalid_arguments, + argumentsError: error, + }, + }); + } + function makeReturnsIssue(returns, error) { + return makeIssue({ + data: returns, + path: ctx.path, + errorMaps: [ + ctx.common.contextualErrorMap, + ctx.schemaErrorMap, + getErrorMap(), + errorMap, + ].filter((x) => !!x), + issueData: { + code: ZodIssueCode.invalid_return_type, + returnTypeError: error, + }, + }); + } + const params = { errorMap: ctx.common.contextualErrorMap }; + const fn = ctx.data; + if (this._def.returns instanceof ZodPromise) { + // Would love a way to avoid disabling this rule, but we need + // an alias (using an arrow function was what caused 2651). + // eslint-disable-next-line @typescript-eslint/no-this-alias + const me = this; + return OK(async function (...args) { + const error = new ZodError([]); + const parsedArgs = await me._def.args + .parseAsync(args, params) + .catch((e) => { + error.addIssue(makeArgsIssue(args, e)); + throw error; + }); + const result = await Reflect.apply(fn, this, parsedArgs); + const parsedReturns = await me._def.returns._def.type + .parseAsync(result, params) + .catch((e) => { + error.addIssue(makeReturnsIssue(result, e)); + throw error; + }); + return parsedReturns; + }); + } + else { + // Would love a way to avoid disabling this rule, but we need + // an alias (using an arrow function was what caused 2651). + // eslint-disable-next-line @typescript-eslint/no-this-alias + const me = this; + return OK(function (...args) { + const parsedArgs = me._def.args.safeParse(args, params); + if (!parsedArgs.success) { + throw new ZodError([makeArgsIssue(args, parsedArgs.error)]); + } + const result = Reflect.apply(fn, this, parsedArgs.data); + const parsedReturns = me._def.returns.safeParse(result, params); + if (!parsedReturns.success) { + throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]); + } + return parsedReturns.data; + }); + } + } + parameters() { + return this._def.args; + } + returnType() { + return this._def.returns; + } + args(...items) { + return new ZodFunction({ + ...this._def, + args: ZodTuple.create(items).rest(ZodUnknown.create()), + }); + } + returns(returnType) { + return new ZodFunction({ + ...this._def, + returns: returnType, + }); + } + implement(func) { + const validatedFunc = this.parse(func); + return validatedFunc; + } + strictImplement(func) { + const validatedFunc = this.parse(func); + return validatedFunc; + } + static create(args, returns, params) { + return new ZodFunction({ + args: (args + ? args + : ZodTuple.create([]).rest(ZodUnknown.create())), + returns: returns || ZodUnknown.create(), + typeName: ZodFirstPartyTypeKind.ZodFunction, + ...processCreateParams(params), + }); + } +} +class ZodLazy extends ZodType { + get schema() { + return this._def.getter(); + } + _parse(input) { + const { ctx } = this._processInputParams(input); + const lazySchema = this._def.getter(); + return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx }); + } +} +ZodLazy.create = (getter, params) => { + return new ZodLazy({ + getter: getter, + typeName: ZodFirstPartyTypeKind.ZodLazy, + ...processCreateParams(params), + }); +}; +class ZodLiteral extends ZodType { + _parse(input) { + if (input.data !== this._def.value) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + received: ctx.data, + code: ZodIssueCode.invalid_literal, + expected: this._def.value, + }); + return INVALID; + } + return { status: "valid", value: input.data }; + } + get value() { + return this._def.value; + } +} +ZodLiteral.create = (value, params) => { + return new ZodLiteral({ + value: value, + typeName: ZodFirstPartyTypeKind.ZodLiteral, + ...processCreateParams(params), + }); +}; +function createZodEnum(values, params) { + return new ZodEnum({ + values, + typeName: ZodFirstPartyTypeKind.ZodEnum, + ...processCreateParams(params), + }); +} +class ZodEnum extends ZodType { + constructor() { + super(...arguments); + _ZodEnum_cache.set(this, void 0); + } + _parse(input) { + if (typeof input.data !== "string") { + const ctx = this._getOrReturnCtx(input); + const expectedValues = this._def.values; + addIssueToContext(ctx, { + expected: util.joinValues(expectedValues), + received: ctx.parsedType, + code: ZodIssueCode.invalid_type, + }); + return INVALID; + } + if (!__classPrivateFieldGet(this, _ZodEnum_cache)) { + __classPrivateFieldSet(this, _ZodEnum_cache, new Set(this._def.values)); + } + if (!__classPrivateFieldGet(this, _ZodEnum_cache).has(input.data)) { + const ctx = this._getOrReturnCtx(input); + const expectedValues = this._def.values; + addIssueToContext(ctx, { + received: ctx.data, + code: ZodIssueCode.invalid_enum_value, + options: expectedValues, + }); + return INVALID; + } + return OK(input.data); + } + get options() { + return this._def.values; + } + get enum() { + const enumValues = {}; + for (const val of this._def.values) { + enumValues[val] = val; + } + return enumValues; + } + get Values() { + const enumValues = {}; + for (const val of this._def.values) { + enumValues[val] = val; + } + return enumValues; + } + get Enum() { + const enumValues = {}; + for (const val of this._def.values) { + enumValues[val] = val; + } + return enumValues; + } + extract(values, newDef = this._def) { + return ZodEnum.create(values, { + ...this._def, + ...newDef, + }); + } + exclude(values, newDef = this._def) { + return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), { + ...this._def, + ...newDef, + }); + } +} +_ZodEnum_cache = new WeakMap(); +ZodEnum.create = createZodEnum; +class ZodNativeEnum extends ZodType { + constructor() { + super(...arguments); + _ZodNativeEnum_cache.set(this, void 0); + } + _parse(input) { + const nativeEnumValues = util.getValidEnumValues(this._def.values); + const ctx = this._getOrReturnCtx(input); + if (ctx.parsedType !== ZodParsedType.string && + ctx.parsedType !== ZodParsedType.number) { + const expectedValues = util.objectValues(nativeEnumValues); + addIssueToContext(ctx, { + expected: util.joinValues(expectedValues), + received: ctx.parsedType, + code: ZodIssueCode.invalid_type, + }); + return INVALID; + } + if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache)) { + __classPrivateFieldSet(this, _ZodNativeEnum_cache, new Set(util.getValidEnumValues(this._def.values))); + } + if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache).has(input.data)) { + const expectedValues = util.objectValues(nativeEnumValues); + addIssueToContext(ctx, { + received: ctx.data, + code: ZodIssueCode.invalid_enum_value, + options: expectedValues, + }); + return INVALID; + } + return OK(input.data); + } + get enum() { + return this._def.values; + } +} +_ZodNativeEnum_cache = new WeakMap(); +ZodNativeEnum.create = (values, params) => { + return new ZodNativeEnum({ + values: values, + typeName: ZodFirstPartyTypeKind.ZodNativeEnum, + ...processCreateParams(params), + }); +}; +class ZodPromise extends ZodType { + unwrap() { + return this._def.type; + } + _parse(input) { + const { ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.promise && + ctx.common.async === false) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.promise, + received: ctx.parsedType, + }); + return INVALID; + } + const promisified = ctx.parsedType === ZodParsedType.promise + ? ctx.data + : Promise.resolve(ctx.data); + return OK(promisified.then((data) => { + return this._def.type.parseAsync(data, { + path: ctx.path, + errorMap: ctx.common.contextualErrorMap, + }); + })); + } +} +ZodPromise.create = (schema, params) => { + return new ZodPromise({ + type: schema, + typeName: ZodFirstPartyTypeKind.ZodPromise, + ...processCreateParams(params), + }); +}; +class ZodEffects extends ZodType { + innerType() { + return this._def.schema; + } + sourceType() { + return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects + ? this._def.schema.sourceType() + : this._def.schema; + } + _parse(input) { + const { status, ctx } = this._processInputParams(input); + const effect = this._def.effect || null; + const checkCtx = { + addIssue: (arg) => { + addIssueToContext(ctx, arg); + if (arg.fatal) { + status.abort(); + } + else { + status.dirty(); + } + }, + get path() { + return ctx.path; + }, + }; + checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx); + if (effect.type === "preprocess") { + const processed = effect.transform(ctx.data, checkCtx); + if (ctx.common.async) { + return Promise.resolve(processed).then(async (processed) => { + if (status.value === "aborted") + return INVALID; + const result = await this._def.schema._parseAsync({ + data: processed, + path: ctx.path, + parent: ctx, + }); + if (result.status === "aborted") + return INVALID; + if (result.status === "dirty") + return DIRTY(result.value); + if (status.value === "dirty") + return DIRTY(result.value); + return result; + }); + } + else { + if (status.value === "aborted") + return INVALID; + const result = this._def.schema._parseSync({ + data: processed, + path: ctx.path, + parent: ctx, + }); + if (result.status === "aborted") + return INVALID; + if (result.status === "dirty") + return DIRTY(result.value); + if (status.value === "dirty") + return DIRTY(result.value); + return result; + } + } + if (effect.type === "refinement") { + const executeRefinement = (acc) => { + const result = effect.refinement(acc, checkCtx); + if (ctx.common.async) { + return Promise.resolve(result); + } + if (result instanceof Promise) { + throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead."); + } + return acc; + }; + if (ctx.common.async === false) { + const inner = this._def.schema._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }); + if (inner.status === "aborted") + return INVALID; + if (inner.status === "dirty") + status.dirty(); + // return value is ignored + executeRefinement(inner.value); + return { status: status.value, value: inner.value }; + } + else { + return this._def.schema + ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }) + .then((inner) => { + if (inner.status === "aborted") + return INVALID; + if (inner.status === "dirty") + status.dirty(); + return executeRefinement(inner.value).then(() => { + return { status: status.value, value: inner.value }; + }); + }); + } + } + if (effect.type === "transform") { + if (ctx.common.async === false) { + const base = this._def.schema._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }); + if (!isValid(base)) + return base; + const result = effect.transform(base.value, checkCtx); + if (result instanceof Promise) { + throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`); + } + return { status: status.value, value: result }; + } + else { + return this._def.schema + ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }) + .then((base) => { + if (!isValid(base)) + return base; + return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ status: status.value, value: result })); + }); + } + } + util.assertNever(effect); + } +} +ZodEffects.create = (schema, effect, params) => { + return new ZodEffects({ + schema, + typeName: ZodFirstPartyTypeKind.ZodEffects, + effect, + ...processCreateParams(params), + }); +}; +ZodEffects.createWithPreprocess = (preprocess, schema, params) => { + return new ZodEffects({ + schema, + effect: { type: "preprocess", transform: preprocess }, + typeName: ZodFirstPartyTypeKind.ZodEffects, + ...processCreateParams(params), + }); +}; +class ZodOptional extends ZodType { + _parse(input) { + const parsedType = this._getType(input); + if (parsedType === ZodParsedType.undefined) { + return OK(undefined); + } + return this._def.innerType._parse(input); + } + unwrap() { + return this._def.innerType; + } +} +ZodOptional.create = (type, params) => { + return new ZodOptional({ + innerType: type, + typeName: ZodFirstPartyTypeKind.ZodOptional, + ...processCreateParams(params), + }); +}; +class ZodNullable extends ZodType { + _parse(input) { + const parsedType = this._getType(input); + if (parsedType === ZodParsedType.null) { + return OK(null); + } + return this._def.innerType._parse(input); + } + unwrap() { + return this._def.innerType; + } +} +ZodNullable.create = (type, params) => { + return new ZodNullable({ + innerType: type, + typeName: ZodFirstPartyTypeKind.ZodNullable, + ...processCreateParams(params), + }); +}; +class ZodDefault extends ZodType { + _parse(input) { + const { ctx } = this._processInputParams(input); + let data = ctx.data; + if (ctx.parsedType === ZodParsedType.undefined) { + data = this._def.defaultValue(); + } + return this._def.innerType._parse({ + data, + path: ctx.path, + parent: ctx, + }); + } + removeDefault() { + return this._def.innerType; + } +} +ZodDefault.create = (type, params) => { + return new ZodDefault({ + innerType: type, + typeName: ZodFirstPartyTypeKind.ZodDefault, + defaultValue: typeof params.default === "function" + ? params.default + : () => params.default, + ...processCreateParams(params), + }); +}; +class ZodCatch extends ZodType { + _parse(input) { + const { ctx } = this._processInputParams(input); + // newCtx is used to not collect issues from inner types in ctx + const newCtx = { + ...ctx, + common: { + ...ctx.common, + issues: [], + }, + }; + const result = this._def.innerType._parse({ + data: newCtx.data, + path: newCtx.path, + parent: { + ...newCtx, + }, + }); + if (isAsync(result)) { + return result.then((result) => { + return { + status: "valid", + value: result.status === "valid" + ? result.value + : this._def.catchValue({ + get error() { + return new ZodError(newCtx.common.issues); + }, + input: newCtx.data, + }), + }; + }); + } + else { + return { + status: "valid", + value: result.status === "valid" + ? result.value + : this._def.catchValue({ + get error() { + return new ZodError(newCtx.common.issues); + }, + input: newCtx.data, + }), + }; + } + } + removeCatch() { + return this._def.innerType; + } +} +ZodCatch.create = (type, params) => { + return new ZodCatch({ + innerType: type, + typeName: ZodFirstPartyTypeKind.ZodCatch, + catchValue: typeof params.catch === "function" ? params.catch : () => params.catch, + ...processCreateParams(params), + }); +}; +class ZodNaN extends ZodType { + _parse(input) { + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.nan) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.nan, + received: ctx.parsedType, + }); + return INVALID; + } + return { status: "valid", value: input.data }; + } +} +ZodNaN.create = (params) => { + return new ZodNaN({ + typeName: ZodFirstPartyTypeKind.ZodNaN, + ...processCreateParams(params), + }); +}; +const BRAND = Symbol("zod_brand"); +class ZodBranded extends ZodType { + _parse(input) { + const { ctx } = this._processInputParams(input); + const data = ctx.data; + return this._def.type._parse({ + data, + path: ctx.path, + parent: ctx, + }); + } + unwrap() { + return this._def.type; + } +} +class ZodPipeline extends ZodType { + _parse(input) { + const { status, ctx } = this._processInputParams(input); + if (ctx.common.async) { + const handleAsync = async () => { + const inResult = await this._def.in._parseAsync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }); + if (inResult.status === "aborted") + return INVALID; + if (inResult.status === "dirty") { + status.dirty(); + return DIRTY(inResult.value); + } + else { + return this._def.out._parseAsync({ + data: inResult.value, + path: ctx.path, + parent: ctx, + }); + } + }; + return handleAsync(); + } + else { + const inResult = this._def.in._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }); + if (inResult.status === "aborted") + return INVALID; + if (inResult.status === "dirty") { + status.dirty(); + return { + status: "dirty", + value: inResult.value, + }; + } + else { + return this._def.out._parseSync({ + data: inResult.value, + path: ctx.path, + parent: ctx, + }); + } + } + } + static create(a, b) { + return new ZodPipeline({ + in: a, + out: b, + typeName: ZodFirstPartyTypeKind.ZodPipeline, + }); + } +} +class ZodReadonly extends ZodType { + _parse(input) { + const result = this._def.innerType._parse(input); + const freeze = (data) => { + if (isValid(data)) { + data.value = Object.freeze(data.value); + } + return data; + }; + return isAsync(result) + ? result.then((data) => freeze(data)) + : freeze(result); + } + unwrap() { + return this._def.innerType; + } +} +ZodReadonly.create = (type, params) => { + return new ZodReadonly({ + innerType: type, + typeName: ZodFirstPartyTypeKind.ZodReadonly, + ...processCreateParams(params), + }); +}; +function custom(check, params = {}, +/** + * @deprecated + * + * Pass `fatal` into the params object instead: + * + * ```ts + * z.string().custom((val) => val.length > 5, { fatal: false }) + * ``` + * + */ +fatal) { + if (check) + return ZodAny.create().superRefine((data, ctx) => { + var _a, _b; + if (!check(data)) { + const p = typeof params === "function" + ? params(data) + : typeof params === "string" + ? { message: params } + : params; + const _fatal = (_b = (_a = p.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true; + const p2 = typeof p === "string" ? { message: p } : p; + ctx.addIssue({ code: "custom", ...p2, fatal: _fatal }); + } + }); + return ZodAny.create(); +} +const late = { + object: ZodObject.lazycreate, +}; +var ZodFirstPartyTypeKind; +(function (ZodFirstPartyTypeKind) { + ZodFirstPartyTypeKind["ZodString"] = "ZodString"; + ZodFirstPartyTypeKind["ZodNumber"] = "ZodNumber"; + ZodFirstPartyTypeKind["ZodNaN"] = "ZodNaN"; + ZodFirstPartyTypeKind["ZodBigInt"] = "ZodBigInt"; + ZodFirstPartyTypeKind["ZodBoolean"] = "ZodBoolean"; + ZodFirstPartyTypeKind["ZodDate"] = "ZodDate"; + ZodFirstPartyTypeKind["ZodSymbol"] = "ZodSymbol"; + ZodFirstPartyTypeKind["ZodUndefined"] = "ZodUndefined"; + ZodFirstPartyTypeKind["ZodNull"] = "ZodNull"; + ZodFirstPartyTypeKind["ZodAny"] = "ZodAny"; + ZodFirstPartyTypeKind["ZodUnknown"] = "ZodUnknown"; + ZodFirstPartyTypeKind["ZodNever"] = "ZodNever"; + ZodFirstPartyTypeKind["ZodVoid"] = "ZodVoid"; + ZodFirstPartyTypeKind["ZodArray"] = "ZodArray"; + ZodFirstPartyTypeKind["ZodObject"] = "ZodObject"; + ZodFirstPartyTypeKind["ZodUnion"] = "ZodUnion"; + ZodFirstPartyTypeKind["ZodDiscriminatedUnion"] = "ZodDiscriminatedUnion"; + ZodFirstPartyTypeKind["ZodIntersection"] = "ZodIntersection"; + ZodFirstPartyTypeKind["ZodTuple"] = "ZodTuple"; + ZodFirstPartyTypeKind["ZodRecord"] = "ZodRecord"; + ZodFirstPartyTypeKind["ZodMap"] = "ZodMap"; + ZodFirstPartyTypeKind["ZodSet"] = "ZodSet"; + ZodFirstPartyTypeKind["ZodFunction"] = "ZodFunction"; + ZodFirstPartyTypeKind["ZodLazy"] = "ZodLazy"; + ZodFirstPartyTypeKind["ZodLiteral"] = "ZodLiteral"; + ZodFirstPartyTypeKind["ZodEnum"] = "ZodEnum"; + ZodFirstPartyTypeKind["ZodEffects"] = "ZodEffects"; + ZodFirstPartyTypeKind["ZodNativeEnum"] = "ZodNativeEnum"; + ZodFirstPartyTypeKind["ZodOptional"] = "ZodOptional"; + ZodFirstPartyTypeKind["ZodNullable"] = "ZodNullable"; + ZodFirstPartyTypeKind["ZodDefault"] = "ZodDefault"; + ZodFirstPartyTypeKind["ZodCatch"] = "ZodCatch"; + ZodFirstPartyTypeKind["ZodPromise"] = "ZodPromise"; + ZodFirstPartyTypeKind["ZodBranded"] = "ZodBranded"; + ZodFirstPartyTypeKind["ZodPipeline"] = "ZodPipeline"; + ZodFirstPartyTypeKind["ZodReadonly"] = "ZodReadonly"; +})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {})); +const instanceOfType = ( +// const instanceOfType = any>( +cls, params = { + message: `Input not instance of ${cls.name}`, +}) => custom((data) => data instanceof cls, params); +const stringType = ZodString.create; +const numberType = ZodNumber.create; +const nanType = ZodNaN.create; +const bigIntType = ZodBigInt.create; +const booleanType = ZodBoolean.create; +const dateType = ZodDate.create; +const symbolType = ZodSymbol.create; +const undefinedType = ZodUndefined.create; +const nullType = ZodNull.create; +const anyType = ZodAny.create; +const unknownType = ZodUnknown.create; +const neverType = ZodNever.create; +const voidType = ZodVoid.create; +const arrayType = ZodArray.create; +const objectType = ZodObject.create; +const strictObjectType = ZodObject.strictCreate; +const unionType = ZodUnion.create; +const discriminatedUnionType = ZodDiscriminatedUnion.create; +const intersectionType = ZodIntersection.create; +const tupleType = ZodTuple.create; +const recordType = ZodRecord.create; +const mapType = ZodMap.create; +const setType = ZodSet.create; +const functionType = ZodFunction.create; +const lazyType = ZodLazy.create; +const literalType = ZodLiteral.create; +const enumType = ZodEnum.create; +const nativeEnumType = ZodNativeEnum.create; +const promiseType = ZodPromise.create; +const effectsType = ZodEffects.create; +const optionalType = ZodOptional.create; +const nullableType = ZodNullable.create; +const preprocessType = ZodEffects.createWithPreprocess; +const pipelineType = ZodPipeline.create; +const ostring = () => stringType().optional(); +const onumber = () => numberType().optional(); +const oboolean = () => booleanType().optional(); +const coerce = { + string: ((arg) => ZodString.create({ ...arg, coerce: true })), + number: ((arg) => ZodNumber.create({ ...arg, coerce: true })), + boolean: ((arg) => ZodBoolean.create({ + ...arg, + coerce: true, + })), + bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })), + date: ((arg) => ZodDate.create({ ...arg, coerce: true })), +}; +const NEVER = INVALID; + +var z = /*#__PURE__*/Object.freeze({ + __proto__: null, + defaultErrorMap: errorMap, + setErrorMap: setErrorMap, + getErrorMap: getErrorMap, + makeIssue: makeIssue, + EMPTY_PATH: EMPTY_PATH, + addIssueToContext: addIssueToContext, + ParseStatus: ParseStatus, + INVALID: INVALID, + DIRTY: DIRTY, + OK: OK, + isAborted: isAborted, + isDirty: isDirty, + isValid: isValid, + isAsync: isAsync, + get util () { return util; }, + get objectUtil () { return objectUtil; }, + ZodParsedType: ZodParsedType, + getParsedType: getParsedType, + ZodType: ZodType, + datetimeRegex: datetimeRegex, + ZodString: ZodString, + ZodNumber: ZodNumber, + ZodBigInt: ZodBigInt, + ZodBoolean: ZodBoolean, + ZodDate: ZodDate, + ZodSymbol: ZodSymbol, + ZodUndefined: ZodUndefined, + ZodNull: ZodNull, + ZodAny: ZodAny, + ZodUnknown: ZodUnknown, + ZodNever: ZodNever, + ZodVoid: ZodVoid, + ZodArray: ZodArray, + ZodObject: ZodObject, + ZodUnion: ZodUnion, + ZodDiscriminatedUnion: ZodDiscriminatedUnion, + ZodIntersection: ZodIntersection, + ZodTuple: ZodTuple, + ZodRecord: ZodRecord, + ZodMap: ZodMap, + ZodSet: ZodSet, + ZodFunction: ZodFunction, + ZodLazy: ZodLazy, + ZodLiteral: ZodLiteral, + ZodEnum: ZodEnum, + ZodNativeEnum: ZodNativeEnum, + ZodPromise: ZodPromise, + ZodEffects: ZodEffects, + ZodTransformer: ZodEffects, + ZodOptional: ZodOptional, + ZodNullable: ZodNullable, + ZodDefault: ZodDefault, + ZodCatch: ZodCatch, + ZodNaN: ZodNaN, + BRAND: BRAND, + ZodBranded: ZodBranded, + ZodPipeline: ZodPipeline, + ZodReadonly: ZodReadonly, + custom: custom, + Schema: ZodType, + ZodSchema: ZodType, + late: late, + get ZodFirstPartyTypeKind () { return ZodFirstPartyTypeKind; }, + coerce: coerce, + any: anyType, + array: arrayType, + bigint: bigIntType, + boolean: booleanType, + date: dateType, + discriminatedUnion: discriminatedUnionType, + effect: effectsType, + 'enum': enumType, + 'function': functionType, + 'instanceof': instanceOfType, + intersection: intersectionType, + lazy: lazyType, + literal: literalType, + map: mapType, + nan: nanType, + nativeEnum: nativeEnumType, + never: neverType, + 'null': nullType, + nullable: nullableType, + number: numberType, + object: objectType, + oboolean: oboolean, + onumber: onumber, + optional: optionalType, + ostring: ostring, + pipeline: pipelineType, + preprocess: preprocessType, + promise: promiseType, + record: recordType, + set: setType, + strictObject: strictObjectType, + string: stringType, + symbol: symbolType, + transformer: effectsType, + tuple: tupleType, + 'undefined': undefinedType, + union: unionType, + unknown: unknownType, + 'void': voidType, + NEVER: NEVER, + ZodIssueCode: ZodIssueCode, + quotelessJson: quotelessJson, + ZodError: ZodError +}); + +const SerializedSealingPair = z.object({ + privateKey: z.string(), + publicKey: z.string(), +}); +const zPermitV2WithDefaults = z.object({ + name: z.string().optional().default("Unnamed Permit"), + type: z.enum(["self", "sharing", "recipient"]), + issuer: z + .string() + .refine((val) => isAddress(val), { + message: "PermitV2 issuer :: invalid address", + }) + .refine((val) => val !== ZeroAddress, { + message: "PermitV2 issuer :: must not be zeroAddress", + }), + expiration: z.number().optional().default(1000000000000), + contracts: z.array(z.string()).optional().default([]), + projects: z.array(z.string()).optional().default([]), + recipient: z + .string() + .optional() + .default(ZeroAddress) + .refine((val) => isAddress(val), { + message: "PermitV2 recipient :: invalid address", + }), + validatorId: z.number().optional().default(0), + validatorContract: z + .string() + .optional() + .default(ZeroAddress) + .refine((val) => isAddress(val), { + message: "PermitV2 validatorContract :: invalid address", + }), + sealingPair: SerializedSealingPair.optional(), + issuerSignature: z.string().optional().default("0x"), + recipientSignature: z.string().optional().default("0x"), +}); +/** + * Ensures that this Permit will provide access to a non-zero amount of contracts + * by ensuring that `contracts` and `projects` aren't both empty arrays. + */ +const PermitV2RefineAccess = [ + (data) => { + return data.contracts.length + data.projects.length > 0; + }, + { + message: "PermitV2 access :: at least one contract or project must be accessible.", + path: ["contracts", "projects"], + }, +]; +/** + * Permits allow a hook into an optional external validator contract, + * this check ensures that IF an external validator is applied, that both `validatorId` and `validatorContract` are populated, + * ELSE ensures that both `validatorId` and `validatorContract` are empty + */ +const PermitV2RefineValidator = [ + (data) => (data.validatorId !== 0 && data.validatorContract !== ZeroAddress) || + (data.validatorId === 0 && data.validatorContract === ZeroAddress), + { + message: "PermitV2 external validator :: validatorId and validatorContract must either both be set or both be unset.", + path: ["validatorId", "validatorContract"], + }, +]; +/** + * SuperRefinement that checks a PermitV2s signatures + * checkRecipient - whether to validate that `recipient` is empty for permit with type , and populated for + * checkSealingPair - only the fully formed permit requires the sealing pair, it can be optional for permitV2 create params + * checkExistingSignatures - not optional - checks that the permit's type matches the populated signature fields + * checkSigned - checks that the active user's signature has been signed and added. -> issuerSignature, -> recipientSignature + */ +const PermitV2SignaturesSuperRefinement = (options) => { + return (data, ctx) => { + // Check Recipient + // If type , `PermitV2.recipient` must be zeroAddress + // If type , `PermitV2.recipient` must not be zeroAddress + if (options.checkRecipient) { + if (data.type === "self" && data.recipient !== ZeroAddress) + ctx.addIssue({ + code: z.ZodIssueCode.custom, + path: ["recipient"], + message: `PermitV2 (type '${data.type}') recipient :: must be empty (zeroAddress)`, + }); + if ((data.type === "recipient" || data.type === "sharing") && + data.recipient === ZeroAddress) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + path: ["recipient"], + message: `PermitV2 (type '${data.type}') recipient :: must not be empty`, + }); + } + } + // Check Sealing Pair + if (options.checkSealingPair && data.sealingPair == null) + ctx.addIssue({ + code: z.ZodIssueCode.custom, + path: ["sealingPair"], + message: `PermitV2 sealingPair :: must not be empty`, + }); + // Check existing signatures match type (not checking this user's signature, but the other signature) + // If type , `PermitV2.recipientSignature` must be empty + // If type , `PermitV2.issuerSignature` must not be empty + if ((data.type === "self" || data.type === "sharing") && + data.recipientSignature !== "0x") { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + path: ["recipientSignature"], + message: `PermitV2 (type '${data.type}') recipientSignature :: should not be populated by the issuer`, + }); + } + if (data.type === "recipient" && data.issuerSignature === "0x") { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + path: ["issuerSignature"], + message: `PermitV2 (type 'recipient') issuerSignature :: \`issuer\` must sign the PermitV2 before sharing it with \`recipient\``, + }); + } + // Check Signed + // If type , `PermitV2.issuerSignature` must not be empty + // If type , `PermitV2.recipientSignature` must not be empty + if (options.checkSigned) { + if ((data.type === "self" || data.type === "sharing") && + data.issuerSignature === "0x") + ctx.addIssue({ + code: z.ZodIssueCode.custom, + path: ["issuerSignature"], + message: `PermitV2 (type '${data.type}') issuerSignature :: must be populated with issuer's signature. Use \`PermitV2.sign\` or create permit with \`PermitV2.createAndSign\``, + }); + if (data.type === "recipient" && data.recipientSignature === "0x") { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + path: ["recipientSignature"], + message: `PermitV2 (type 'recipient') recipientSignature :: must be populated with recipient's signature. Use \`PermitV2.sign\` or create permit with \`PermitV2.createAndSign\``, + }); + } + } + return; + }; +}; +/** + * Validator for the params used when creating a fresh PermitV2 + * Has defaults added that will be populated in the options object + * Signatures superRefinement checks only the recipient, sealingPair and signatures are not necessary in the Permit params + */ +const PermitV2ParamsValidator = zPermitV2WithDefaults + .refine(...PermitV2RefineAccess) + .refine(...PermitV2RefineValidator) + .superRefine(PermitV2SignaturesSuperRefinement({ + checkRecipient: true, + checkSealingPair: false, // SealingPair not required when creating a fresh permit + checkSigned: false, // Signature not required when creating a fresh permit +})); +/** + * Validator for a PermitV2 that is expected to be fully formed + * Does not allow optional values or offer defaults + * Validates that the correct signatures are populated + * Validates sealingPair is populated + */ +const FullyFormedPermitV2Validator = zPermitV2WithDefaults + .required() + .refine(...PermitV2RefineAccess) + .refine(...PermitV2RefineValidator) + .superRefine(PermitV2SignaturesSuperRefinement({ + checkRecipient: true, + checkSealingPair: true, + checkSigned: true, +})); + +// HARDHAT MOCKS +// Mock FHE operations are automatically injected on the hardhat network +// The utility functions allow the client / sdk to interact with the mocked FHE ops +const chainIsHardhat = (chainId) => { + if (chainId == null) + return false; + return parseInt(chainId) === 31337; +}; +const hardhatMockUnseal = (value) => { + let result = BigInt(0); + for (const byteArrayItem of stringToUint8Array(value)) { + result = (result << BigInt(8)) + BigInt(byteArrayItem); + } + return result; +}; +const hardhatMockEncrypt = (value, securityZone = 0) => ({ + data: bigintToUint8Array(BigInt(value)), + securityZone: securityZone || 0, +}); + +/* eslint-disable @typescript-eslint/no-explicit-any */ +class PermitV2 { + constructor(options, metadata) { + /** + * Chain that this permit was signed on. In part used for mock encrypt/unseal on hardhat network. + * Should not be set manually, included in metadata as part of serialization flows. + */ + this._signedChainId = undefined; + this.updateName = (name) => { + this.name = name; + }; + /** + * Utility to extract the public data from a permit. + * Used in `serialize`, `getPermission`, `getHash` etc + */ + this.getInterface = () => { + return { + name: this.name, + type: this.type, + issuer: this.issuer, + expiration: this.expiration, + contracts: this.contracts, + projects: this.projects, + recipient: this.recipient, + validatorId: this.validatorId, + validatorContract: this.validatorContract, + sealingPair: this.sealingPair, + issuerSignature: this.issuerSignature, + recipientSignature: this.recipientSignature, + }; + }; + /** + * Export the necessary permit data to share a permit with another user + */ + this.export = () => { + const cleanedPermit = { + name: this.name, + type: this.type, + issuer: this.issuer, + expiration: this.expiration, + }; + if (this.contracts.length > 0) + cleanedPermit.contracts = this.contracts; + if (this.projects.length > 0) + cleanedPermit.projects = this.projects; + if (this.recipient !== ZeroAddress) + cleanedPermit.recipient = this.recipient; + if (this.validatorId !== 0) + cleanedPermit.validatorId = this.validatorId; + if (this.validatorContract !== ZeroAddress) + cleanedPermit.validatorContract = this.validatorContract; + if (this.type === "sharing" && this.issuerSignature !== "0x") + cleanedPermit.issuerSignature = this.issuerSignature; + return JSON.stringify(cleanedPermit, undefined, 2); + }; + /** + * Returns a serializable permit instance, removing classes and methods. + * NOTE: Does not return a stringified permit + */ + this.serialize = () => { + const { sealingPair, ...permit } = this.getInterface(); + return { + ...permit, + _signedChainId: this._signedChainId, + sealingPair: { + publicKey: sealingPair.publicKey, + privateKey: sealingPair.privateKey, + }, + }; + }; + /** + * Extracts a contract input ready permission from this permit. + * The permission inherits most fields from the permit, however + * `permit.sealingPair` is removed and replaced by `permit.sealingPair.publicKey` in the `sealingKey` field. + * + * @permit {boolean} skipValidation - Flag to prevent running validation on the permit before returning the extracted permission. Used internally. + * @returns {PermissionV2} + */ + this.getPermission = (skipValidation = false) => { + const permitData = this.getInterface(); + if (!skipValidation) { + const validationResult = FullyFormedPermitV2Validator.safeParse(permitData); + if (!validationResult.success) { + throw new Error(`PermitV2 :: getPermission :: permit validation failed - ${JSON.stringify(validationResult.error, null, 2)} ${JSON.stringify(permitData, null, 2)}`); + } + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { name, type, sealingPair, ...permit } = permitData; + return { + ...permit, + sealingKey: `0x${sealingPair.publicKey}`, + }; + }; + /** + * Returns a stable hash depending on the core data of the permit. + * Is used in the store as each permit's key in the permit map. + */ + this.getHash = () => keccak256(id(JSON.stringify({ + type: this.type, + issuer: this.issuer, + expiration: this.expiration, + contracts: this.contracts, + projects: this.projects, + recipient: this.recipient, + validatorId: this.validatorId, + validatorContract: this.validatorContract, + }))); + /** + * Returns the domain, types, primaryType, and message fields required to request the user's signature + * Primary type is returned to allow viem clients to more easily connect + */ + this.getSignatureParams = (chainId, primaryType) => { + return { + domain: getSignatureDomain(chainId), + ...getSignatureTypesAndMessage(primaryType, SignatureTypes[primaryType], this.getPermission(true)), + }; + }; + /** + * Determines the required signature type. + * Creates the EIP712 types and message. + * Prompts the user for their signature. + * Inserts the signature into `issuerSignature` or `recipientSignature` as necessary. + * + * @param {string} chainId - Used as part of the EIP712 domain, throws if undefined + * @param {AbstractSigner} signer - Signer responsible for signing the EIP712 permit signature, throws if undefined + */ + this.sign = async (chainId, signer) => { + if (chainId == null) + throw new Error("PermitV2 :: sign - chainId undefined, cannot sign a permit with an unknown chainId"); + if (signer == null) + throw new Error("PermitV2 :: sign - signer undefined, you must pass in a `signer` for the connected user to create a permitV2 signature"); + let primaryType = "PermissionedV2IssuerSelf"; + if (this.type === "self") + primaryType = "PermissionedV2IssuerSelf"; + if (this.type === "sharing") + primaryType = "PermissionedV2IssuerShared"; + if (this.type === "recipient") + primaryType = "PermissionedV2Recipient"; + const { domain, types, message } = this.getSignatureParams(chainId, primaryType); + const signature = await signer.signTypedData(domain, types, message); + if (this.type === "self" || this.type === "sharing") { + this.issuerSignature = signature; + } + if (this.type === "recipient") { + this.recipientSignature = signature; + } + this._signedChainId = chainId; + }; + /** + * Use the privateKey of `permit.sealingPair` to unseal `ciphertext` returned from the Fhenix chain. + * Useful when not using `SealedItem` structs and need to unseal an individual ciphertext. + */ + this.unsealCiphertext = (ciphertext) => { + // Early exit with mock unseal if interacting with hardhat network + if (chainIsHardhat(this._signedChainId)) + return hardhatMockUnseal(ciphertext); + return this.sealingPair.unseal(ciphertext); + }; + /** + * Check if permit satisfies the requirements param. + * Permit must satisfy either the contracts list or the projects list + * + * @param {{contracts?: string[], projects?: string[]}} requirements - Lists of contract and project requirements. + * @returns {satisfies: boolean, unsatisfiedContracts, unsatisfiedProjects} - satisfied if either req list is fulfilled. + */ + this.getSatisfies = (requirements) => { + let contractsSatisfied = true; + const unsatisfiedContracts = []; + for (const contract in requirements.contracts) { + if (!this.contracts.includes(contract)) { + contractsSatisfied = false; + unsatisfiedContracts.push(contract); + } + } + let projectsSatisfied = true; + const unsatisfiedProjects = []; + for (const project in requirements.projects) { + if (!this.projects.includes(project)) { + projectsSatisfied = false; + unsatisfiedProjects.push(project); + } + } + if (contractsSatisfied || projectsSatisfied) + return { + satisfies: true, + unsatisfiedContracts: null, + unsatisfiedProjects: null, + }; + return { + satisfies: false, + unsatisfiedContracts, + unsatisfiedProjects, + }; + }; + /** + * Returns whether the active party has created their signature. + * If `permit.type` is self or sharing, the active party is `issuer`. + * If `permit.type` is recipient, the active party is `recipient` + * + * @returns {boolean} + */ + this.isSigned = () => { + if (this.type === "self" || this.type === "sharing") { + return this.issuerSignature !== "0x"; + } + if (this.type === "recipient") { + return this.recipientSignature != "0x"; + } + return false; + }; + /** + * Returns whether this permit has expired due to `permit.expiration` + * + * @returns {boolean} + */ + this.isExpired = () => { + return this.expiration < Math.floor(Date.now() / 1000); + }; + /** + * Overall validity checker of a permit, checks the signatures and expirations + * + * @returns {{valid: boolean, error: string}} - If `valid`, `error` is null, else `error` indicates which validity check failed + */ + this.isValid = () => { + if (this.isExpired()) + return { valid: false, error: "expired" }; + if (!this.isSigned()) + return { valid: false, error: "not-signed" }; + return { valid: true, error: null }; + }; + this.name = options.name; + this.type = options.type; + this.issuer = options.issuer; + this.expiration = options.expiration; + this.contracts = options.contracts; + this.projects = options.projects; + this.recipient = options.recipient; + this.validatorId = options.validatorId; + this.validatorContract = options.validatorContract; + this.sealingPair = options.sealingPair; + this.issuerSignature = options.issuerSignature; + this.recipientSignature = options.recipientSignature; + this._signedChainId = metadata?._signedChainId; + } + static async create(options) { + const { success, data: parsed, error, } = PermitV2ParamsValidator.safeParse(options); + if (!success) { + throw new Error("PermitV2 :: create :: Parsing PermitV2Options failed " + + JSON.stringify(error, null, 2)); + } + const sealingPair = parsed.sealingPair != null + ? new SealingKey(parsed.sealingPair.privateKey, parsed.sealingPair.publicKey) + : await GenerateSealingKey(); + return new PermitV2({ + ...parsed, + sealingPair, + }); + } + static async createAndSign(options, chainId, signer) { + const permit = await PermitV2.create(options); + await permit.sign(chainId, signer); + return permit; + } + unseal(item) { + // SealedItem + const sealedItem = getAsSealedItem(item); + if (sealedItem != null) { + const bn = chainIsHardhat(this._signedChainId) + ? hardhatMockUnseal(sealedItem.data) + : this.sealingPair.unseal(sealedItem.data); + if (isSealedBool(sealedItem)) { + // Return a boolean for SealedBool + return Boolean(bn).valueOf(); + } + if (isSealedAddress(sealedItem)) { + // Return a string for SealedAddress + return getAddress(`0x${bn.toString(16).slice(-40)}`); + } + if (isSealedUint(sealedItem)) { + // Return a bigint for SealedUint + return bn; + } + } + // Object | Array + if (typeof item === "object" && item !== null) { + if (Array.isArray(item)) { + // Array - recurse + return item.map((nestedItem) => this.unseal(nestedItem)); + } + else { + // Object - recurse + const result = {}; + for (const key in item) { + result[key] = this.unseal(item[key]); + } + return result; + } + } + // Primitive + return item; + } +} +/** + * Creates a `PermitV2` from a serialized permit, hydrating methods and classes + * NOTE: Does not return a stringified permit + * + * @param {SerializedPermitV2} - Permit structure excluding classes + * @returns {PermitV2} - New instance of PermitV2 class + */ +PermitV2.deserialize = ({ _signedChainId, sealingPair, ...permit }) => { + return new PermitV2({ + ...permit, + sealingPair: new SealingKey(sealingPair.privateKey, sealingPair.publicKey), + }, { + _signedChainId, + }); +}; +PermitV2.validate = (permit) => { + return FullyFormedPermitV2Validator.safeParse(permit); +}; + +// Stores generated permits for each user, a hash indicating the active permit for each user, and a list of fheKeys as a cache +// Can be used to create reactive hooks +const _permitStore = createStore()(persist(() => ({ + permits: {}, + activePermitHash: {}, +}), { name: "fhenixjs-permits" })); +// Permit V2 +const getPermit$1 = (account, hash) => { + if (account == null || hash == null) + return; + const savedPermit = _permitStore.getState().permits[account]?.[hash]; + if (savedPermit == null) + return; + return PermitV2.deserialize(savedPermit); +}; +const getActivePermit = (account) => { + if (account == null) + return; + const activePermitHash = _permitStore.getState().activePermitHash[account]; + return getPermit$1(account, activePermitHash); +}; +const getPermits = (account) => { + if (account == null) + return {}; + return Object.entries(_permitStore.getState().permits[account] ?? {}).reduce((acc, [hash, permit]) => { + if (permit == undefined) + return acc; + return { ...acc, [hash]: PermitV2.deserialize(permit) }; + }, {}); +}; +const setPermit = (account, permitV2) => { + _permitStore.setState(produce((state) => { + if (state.permits[account] == null) + state.permits[account] = {}; + state.permits[account][permitV2.getHash()] = permitV2.serialize(); + })); +}; +const removePermit = (account, hash) => { + _permitStore.setState(produce((state) => { + state.permits[account][hash] = undefined; + })); +}; +// Active Permit Hash +const getActivePermitHash = (account) => { + if (account == null) + return undefined; + return _permitStore.getState().activePermitHash[account]; +}; +const setActivePermitHash = (account, hash) => { + _permitStore.setState(produce((state) => { + state.activePermitHash[account] = hash; + })); +}; +const removeActivePermitHash = (account) => { + _permitStore.setState(produce((state) => { + state.activePermitHash[account] = undefined; + })); +}; +const permitStore = { + store: _permitStore, + getPermit: getPermit$1, + getActivePermit, + getPermits, + setPermit, + removePermit, + getActivePermitHash, + setActivePermitHash, + removeActivePermitHash, +}; + +function _loadWasmModule (sync, filepath, src, imports) { + function _instantiateOrCompile(source, imports, stream) { + var instantiateFunc = WebAssembly.instantiate; + var compileFunc = WebAssembly.compile; + + if (imports) { + return instantiateFunc(source, imports) + } else { + return compileFunc(source) + } + } + + +var buf = null; +var isNode = typeof process !== 'undefined' && process.versions != null && process.versions.node != null; +if (isNode) { + +buf = Buffer.from(src, 'base64'); + +} else { + +var raw = globalThis.atob(src); +var rawLength = raw.length; +buf = new Uint8Array(new ArrayBuffer(rawLength)); +for(var i = 0; i < rawLength; i++) { + buf[i] = raw.charCodeAt(i); +} + +} + + + { + return _instantiateOrCompile(buf, imports) + } +} + +function wasm(imports){return _loadWasmModule(0, null, 'AGFzbQEAAAABjwREYAJ/fwBgAX8AYAN/f38AYAJ/fwF/YAh/f39/f39/fwBgAX8Bf2ADf39/AX9gBH9/f38AYAABf2AAAGAFf39/f38AYAN/fn8AYAN/f34AYAR/f39+AGAGf39/f39/AGAFf39/f38Bf2AFf39/fn4AYAJ/fgBgBn9/f39/fwF/YAN/f34Bf2AEf35+fwBgBH9/f38Bf2AGf39/f35+AGACf38BfmABfgF/YAJ+fgF/YAJ/fABgBX9/fn9/AGAHf39/f39/fwBgAXwBfGALf39/f39/f39/f38AYAZ/f39+f38AYAR/f35+AGAEf35+fgBgBH9+f38AYAJ/fgF/YAF8AX9gBn9+f39/fwBgCX9/f39/f3x8fwBgA35/fwBgCX9/f39/f39/fwBgDH9+fn9/f39/f39/fwBgBH9+f3wAYAl/f39/f39+fn4AYAp/f39/f39+fn5+AGAHf39/f39/fwF/YAN+f38Bf2ABfwF+YAV/f39/fgF+YAN/f38BfmAEf398fABgBX9+f35/AGADf39+AX5gCX9/f39/f35+fwBgC39/f39/f39/f39/AX9gBH9/f38BfmADf35+AGACfn8AYAJ+fgF8YAh/f39/fn5+fgBgBX9+fn9/AGACf34BfmAEf39+fgF+YAV/f3x/fwBgBH98f38AYAV/f31/fwBgBH99f38AYAN8fHwBfAL4D0IDd2JnGl9fd2JpbmRnZW5fYmlnaW50X2Zyb21fdTY0ABgDd2JnDl9fd2JpbmRnZW5fc2hyAAMDd2JnGl9fd2JpbmRnZW5fb2JqZWN0X2Ryb3BfcmVmAAEDd2JnGl9fd2JpbmRnZW5fYmlnaW50X2Zyb21faTY0ABgDd2JnE19fd2JpbmRnZW5fanN2YWxfZXEAAwN3YmcUX193YmluZGdlbl9lcnJvcl9uZXcAAwN3YmcbX193YmluZGdlbl9iaWdpbnRfZnJvbV9pMTI4ABkDd2JnG19fd2JpbmRnZW5fYmlnaW50X2Zyb21fdTEyOAAZA3diZxNfX3diZ19maGV1aW50MTZfbmV3AAUDd2JnFF9fd2JnX2ZoZXVpbnQxNjBfbmV3AAUDd2JnFF9fd2JnX2ZoZXVpbnQyNTZfbmV3AAUDd2JnE19fd2JnX2ZoZXVpbnQzMl9uZXcABQN3YmcUX193YmdfZmhldWludDEyOF9uZXcABQN3YmcSX193YmdfZmhldWludDhfbmV3AAUDd2JnE19fd2JnX2ZoZXVpbnQ2NF9uZXcABQN3YmcSX193YmdfZmhlaW50MzJfbmV3AAUDd2JnEl9fd2JnX2ZoZWludDY0X25ldwAFA3diZxFfX3diZ19maGVib29sX25ldwAFA3diZxNfX3diZ19maGVpbnQyNTZfbmV3AAUDd2JnE19fd2JnX2ZoZWludDE2MF9uZXcABQN3YmcSX193YmdfZmhlaW50MTZfbmV3AAUDd2JnEV9fd2JnX2ZoZWludDhfbmV3AAUDd2JnE19fd2JnX2ZoZWludDEyOF9uZXcABQN3YmcWX193YmluZGdlbl9ib29sZWFuX2dldAAFA3diZxpfX3diaW5kZ2VuX2JpZ2ludF9mcm9tX3N0cgADA3diZxJfX3diaW5kZ2VuX2JpdF9hbmQAAwN3YmcVX193YmluZGdlbl9udW1iZXJfbmV3ACQDd2JnDV9fd2JpbmRnZW5fbHQAAwN3YmcOX193YmluZGdlbl9uZWcABQN3YmcOX193YmluZGdlbl9zaGwAAwN3YmcOX193YmluZGdlbl9hZGQAAwN3YmcRX193YmluZGdlbl9iaXRfb3IAAwN3YmcaX193YmdfbmV3X2FiZGE3NmU4ODNiYThhNWYACAN3YmccX193Ymdfc3RhY2tfNjU4Mjc5ZmU0NDU0MWNmNgAAA3diZxxfX3diZ19lcnJvcl9mODUxNjY3YWY3MWJjZmM2AAADd2JnHV9fd2JnX2NyeXB0b183MGE5NmRlM2I2YjczZGFjAAUDd2JnFF9fd2JpbmRnZW5faXNfb2JqZWN0AAUDd2JnHl9fd2JnX3Byb2Nlc3NfZGQxNTc3NDQ1MTUyMTEyZQAFA3diZx9fX3diZ192ZXJzaW9uc181ODAzNmJlYzNhZGQ5ZTZmAAUDd2JnG19fd2JnX25vZGVfNmE5ZDI4MjA1ZWQ1YjBkOAAFA3diZxRfX3diaW5kZ2VuX2lzX3N0cmluZwAFA3diZx5fX3diZ19yZXF1aXJlX2YwNWQ3Nzk3Njk3NjRlODIACAN3YmcVX193YmluZGdlbl9zdHJpbmdfbmV3AAMDd2JnH19fd2JnX21zQ3J5cHRvX2FkYmM3NzBlYzllY2E5YzcABQN3YmclX193YmdfcmFuZG9tRmlsbFN5bmNfZTk1MDM2NmM0Mjc2NGEwNwAAA3diZyZfX3diZ19nZXRSYW5kb21WYWx1ZXNfMzc3NDc0NGUyMjFhMjJhZAAAA3diZxZfX3diaW5kZ2VuX2lzX2Z1bmN0aW9uAAUDd2JnIF9fd2JnX25ld25vYXJnc19lNjQzODU1YzY1NzJhNGE4AAMDd2JnG19fd2JnX2NhbGxfZjk2YjM5ODUxNTYzNTUxNAADA3diZxtfX3diZ19zZWxmX2I5YWFkN2YxYzYxOGJmYWYACAN3YmcdX193Ymdfd2luZG93XzU1ZTQ2OTg0MmM5OGIwODYACAN3YmchX193YmdfZ2xvYmFsVGhpc19kMDk1N2UzMDI3NTI1NDdlAAgDd2JnHV9fd2JnX2dsb2JhbF9hZTJmODczMTJiODk4N2ZiAAgDd2JnF19fd2JpbmRnZW5faXNfdW5kZWZpbmVkAAUDd2JnG19fd2JnX2NhbGxfMzU3ODJlOWExYWE1ZTA5MQAGA3diZx1fX3diZ19idWZmZXJfZmNiZmI2ZDg4YjI3MzJlOQAFA3diZzFfX3diZ19uZXd3aXRoYnl0ZW9mZnNldGFuZGxlbmd0aF85MmMyNTE5ODljNDg1Nzg1AAYDd2JnGl9fd2JnX25ld19iYzVkOWFhZDNmOWFjODBlAAUDd2JnGl9fd2JnX3NldF80YjNhYTg0NDVhYzFlOTFjAAIDd2JnJF9fd2JnX25ld3dpdGhsZW5ndGhfODllY2ExOGYyNjAzYTk5OQAFA3diZx9fX3diZ19zdWJhcnJheV83NjQ5ZDAyN2IyYjE0MWIzAAYDd2JnG19fd2JpbmRnZW5fb2JqZWN0X2Nsb25lX3JlZgAFA3diZxxfX3diaW5kZ2VuX2JpZ2ludF9nZXRfYXNfaTY0AAADd2JnF19fd2JpbmRnZW5fZGVidWdfc3RyaW5nAAADd2JnEF9fd2JpbmRnZW5fdGhyb3cAAAN3YmcRX193YmluZGdlbl9tZW1vcnkACAO2CbQJBQAlGhsAAgcHAgwDBgMGDgAmBwAAAAAAAAIDDgISCgonAAAFAgICAgEBBgAAAQIAAAYAAAQEAygEAAAAAAAGAQAAAAcHAikAAAoKAw4AKgAKAAcHAgErAwEBAw4BAQAsHAMAAwMtAA8dAAMDAh4DAwMDAwMDAwICAgIBAQACAgICAgICAgIDLi8DAgICAgIeAgICAgICBwgAHx8DAAAwAwMDAgMDAwMDAwMDBgMDAwADAwEODgAaAAIHAAEAAAAAAAAAAAADAAAAAQECBwAAAAoDAQUQAQABAAIAABYAAAACAAAAAAICAgICAgICAgICAgAAAAMAAAAAAAEHBwcHBwAAAAASBgYDAAcPMQMHBwMABgcMDAwMDAwMDAwRAAEOAAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAMFAAACMwIAEDQHBwAXADU2AAcHBwcHBwcCCAU3AQAWFgAAAAAAAgIDEgAABwcAAgIIBQAAAgICAwcDAwAFAAcAAAABAAAAAAAAAgICAgICOAICCTkCDQ0BAwM6AgIAAAAAAAAAFwACAAIAAAAACAEXAw0NDQ0NDQ0CAgICAgICAgICAgICAgAAAhMAAwMDFDsAHAADAQAAAgAAIAMCAgMAAAcCAgICAwIDAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgILCwsLCwICAgICAgICAgICAgICAgsLCwsLCgMAAAcHBwcHBwcHBwcHIQECAgICAgICAgILAgICCwIBAwMJCAAgAAE8BQUBBwYAAAMBEAMBAgAAAAAAAAAAACIBAAUDAAAHAwICAgICEwACAAAAAQABAAICAAIDAwMHAxMTBxEAABEAEQAFAAEAAgUBAAIAARQUAgIAAAEFBQUFAAUFBQEBARQJBQMBAAECAQEABQEAIwEDAgMKAwECAAEAAwEADAEBAQMDCSMAAAAAAAIAAgACAgIAAAIJCQAQAQ4BAAIAAz0DAwUBAQEABQMFAAYABgIBCQADAAAFAQUFBQEBAwUIEAEAABEPAyEABQMCAwMICAUAAwEDAQMDAgEBCQkJCQABBQADBQMFBwcHBwMDBwcHAwMDAAADAQEDAwMVAwEFBQUFBQUFAAMDAwMDAwMDAwMDAwUFBQUFBQUBAwMDAwUDAwMBAgECAAACAQMHAQEIAQUBAQEDAwACBQIABQUIBQAAChIDAwABAz4BChs/D0EABRUBCAMFBwUDAQEGCAEABQUFAQMDAQMDBh0DAQEDBQEVAgMDBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAwMGBwEFAwADCgMCAwMDAAEAAgACCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQMDAwAAAAAAAwYBBgUDAwMDAwUDAwEDAwEDAQEBAQEBAwMDAAkJAwADAwkDAAADAwMAAwMGBgZDBgYFAwUDCQgDAAEBBQUBBAQHAXAB4APgAwUDAQARBgkBfwFBgIDAAAsHz3zUAwZtZW1vcnkCAA9pbml0X3BhbmljX2hvb2sAzgYYX193YmdfdGZoZWNsaWVudGtleV9mcmVlAIIGFnRmaGVjbGllbnRrZXlfZ2VuZXJhdGUA+AQgdGZoZWNsaWVudGtleV9nZW5lcmF0ZV93aXRoX3NlZWQApgQXdGZoZWNsaWVudGtleV9zZXJpYWxpemUA4gIZdGZoZWNsaWVudGtleV9kZXNlcmlhbGl6ZQDaAyJfX3diZ190ZmhlY29tcHJlc3NlZHNlcnZlcmtleV9mcmVlAOsFG3RmaGVjb21wcmVzc2Vkc2VydmVya2V5X25ldwCJBCF0ZmhlY29tcHJlc3NlZHNlcnZlcmtleV9zZXJpYWxpemUA4wIjdGZoZWNvbXByZXNzZWRzZXJ2ZXJrZXlfZGVzZXJpYWxpemUA2wMYX193YmdfdGZoZXB1YmxpY2tleV9mcmVlAMIGEXRmaGVwdWJsaWNrZXlfbmV3ANwDF3RmaGVwdWJsaWNrZXlfc2VyaWFsaXplAOQCGXRmaGVwdWJsaWNrZXlfZGVzZXJpYWxpemUA9wMiX193YmdfdGZoZWNvbXByZXNzZWRwdWJsaWNrZXlfZnJlZQDDBht0ZmhlY29tcHJlc3NlZHB1YmxpY2tleV9uZXcA3QMidGZoZWNvbXByZXNzZWRwdWJsaWNrZXlfZGVjb21wcmVzcwDeAyF0ZmhlY29tcHJlc3NlZHB1YmxpY2tleV9zZXJpYWxpemUA5QIjdGZoZWNvbXByZXNzZWRwdWJsaWNrZXlfZGVzZXJpYWxpemUA+AMfX193YmdfdGZoZWNvbXBhY3RwdWJsaWNrZXlfZnJlZQDCBhh0ZmhlY29tcGFjdHB1YmxpY2tleV9uZXcA3wMedGZoZWNvbXBhY3RwdWJsaWNrZXlfc2VyaWFsaXplAOQCIHRmaGVjb21wYWN0cHVibGlja2V5X2Rlc2VyaWFsaXplAPkDKV9fd2JnX3RmaGVjb21wcmVzc2VkY29tcGFjdHB1YmxpY2tleV9mcmVlAMMGInRmaGVjb21wcmVzc2VkY29tcGFjdHB1YmxpY2tleV9uZXcA4AModGZoZWNvbXByZXNzZWRjb21wYWN0cHVibGlja2V5X3NlcmlhbGl6ZQDlAip0ZmhlY29tcHJlc3NlZGNvbXBhY3RwdWJsaWNrZXlfZGVzZXJpYWxpemUA+gMpdGZoZWNvbXByZXNzZWRjb21wYWN0cHVibGlja2V5X2RlY29tcHJlc3MA4QMVX193YmdfdGZoZWNvbmZpZ19mcmVlAPcHHF9fd2JnX3RmaGVjb25maWdidWlsZGVyX2ZyZWUA9wcZdGZoZWNvbmZpZ2J1aWxkZXJfZGVmYXVsdADrBi90ZmhlY29uZmlnYnVpbGRlcl9kZWZhdWx0X3dpdGhfc21hbGxfZW5jcnlwdGlvbgDsBhd0ZmhlY29uZmlnYnVpbGRlcl9idWlsZADZByJmaGV1aW50MTI4X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AKoEImZoZXVpbnQxMjhfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkAqwQtZmhldWludDEyOF9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5AKwEKmZoZXVpbnQxMjhfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCtBBJmaGV1aW50MTI4X2RlY3J5cHQAyAMUZmhldWludDEyOF9zZXJpYWxpemUA5wIWZmhldWludDEyOF9kZXNlcmlhbGl6ZQD7AxlmaGV1aW50MTI4X3NhZmVfc2VyaWFsaXplANUCG2ZoZXVpbnQxMjhfc2FmZV9kZXNlcmlhbGl6ZQDwAyxjb21wcmVzc2VkZmhldWludDEyOF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQCuBB9jb21wcmVzc2VkZmhldWludDEyOF9kZWNvbXByZXNzAOQDHmNvbXByZXNzZWRmaGV1aW50MTI4X3NlcmlhbGl6ZQDoAiBjb21wcmVzc2VkZmhldWludDEyOF9kZXNlcmlhbGl6ZQDlAyNjb21wcmVzc2VkZmhldWludDEyOF9zYWZlX3NlcmlhbGl6ZQDWAiVjb21wcmVzc2VkZmhldWludDEyOF9zYWZlX2Rlc2VyaWFsaXplANQDMWNvbXBhY3RmaGV1aW50MTI4X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAhwUbY29tcGFjdGZoZXVpbnQxMjhfc2VyaWFsaXplAOkCHWNvbXBhY3RmaGV1aW50MTI4X2Rlc2VyaWFsaXplAPwDIGNvbXBhY3RmaGV1aW50MTI4X3NhZmVfc2VyaWFsaXplANcCImNvbXBhY3RmaGV1aW50MTI4X3NhZmVfZGVzZXJpYWxpemUA8QM1Y29tcGFjdGZoZXVpbnQxMjhsaXN0X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAkAMcY29tcGFjdGZoZXVpbnQxMjhsaXN0X2V4cGFuZADqAh9jb21wYWN0ZmhldWludDEyOGxpc3Rfc2VyaWFsaXplAOkCIWNvbXBhY3RmaGV1aW50MTI4bGlzdF9kZXNlcmlhbGl6ZQD9AyJmaGV1aW50MTYwX2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AK8EImZoZXVpbnQxNjBfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkAsAQtZmhldWludDE2MF9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5ALEEKmZoZXVpbnQxNjBfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCyBBJmaGV1aW50MTYwX2RlY3J5cHQAyQMUZmhldWludDE2MF9zZXJpYWxpemUA5wIWZmhldWludDE2MF9kZXNlcmlhbGl6ZQD7AxlmaGV1aW50MTYwX3NhZmVfc2VyaWFsaXplANUCG2ZoZXVpbnQxNjBfc2FmZV9kZXNlcmlhbGl6ZQDwAyxjb21wcmVzc2VkZmhldWludDE2MF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQCzBB9jb21wcmVzc2VkZmhldWludDE2MF9kZWNvbXByZXNzAOQDHmNvbXByZXNzZWRmaGV1aW50MTYwX3NlcmlhbGl6ZQDoAiBjb21wcmVzc2VkZmhldWludDE2MF9kZXNlcmlhbGl6ZQDlAyNjb21wcmVzc2VkZmhldWludDE2MF9zYWZlX3NlcmlhbGl6ZQDWAiVjb21wcmVzc2VkZmhldWludDE2MF9zYWZlX2Rlc2VyaWFsaXplANQDMWNvbXBhY3RmaGV1aW50MTYwX2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAiAUbY29tcGFjdGZoZXVpbnQxNjBfc2VyaWFsaXplAOkCHWNvbXBhY3RmaGV1aW50MTYwX2Rlc2VyaWFsaXplAPwDIGNvbXBhY3RmaGV1aW50MTYwX3NhZmVfc2VyaWFsaXplANcCImNvbXBhY3RmaGV1aW50MTYwX3NhZmVfZGVzZXJpYWxpemUA8QM1Y29tcGFjdGZoZXVpbnQxNjBsaXN0X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAkQMcY29tcGFjdGZoZXVpbnQxNjBsaXN0X2V4cGFuZADrAh9jb21wYWN0ZmhldWludDE2MGxpc3Rfc2VyaWFsaXplAOkCIWNvbXBhY3RmaGV1aW50MTYwbGlzdF9kZXNlcmlhbGl6ZQD9AyJmaGV1aW50MjU2X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5ALQEImZoZXVpbnQyNTZfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkAtQQtZmhldWludDI1Nl9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5ALYEKmZoZXVpbnQyNTZfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQC3BBJmaGV1aW50MjU2X2RlY3J5cHQAyQMUZmhldWludDI1Nl9zZXJpYWxpemUA5wIWZmhldWludDI1Nl9kZXNlcmlhbGl6ZQD7AxlmaGV1aW50MjU2X3NhZmVfc2VyaWFsaXplANUCG2ZoZXVpbnQyNTZfc2FmZV9kZXNlcmlhbGl6ZQDwAyxjb21wcmVzc2VkZmhldWludDI1Nl9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQC4BB9jb21wcmVzc2VkZmhldWludDI1Nl9kZWNvbXByZXNzAOQDHmNvbXByZXNzZWRmaGV1aW50MjU2X3NlcmlhbGl6ZQDoAiBjb21wcmVzc2VkZmhldWludDI1Nl9kZXNlcmlhbGl6ZQDlAyNjb21wcmVzc2VkZmhldWludDI1Nl9zYWZlX3NlcmlhbGl6ZQDWAiVjb21wcmVzc2VkZmhldWludDI1Nl9zYWZlX2Rlc2VyaWFsaXplANQDMWNvbXBhY3RmaGV1aW50MjU2X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAiQUbY29tcGFjdGZoZXVpbnQyNTZfc2VyaWFsaXplAOkCHWNvbXBhY3RmaGV1aW50MjU2X2Rlc2VyaWFsaXplAPwDIGNvbXBhY3RmaGV1aW50MjU2X3NhZmVfc2VyaWFsaXplANcCImNvbXBhY3RmaGV1aW50MjU2X3NhZmVfZGVzZXJpYWxpemUA8QM1Y29tcGFjdGZoZXVpbnQyNTZsaXN0X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAkgMcY29tcGFjdGZoZXVpbnQyNTZsaXN0X2V4cGFuZADsAh9jb21wYWN0ZmhldWludDI1Nmxpc3Rfc2VyaWFsaXplAOkCIWNvbXBhY3RmaGV1aW50MjU2bGlzdF9kZXNlcmlhbGl6ZQD9AxRfX3diZ19maGVpbnQxMjhfZnJlZQDOByFmaGVpbnQxMjhfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkAuQQhZmhlaW50MTI4X2VuY3J5cHRfd2l0aF9wdWJsaWNfa2V5ALoELGZoZWludDEyOF9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5ALsEKWZoZWludDEyOF9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5ALwEEWZoZWludDEyOF9kZWNyeXB0AMoDE2ZoZWludDEyOF9zZXJpYWxpemUA5wIVZmhlaW50MTI4X2Rlc2VyaWFsaXplAP4DGGZoZWludDEyOF9zYWZlX3NlcmlhbGl6ZQDYAhpmaGVpbnQxMjhfc2FmZV9kZXNlcmlhbGl6ZQDyAx5fX3diZ19jb21wcmVzc2VkZmhlaW50MTI4X2ZyZWUA5gcrY29tcHJlc3NlZGZoZWludDEyOF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQC9BB5jb21wcmVzc2VkZmhlaW50MTI4X2RlY29tcHJlc3MA5gMdY29tcHJlc3NlZGZoZWludDEyOF9zZXJpYWxpemUA6AIfY29tcHJlc3NlZGZoZWludDEyOF9kZXNlcmlhbGl6ZQDnAyJjb21wcmVzc2VkZmhlaW50MTI4X3NhZmVfc2VyaWFsaXplANkCJGNvbXByZXNzZWRmaGVpbnQxMjhfc2FmZV9kZXNlcmlhbGl6ZQDVAxtfX3diZ19jb21wYWN0ZmhlaW50MTI4X2ZyZWUA2AYwY29tcGFjdGZoZWludDEyOF9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AIoFF2NvbXBhY3RmaGVpbnQxMjhfZXhwYW5kAOgDGmNvbXBhY3RmaGVpbnQxMjhfc2VyaWFsaXplAOkCHGNvbXBhY3RmaGVpbnQxMjhfZGVzZXJpYWxpemUA/wMfY29tcGFjdGZoZWludDEyOF9zYWZlX3NlcmlhbGl6ZQDaAiFjb21wYWN0ZmhlaW50MTI4X3NhZmVfZGVzZXJpYWxpemUA8wM0Y29tcGFjdGZoZWludDEyOGxpc3RfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCTAxtjb21wYWN0ZmhlaW50MTI4bGlzdF9leHBhbmQA7QIeY29tcGFjdGZoZWludDEyOGxpc3Rfc2VyaWFsaXplAOkCIGNvbXBhY3RmaGVpbnQxMjhsaXN0X2Rlc2VyaWFsaXplAIAEIWZoZWludDE2MF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQC+BCFmaGVpbnQxNjBfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkAvwQsZmhlaW50MTYwX2VuY3J5cHRfd2l0aF9jb21wcmVzc2VkX3B1YmxpY19rZXkAwAQpZmhlaW50MTYwX2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAwQQRZmhlaW50MTYwX2RlY3J5cHQAywMTZmhlaW50MTYwX3NlcmlhbGl6ZQDnAhVmaGVpbnQxNjBfZGVzZXJpYWxpemUA/gMYZmhlaW50MTYwX3NhZmVfc2VyaWFsaXplANgCGmZoZWludDE2MF9zYWZlX2Rlc2VyaWFsaXplAPIDK2NvbXByZXNzZWRmaGVpbnQxNjBfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkAwgQeY29tcHJlc3NlZGZoZWludDE2MF9kZWNvbXByZXNzAOYDHWNvbXByZXNzZWRmaGVpbnQxNjBfc2VyaWFsaXplAOgCH2NvbXByZXNzZWRmaGVpbnQxNjBfZGVzZXJpYWxpemUA5wMiY29tcHJlc3NlZGZoZWludDE2MF9zYWZlX3NlcmlhbGl6ZQDZAiRjb21wcmVzc2VkZmhlaW50MTYwX3NhZmVfZGVzZXJpYWxpemUA1QMwY29tcGFjdGZoZWludDE2MF9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AIsFGmNvbXBhY3RmaGVpbnQxNjBfc2VyaWFsaXplAOkCHGNvbXBhY3RmaGVpbnQxNjBfZGVzZXJpYWxpemUA/wMfY29tcGFjdGZoZWludDE2MF9zYWZlX3NlcmlhbGl6ZQDaAiFjb21wYWN0ZmhlaW50MTYwX3NhZmVfZGVzZXJpYWxpemUA8wM0Y29tcGFjdGZoZWludDE2MGxpc3RfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCUAxtjb21wYWN0ZmhlaW50MTYwbGlzdF9leHBhbmQA7gIeY29tcGFjdGZoZWludDE2MGxpc3Rfc2VyaWFsaXplAOkCIGNvbXBhY3RmaGVpbnQxNjBsaXN0X2Rlc2VyaWFsaXplAIAEIWZoZWludDI1Nl9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQDDBCFmaGVpbnQyNTZfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkAxAQsZmhlaW50MjU2X2VuY3J5cHRfd2l0aF9jb21wcmVzc2VkX3B1YmxpY19rZXkAxQQpZmhlaW50MjU2X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAxgQRZmhlaW50MjU2X2RlY3J5cHQAywMTZmhlaW50MjU2X3NlcmlhbGl6ZQDnAhVmaGVpbnQyNTZfZGVzZXJpYWxpemUA/gMYZmhlaW50MjU2X3NhZmVfc2VyaWFsaXplANgCGmZoZWludDI1Nl9zYWZlX2Rlc2VyaWFsaXplAPIDK2NvbXByZXNzZWRmaGVpbnQyNTZfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkAxwQeY29tcHJlc3NlZGZoZWludDI1Nl9kZWNvbXByZXNzAOYDHWNvbXByZXNzZWRmaGVpbnQyNTZfc2VyaWFsaXplAOgCH2NvbXByZXNzZWRmaGVpbnQyNTZfZGVzZXJpYWxpemUA5wMiY29tcHJlc3NlZGZoZWludDI1Nl9zYWZlX3NlcmlhbGl6ZQDZAiRjb21wcmVzc2VkZmhlaW50MjU2X3NhZmVfZGVzZXJpYWxpemUA1QMwY29tcGFjdGZoZWludDI1Nl9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AIwFGmNvbXBhY3RmaGVpbnQyNTZfc2VyaWFsaXplAOkCHGNvbXBhY3RmaGVpbnQyNTZfZGVzZXJpYWxpemUA/wMfY29tcGFjdGZoZWludDI1Nl9zYWZlX3NlcmlhbGl6ZQDaAiFjb21wYWN0ZmhlaW50MjU2X3NhZmVfZGVzZXJpYWxpemUA8wM0Y29tcGFjdGZoZWludDI1Nmxpc3RfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCVAxtjb21wYWN0ZmhlaW50MjU2bGlzdF9leHBhbmQA7wIeY29tcGFjdGZoZWludDI1Nmxpc3Rfc2VyaWFsaXplAOkCIGNvbXBhY3RmaGVpbnQyNTZsaXN0X2Rlc2VyaWFsaXplAIAEEl9fd2JnX2ZoZWJvb2xfZnJlZQDZBh9maGVib29sX2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AMgEH2ZoZWJvb2xfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkAyQQqZmhlYm9vbF9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5AMoEJ2ZoZWJvb2xfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQDLBA9maGVib29sX2RlY3J5cHQAlgQRZmhlYm9vbF9zZXJpYWxpemUA8AITZmhlYm9vbF9kZXNlcmlhbGl6ZQCBBBZmaGVib29sX3NhZmVfc2VyaWFsaXplANsCGGZoZWJvb2xfc2FmZV9kZXNlcmlhbGl6ZQD0AxxfX3diZ19jb21wcmVzc2VkZmhlYm9vbF9mcmVlALYGKWNvbXByZXNzZWRmaGVib29sX2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AMwEHGNvbXByZXNzZWRmaGVib29sX2RlY29tcHJlc3MA6QMbY29tcHJlc3NlZGZoZWJvb2xfc2VyaWFsaXplAPECHWNvbXByZXNzZWRmaGVib29sX2Rlc2VyaWFsaXplAIIEIGNvbXByZXNzZWRmaGVib29sX3NhZmVfc2VyaWFsaXplANwCImNvbXByZXNzZWRmaGVib29sX3NhZmVfZGVzZXJpYWxpemUA9QMZX193YmdfY29tcGFjdGZoZWJvb2xfZnJlZQDYBi5jb21wYWN0ZmhlYm9vbF9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AM0EFWNvbXBhY3RmaGVib29sX2V4cGFuZADqAxhjb21wYWN0ZmhlYm9vbF9zZXJpYWxpemUA6QIaY29tcGFjdGZoZWJvb2xfZGVzZXJpYWxpemUAgwQdY29tcGFjdGZoZWJvb2xfc2FmZV9zZXJpYWxpemUA3QIfY29tcGFjdGZoZWJvb2xfc2FmZV9kZXNlcmlhbGl6ZQD2Axljb21wYWN0ZmhlYm9vbGxpc3RfZXhwYW5kAPICHGNvbXBhY3RmaGVib29sbGlzdF9zZXJpYWxpemUA6QIeY29tcGFjdGZoZWJvb2xsaXN0X2Rlc2VyaWFsaXplAIQEIGZoZXVpbnQ4X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AM4EIGZoZXVpbnQ4X2VuY3J5cHRfd2l0aF9wdWJsaWNfa2V5AM8EK2ZoZXVpbnQ4X2VuY3J5cHRfd2l0aF9jb21wcmVzc2VkX3B1YmxpY19rZXkA0AQoZmhldWludDhfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQDRBBBmaGV1aW50OF9kZWNyeXB0AK0DEmZoZXVpbnQ4X3NlcmlhbGl6ZQDnAhRmaGV1aW50OF9kZXNlcmlhbGl6ZQD7AxdmaGV1aW50OF9zYWZlX3NlcmlhbGl6ZQDVAhlmaGV1aW50OF9zYWZlX2Rlc2VyaWFsaXplAPADKmNvbXByZXNzZWRmaGV1aW50OF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQDSBB1jb21wcmVzc2VkZmhldWludDhfZGVjb21wcmVzcwDkAxxjb21wcmVzc2VkZmhldWludDhfc2VyaWFsaXplAOgCHmNvbXByZXNzZWRmaGV1aW50OF9kZXNlcmlhbGl6ZQDlAyFjb21wcmVzc2VkZmhldWludDhfc2FmZV9zZXJpYWxpemUA1gIjY29tcHJlc3NlZGZoZXVpbnQ4X3NhZmVfZGVzZXJpYWxpemUA1AMvY29tcGFjdGZoZXVpbnQ4X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAjQUZY29tcGFjdGZoZXVpbnQ4X3NlcmlhbGl6ZQDpAhtjb21wYWN0ZmhldWludDhfZGVzZXJpYWxpemUA/AMeY29tcGFjdGZoZXVpbnQ4X3NhZmVfc2VyaWFsaXplANcCIGNvbXBhY3RmaGV1aW50OF9zYWZlX2Rlc2VyaWFsaXplAPEDGmNvbXBhY3RmaGV1aW50OGxpc3RfZXhwYW5kAPMCHWNvbXBhY3RmaGV1aW50OGxpc3Rfc2VyaWFsaXplAOkCH2NvbXBhY3RmaGV1aW50OGxpc3RfZGVzZXJpYWxpemUA/QMhZmhldWludDE2X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5ANMEIWZoZXVpbnQxNl9lbmNyeXB0X3dpdGhfcHVibGljX2tleQDUBCxmaGV1aW50MTZfZW5jcnlwdF93aXRoX2NvbXByZXNzZWRfcHVibGljX2tleQDVBClmaGV1aW50MTZfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQDWBBFmaGV1aW50MTZfZGVjcnlwdACuAxNmaGV1aW50MTZfc2VyaWFsaXplAOcCFWZoZXVpbnQxNl9kZXNlcmlhbGl6ZQD7AxhmaGV1aW50MTZfc2FmZV9zZXJpYWxpemUA1QIaZmhldWludDE2X3NhZmVfZGVzZXJpYWxpemUA8AMrY29tcHJlc3NlZGZoZXVpbnQxNl9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQDXBB5jb21wcmVzc2VkZmhldWludDE2X2RlY29tcHJlc3MA5AMdY29tcHJlc3NlZGZoZXVpbnQxNl9zZXJpYWxpemUA6AIfY29tcHJlc3NlZGZoZXVpbnQxNl9kZXNlcmlhbGl6ZQDlAyJjb21wcmVzc2VkZmhldWludDE2X3NhZmVfc2VyaWFsaXplANYCJGNvbXByZXNzZWRmaGV1aW50MTZfc2FmZV9kZXNlcmlhbGl6ZQDUAzBjb21wYWN0ZmhldWludDE2X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAjgUaY29tcGFjdGZoZXVpbnQxNl9zZXJpYWxpemUA6QIcY29tcGFjdGZoZXVpbnQxNl9kZXNlcmlhbGl6ZQD8Ax9jb21wYWN0ZmhldWludDE2X3NhZmVfc2VyaWFsaXplANcCIWNvbXBhY3RmaGV1aW50MTZfc2FmZV9kZXNlcmlhbGl6ZQDxAxtjb21wYWN0ZmhldWludDE2bGlzdF9leHBhbmQA9AIeY29tcGFjdGZoZXVpbnQxNmxpc3Rfc2VyaWFsaXplAOkCIGNvbXBhY3RmaGV1aW50MTZsaXN0X2Rlc2VyaWFsaXplAP0DIWZoZXVpbnQzMl9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQDYBCFmaGV1aW50MzJfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkA2QQsZmhldWludDMyX2VuY3J5cHRfd2l0aF9jb21wcmVzc2VkX3B1YmxpY19rZXkA2gQpZmhldWludDMyX2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkA2wQRZmhldWludDMyX2RlY3J5cHQAtAMTZmhldWludDMyX3NlcmlhbGl6ZQDnAhVmaGV1aW50MzJfZGVzZXJpYWxpemUA+wMYZmhldWludDMyX3NhZmVfc2VyaWFsaXplANUCGmZoZXVpbnQzMl9zYWZlX2Rlc2VyaWFsaXplAPADK2NvbXByZXNzZWRmaGV1aW50MzJfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkA3AQeY29tcHJlc3NlZGZoZXVpbnQzMl9kZWNvbXByZXNzAOQDHWNvbXByZXNzZWRmaGV1aW50MzJfc2VyaWFsaXplAOgCH2NvbXByZXNzZWRmaGV1aW50MzJfZGVzZXJpYWxpemUA5QMiY29tcHJlc3NlZGZoZXVpbnQzMl9zYWZlX3NlcmlhbGl6ZQDWAiRjb21wcmVzc2VkZmhldWludDMyX3NhZmVfZGVzZXJpYWxpemUA1AMwY29tcGFjdGZoZXVpbnQzMl9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AI8FGmNvbXBhY3RmaGV1aW50MzJfc2VyaWFsaXplAOkCHGNvbXBhY3RmaGV1aW50MzJfZGVzZXJpYWxpemUA/AMfY29tcGFjdGZoZXVpbnQzMl9zYWZlX3NlcmlhbGl6ZQDXAiFjb21wYWN0ZmhldWludDMyX3NhZmVfZGVzZXJpYWxpemUA8QMbY29tcGFjdGZoZXVpbnQzMmxpc3RfZXhwYW5kAPUCHmNvbXBhY3RmaGV1aW50MzJsaXN0X3NlcmlhbGl6ZQDpAiBjb21wYWN0ZmhldWludDMybGlzdF9kZXNlcmlhbGl6ZQD9AyFmaGV1aW50NjRfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkA3QQhZmhldWludDY0X2VuY3J5cHRfd2l0aF9wdWJsaWNfa2V5AN4ELGZoZXVpbnQ2NF9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5AN8EKWZoZXVpbnQ2NF9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AOAEEWZoZXVpbnQ2NF9kZWNyeXB0ALUDE2ZoZXVpbnQ2NF9zZXJpYWxpemUA5wIVZmhldWludDY0X2Rlc2VyaWFsaXplAPsDGGZoZXVpbnQ2NF9zYWZlX3NlcmlhbGl6ZQDVAhpmaGV1aW50NjRfc2FmZV9kZXNlcmlhbGl6ZQDwAytjb21wcmVzc2VkZmhldWludDY0X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AOEEHmNvbXByZXNzZWRmaGV1aW50NjRfZGVjb21wcmVzcwDkAx1jb21wcmVzc2VkZmhldWludDY0X3NlcmlhbGl6ZQDoAh9jb21wcmVzc2VkZmhldWludDY0X2Rlc2VyaWFsaXplAOUDImNvbXByZXNzZWRmaGV1aW50NjRfc2FmZV9zZXJpYWxpemUA1gIkY29tcHJlc3NlZGZoZXVpbnQ2NF9zYWZlX2Rlc2VyaWFsaXplANQDMGNvbXBhY3RmaGV1aW50NjRfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCQBRpjb21wYWN0ZmhldWludDY0X3NlcmlhbGl6ZQDpAhxjb21wYWN0ZmhldWludDY0X2Rlc2VyaWFsaXplAPwDH2NvbXBhY3RmaGV1aW50NjRfc2FmZV9zZXJpYWxpemUA1wIhY29tcGFjdGZoZXVpbnQ2NF9zYWZlX2Rlc2VyaWFsaXplAPEDG2NvbXBhY3RmaGV1aW50NjRsaXN0X2V4cGFuZAD2Ah5jb21wYWN0ZmhldWludDY0bGlzdF9zZXJpYWxpemUA6QIgY29tcGFjdGZoZXVpbnQ2NGxpc3RfZGVzZXJpYWxpemUA/QMfZmhlaW50OF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQDiBB9maGVpbnQ4X2VuY3J5cHRfd2l0aF9wdWJsaWNfa2V5AOMEKmZoZWludDhfZW5jcnlwdF93aXRoX2NvbXByZXNzZWRfcHVibGljX2tleQDkBCdmaGVpbnQ4X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkA5QQPZmhlaW50OF9kZWNyeXB0AMwDEWZoZWludDhfc2VyaWFsaXplAOcCE2ZoZWludDhfZGVzZXJpYWxpemUA/gMWZmhlaW50OF9zYWZlX3NlcmlhbGl6ZQDYAhhmaGVpbnQ4X3NhZmVfZGVzZXJpYWxpemUA8gMpY29tcHJlc3NlZGZoZWludDhfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkA5gQcY29tcHJlc3NlZGZoZWludDhfZGVjb21wcmVzcwDmAxtjb21wcmVzc2VkZmhlaW50OF9zZXJpYWxpemUA6AIdY29tcHJlc3NlZGZoZWludDhfZGVzZXJpYWxpemUA5wMgY29tcHJlc3NlZGZoZWludDhfc2FmZV9zZXJpYWxpemUA2QIiY29tcHJlc3NlZGZoZWludDhfc2FmZV9kZXNlcmlhbGl6ZQDVAy5jb21wYWN0ZmhlaW50OF9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AJEFGGNvbXBhY3RmaGVpbnQ4X3NlcmlhbGl6ZQDpAhpjb21wYWN0ZmhlaW50OF9kZXNlcmlhbGl6ZQD/Ax1jb21wYWN0ZmhlaW50OF9zYWZlX3NlcmlhbGl6ZQDaAh9jb21wYWN0ZmhlaW50OF9zYWZlX2Rlc2VyaWFsaXplAPMDGWNvbXBhY3RmaGVpbnQ4bGlzdF9leHBhbmQA9wIcY29tcGFjdGZoZWludDhsaXN0X3NlcmlhbGl6ZQDpAh5jb21wYWN0ZmhlaW50OGxpc3RfZGVzZXJpYWxpemUAgAQgZmhlaW50MTZfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkA5wQgZmhlaW50MTZfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkA6AQrZmhlaW50MTZfZW5jcnlwdF93aXRoX2NvbXByZXNzZWRfcHVibGljX2tleQDpBChmaGVpbnQxNl9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AOoEEGZoZWludDE2X2RlY3J5cHQAzQMSZmhlaW50MTZfc2VyaWFsaXplAOcCFGZoZWludDE2X2Rlc2VyaWFsaXplAP4DF2ZoZWludDE2X3NhZmVfc2VyaWFsaXplANgCGWZoZWludDE2X3NhZmVfZGVzZXJpYWxpemUA8gMqY29tcHJlc3NlZGZoZWludDE2X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AOsEHWNvbXByZXNzZWRmaGVpbnQxNl9kZWNvbXByZXNzAOYDHGNvbXByZXNzZWRmaGVpbnQxNl9zZXJpYWxpemUA6AIeY29tcHJlc3NlZGZoZWludDE2X2Rlc2VyaWFsaXplAOcDIWNvbXByZXNzZWRmaGVpbnQxNl9zYWZlX3NlcmlhbGl6ZQDZAiNjb21wcmVzc2VkZmhlaW50MTZfc2FmZV9kZXNlcmlhbGl6ZQDVAy9jb21wYWN0ZmhlaW50MTZfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCSBRljb21wYWN0ZmhlaW50MTZfc2VyaWFsaXplAOkCG2NvbXBhY3RmaGVpbnQxNl9kZXNlcmlhbGl6ZQD/Ax5jb21wYWN0ZmhlaW50MTZfc2FmZV9zZXJpYWxpemUA2gIgY29tcGFjdGZoZWludDE2X3NhZmVfZGVzZXJpYWxpemUA8wMaY29tcGFjdGZoZWludDE2bGlzdF9leHBhbmQA+AIdY29tcGFjdGZoZWludDE2bGlzdF9zZXJpYWxpemUA6QIfY29tcGFjdGZoZWludDE2bGlzdF9kZXNlcmlhbGl6ZQCABCBmaGVpbnQzMl9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQDsBCBmaGVpbnQzMl9lbmNyeXB0X3dpdGhfcHVibGljX2tleQDtBCtmaGVpbnQzMl9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5AO4EKGZoZWludDMyX2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkA7wQQZmhlaW50MzJfZGVjcnlwdADPAxJmaGVpbnQzMl9zZXJpYWxpemUA5wIUZmhlaW50MzJfZGVzZXJpYWxpemUA/gMXZmhlaW50MzJfc2FmZV9zZXJpYWxpemUA2AIZZmhlaW50MzJfc2FmZV9kZXNlcmlhbGl6ZQDyAypjb21wcmVzc2VkZmhlaW50MzJfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkA8AQdY29tcHJlc3NlZGZoZWludDMyX2RlY29tcHJlc3MA5gMcY29tcHJlc3NlZGZoZWludDMyX3NlcmlhbGl6ZQDoAh5jb21wcmVzc2VkZmhlaW50MzJfZGVzZXJpYWxpemUA5wMhY29tcHJlc3NlZGZoZWludDMyX3NhZmVfc2VyaWFsaXplANkCI2NvbXByZXNzZWRmaGVpbnQzMl9zYWZlX2Rlc2VyaWFsaXplANUDL2NvbXBhY3RmaGVpbnQzMl9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AJMFGWNvbXBhY3RmaGVpbnQzMl9zZXJpYWxpemUA6QIbY29tcGFjdGZoZWludDMyX2Rlc2VyaWFsaXplAP8DHmNvbXBhY3RmaGVpbnQzMl9zYWZlX3NlcmlhbGl6ZQDaAiBjb21wYWN0ZmhlaW50MzJfc2FmZV9kZXNlcmlhbGl6ZQDzAxpjb21wYWN0ZmhlaW50MzJsaXN0X2V4cGFuZAD5Ah1jb21wYWN0ZmhlaW50MzJsaXN0X3NlcmlhbGl6ZQDpAh9jb21wYWN0ZmhlaW50MzJsaXN0X2Rlc2VyaWFsaXplAIAEIGZoZWludDY0X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5APEEIGZoZWludDY0X2VuY3J5cHRfd2l0aF9wdWJsaWNfa2V5APIEK2ZoZWludDY0X2VuY3J5cHRfd2l0aF9jb21wcmVzc2VkX3B1YmxpY19rZXkA8wQoZmhlaW50NjRfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQD0BBBmaGVpbnQ2NF9kZWNyeXB0ANADEmZoZWludDY0X3NlcmlhbGl6ZQDnAhRmaGVpbnQ2NF9kZXNlcmlhbGl6ZQD+AxdmaGVpbnQ2NF9zYWZlX3NlcmlhbGl6ZQDYAhlmaGVpbnQ2NF9zYWZlX2Rlc2VyaWFsaXplAPIDKmNvbXByZXNzZWRmaGVpbnQ2NF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQD1BB1jb21wcmVzc2VkZmhlaW50NjRfZGVjb21wcmVzcwDmAxxjb21wcmVzc2VkZmhlaW50NjRfc2VyaWFsaXplAOgCHmNvbXByZXNzZWRmaGVpbnQ2NF9kZXNlcmlhbGl6ZQDnAyFjb21wcmVzc2VkZmhlaW50NjRfc2FmZV9zZXJpYWxpemUA2QIjY29tcHJlc3NlZGZoZWludDY0X3NhZmVfZGVzZXJpYWxpemUA1QMvY29tcGFjdGZoZWludDY0X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAlAUZY29tcGFjdGZoZWludDY0X3NlcmlhbGl6ZQDpAhtjb21wYWN0ZmhlaW50NjRfZGVzZXJpYWxpemUA/wMeY29tcGFjdGZoZWludDY0X3NhZmVfc2VyaWFsaXplANoCIGNvbXBhY3RmaGVpbnQ2NF9zYWZlX2Rlc2VyaWFsaXplAPMDGmNvbXBhY3RmaGVpbnQ2NGxpc3RfZXhwYW5kAPoCHWNvbXBhY3RmaGVpbnQ2NGxpc3Rfc2VyaWFsaXplAOkCH2NvbXBhY3RmaGVpbnQ2NGxpc3RfZGVzZXJpYWxpemUAgAQyY29tcGFjdGZoZWJvb2xsaXN0X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAlgMPX193YmdfdGZoZV9mcmVlAPEJLXRmaGVjb25maWdidWlsZGVyX2RlZmF1bHRfd2l0aF9iaWdfZW5jcnlwdGlvbgDrBhVfX3diZ19maGV1aW50MTYwX2ZyZWUAzgcfX193YmdfY29tcHJlc3NlZGZoZXVpbnQxNjBfZnJlZQDmBxVfX3diZ19maGV1aW50MjU2X2ZyZWUAzgcfX193YmdfY29tcHJlc3NlZGZoZXVpbnQyNTZfZnJlZQDmBxVfX3diZ19maGV1aW50MTI4X2ZyZWUAzgcfX193YmdfY29tcHJlc3NlZGZoZXVpbnQxMjhfZnJlZQDmBxRfX3diZ19maGVpbnQxNjBfZnJlZQDOBx5fX3diZ19jb21wcmVzc2VkZmhlaW50MTYwX2ZyZWUA5gcUX193YmdfZmhlaW50MjU2X2ZyZWUAzgceX193YmdfY29tcHJlc3NlZGZoZWludDI1Nl9mcmVlAOYHE19fd2JnX2ZoZXVpbnQ4X2ZyZWUAzgcdX193YmdfY29tcHJlc3NlZGZoZXVpbnQ4X2ZyZWUA5gcUX193YmdfZmhldWludDE2X2ZyZWUAzgceX193YmdfY29tcHJlc3NlZGZoZXVpbnQxNl9mcmVlAOYHFF9fd2JnX2ZoZXVpbnQzMl9mcmVlAM4HHl9fd2JnX2NvbXByZXNzZWRmaGV1aW50MzJfZnJlZQDmBxRfX3diZ19maGV1aW50NjRfZnJlZQDOBx5fX3diZ19jb21wcmVzc2VkZmhldWludDY0X2ZyZWUA5gcSX193YmdfZmhlaW50OF9mcmVlAM4HHF9fd2JnX2NvbXByZXNzZWRmaGVpbnQ4X2ZyZWUA5gcTX193YmdfZmhlaW50MTZfZnJlZQDOBx1fX3diZ19jb21wcmVzc2VkZmhlaW50MTZfZnJlZQDmBxNfX3diZ19maGVpbnQzMl9mcmVlAM4HHV9fd2JnX2NvbXByZXNzZWRmaGVpbnQzMl9mcmVlAOYHE19fd2JnX2ZoZWludDY0X2ZyZWUAzgcdX193YmdfY29tcHJlc3NlZGZoZWludDY0X2ZyZWUA5gcYY29tcGFjdGZoZXVpbnQxNjBfZXhwYW5kAOgDGGNvbXBhY3RmaGV1aW50MjU2X2V4cGFuZADoAxhjb21wYWN0ZmhldWludDEyOF9leHBhbmQA6AMVY29tcGFjdGZoZWludDhfZXhwYW5kAOgDF2NvbXBhY3RmaGVpbnQyNTZfZXhwYW5kAOgDF2NvbXBhY3RmaGVpbnQxNjBfZXhwYW5kAOgDF2NvbXBhY3RmaGV1aW50MTZfZXhwYW5kAOgDF2NvbXBhY3RmaGV1aW50MzJfZXhwYW5kAOgDF2NvbXBhY3RmaGV1aW50NjRfZXhwYW5kAOgDFmNvbXBhY3RmaGV1aW50OF9leHBhbmQA6AMWY29tcGFjdGZoZWludDE2X2V4cGFuZADoAxZjb21wYWN0ZmhlaW50MzJfZXhwYW5kAOgDFmNvbXBhY3RmaGVpbnQ2NF9leHBhbmQA6AMgX193YmdfY29tcGFjdGZoZXVpbnQxMjhsaXN0X2ZyZWUA2AYcX193YmdfY29tcGFjdGZoZXVpbnQxNjBfZnJlZQDYBiBfX3diZ19jb21wYWN0ZmhldWludDE2MGxpc3RfZnJlZQDYBhxfX3diZ19jb21wYWN0ZmhldWludDI1Nl9mcmVlANgGIF9fd2JnX2NvbXBhY3RmaGV1aW50MjU2bGlzdF9mcmVlANgGHF9fd2JnX2NvbXBhY3RmaGV1aW50MTI4X2ZyZWUA2AYZX193YmdfY29tcGFjdGZoZWludDhfZnJlZQDYBhtfX3diZ19jb21wYWN0ZmhlaW50MTYwX2ZyZWUA2AYfX193YmdfY29tcGFjdGZoZWludDE2MGxpc3RfZnJlZQDYBhtfX3diZ19jb21wYWN0ZmhlaW50MjU2X2ZyZWUA2AYfX193YmdfY29tcGFjdGZoZWludDI1Nmxpc3RfZnJlZQDYBh1fX3diZ19jb21wYWN0ZmhlYm9vbGxpc3RfZnJlZQDYBh9fX3diZ19jb21wYWN0ZmhlaW50MTI4bGlzdF9mcmVlANgGHl9fd2JnX2NvbXBhY3RmaGV1aW50OGxpc3RfZnJlZQDYBhtfX3diZ19jb21wYWN0ZmhldWludDE2X2ZyZWUA2AYfX193YmdfY29tcGFjdGZoZXVpbnQxNmxpc3RfZnJlZQDYBhtfX3diZ19jb21wYWN0ZmhldWludDMyX2ZyZWUA2AYfX193YmdfY29tcGFjdGZoZXVpbnQzMmxpc3RfZnJlZQDYBhtfX3diZ19jb21wYWN0ZmhldWludDY0X2ZyZWUA2AYfX193YmdfY29tcGFjdGZoZXVpbnQ2NGxpc3RfZnJlZQDYBhpfX3diZ19jb21wYWN0ZmhldWludDhfZnJlZQDYBh1fX3diZ19jb21wYWN0ZmhlaW50OGxpc3RfZnJlZQDYBhpfX3diZ19jb21wYWN0ZmhlaW50MTZfZnJlZQDYBh5fX3diZ19jb21wYWN0ZmhlaW50MTZsaXN0X2ZyZWUA2AYaX193YmdfY29tcGFjdGZoZWludDMyX2ZyZWUA2AYeX193YmdfY29tcGFjdGZoZWludDMybGlzdF9mcmVlANgGGl9fd2JnX2NvbXBhY3RmaGVpbnQ2NF9mcmVlANgGHl9fd2JnX2NvbXBhY3RmaGVpbnQ2NGxpc3RfZnJlZQDYBhFfX3diaW5kZ2VuX21hbGxvYwDaBhJfX3diaW5kZ2VuX3JlYWxsb2MAmAcfX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcgDACQ9fX3diaW5kZ2VuX2ZyZWUAjggUX193YmluZGdlbl9leG5fc3RvcmUAhwkJuQcBAEEBC98DmwGaAfIJ9AnCCcEJvwe9B78Huge9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SSAlmoN7OaIgIiAgoSABoaEiI6EhAQsgACABOQMAIAAgICABoSAjoTkDECAhRAAAAAAAAODBZiEFIABB/////wcCfyAhmUQAAAAAAADgQWMEQCAhqgwBC0GAgICAeAtBgICAgHggBRsgIUQAAMD////fQWQbQQAgISAhYRs2AggMCAtBgICAgHgLQYCAgIB4IAQbIAFEAADA////30FkG0EAIAEgAWEbtyIgOQMAIAEgIKFEAAAAAAAAcEGiIgFEAAAAAAAA4MFmIQQgCkH/////BwJ/IAGZRAAAAAAAAOBBYwRAIAGqDAELQYCAgIB4C0GAgICAeCAEGyABRAAAwP///99BZBtBACABIAFhGyIEtyIgOQMIIAogASAgoUQAAAAAAABwQaIiATkDECAKQgA3AyggCkIANwMgIApCADcDGCAKQRhqIRIjAEGwBGsiAyQAIANCADcDmAEgA0IANwOQASADQgA3A4gBIANCADcDgAEgA0IANwN4IANCADcDcCADQgA3A2ggA0IANwNgIANCADcDWCADQgA3A1AgA0IANwNIIANCADcDQCADQgA3AzggA0IANwMwIANCADcDKCADQgA3AyAgA0IANwMYIANCADcDECADQgA3AwggA0IANwMAIANCADcDuAIgA0IANwOwAiADQgA3A6gCIANCADcDoAIgA0IANwOYAiADQgA3A5ACIANCADcDiAIgA0IANwOAAiADQgA3A/gBIANCADcD8AEgA0IANwPoASADQgA3A+ABIANCADcD2AEgA0IANwPQASADQgA3A8gBIANCADcDwAEgA0IANwO4ASADQgA3A7ABIANCADcDqAEgA0IANwOgASADQgA3A9gDIANCADcD0AMgA0IANwPIAyADQgA3A8ADIANCADcDuAMgA0IANwOwAyADQgA3A6gDIANCADcDoAMgA0IANwOYAyADQgA3A5ADIANCADcDiAMgA0IANwOAAyADQgA3A/gCIANCADcD8AIgA0IANwPoAiADQgA3A+ACIANCADcD2AIgA0IANwPQAiADQgA3A8gCIANCADcDwAIgA0HgA2pBAEHQABDkCRpBvMPDACgCACILQQNBAkEBIAQbIAFEAAAAAAAAAABiGyICQQFrIgxqIQkgBUEUdkGWCGsiEEEDa0EYbSIFQQAgBUEAShsiDiAMayEEIA5BAnQg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AAAAAAAAAAAhAQwBCyACQX5xIQ5EAAAAAAAAAAAhAUEAIQJBACEEA0AgASACQdDFwwBqKwMAIAIgB2oiECsDAKKgIAJB2MXDAGorAwAgEEEIaisDAKKgIQEgAkEQaiECIA4gBEECaiIERw0ACwsgA0GgAWogBkEDdGogDAR8IAEgBEEDdEHQxcMAaisDACADQcACaiAEIAlqQQN0aisDAKKgBSABCzkDACAHQQhrIQcgCUEBayECIAkNAAsCQCAIQQNxIglFBEBEAAAAAAAAAAAhASAFIQQMAQsgA0GgAWogBUEDdGohAkQAAAAAAAAAACEBIAUhBANAIARBAWshBCABIAIrAwCgIQEgAkEIayECIAlBAWsiCQ0ACwsgBUEDTwRAIARBA3QgA2pBiAFqIQIDQCABIAJBGGorAwCgIAJBEGorAwCgIAJBCGorAwCgIAIrAwCgIQEgAkEgayECIARBA0cgBEEEayEEDQALCyASIAGaIAEgDRs5AwAgAysDoAEgAaEhAQJAIAVFDQBBASECA0AgASADQaABaiACQQN0aisDAKAhASACIAVPDQEgAiACIAVJaiICIAVNDQALCyASIAGaIAEgDRs5AwggA0GwBGokACAPQQdxIQUgJEIAWQRAIAAgBTYCCCAAIAorAyA5AxAgACAKKwMYOQMADAcLIABBACAFazYCCCAAIAorAyCaOQMQIAAgCisDGJo5AwAMBgsgBUG9+9eABE8EQCAFQfvD5IAERgRAAkAgASABRIPIyW0wX+Q/okQAAAAAAAA4Q6BEAAAAAAAAOMOgIiFEAABAVPsh+b+ioCIBICFEMWNiGmG00D2iIiOhIiC9QoCAgICAgID4/wCDQv////////+HP1YNACABICFEAABgGmG00D2iIiChIiIgIURzcAMuihmjO6IgASAioSAgoaEiI6EiIL1CgICAgICAgID/AINC//////////88VgRAICIhAQwBCyAiICFEAAAALooZozuiIiChIgEgIUTBSSAlmoN7OaIgIiABoSAgoaEiI6EhIAsgACAgOQMAIAAgASAgoSAjoTkDECAhRAAAAAAAAODBZiEFIABB/////wcCfyAhmUQAAAAAAADgQWMEQCAhqgwBC0GAgICAeAtBgICAgHggBRsgIUQAAMD////fQWQbQQAgISAhYRs2AggMBwsgJEIA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QAJAAkAgAS0AsAIiBUUEQCAEQQFrDgIDBQELAkACQAJAIARBAWsOAgECAAsgA0FAayABQQhqQYABEOcJGiADQThqIANB2ABqKQMANwMAIANBMGogA0HQAGopAwA3AwAgAyADKQNINwMoDAMLIAFBCGoMBAsgAUEIagwFCyADQUBrIAFBCGpBgAEQ5wkaIANBOGogA0HwAGopAwA3AwAgA0EwaiADQegAaikDADcDACADIANB4ABqKQMANwMoCyADIANBKGo2AkwgAyADNgJIIAMgA0EIajYCRCADIAE2AkAgA0FAaxCLAiAAIAMpAwg3AwAgAEEIaiADQRBqKQMANwMAIABBEGogA0EYaikDADcDACAAQRhqIANBIGopAwA3AwAgAUH4AGohBCABKAJ0DAQLIAFBIGoLIgRBEGopAwA3AwAgA0EwaiAEQQhqKQMANwMAIAMgBCkDADcDKCADIANBKGo2AkwgAyADNgJIIAMgA0EIajYCRCADIAE2AkAgA0FAaxCLAiAAIAMpAwg3AwAgAEEIaiADQRBqKQMANwMAIABBEGogA0EYaikDADcDACAAQRhqIANBIGopAwA3AwAgAUGQAWohBCABQYwBaigCAAwCCyABQSBqCyIEQRBqKQMANwMAIANBMGogBEEIaikDADcDACADIAQpAwA3AyggAyADQShqNgJMIAMgAzYCSCADIANBCGo2AkQgAyABNgJAIANBQGsQiwIgACADKQMINwMAIABBCGogA0EQaikDADcDACAAQRBqIANBGGopAwA3AwAgAEEYaiADQSBqKQMANwMAIAFB8ABqIQQgASgCbAshASAAIAU6ADAgACABNgIoIABBATYCJCAAIAQoAgA2AiwgACABQQFrNgIgIANBwAFqJAAL5AgBAX8jAEEwayICJAACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAALQAAQQFrDhEBAgMEBQYHCAkKCwwNDg8QEQALIAIgAC0AAToACCACQSRqQgE3AgAgAkECNgIcIAJBqOfCADYCGCACQakDNgIUIAIgAkEQajYCICACIAJBCGo2AhAgASACQRhqEPgIDBELIAIgACkDCDcDCCACQSRqQgE3AgAgAkECNgIcIAJBxOfCADYCGCACQd4BNgIUIAIgAkEQajYCICACIAJBCGo2AhAgASACQRhqEPgIDBALIAIgACkDCDcDCCACQSRqQgE3AgAgAkECNgIcIAJBxOfCADYCGCACQaoDNgIUIAIgAkEQajYCICACIAJBCGo2AhAgASACQRhqEPgIDA8LIAIgACsDCDkDCCACQSRqQgE3AgAgAkECNgIcIAJB5OfCADYCGCACQasDNgIUIAIgAkEQajYCICACIAJBCGo2AhAgASACQRhqEPgIDA4LIAIgACgCBDYCCCACQSRqQgE3AgAgAkECNgIcIAJBgOjCADYCGCACQawDNgIUIAIgAkEQajYCICACIAJBCGo2AhAgASACQRhqEPgIDA0LIAIgACkCBDcCCCACQSRqQgE3AgAgAkEBNgIcIAJBmOjCADYCGCACQeUBNgIUIAIgAkEQajYCICACIAJBCGo2AhAgASACQRhqEPgIDAwLIAJBJGpCADcCACACQQE2AhwgAkGg6MIANgIYIAJBlOfCADYCICABIAJBGGoQ+AgMCwsgAkEkakIANwIAIAJBATYCHCACQbTowgA2AhggAkGU58IANgIgIAEgAkEYahD4CAwKCyACQSRqQgA3AgAgAkEBNgIcIAJByOjCADYCGCACQZTnwgA2AiAgASACQRhqEPgIDAkLIAJBJGpCADcCACACQQE2AhwgAkHg6MIANgIYIAJBlOfCADYCICABIAJBGGoQ+AgMCAsgAkEkakIANwIAIAJBATYCHCACQfDowgA2AhggAkGU58IANgIgIAEgAkEYahD4CAwHCyACQSRqQgA3AgAgAkEBNgIcIAJB/OjCADYCGCACQZTnwgA2AiAgASACQRhqEPgIDAYLIAJBJGpCADcCACACQQE2AhwgAkGI6cIANgIYIAJBlOfCADYCICABIAJBGGoQ+AgMBQsgAkEkakIANwIAIAJBATYCHCACQZzpwgA2AhggAkGU58IANgIgIAEgAkEYahD4CAwECyACQSRqQgA3AgAgAkEBNgIcIAJBtOnCADYCGCACQZTnwgA2AiAgASACQRhqEPgIDAMLIAJBJGpCADcCACACQQE2AhwgAkHM6cIANgIYIAJBlOfCADYCICABIAJBGGoQ+AgMAgsgAkEkakIANwIAIAJBATYCHCACQeTpwgA2AhggAkGU58IANgIgIAEgAkEYahD4CAwBCyABIAAoAgQgAEEIaigCABCFCAsgAkEw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IAFBGGopAwA3AwAgAkHIAGogAUEQaikDADcDACACIAEpAwg3A0AgAkFAayADQSAQ5glFDQELIAJBOGogA0EYaikDADcDACACQTBqIANBEGopAwA3AwAgAkEoaiADQQhqKQMANwMAIAIgAykDADcDICACQdgAaiABQeAAaikDADcDACACQdAAaiABQdgAaikDADcDACACQcgAaiABQdAAaikDADcDACACIAEpA0g3A0ADQCACQSBqIARqIgUgBSkDACACQUBrIARqKQMAgzcDACAEQQhqIgRBIEcNAAsgAkEYaiIIIAJBOGoiCSkDADcDACACQRBqIgogAkEwaiILKQMANwMAIAJBCGoiDCACQShqIg0pAwA3AwAgAiACKQMgNwMAIAMgASgCiAFBARDkASABKAKMASIDIAEoAogBIgZJBEAgAUHoAGohBQNAIAJB2ABqIgQgBUEYaikDADcDACACQdAAaiIHIAVBEGopAwA3AwAgAkHIAGoiDiAFQQhqKQMANwMAIAIgBSkDADcDQCACQUBrIAMQygIgCSAEKQMANwMAIAsgBykDADcDACANIA4pAwA3AwAgAiACKQNANwMgQQAhBANAIAIgBGoiByAHKQMAIAJBIGogBGopAwCENwMAIARBCGoiBEEgRw0ACyADQQFqIgMgBkcNAAsgASgCiAEhBiABKAKMASEDCyAAIAIpAwA3AwggAEIBNwMAIABBEGogDCkDADcDACAAQRhqIAopAwA3AwAgAEEgaiAIKQMANwMAIAEgAyAGayIAQQAgACADTRs2AowBDAELIABCADcDAAsgAkHgAGokAAu6BQENfyMAQeAAayICJAACQCABKAKMAUUEQCAAQgA3AwAMAQsgAUEoaiEDAkAgASkDAFBFBEAgAkHYAGogAUEgaikDADcDACACQdAAaiABQRhqKQMANwMAIAJByABqIAFBEGopAwA3AwAgAiABKQMINwNAIAJBQGsgA0EgEOYJRQ0BCyACQThqIANBGGopAwA3AwAgAkEwaiADQRBqKQMANwMAIAJBKGogA0EIaikDADcDACACIAMpAwA3AyAgAkHYAGogAUHgAGopAwA3AwAgAkHQAGogAUHYAGopAwA3AwAgAkHIAGogAUHQAGopAwA3AwAgAiABKQNINwNAA0AgAkEgaiAEaiIFIAUpAwAgAkFAayAEaikDAIM3AwAgBEEIaiIEQSBHDQALIAJBGGoiCCACQThqIgkpAwA3AwAgAkEQaiIKIAJBMGoiCykDADcDACACQQhqIgwgAkEoaiINKQMANwMAIAIgAikDIDcDACADIAEoAogBQQAQ5AEgASgCjAEiAyABKAKIASIGSQRAIAFB6ABqIQUDQCACQdgAaiIEIAVBGGopAwA3AwAgAkHQAGoiByAFQRBqKQMANwMAIAJByABqIg4gBUEIaikDADcDACACIAUpAwA3A0AgAkFAayADEMoCIAkgBCkDADcDACALIAcpAwA3AwAgDSAOKQMANwMAIAIgAikDQDcDIEEAIQQDQCACIARqIgcgBykDACACQSBqIARqKQMAhDcDACAEQQhqIgRBIEcNAAsgA0EBaiIDIAZHDQALIAEoAogBIQYgASgCjAEhAwsgACACKQMANwMIIABCATcDACAAQRBqIAwpAwA3AwAgAEEYaiAKKQMANwMAIABBIGogCCkDADcDACABIAMgBmsiAEEAIAAgA00bNgKMAQwBCyAAQgA3AwALIAJB4ABqJAALzlQDKH8IfAV+IwBBIGsiEiQAQfDMwwAtAABBA0cEQCMAQRBrIgQkAEHwzMMALQAAQQNHBEAgBEHIzMMANgIAIAQgBEEPajYCBCAEIAQ2AgggBEEIaiEBIwBBQGoiByQAAkACQAJAAkACQEHwzMMALQAAQQJrDgIDAQALQfDMwwBBAjoAACABKAIAIgEoAgAhBiABQQA2AgAgBkUNASMAQRBrIgEkAAJAQQBB3MrAACgCABEFACIFBEAgBSAFKQMAIjFCAXw3AwAgByAFKQMINwMIIAcgMTcDACABQRBqJAAMAQtBpMDCAEHGACABQQ9qQezAwgBBzMHCABD2BAALIAdBG2pB8MrAACkDADcAACAHQejKwAApAwA3ABMgBykDACE0IAcpAwghMiAHQTdqIgUgB0EfaigAADYAACAHQTBqIgEgB0EYaikAADcDACAHIAcpABAiMTcDKCAGQQA6AAQgBkEANgIAIAYgMTcABSAGQQ1qIAEpAwA3AAAgBkEUaiAFKAAANgAAIAYgMjcDICAGIDQ3AxhB8MzDAEEDOgAACyAHQUBrJAAMAgtB8MzAAEErQZDWwAAQzAYACyAHQRxqQgA3AgAgB0EBNgIUIAdB6MzAADYCECAHQbDMwAA2AhggB0EQakGc8MEAEPwGAAsLIARBEGokAAtByMzDACgCACEBQcjMwwBBfzYCACASIAA2AgQCQAJAAkACQAJAAkAgAQ0AQezNwwAoAgBB/////wdxBEAQ7QlBAXMhEwtBzMzDAC0AAA0BIwBBEGsiBSQAIAUgADYCDEHQzMMAKAIAIgdBCGshBEHUzMMAKAIAIgYgBUEMahDKASI1p3EhCiA1QhmIQv8Ag0KBgoSIkKDAgAF+ITIgEkEIaiIVAn8CQANAIAcgCmopAAAiNCAyhSIxQn+FIDFCgYKEiJCgwIABfYNCgIGChIiQoMCAf4MhMwNAIDNQBEAgNCA0QgGGg0KAgYKEiJCgwIB/g1BFDQMgCiADQQhqIgNqIAZxIQoMAgsgM3ohMSAzQgF9IDODITMgBCAxp0EDdiAKaiAGcSIBQQN0aygCACAARw0ACwsgFUEBNgIEIBVBEGpB0MzDADYCACAVQQhqIAA2AgAgFUEMaiAHQQAgAWtBA3RqNgIAQQAMAQtB2MzDACgCAEUEQCMAQSBrIhEkAAJAQdzMwwAoAgAiCUEBaiIDIAlJBEAQoQYgESgCBCEBIBEoAgAhDwwBCwJAQdjMwwACfwJAAkBB1MzDACgCACIWIBZBAWoiBkEDdiIEQQdsIBZBCEkbIgFBAXYgA0kEQCADIAFBAWoiASABIANJGyIDQQhJDQEgA0GAgICAAkkEQEEBIQEgA0EDdCIDQQ5JDQVBfyADQQduQQFrZ3ZBAWohAQwFCxChBiARKAIMIQEgESgCCCIPQYGAgIB4Rw0FDAQLQdDMwwAoAgAhAyAEIAZBB3FBAEdqIg8EQCADIQEDQCABIAEpAwAiMUJ/hUIHiEKBgoSIkKDAgAGDIDFC//79+/fv37//AIR8NwMAIAFBCGohASAPQQFrIg8NAAsLIAZBCE8EQCADIAZqIAMpAAA3AAAMAgsgA0EIaiADIAYQ4wkaIBZBf0cNAUEADAILQQRBCCADQQRJGyEBDAILQQAhAQNAAkBB0MzDACgCACILIAEiA2otAABBgAFHDQAgCyAMaiENQQAgA2shCiALIANBA3RrQQhrIQcDQEHUzMMAKAIAIgggCyAKQQN0akEIaxDKAaciCXEiBiEPIAYgC2opAABCgIGChIiQoMCAf4MiMlAEQEEIIQEDQCABIA9qIQQgAUEIaiEBIAsgBCAIcSIPaikAAEKAgYKEiJCgwIB/gyIyUA0ACwsgCyAyeqdBA3YgD2ogCHEiAWosAABBAE4EQCALKQMAQoCBgoSIkKDAgH+DeqdBA3YhAQsCQCABIAZrIAMgBmtzIAhxQQhPBEAgASALaiIELQAAIAQgCUEZdiIEOgAAQdDMwwAoAgAgAUEIayAIcWpBCGogBDoAACALIAFBA3RrIQlB/wFHBEBBeCEBA0AgASANaiIELQAAIQYgBCABIAlqIgQtAAA6AAAgBCAGOgAAIAFBAWoiAQ0ACwwCC0HUzMMAKAIAIQFB0MzDACgCACADakH/AToAAEHQzMMAKAIAIAEgA0EIa3FqQQhqQf8BOgAAIAlBCGsgBykAADcAAAwDCyADIAtqIAlBGXYiAToAAEHQzMMAKAIAIAggA0EIa3FqQQhqIAE6AAAMAgtB0MzDACgCACELDAALAAsgA0EBaiEBIAxBCGshDCADIBZHDQALQdzMwwAoAgAhCUHUzMMAKAIAIgEgAUEBakEDdkEHbCABQQhJGwsiASAJazYCAEGBgICAeCEPDAELIBFBEGohCiMAQRBrIgckAAJAAkACQCABrUIDhiIxQiCIpw0AIDGnIgRBB2oiAyAESQ0AIAEgA0F4cSIGakEIaiIEIAZJDQAgBEH4////B00NAQsQoQYgCiAHKQMANwIEIApBADYCAAwBCyAEBH9Bgc3DAC0AABogBEEIEIQJBUEICyIDBEAgCkEANgIMIAogAUEBayIENgIEIAogAyAGajYCACAKIAQgAUEDdkEHbCAEQQhJGzYCCAwBC0EIIAQQ3wkACyAHQRBqJAAgESgCECIBRQRAIBFBGGooAgAhASARKAIUIQ8MAQsgESgCGCEKIAFB/wEgESgCFCINQQlqEOQJIQxB3MzDACAJBH9B0MzDACgCACIDKQMAQn+FQoCBgoSIkKDAgH+DITIDQCAyUARAIAMhAQNAIAtBCGohCyABKQMIIAFBCGoiAyEBQn+FQoCBgoSIkKDAgH+DIjJQDQALCyAMIA1B0MzDACgCACAyeqdBA3YgC2pBA3QiB2tBCGsQygGnIgZxIg9qKQAAQoCBgoSIkKDAgH+DIjFQBEBBCCEBA0AgASAPaiEEIAFBCGohASAMIAQgDXEiD2opAABCgIGChIiQoMCAf4MiMVANAAsLIDJCAX0gMoMhMiAMIDF6p0EDdiAPaiANcSIBaiwAAEEATgRAIAwpAwBCgIGChIiQoMCAf4N6p0EDdiEBCyABIAxqIAZBGXYiBDoAACABQQhrIA1xIAxqQQhqIAQ6AAAgDCABQQN0a0EIa0HQzMMAKAIAIAdrQQhrKQAANwAAIAlBAWsiCQ0AC0HUzMMAKAIAIRZB3MzDACgCAAVBAAsiATYCAEHUzMMAIA02AgBB2MzDACAKIAFrNgIAQdDMwwAoAgBB0MzDACAMNgIAQYGAgIB4IQ9BCCEBIBZFDQAgFiAWQQN0IgNqQW9GDQAgA2tBCGsQawsgBSABNgIEIAUgDzYCACARQSBqJAALIBUgNTcDCCAVQRRqQdDMwwA2AgAgFUEQaiAANgIAQQELNgIAIAVBEGokACASKAIIBEBBgc3DAC0AABogEkEcaigCACEKIBJBGGooAgAhBSASKQMQITFBEEEEEIQJIgZFDQMgBkEAOgAMIAZCgYCAgBA3AgAgCigCACINIAooAgQiBCAxpyIDcSIHaikAAEKAgYKEiJCgwIB/gyIzUARAQQghCQNAIAcgCWohASAJQQhqIQkgDSABIARxIgdqKQAAQoCBgoSIkKDAgH+DIjNQDQALCyANIDN6p0EDdiAHaiAEcSIJaiwAACIHQQBOBEAgDSANKQMAQoCBgoSIkKDAgH+DeqdBA3YiCWotAAAhBwsgCSANaiADQRl2IgE6AAAgCUEIayAEcSANakEIaiABOgAAIAogCigCCCAHQQFxazYCCCAKIAooAgxBAWo2AgwgDSAJQQN0a0EIayIBQQRqIAY2AgAgASAFNgIACyASIBM6AAwgEkHIzMMANgIIIBJBCGoQqAVByMzDACgCACIGQQBIDQBByMzDACAGQQFqNgIAQczMwwAtAAANA0HczMMAKAIARQ0FQdDMwwAoAgAiBEEIayEDQdTMwwAoAgAiBSASQQRqEMoBIjGncSETIDFCGYhC/wCDQoGChIiQoMCAAX4hMgNAIAQgE2opAAAiNCAyhSIxQn+FIDFCgYKEiJCgwIABfYNCgIGChIiQoMCAf4MhMwNAIDNQBEAgNCA0QgGGg0KAgYKEiJCgwIB/g1BFDQggEyAOQQhqIg5qIAVxIRMMAgsgM3ohMSAzQgF9IDODITMgAyAxp0EDdiATaiAFcSIBQQN0aygCACAARw0ACwsgBEEAIAFrQQN0akEEaygCACIBIAEoAgAiAEEBajYCACAAQQBIDQRByMzDAEHIzMMAKAIAQQFrNgIAIBIgATYCCCABQQhqIRwgAUEMai0AAEEDRwRAIwBBIGsiGSQAIBwtAARBA0cEQCAZIBw2AhAgGSASQQRqNgIMIBkgGUEfajYCFCAZIBlBDGo2AhggGUEYaiEAIwBB8ABrIhckAAJAAkACQAJAAkACQCAcQQRqIiMtAABBAmsOAgQBAAsgI0ECOgAAIAAoAgAiASgCACEAIAFBADYCACAARQ0BIAEoAgQgF0EEaiEJIAAoAgBBAXYiDiEDIwBBIGsiCCQAIAhBBGogAxCaBiAIKAIMIg0gCCgCCEkEQCAIQQRqIA0Q3AcgCCgCDCENCyAIKAIEIQogCEEEaiADEJoGIAgoAgwiByAIKAIISQRAIAhBBGogBxDcByAIKAIMIQcLIAgoAgQhBiAIQQRqIgVBADYCECAFIAY2AgggBSAKIA1BA3RqIgE2AgQgBSAKNgIAIAVBDGogBiAHQQN0aiIANgIAIAUgASAKa0EDdiIBNgIYIAUgASAAIAZrQQN2IgAgACABSxs2AhQgCCgCGCIAIAgoAhQiAUsEQEQYLURU+yEJQCADuCIqICqgoyEvIAAgAWshAyABQQN0IgAgCCgCBGohBCAIKAIMIABqIQUDQCMAQSBrIgEkAAJAIC8gMKIiLCIpvUIgiKdB/////wdxIgBB/MOk/wNPBEACQAJAAkACQCAAQf//v/8HTQRAIAFBCGogKRBFIAErAxghLSABKwMIIS4gASgCEEEDcQ4DAgMEAQsgKSApoSEpDAULRAAAAAAAAPA/IC4gLqIiK0QAAAAAAADgP6IiKaEiKkQAAAAAAADwPyAqoSApoSArICsgKyArRJAVyxmgAfo+okR3UcEWbMFWv6CiRExVVVVVVaU/oKIgKyAroiIqICqiICsgK0TUOIi+6fqovaJExLG0vZ7uIT6gokStUpyAT36SvqCioKIgLiAtoqGgoJohKQwECyAuIC4gLiAuoiIpoiIqRElVVVVVVcU/oiApIC1EAAAAAAAA4D+iICogKSApICmioiApRHzVz1o62eU9okTrnCuK5uVavqCiICkgKUR9/rFX4x3HPqJE1WHBGaABKr+gokSm+BARERGBP6CgoqGiIC2hoKEhKQwDC0QAAAAAAADwPyAuIC6iIitEAAAAAAAA4D+iIimhIipEAAAAAAAA8D8gKqEgKaEgKyArICsgK0SQFcsZoAH6PqJEd1HBFmzBVr+gokRMVVVVVVWlP6CiICsgK6IiKiAqoiArICtE1DiIvun6qL2iRMSxtL2e7iE+oKJErVKcgE9+kr6goqCiIC4gLaKhoKAhKQwCCyAuIC4gLiAuoiIpoiIqRElVVVVVVcU/oiApIC1EAAAAAAAA4D+iICogKSApICmioiApRHzVz1o62eU9okTrnCuK5uVavqCiICkgKUR9/rFX4x3HPqJE1WHBGaABKr+gokSm+BARERGBP6CgoqGiIC2hoKGaISkMAQsgAEGAgMDyA08EQCApICmiIiogKaIgKiAqICogKqKiICpEfNXPWjrZ5T2iROucK4rm5Vq+oKIgKiAqRH3+sVfjHcc+okTVYcEZoAEqv6CiRKb4EBEREYE/oKCiRElVVVVVVcW/oKIgKaAhKQwBCyAAQYCAwABPBEAgASApRAAAAAAAAHBHoDkDCCABKwMIGgwBCyABIClEAAAAAAAAcDiiOQMIIAErAwgaCyABQSBqJAAgBSApOQMAIwBBIGsiDCQAAnwCQAJAAkACQAJAICy9QiCIp0H/////B3EiAUH8w6T/A08EQCABQf//v/8HSw0BIAxBCGogLBBFIAwrAxghLSAMKwMIISwgDCgCEEEDcQ4DAwQFAgsgLEQAAAAAAADgwWYhAEH/////BwJ/ICyZRAAAAAAAAOBBYwRAICyqDAELQYCAgIB4C0GAgICAeCAAGyAsRAAAwP///99BZBtBACAsICxhG0UEQEQAAAAAAADwPyABQZ7BmvIDSQ0GGgtEAAAAAAAA8D8gLCAsoiItRAAAAAAAAOA/oiIpoSIqRAAAAAAAAPA/ICqhICmhIC0gLSAtIC1EkBXLGaAB+j6iRHdRwRZswVa/oKJETFVVVVVVpT+goiAtIC2iIiogKqIgLSAtRNQ4iL7p+qi9okTEsbS9nu4hPqCiRK1SnIBPfpK+oKKgoiAsRAAAAAAAAACAoqCgoAwFCyAsICyhDAQLICwgLCAsICyiIimiIipESVVVVVVVxT+iICkgLUQAAAAAAADgP6IgKiApICkgKaKiIClEfNXPWjrZ5T2iROucK4rm5Vq+oKIgKSApRH3+sVfjHcc+okTVYcEZoAEqv6CiRKb4EBEREYE/oKCioaIgLaGgoQwDC0QAAAAAAADwPyAsICyiIitEAAAAAAAA4D+iIimhIipEAAAAAAAA8D8gKqEgKaEgKyArICsgK0SQFcsZoAH6PqJEd1HBFmzBVr+gokRMVVVVVVWlP6CiICsgK6IiKiAqoiArICtE1DiIvun6qL2iRMSxtL2e7iE+oKJErVKcgE9+kr6goqCiICwgLaKhoKAMAgsgLCAsICwgLKIiKaIiKkRJVVVVVVXFP6IgKSAtRAAAAAAAAOA/oiAqICkgKSApoqIgKUR81c9aOtnlPaJE65wriublWr6goiApIClEff6xV+Mdxz6iRNVhwRmgASq/oKJEpvgQERERgT+goKKhoiAtoaChmgwBC0QAAAAAAADwPyAsICyiIitEAAAAAAAA4D+iIimhIipEAAAAAAAA8D8gKqEgKaEgKyArICsgK0SQFcsZoAH6PqJEd1HBFmzBVr+gokRMVVVVVVWlP6CiICsgK6IiKiAqoiArICtE1DiIvun6qL2iRMSxtL2e7iE+oKJErVKcgE9+kr6goqCiICwgLaKhoKCaCyEqIAxBIGokACAEICo5AwAgBEEIaiEEIAVBCGohBSAwRAAAAAAAAPA/oCEwIANBAWsiAw0ACwsgCSAGNgIIIAkgDTYCBCAJIAo2AgAgCUEMaiAHNgIAIAhBIGokACAXQYCt4gQ2AmggF0IANwNgIBdBFGohFCAXQeAAaiEAQQAhCyMAQbACayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgDmlBAUYEQCAAKAIIIgRBgJTr3ANGBEAgACgCACIQaUEBRg0CQZTLwgBBKkHAy8IAEMwGAAsgACkDACE1IAJB7ABqIQUCQAJ/IA5BgQRPBEAgAkHgAGpBgCAQrQUgAigCYCEDIAIoAmQgDkGAIGoiAEGAgICAAUkgAEEEdBD9CCEAQcAAIAMgA0HAAE0bIgMQ0QciASAAIAMQ0QdqIgAgAU8gABD9CCAOQYCAgIABSSAOQQR0EP0IIQAgAxDRByIBIAAgAxDRB2oiACABTyAAEP0IQQFBgIAEEP0IIQAgAxDRByIBIAAgAxDRB2oiACABTyAAEP0IDAELIAJB2ABqIA4QrQUgAigCWCEDIAIoAlwLIgEEQCABIAMQhQkiAA0BIAMgARDfCQALIAMhAAsgBSADNgIIIAUgATYCBCAFIAA2AgAgBEHAhD0gBCA1UBsgBEHAhD1LGyETIAIoAnAhDyACKAJsIREgDkGBAkkNAiACQoCEgICAgAE3A3ggAkGIkKDAADYChAFBCCEDA0AgAkGIAWogA2pBgJTr3AM2AgAgA0EQaiIDQcgARw0ACyACKQN4ITEgAkECNgLUASACIDE3A8gBIA5BBHQhCSATuEQAAAAAZc3NQaMgNbqgISogDyARQT9qQUBxIhUgEWsiDWsiCkEEdiEEQQAhAEEAIQMDQCACQcgBaiADQQJ0aigCACIQIA5LDQQgAkGIAmogNSATIBAgESAPEEQCQAJAAkACQAJAAkACQAJAIAtBBEcEQCACKAKYAiEHIAIpA5ACITEgAkGEAWogC2ogAi0AiAIiAToAACAOIBBHBEAgAkGIAmogASAQEKwFIAIoAogCIQUgAkHAADYCrAIgAiANNgLoASACIA82AuQBIA0gD0sNAiACQRk2AuwBIAJBiOLCADYC6AEgAiAKNgLgASACIA4gEGoiFjYC5AEgFkEEdCEBIAQgFkkNAyAWBEAgFUEAIAEQ5AkaCyACQcAANgKsAiACIAEgFWoiBkE/akFAcSAGayIMNgLoASACIAogAWsiATYC5AEgASAMSQ0EIAJBGTYC7AEgAkGI4sIANgLoASACIAEgDGsiAzYC4AEgAiAQNgLkASADQQR2IBBJDQUgBiAMaiIGIBBBBHQiAWohCCAQBEAgBkEAIAEQ5AkaCyACQcAANgKsAiACIAhBP2pBQHEgCGsiDDYC6AEgAiADIAFrIgE2AuQBIAEgDEkNBiACQRk2AuwBIAJBiOLCADYC6AEgAiABIAxrIgE2AuABIAIgDjYC5AEgAUEEdiAOSQ0HIAggDGpBACAJEOQJIQMCQCAQBEAQ+QYgAiACKAJQNgL4ASACIAIpA0g3A/ABICogB7hEAAAAAGXNzUGjIDG6oCAOIBBuuKKjmyIpRAAAAAAAAAAAZiEBQX8CfyApRAAAAAAAAPBBYyApRAAAAAAAAAAAZnEEQCApqwwBC0EAC0EAIAEbIClEAADg////70FkGyIHIQEgBw0BEPkGQevDwgBBNUGgxMIAEIUGAAtB0MLCAEEZQdzJwgAQzAYACwNAIAMgDiAVIBYgBSAQIAYgEEGZAkGaAkGbAhDRASABQQFrIgENAAsQ+QYgAikDOCIxIAetIjSAIjIgAigCQCIDIAduIgEgAyABIAdsa60gMSAyIDR+fUKAlOvcA358IDSAp2oiBUGAlOvcA24iAa18IjEgMlQNCCACQYgBaiALQQR0aiIDIAUgAUGAlOvcA2xrNgIIDAkLIAJBiAFqIAtBBHRqIgMgBzYCCAwICyALQQRBnMnCABDABQALIAJBnAJqQRY2AgAgAkGUAmpBFjYCACACQfwBakIDNwIAIAJBBDYC9AEgAkGox8IANgLwASACQRY2AowCIAIgAkGIAmo2AvgBIAIgAkHkAWo2ApgCIAIgAkHoAWo2ApACIAIgAkGsAmo2AogCDBQLIAJBpAJqQRY2AgAgAkGcAmpBFjYCACACQZQCakEWNgIAIAJB/AFqQgQ3AgAgAkEFNgL0ASACQfTFwgA2AvABIAJBGDYCjAIgAiABNgKsAiACIAJBiAJqNgL4ASACIAJBrAJqNgKgAiACIAJB5AFqNgKYAiACIAJB4AFqNgKQAiACIAJB6AFqNgKIAgwTCyACQZwCakEWNgIAIAJBlAJqQRY2AgAgAkH8AWpCAzcCACACQQQ2AvQBIAJBqMfCADYC8AEgAkEWNgKMAiACIAJBiAJqNgL4ASACIAJB5AFqNgKYAiACIAJB6AFqNgKQAiACIAJBrAJqNgKIAgwTCyACQaQCakEWNgIAIAJBnAJqQRY2AgAgAkGUAmpBFjYCACACQfwBakIENwIAIAJBBTYC9AEgAkH0xcIANgLwASACQRg2AowCIAIgEEEEdDYCrAIgAiACQYgCajYC+AEgAiACQawCajYCoAIgAiACQeQBajYCmAIgAiACQeABajYCkAIgAiACQegBajYCiAIMEgsgAkGcAmpBFjYCACACQZQCakEWNgIAIAJB/AFqQgM3AgAgAkEENgL0ASACQajHwgA2AvABIAJBFjYCjAIgAiACQYgCajYC+AEgAiACQeQBajYCmAIgAiACQegBajYCkAIgAiACQawCajYCiAIMEgsgAkGkAmpBFjYCACACQZwCakEWNgIAIAJBlAJqQRY2AgAgAkH8AWpCBDcCACACQQU2AvQBIAJB9MXCADYC8AEgAkEYNgKMAiACIAk2AqwCIAIgAkGIAmo2AvgBIAIgAkGsAmo2AqACIAIgAkHkAWo2ApgCIAIgAkHgAWo2ApACIAIgAkHoAWo2AogCDBELIAJBlAJqQgA3AgAgAkEBNgKMAiACQYTDwgA2AogCIAJB3MHCADYCkAIgAkGIAmpBjMPCABD8BgALIAMgMTcDACALQQFqIQtBASEDIABBASEARQ0ACwwDC0HcysIAQSVBhMvCABDMBgALAkACQCAOIBBPBEAgAC0ABCEbIA4gEEcgEEEgSXENASAQQf8PcUUNAgwGC0HQy8IAQR1B8MvCABDMBgALQYDMwgBBHkGgzMIAEMwGAAtBsMzCAEEvQeDMwgAQzAYACyACQYgBaiA1IBMgDiARIA8QRCACLQCIASEbIA4hEAwBCyALQQVPDQUgC0UNBAJAIAtBAUYEQCACQYgBaiEBDAELIAJBmAFqIQMgC0EBa0H/////AHEhCCACQYgBaiEBA0AgAiADNgKIAiACIAE2AvABIAMgAQJ/AkAgAkHwAWooAgAiASgCCCIEQYCU69wDRiACQYgCaigCACIAKAIIIgVBgJTr3ANHcQ0AAn9BASAEQYCU69wDRyAFQYCU69wDR3MNABpBACAEQYCU69wDRiAFQYCU69wDRnINABogASkDACIyIAApAwAiMVQNAUEBIDEgMlINABpB/wEgBCAFSQ0AGiAEIAVHCwwBC0H/AQtB/wFxQQFGGyEBIANBEGohAyAIQQFrIggNAAsgAUUNBQsgASgCCCIGQYCU69wDRg0DIAEpAwAhMSALQQR0IQQgAkH4AGohDEEAIQNBACEBAkADQCACQYgBaiADaiIFQQhqKAIAIgBBgJTr3ANGDQQgACAGRgRAIAUpAwAgMVENAgsgDEEEaiEMIAFBAWohASAEIANBEGoiA0cNAAtBwMPCAEErQZzKwgAQzAYACyACQYQBaiABai0AACIbQQhGDQcgAUEBTQRAIAwoAgAhEAwBCyABQQJBvMrCABDABQALIA9FDQAgAigCdBogERBrCyACQYgBaiAbIBAQrAUgAigCjAEhJyACKAKIASEoAkAgDiAQaiIERQRAQcAAIRZBwAAhEQwBCyAEQRAQjgYiFiEDIAQhAQNAIANCgICAgICAgPz/ADcDACADQQhqQoCAgICAgID8/wA3AwAgA0EQaiEDIAFBAWsiAQ0ACyAEQRAQjgYiESEDIAQhAQNAIANCgICAgICAgPz/ADcDACADQQhqQoCAgICAgID8/wA3AwAgA0EQaiEDIAFBAWsiAQ0ACwsgG8BBAnRBrM7CAGooAgAhFSAWIQAgBCIPIQkgECAOIgVJBEAgEEECdCEgIBBBAXQhGANAAkACQAJAQQJBBEEIICAgBSIBRiIHGyABIBhGIgYbIgNBAWsiEyABQQFBAkEDIAcbIAYbdiIFbCIaIA9NBEAgCSAaSQ0BIAkgGmshCSAFRQ0DRAAAAAAAAABAIAG4oyEpIBEgCUEEdGohCyADQQR0QRBrIR1BACENIAAhBkEAIQoDQCAKIQwgCyEDIAYhASANIQggEyEHA0AgCCAaTw0EIAJBGGogKSAMuKIQ+AEgAisDGCEvIAEgAisDICIqOQMAIANBCGogLzkDACADICo5AwAgAUEIaiAvmjkDACAKIAxqIQwgA0EQaiEDIAFBEGohASAIQQFqIQggB0EBayIHDQALIAsgHWohCyAGIB1qIQYgDSATaiENIAUgCkEBaiIKRw0ACwwDC0HcwcIAQSNBrMjCABDMBgALQdzBwgBBI0G8yMIAEMwGAAsgCCAaQczIwgAQwAUACyAPIBprIQ8gACAaQQR0aiEAIAUgEEsNAAsLIAkhE0EAIQkjAEEQayIeJAAgBSAVIgtPBEAgESEGAkAgCwRAIAUgC24hISAPBEAgACAPQQR0aiEBIAAhAwNAIANCgICAgICAgPz/ADcDACADQQhqQoCAgICAgID8/wA3AwAgA0EQaiIDIAFHDQALC0QAAAAAAAAAwCAFuKMhKUEBICEgIUEBTRshGiALQQFrIQ0gC0EEdCEkIAVBBHQhJSAFQQFqIQggC0ECSSEdIAAhASAGIQUMAQtBwOTCAEEZQaTkwgAQzAYACwNAAkAgHQ0AQQEhIiANIQcgCSEMIAEhCiAFIRUgCCEDAkACQAJAA0AgHiApIAy4ohD4ASAhICJsIAlqIh8gD08NASAeKwMIIS8gACAfQQR0IiBqIhggHisDACIqOQMIIBggLzkDACADIA9PDQIgCiAlaiIYQRhqICo5AwAgGEEQaiAvOQMAIBMgH00NAyAGICBqIhggKpoiKjkDCCAYIC85AwAgAyATSQRAIBUgJWoiGEEYaiAqOQMAIBhBEGogLzkDACAiQQFqISIgCSAMaiEMIApBEGohCiAVQRBqIRUgA0EBaiEDIAdBAWsiB0UNBQwBCwsgAyATQYzlwgAQwAUACyAfIA9B3OTCABDABQALIAMgD0Hs5MIAEMAFAAsgHyATQfzkwgAQwAUACyABICRqIQEgBSAkaiEFIAggC2ohCCAJQQFqIgkgGkcNAAsLIB5BEGokACAORQRAQcAAIQZBwAAhDQwFCyAOQRAQjgYiDSEDIA4hAQNAIANCgICAgICAgPz/ADcDACADQQhqQoCAgICAgID8/wA3AwAgA0EQaiEDIAFBAWsiAQ0ACyANIA5BBHRqIQBEAAAAAAAAAMAgDrijISlEAAAAAAAAAAAhLyANIQMDQCACQQhqICkgL6IQ+AEgAisDECEqIANBCGogAisDCDkDACADICo5AwAgL0QAAAAAAADwP6AhLyADQRBqIgMgAEcNAAtBACEIIA5BBBCOBiIGQQAgDkECdCIJEOQJIQpBfyAQaCIAdCEHQQAgDmhrQR9xIQVBACAAa0EfcSEBQQAhAwNAIAggCmogAyAHcSADQRh0IANBgP4DcUEIdHIgA0EIdkGA/gNxIANBGHZyciIAQQR2QY+evPgAcSAAQY+evPgAcUEEdHIiAEECdkGz5syZA3EgAEGz5syZA3FBAnRyIgBBAXZB1arVqgVxIABB1arVqgVxQQF0ciABdnIiAEEYdCAAQYD+A3FBCHRyIABBCHZBgP4DcSAAQRh2cnIiAEEEdkGPnrz4AHEgAEGPnrz4AHFBBHRyIgBBAnZBs+bMmQNxIABBs+bMmQNxQQJ0ciIAQQF2QdWq1aoFcSAAQdWq1aoFcUEBdHIgBXY2AgAgA0EBaiEDIAkgCEEEaiIIRw0ACwwEC0HAw8IAQStBzMrCABDMBgALQcDDwgBBK0GMysIAEMwGAAtBwMPCAEErQfzJwgAQzAYACyALQQRB7MnCABDBBQALIBQgEDYCQCAUQZwCNgI0IBRBnQI2AjAgFEGeAjYCLCAUQZsCNgIoIBRBmgI2AiQgFEGZAjYCICAUIBE2AhggFCAWNgIQIBQgBjYCCCAUIA42AgQgFCANNgIAIBQgGzoASCAUICc2AjwgFCAoNgI4IBQgDjYCRCAUQRxqIAQ2AgAgFEEUaiAENgIAIBRBDGogDjYCACACQbACaiQADAQLQcDDwgBBK0GsysIAEMwGAAsgAkHwAWpBrMnCABD8BgALIAJB8AFqQbzJwgAQ/AYACyACQfABakHMycIAEPwGAAtBgc3DAC0AABpB5ABBBBCECSIARQ0CIABCgYCAgBA3AgAgAEEIaiAXQQRqQdwAEOcJGiAANgIAICNBAzoAAAsgF0HwAGokAAwDC0HwzMAAQStBkNbAABDMBgALQQRB5AAQ3wkACyAXQRBqQgA3AgAgF0EBNgIIIBdB6MzAADYCBCAXQbDMwAA2AgwgF0EEakGc8MEAEPwGAAsLIBlBIGokAAsgHCgCACIDIAMoAgAiAEEBajYCACAAQQBIDQQgEigCCCIAIAAoAgAiAEEBazYCACAAQQFGBEACQCASQQhqKAIAIgVBDGotAABBA0cNACAFQQhqIgEoAgAiACAAKAIAIgBBAWs2AgAgAEEBRw0AIAEQlAILAkAgBUF/Rg0AIAUgBSgCBCIAQQFrNgIEIABBAUcNACAFEGsLCyASQSBqJAAgAw8LAAsgEiATOgAMIBJByMzDADYCCEGn1cEAQSsgEkEIakHU1cEAQeTnwQAQ9gQAC0EEQRAQ3wkACyASQcjMwwA2AgwgEkHQzMMANgIIQafVwQBBKyASQQhqQeTVwQBBhOjBABD2BAALAAtByMzDACAGNgIAQfzUwQBBK0H058EAEMwGAAudBQEHfyMAQcABayIDJAAgA0HMAGpBADoAACADQcgAaiACKAKIATYCACADQcQAaiIIQQA2AgAgA0EYaiABQQhqKQIANwMAIANBIGogAUEQaikCADcDACADQShqIAFBGGopAgA3AwAgA0EANgIwIAMgAkGMAWo2AkAgAyABKQIANwMQIAJBkAFqIgcQ9AchBCAHQQEgA0EQahDPBSACKAKMASIFQfgBahDbBiIGQf8BcSIJRSAEQQFzIAZBCHZB/wFxIAlGckVyRQRAIAVB7AFqQQEQyAYLIANBiAFqIAFBOGooAgA2AgAgA0GAAWogAUEwaikCADcDACADQfgAaiABQShqKQIANwMAIANBAToAjAEgAyABKQIgNwNwIANB0ABqIANB8ABqEJQEAkACQCADKAJQRQRAIANB6ABqIgUgA0HcAGooAgA2AgAgAyADKQJUNwNgIAMoAkRBA0YNASACQaABaiEGAkADQAJAIANBCGogBxCkAQJ/IAMoAggiAQRAIAMoAgwMAQsDQCADQfAAaiAGEI8CIAMoAnAiAUECRg0ACyABQQFrDQEgAygCdCEBIAMoAngLIQQgAUEBRiADQRBqIARGcQ0CIAQgAREBACADKAJEQQNHDQEMBAsLIAMoAkRBA0YNAiACIAgQjwEMAgsgA0HwAGoiASADQRBqQcAAEOcJGiAAQQxqIAFBARCbBCAAQQhqIANB6ABqKAIANgIADAILIAIgA0FAayADKAJUIANB2ABqKAIAEPoIAAsgA0HwAGogA0EQakHAABDnCRogA0G4AWogA0GYAWopAgA3AwAgAyADKQKQATcDsAEgAEEMaiADQbABahCLBiAAQQhqIAUoAgA2AgALIAAgAykDYDcCACADQcABaiQAC50FAQd/IwBBwAFrIgMkACADQcwAakEAOgAAIANByABqIAIoAogBNgIAIANBxABqIghBADYCACADQRhqIAFBCGopAgA3AwAgA0EgaiABQRBqKQIANwMAIANBKGogAUEYaikCADcDACADQQA2AjAgAyACQYwBajYCQCADIAEpAgA3AxAgAkGQAWoiBxD0ByEEIAdBAiADQRBqEM8FIAIoAowBIgVB+AFqENsGIgZB/wFxIglFIARBAXMgBkEIdkH/AXEgCUZyRXJFBEAgBUHsAWpBARDIBgsgA0GIAWogAUE4aigCADYCACADQYABaiABQTBqKQIANwMAIANB+ABqIAFBKGopAgA3AwAgA0EBOgCMASADIAEpAiA3A3AgA0HQAGogA0HwAGoQlQQCQAJAIAMoAlBFBEAgA0HoAGoiBSADQdwAaigCADYCACADIAMpAlQ3A2AgAygCREEDRg0BIAJBoAFqIQYCQANAAkAgA0EIaiAHEKQBAn8gAygCCCIBBEAgAygCDAwBCwNAIANB8ABqIAYQjwIgAygCcCIBQQJGDQALIAFBAWsNASADKAJ0IQEgAygCeAshBCABQQJGIANBEGogBEZxDQIgBCABEQEAIAMoAkRBA0cNAQwECwsgAygCREEDRg0CIAIgCBCPAQwCCyADQfAAaiIBIANBEGpBwAAQ5wkaIABBDGogAUEBEJwEIABBCGogA0HoAGooAgA2AgAMAgsgAiADQUBrIAMoAlQgA0HYAGooAgAQ+ggACyADQfAAaiADQRBqQcAAEOcJGiADQbgBaiADQZgBaikCADcDACADIAMpApABNwOwASAAQQxqIANBsAFqEIsGIABBCGogBSgCADYCAAsgACADKQNgNwIAIANBwAFqJAALnQUBB38jAEHAAWsiAyQAIANBzABqQQA6AAAgA0HIAGogAigCiAE2AgAgA0HEAGoiCEEANgIAIANBGGogAUEIaikCADcDACADQSBqIAFBEGopAgA3AwAgA0EoaiABQRhqKQIANwMAIANBADYCMCADIAJBjAFqNgJAIAMgASkCADcDECACQZABaiIHEPQHIQQgB0EBIANBEGoQzwUgAigCjAEiBUH4AWoQ2wYiBkH/AXEiCUUgBEEBcyAGQQh2Qf8BcSAJRnJFckUEQCAFQewBakEBEMgGCyADQYgBaiABQThqKAIANgIAIANBgAFqIAFBMGopAgA3AwAgA0H4AGogAUEoaikCADcDACADQQA6AIwBIAMgASkCIDcDcCADQdAAaiADQfAAahCUBAJAAkAgAygCUEUEQCADQegAaiIFIANB3ABqKAIANgIAIAMgAykCVDcDYCADKAJEQQNGDQEgAkGgAWohBgJAA0ACQCADQQhqIAcQpAECfyADKAIIIgEEQCADKAIMDAELA0AgA0HwAGogBhCPAiADKAJwIgFBAkYNAAsgAUEBaw0BIAMoAnQhASADKAJ4CyEEIAFBAUYgA0EQaiAERnENAiAEIAERAQAgAygCREEDRw0BDAQLCyADKAJEQQNGDQIgAiAIEI8BDAILIANB8ABqIgEgA0EQakHAABDnCRogAEEMaiABQQAQmwQgAEEIaiADQegAaigCADYCAAwCCyACIANBQGsgAygCVCADQdgAaigCABD6CAALIANB8ABqIANBEGpBwAAQ5wkaIANBuAFqIANBmAFqKQIANwMAIAMgAykCkAE3A7ABIABBDGogA0GwAWoQiwYgAEEIaiAFKAIANgIACyAAIAMpA2A3AgAgA0HAAWokAAudBQEHfyMAQcABayIDJAAgA0HMAGpBADoAACADQcgAaiACKAKIATYCACADQcQAaiIIQQA2AgAgA0EYaiABQQhqKQIANwMAIANBIGogAUEQaikCADcDACADQShqIAFBGGopAgA3AwAgA0EANgIwIAMgAkGMAWo2AkAgAyABKQIANwMQIAJBkAFqIgcQ9AchBCAHQQIgA0EQahDPBSACKAKMASIFQfgBahDbBiIGQf8BcSIJRSAEQQFzIAZBCHZB/wFxIAlGckVyRQRAIAVB7AFqQQEQyAYLIANBiAFqIAFBOGooAgA2AgAgA0GAAWogAUEwaikCADcDACADQfgAaiABQShqKQIANwMAIANBADoAjAEgAyABKQIgNwNwIANB0ABqIANB8ABqEJUEAkACQCADKAJQRQRAIANB6ABqIgUgA0HcAGooAgA2AgAgAyADKQJUNwNgIAMoAkRBA0YNASACQaABaiEGAkADQAJAIANBCGogBxCkAQJ/IAMoAggiAQRAIAMoAgwMAQsDQCADQfAAaiAGEI8CIAMoAnAiAUECRg0ACyABQQFrDQEgAygCdCEBIAMoAngLIQQgAUECRiADQRBqIARGcQ0CIAQgAREBACADKAJEQQNHDQEMBAsLIAMoAkRBA0YNAiACIAgQjwEMAgsgA0HwAGoiASADQRBqQcAAEOcJGiAAQQxqIAFBABCcBCAAQQhqIANB6ABqKAIANgIADAILIAIgA0FAayADKAJUIANB2ABqKAIAEPoIAAsgA0HwAGogA0EQakHAABDnCRogA0G4AWogA0GYAWopAgA3AwAgAyADKQKQATcDsAEgAEEMaiADQbABahCLBiAAQQhqIAUoAgA2AgALIAAgAykDYDcCACADQcABaiQAC8AFAgV/AX4jAEEgayIBJAAgASAAEOAFIAEoAgBFBEAgAUEIai0AACEFIAEoAgQiBEE0ai0AAEUEQCAEQQE6ADQgBEEMaigCACICBEAgBEEIaigCACEAIAJBDGwhAgNAIAAoAgBBDGoiAyADKAIAIgNBAiADGzYCACAAQQxqIQAgAkEMayICDQALCyAEQRhqIgIoAgAhACACQQA2AgAgAUEANgIQIAEgBEEQajYCCCABIAA2AgwgASAEQRRqKAIAIgI2AgAgASACIABBDGxqNgIEAkAgAEUNAANAIAEgAkEMajYCACACKAIAIgBFDQEgAEEMaiIDIAMoAgAiAyACKQIEIganIAMbNgIAIAEgBjcCGCABIAA2AhQgACAAKAIAIgBBAWs2AgAgAEEBRgRAIAFBFGoQhwYLIAEoAgAiAiABKAIERw0ACwsgARD0ASAEQSRqKAIAIgIEQCAEQSBqKAIAIQAgAkEMbCECA0AgACgCAEEMaiIDIAMoAgAiA0ECIAMbNgIAIABBDGohACACQQxrIgINAAsLIARBMGoiAigCACEAIAJBADYCACABQQA2AhAgASAEQShqNgIIIAEgADYCDCABIARBLGooAgAiAjYCACABIAIgAEEMbGo2AgQCQCAARQ0AA0AgASACQQxqNgIAIAIoAgAiAEUNASAAQQxqIgMgAygCACIDIAIpAgQiBqcgAxs2AgAgASAGNwIYIAEgADYCFCAAIAAoAgAiAEEBazYCACAAQQFGBEAgAUEUahCHBgsgASgCACICIAEoAgRHDQALCyABEPQBCwJAIAUNAEHszcMAKAIAQf////8HcUUNABDtCQ0AIARBAToAAQsgBEEAOgAAIAFBIGokAA8LIAEgASgCBDYCFCABIAFBCGotAAA6ABhBxM7AAEErIAFBFGpB8M7AAEHUz8AAEPYEAAv/BQEFfyAAQQhrIgEgAEEEaygCACIDQXhxIgBqIQICQAJAAkACQCADQQFxDQAgA0EDcUUNASABKAIAIgMgAGohACABIANrIgFBoNHDACgCAEYEQCACKAIEQQNxQQNHDQFBmNHDACAANgIAIAIgAigCBEF+cTYCBCABIABBAXI2AgQgAiAANgIADwsgASADEKgBCwJAAkAgAigCBCIDQQJxRQRAIAJBpNHDACgCAEYNAiACQaDRwwAoAgBGDQUgAiADQXhxIgIQqAEgASAAIAJqIgBBAXI2AgQgACABaiAANgIAIAFBoNHDACgCAEcNAUGY0cMAIAA2AgAPCyACIANBfnE2AgQgASAAQQFyNgIEIAAgAWogADYCAAsgAEGAAkkNAiABIAAQ2gFBACEBQbjRwwBBuNHDACgCAEEBayIANgIAIAANAUGAz8MAKAIAIgAEQANAIAFBAWohASAAKAIIIgANAAsLQbjRwwBB/x8gASABQf8fTRs2AgAPC0Gk0cMAIAE2AgBBnNHDAEGc0cMAKAIAIABqIgA2AgAgASAAQQFyNgIEQaDRwwAoAgAgAUYEQEGY0cMAQQA2AgBBoNHDAEEANgIACyAAQbDRwwAoAgAiA00NAEGk0cMAKAIAIgJFDQBBACEBAkBBnNHDACgCACIEQSlJDQBB+M7DACEAA0AgAiAAKAIAIgVPBEAgBSAAKAIEaiACSw0CCyAAKAIIIgANAAsLQYDPwwAoAgAiAARAA0AgAUEBaiEBIAAoAggiAA0ACwtBuNHDAEH/HyABIAFB/x9NGzYCACADIARPDQBBsNHDAEF/NgIACw8LIABBeHFBiM/DAGohAgJ/QZDRwwAoAgAiA0EBIABBA3Z0IgBxRQRAQZDRwwAgACADcjYCACACDAELIAIoAggLIQAgAiABNgIIIAAgATYCDCABIAI2AgwgASAANgIIDwtBoNHDACABNgIAQZjRwwBBmNHDACgCACAAaiIANgIAIAEgAEEBcjYCBCAAIAFqIAA2AgALlgUBC38jAEEwayIDJAAgA0EkaiABNgIAIANBAzoALCADQSA2AhwgA0EANgIoIAMgADYCICADQQA2AhQgA0EANgIMAn8CQAJAAkAgAigCECILRQRAIAJBDGooAgAiAEUNASACKAIIIgEgAEEDdGohBCAAQQFrQf////8BcUEBaiEIIAIoAgAhAANAIABBBGooAgAiBgRAIAMoAiAgACgCACAGIAMoAiQoAgwRBgANBAsgASgCACADQQxqIAFBBGooAgARAwANAyAFQQFqIQUgAEEIaiEAIAFBCGoiASAERw0ACwwBCyACQRRqKAIAIgBFDQAgAEEFdCEMIABBAWtB////P3FBAWohCCACKAIIIQYgAigCACEAA0AgAEEEaigCACIBBEAgAygCICAAKAIAIAEgAygCJCgCDBEGAA0DCyADIAUgC2oiAUEQaigCADYCHCADIAFBHGotAAA6ACwgAyABQRhqKAIANgIoIAFBDGooAgAhB0EAIQpBACEEAkACQAJAIAFBCGooAgBBAWsOAgACAQsgB0EDdCAGaiINKAIEQdEDRw0BIA0oAgAoAgAhBwtBASEECyADIAc2AhAgAyAENgIMIAFBBGooAgAhBAJAAkACQCABKAIAQQFrDgIAAgELIARBA3QgBmoiBygCBEHRA0cNASAHKAIAKAIAIQQLQQEhCgsgAyAENgIYIAMgCjYCFCAGIAFBFGooAgBBA3RqIgEoAgAgA0EMaiABQQRqKAIAEQMADQIgCUEBaiEJIABBCGohACAMIAVBIGoiBUcNAAsLIAggAigCBE8NASADKAIgIAIoAgAgCEEDdGoiACgCACAAKAIEIAMoAiQoAgwRBgBFDQELQQEMAQtBAAsgA0EwaiQAC6oFAgl/An4jAEFAaiICJAAgACgCBCIEQYABaiIFIAAoAgAiByABEPoBAkAgBCgCxAEgBCgCAGogBCgCQCAEKALIAUF/c3FGBEAgBCgCyAEgBCgCQHFFDQELIAEoAgBBDGoiAyADKAIAIgNBASADGzYCAAsgASgCACEBIAAoAggiACkDACELIAAoAggiAEGAlOvcA0YhBgJAAkADQAJAAkACQAJAIAEoAgwiAwRAIANBAWtBAkkNAQwHCyAGDQEQ+QYgAikDGCIMIAtUIAIoAiAiAyAASSALIAxRcXINAiABIAEoAgwiAEEBIAAbNgIMIABFIABBAWtBAklyDQAgAA0GQfzNwABBKEH40sAAEMwGAAsgAkE0aiAFEOAFIAIoAjQNAiACKAI4IgNBBGohCCACQTxqLQAAIQkgA0EMaigCACIGQQxsIQAgA0EIaigCACEBQX8hBQJAAkADQCAARQ0BIABBDGshACAFQQFqIQUgASgCBCEKIAFBDGohASAHIApHDQALIAJBNGogCCAFQYDUwAAQ2QUgAygCDCEGDAELIAJBADYCNAtBACEAIARBnAFqIAYEfyAABSADQRhqKAIARQs6AAACQCAJDQBB7M3DACgCAEH/////B3FFDQAQ7QkNACADQQE6AAELIANBADoAACACKAI0RQ0EIAJBMGogAkE8aigCADYCACACIAIpAjQiCzcDKCALpyIAIAAoAgAiAEEBazYCACAAQQFHDQUgAkEoahCHBgwFCxDRAwwCCyACQQhqIAsgACAMIAMQgwMgAikDCCACKAIQENIDDAELCyACIAIoAjg2AiggAiACQTxqLQAAOgAsQcTOwABBKyACQShqQZDUwABBsNTAABD2BAALQfDMwABBK0GI08AAEMwGAAsgAkFAayQAC6MFAgl/An4jAEFAaiICJAAgACgCBCIEQaABaiIFIAAoAgAiByABEPoBAkAgBCgCACAEKAJAIAQoAsgBQX9zcUYEQCAEKALIASAEKAJAcUUNAQsgASgCAEEMaiIDIAMoAgAiA0EBIAMbNgIACyABKAIAIQEgACgCCCIAKQMAIQsgACgCCCIAQYCU69wDRiEGAkACQANAAkACQAJAAkAgASgCDCIDBEAgA0EBa0ECSQ0BDAcLIAYNARD5BiACKQMYIgwgC1QgAigCICIDIABJIAsgDFFxcg0CIAEgASgCDCIAQQEgABs2AgwgAEUgAEEBa0ECSXINACAADQZB/M3AAEEoQdjSwAAQzAYACyACQTRqIAUQ4AUgAigCNA0CIAIoAjgiA0EEaiEIIAJBPGotAAAhCSADQQxqKAIAIgZBDGwhACADQQhqKAIAIQFBfyEFAkAC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QGsLIgIpAwAgAkEIaikDABDdBgJ/IANByABqIgICfwJAIAICfwJAAkACQCABLQCwAiIGRQRAIApBAWsOAgMFAQsCQAJAAkAgCkEBaw4CAQIACyADQdAAaiABQQhqQYABEOcJGiADQcgAaiADQegAaikDADcDACADQUBrIANB4ABqKQMANwMAIAMgAykDWDcDOAwDCyABQQhqDAQLIAFBCGoMBQsgA0HQAGogAUEIakGAARDnCRogA0HIAGogA0GAAWopAwA3AwAgA0FAayADQfgAaikDADcDACADIANB8ABqKQMANwM4CyADIANBOGo2AlwgAyADQQRqNgJYIAMgA0EQaiICNgJUIAMgATYCUCADQdAAahCMAiABKAJ0IQUgACACQSgQ5wkaIAFB+ABqDAQLIAFBIGoLIgJBEGopAwA3AwAgA0FAayACQQhqKQMANwMAIAMgAikDADcDOCADIANBOGo2AlwgAyADQQRqNgJYIAMgA0EQaiICNgJUIAMgATYCUCADQdAAahCMAiABQYwBaigCACEFIAAgAkEoEOcJGiABQZABagwCCyABQSBqCyICQRBqKQMANwMAIANBQGsgAkEIaikDADcDACADIAIpAwA3AzggAyADQThqNgJcIAMgA0EEajYCWCADIANBEGoiAjYCVCADIAE2AlAgA0HQAGoQjAIgASgCbCEFIAAgAkEoEOcJGiABQfAAagshASAAIAY6ADggACAFNgIsIABBATYCNCAAIAEoAgA2AjAgACAFQQFrNgIoIAMoAgQEQCADKAIIEGsLIANB0AFqJAAMAQtB4I/AAEEZQeyYwAAQzAYACyAAIAQ2AkAgDkHwAGokAAwFCyAGQQhqKQMAIRQgBikDACEVIAhBCGoiBiATIBICfwJAAkACQEICIAEpAwBCAn0iEiASQgJaG6ciDUEBaw4CAQIACyABQfQAagwCCyABQYwBagwBCyABQewAagsoAgAiBSAEEJ8FIAhB2AFqIBUgFCAFIAQQnwUgCEHwAGogBkHoABDnCRpBgc3DAC0AABpB0AFBCBCECSIHRQ0BIAcgCEHwAGpB0AEQ5wkhBSADIAJBIGoiAkYEQEG868EAIQoMBAsgAUH0AGohCSABQYwBaiELIAFB7ABqIQxBvOvBACEKA0AgAkEIaikDACESIAkhBgJAAkACQCANQQFrDgIAAQILIAshBgwBCyAMIQYLIAhB8ABqIAIpAwAgEiAGKAIAIAQQnwVBgc3DAC0AABpB8ABBCBCECSIHRQ0DIAcgCEHwAGpB6AAQ5wkiBiAKNgJsIAYgBTYCaEHY68EAIQogBiEFIAMgAkEQaiICRw0ACwwDCyAIQfwAakIANwIAIAhBATYCdCAIQeTowQA2AnAgCEGw0sEANgJ4IAhB8ABqQZTpwQAQ/AYAC0EIQdABEN8JAAtBCEHwABDfCQALIAAgASAHIAoQVCAAIAQ2AkALIAhBwAJqJAAL0xACDX8EfiMAQcACayIIJAACQAJAAkACQCACIANHBEAgAkEIaikDACESIAIpAwAhEyADIAJBEGoiBkYEQCMAQfAAayIOJAAgDkEIaiICIBMgEgJ/AkACQAJAQgIgASkDAEICfSISIBJCAlobp0EBaw4CAQIACyABQfQAagwCCyABQYwBagwBCyABQewAagsoAgAgBBCfBSMAQdABayIDJAACfwJAAkACQEICIAEpAwBCAn0iEiASQgJaG6ciCkEBaw4CAQIACyABQfQAaiEGIAFB+ABqDAILIAFBjAFqIQYgAUGQAWoMAQsgAUHsAGohBiABQfAAagsgBjUCACESNQIAIRMgA0HQAGoiBiACQegAEOcJGiADIBM3A8ABIAMgEjcDuAEgA0EEaiELIwBBsAFrIgIkAAJAAkACQCAGQegAagJ+AkACQCAGKAJgIgVFDQAgBiAFQQFrNgJgIAYpAxBCAlIEQCACQRBqIAZBEGoiBRDfASACKQMQpw0CIAVCAjcDAAsgBikDAFANACAGKQMIDAILIAtBADYCCCALQoCAgICAATcCAAwCCyACKQMYCxC9BiETIAJBCGpBBCAGKAJgIgkEfyAGKQMAIRICQCAGKQMQQgJRBEBBf0EAIBJCAFIbIQUMAQsgElAEQCAGKAJYIgVFDQQgBSAGKAJcTSEFDAELQX8hBSAGKAJYRQ0DCyAFIAkgBSAJSRsFQQALQQFqIgVBfyAFGyIFIAVBBE0bQQAQzgUgAigCCCEFIAIoAgwiCSATNwMAIAJBNGoiEEEBNgIAIAIgCTYCMCACIAU2AiwgAkE4aiIFIAZB+AAQ5wkaIAJBLGohCSMAQSBrIgwkAAJAIAUoAmAiBkUNACAFQegAaiERIAVBEGohDwNAIAUgBkEBazYCYCARAn4CQCAFKQMQQgJSBEAgDEEIaiAPEN8BIAwpAwinDQEgD0ICNwMACyAFKQMAUA0DIAUpAwgMAQsgDCkDEAsQvQYhEyAFKAJgIQYgCSgCCCINIAkoAgBGBEAgCSANIAYEfyAFKQMAIRICQCAFKQMQQgJRBEBBf0EAIBJCAFIbIQcMAQsgElAEQCAFKAJYIgdFDQcgByAFKAJcTSEHDAELQX8hByAFKAJYRQ0GCyAHIAYgBiAHSxsFQQALQQFqIgdBfyAHGxCuBgsgCSgCBCANQQN0aiATNwMAIAkgDUEBajYCCCAGDQALCyAMQSBqJAAgC0EIaiAQKAIANgIAIAsgAikCLDcCAAsgAkGwAWokACADQRBqIAFBoAJqKAIAQQFqIAMoAgwCfwJAAkACQCAKQQFrDgIBAgALIAFByABqDAILIAFB0ABqDAELIAFBQGsLIgIpAwAgAkEIaikDABDdBgJ/IANByABqIgICfwJAIAICfwJAAkACQCABLQCwAiIGRQRAIApBAWsOAgMFAQsCQAJAAkAgCkEBaw4CAQIACyADQdAAaiABQQhqQYABEOcJGiADQcgAaiADQegAaikDADcDACADQUBrIANB4ABqKQMANwMAIAMgAykDWDcDOAwDCyABQQhqDAQLIAFBCGoMBQsgA0HQAGogAUEIakGAARDnCRogA0HIAGogA0GAAWopAwA3AwAgA0FAayADQfgAaikDADcDACADIANB8ABqKQMANwM4CyADIANBOGo2AlwgAyADQQRqNgJYIAMgA0EQaiICNgJUIAMgATYCUCADQdAAahCMAiABKAJ0IQUgACACQSgQ5wkaIAFB+ABqDAQLIAFBIGoLIgJBEGopAwA3AwAgA0FAayACQQhqKQMANwMAIAMgAikDADcDOCADIANBOGo2AlwgAyADQQRqNgJYIAMgA0EQaiICNgJUIAMgATYCUCADQdAAahCMAiABQYwBaigCACEFIAAgAkEoEOcJGiABQZABagwCCyABQSBqCyICQRBqKQMANwMAIANBQGsgAkEIaikDADcDACADIAIpAwA3AzggAyADQThqNgJcIAMgA0EEajYCWCADIANBEGoiAjYCVCADIAE2AlAgA0HQAGoQjAIgASgCbCEFIAAgAkEoEOcJGiABQfAAagshASAAIAY6ADggACAFNgIsIABBATYCNCAA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AEEcaigCADYCACABIAM2AhAgASAAKQIENwIUIwBBIGsiBCQAIAFBEGoiAigCECEGIAIoAgwhByACKAIIIQUgAigCACEIIAIoAgQhCSAEQRhqIAJBHGooAgA2AgAgBCACKQIUNwMQIAQgCCgCACAJKAIAa0EBIAUoAgAgBSgCBCAHIAYgBEEQahB3IAQpAwAhCiABQQxqIAQoAgg2AgAgASAKNwIEIAFBADYCACAEQSBqJAACfyABKAIARQRAIAFBDGooAgAhA0EBIQQgASgCBCECIAFBCGooAgAMAQtBAiEEIAEoAgQhAiABQQhqKAIACyEFIABBIGoQzAcgAEEsaiADNgIAIABBKGogBTYCACAAQSRqIAI2AgAgACAENgIgIAAoAjAhAwJAIABBPGotAAAiBEUEQCADKAIAIQMMAQsgAygCACIDIAMoAgAiAkEBajYCACACQQBIDQIgASADNgIQCyAAQTRqIgIoAgAgAkEDNgIAQQJGBEAgA0FAayAAQThqKAIAEIoJCwJAIARFDQAgASgCECIAIAAoAgAiAEEBazYCACAAQQFHDQAgAUEQahCXAgsgAUEwaiQADwtBlIrAAEErQeyLwAAQzAYACwALmQQCCX8BfiMAQTBrIgEkACAAKAIAIQMgAEEANgIAAkAgAwRAIAFBHGogAEEMaikCADcCACABQSRqIABBFGopAgA3AgAgAUEsaiAAQRxqKAIANgIAIAEgAzYCECABIAApAgQ3AhQjAEEgayIEJAAgAUEQaiICKAIQIQYgAigCDCEHIAIoAgghBSACKAIAIQggAigCBCEJIARBGGogAkEcaigCADYCACAEIAIpAhQ3AxAgBCAIKAIAIAkoAgBrQQEgBSgCACAFKAIEIAcgBiAEQRBqEHYgBCkDACEKIAFBDGogBCgCCDYCACABIAo3AgQgAUEANgIAIARBIGokAAJ/IAEoAgBFBEAgAUEMaigCACEDQQEhBCABKAIEIQIgAUEIaigCAAwBC0ECIQQgASgCBCECIAFBCGooAgALIQUgAEEgahDMByAAQSxqIAM2AgAgAEEoaiAFNgIAIABBJGogAjYCACAAIAQ2AiAgACgCMCEDAkAgAEE8ai0AACIERQRAIAMoAgAhAwwBCyADKAIAIgMgAygCACICQQFqNgIAIAJBAEgNAiABIAM2AhALIABBNGoiAigCACACQQM2AgBBAkYEQCADQUBrIABBOGooAgAQigkLAkAgBEUNACABKAIQIgAgACgCACIAQQFrNgIAIABBAUcNACABQRBqEJcCCyABQTBqJAAPC0GUisAAQStB7IvAABDMBgALAAvpAgEFfwJAQc3/e0EQIAAgAEEQTRsiAGsgAU0NACAAQRAgAUELakF4cSABQQtJGyIEakEMahBCIgJFDQAgAkEIayEBAkAgAEEBayIDIAJxRQRAIAEhAAwBCyACQQRrIgUoAgAiBkF4cSACIANqQQAgAGtxQQhrIgIgAEEAIAIgAWtBEE0baiIAIAFrIgJrIQMgBkEDcQRAIAAgAyAAKAIEQQFxckECcjYCBCAAIANqIgMgAygCBEEBcjYCBCAFIAIgBSgCAEEBcXJBAnI2AgAgASACaiIDIAMoAgRBAXI2AgQgASACEJMBDAELIAEoAgAhASAAIAM2AgQgACABIAJqNgIACwJAIAAoAgQiAUEDcUUNACABQXhxIgIgBEEQak0NACAAIAQgAUEBcXJBAnI2AgQgACAEaiIBIAIgBGsiBEEDcjYCBCAAIAJqIgIgAigCBEEBcjYCBCABIAQQkwELIABBCGohAwsgAwuNAwEBfwJAIAIEQCABLQAAQTBNDQEgBUECOwEAAkACQAJAIAPBIgZBAEoEQCAFIAE2AgQgA0H//wNxIgMgAk8NASAFQQI7ARggBUECOwEMIAUgAzYCCCAFQSBqIAIgA2siAjYCACAFQRxqIAEgA2o2AgAgBUEUakEBNgIAIAVBEGpB/J/DADYCAEEDIQEgAiAETw0DIAQgAmshBAwCCyAFQQI7ARggBUEAOwEMIAVBAjYCCCAFQf2fwwA2AgQgBUEgaiACNgIAIAVBHGogATYCACAFQRBqQQAgBmsiAzYCAEEDIQEgAiAETw0CIAQgAmsiAiADTQ0CIAIgBmohBAwBCyAFQQA7AQwgBSACNgIIIAVBEGogAyACazYCACAERQRAQQIhAQwCCyAFQQI7ARggBUEgakEBNgIAIAVBHGpB/J/DADYCAAsgBUEAOwEkIAVBKGogBDYCAEEEIQELIAAgATYCBCAAIAU2AgAPC0G8nMMAQSFBiJ/DABDMBgALQZifwwBBH0G4n8MAEMwGAAv6AwEFfyMAQeAAayICJAAgACgCACEBIABBADYCAAJAIAEEQCACQSRqIABBBGpBOBDnCRogAiABNgIgIAJBBGohAyMAQUBqIgEkACABIAJBIGoiBEE8EOcJIQFBgIDAABDHBiIFRQRAQYSAwABBNkGsgcAAEMwGAAsgASAEIAUQZyADQQA2AgAgA0EUaiABQRBqKQMANwIAIANBDGogAUEIaikDADcCACADIAEpAwA3AgQgAUFAayQAAn8gAigCBEUEQCACQShqIAJBGGopAgA3AwAgAiACQRBqKQIANwMgQQEhASACQQxqKAIADAELQQIhASACQQxqKAIACyEDIAIoAgghBCAAQTxqEN4GIABBxABqIAM2AgAgAEFAayAENgIAIAAgATYCPCAAQcgAaiACKQMgNwIAIABB0ABqIAJBKGopAwA3AgAgACgCWCEBAkAgAEHkAGotAAAiA0UEQCABKAIAIQEMAQsgASgCACIBIAEoAgAiBEEBajYCACAEQQBIDQIgAiABNgIgCyAAQdwAaiIEKAIAIARBAzYCAEECRgRAIAFBQGsgAEHgAGooAgAQigkLAkAgA0UNACACKAIgIgAgACgCACIAQQFrNgIAIABBAUcNACACQSBqEJcCCyACQeAAaiQADwtBlIrAAEErQeyLwAAQzAYACwAL+gMBBX8jAEHgAGsiAiQAIAAoAgAhASAAQQA2AgACQCABBEAgAkEkaiAAQQRqQTgQ5wkaIAIgATYCICACQQRqIQMjAEFAaiIBJAAgASACQSBqIgRBPBDnCSEBQYCAwAAQxwYiBUUEQEGEgMAAQTZBrIHAABDMBgALIAEgBCAFEGYgA0EANgIAIANBFGogAUEQaikDADcCACADQQxqIAFBCGopAwA3AgAgAyABKQMANwIEIAFBQGskAAJ/IAIoAgRFBEAgAkEoaiACQRhqKQIANwMAIAIgAkEQaikCADcDIEEBIQEgAkEMaigCAAwBC0ECIQEgAkEMaigCAAshAyACKAIIIQQgAEE8ahDeBiAAQcQAaiADNgIAIABBQGsgBDYCACAAIAE2AjwgAEHIAGogAikDIDcCACAAQdAAaiACQShqKQMANwIAIAAoAlghAQJAIABB5ABqLQAAIgNFBEAgASgCACEBDAELIAEoAgAiASABKAIAIgRBAWo2AgAgBEEASA0CIAIgATYCIAsgAEHcAGoiBCgCACAEQQM2AgBBAkYEQCABQUBrIABB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KQMQQgJSBEAgBEUNAQNAAkAgA0EYaiAHEGQgAykDGFANACAFQQFrIgUNAQwDCwsgBUUNASABQgI3AxAgASkDACEICyAFQQAgCFAbIQYLIAEgASgCoAEiBSAEIAZrIgZrIgQ2AqABIAIgBmsiAiAFIAZGckUEQCABIARBAWs2AqABIAEpAxBCAlIEQCADQRhqIAcQZCADKQMYQgBSDQQgB0ICNwMACyABKQMAQgBSDQILIAFCAjcDAAsgASkDqAFCAlINA0IADAQLIAEpAwgMAQsgAykDIAshCUIBDAELIANBCGogAUGoAWogAhDMASADKQMQIQkgAykDCAshCCAAIAk3AwggACAINwMAIANBQGskAAvlAwEFfyMAQeAAayIBJAAgACgCBCECIABBADYCBAJAIAIEQCABQSRqIABBCGpBOBDnCRogASACNgIgIAFBBGohAyMAQUBqIgIkACACIAFBIGoiBEE8EOcJIQJBgIDAABDHBiIFRQRAQYSAwABBNkGcgcAAEMwGAAsgAiAEIAUQZiADQQA2AgAgA0EUaiACQRBqKQMANwIAIANBDGogAkEIaikDADcCACADIAIpAwA3AgQgAkFAayQAAn8gASgCBEUEQCABQShqIAFBGGopAgA3AwAgASABQRBqKQIANwMgQQEhAiABQQxqKAIADAELQQIhAiABQQxqKAIACyEDIAEoAgghBCAAQUBrEN4GIABByABqIAM2AgAgAEHEAGogBDYCACAAIAI2AkAgAEHMAGogASkDIDcCACAAQdQAaiABQShqIgIpAwA3AgAgAUEgaiAAKAIAEOIFIAEoAiANASACLQAAIQIgASgCJCIAQQE6AAICQCACDQBB7M3DACgCAEH/////B3FFDQAQ7QkNACAAQQE6AAELIABBADoAACABQeAAaiQADwtBlIrAAEErQeyLwAAQzAYACyABIAEoAiQ2AgQgASACLQAAOgAIQb+KwABBKyABQQRqQeyKwABB3IvAABD2BAAL5QMBBX8jAEHgAGsiASQAIAAoAgQhAiAAQQA2AgQCQCACBEAgAUEkaiAAQQhqQTgQ5wkaIAEgAjYCICABQQRqIQMjAEFAaiICJAAgAiABQSBqIgRBPBDnCSECQYCAwAAQxwYiBUUEQEGEgMAAQTZBnIHAABDMBgALIAIgBCAFEGcgA0EANgIAIANB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MCADIAVrIgBrNgIwIAEgAGshAgsgBEEgaiQAIAILmgICBX8BfiMAQUBqIgQkAAJAIAAoAqgBIgUEQCAAQagBaiEDIAFBAWohASAAQawBaigCACEGA0AgAUEBRg0CIARBCGogBSAGKAIMEQAAIAFBAWshASAEKAIIQQFGDQALIAFFDQEgAxC2ByADQQA2AgALIAApAwAiB0ICUQRAIAEhAgwBCyAAKAKgASICIAEgASACSxsiAyECAkAgACkDEEICUgRAQQAhBSADRQ0BIABBEGohBgNAAkAgBEEYaiAGEGQgBCkDGFANACACQQFrIgINAQwDCwsgAkUNASAAQgI3AxAgACkDACEHCyACQQAgB1AbIQULIAAgACgCoAEgAyAFayIAazYCoAEgASAAayECCyAEQUBrJAAgAguVAgIFfwF+IwBBIGsiBCQAAkAgACgCMCIFBEAgAEEwaiEDIAFBAWohASAAQTRqKAIAIQYDQCABQQFGDQIgBEEQaiAFIAYoAgwRAAAgAUEBayEBIAQoAhBBAUYNAAsgAUUNASADELYHIANBADYCAAsgACkDACIHQgJRBEAgASECDAELIAAoAigiAiABIAEgAksbIgMhAgJAIAAvARBBAkcEQEEAIQUgA0UNASAAQRBqIQYDQAJAIARBCGogBhChAyAELwEIRQ0AIAJBAWsiAg0BDAMLCyACRQ0BIABBAjsBECAAKQMAIQcLIAJBACAHUBshBQsgACAAKAIoIAMgBWsiAGs2AiggASAAayECCyAEQSBqJAAgAguaAgIFfwF+IwBBQGoiBCQAAkAgACgCqAEiBQRAIABBqAFqIQMgAUEBaiEBIABBrAFqKAIAIQYDQCABQQFGDQIgBEEIaiAFIAYoAgwRAAAgAUEBayEBIAQoAghBAUYNAAsgAUUNASADELYHIANBADYCAAsgACkDACIHQgJRBEAgASECDAELIAAoAqABIgIgASABIAJLGyIDIQICQCAAKQMQQgJSBEBBACEFIANFDQEgAEEQaiEGA0ACQCAEQRhqIAYQYyAEKQMYUA0AIAJBAWsiAg0BDAMLCyACRQ0BIABCAjcDECAAKQMAIQcLIAJBACAHUBshBQsgACAAKAKgASADIAVrIgBrNgKgASABIABrIQILIARBQGskACACC5UCAgV/AX4jAEEgayIEJAACQCAAKAI4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IANBEGoiACgCFCEHIAAoAhghBiAAKAIAIQUgACgCBCEIIAAoAgghASAAKAIMIQkgAiAAKAIQNgIgIAIgCTYCHCACIAE2AhggAiAINgIUIAIgBTYCECACIAEoAgA2AowBIAJBADYCiAEgAiAGNgKAASACIAJBEGo2AoQBIwBBIGsiACQAIABBCGogAkGAAWoiBkEMaigCACIBIAYoAghrIghBACABIAhPGxDLBSAAQRxqIgxBADYCACAAIAApAwg3AhQjAEEQayIIJAAgBkEMaigCACIBIAYoAghrIgpBACABIApPGyIPIABBFGoiASgCACABKAIIIgprSwRAIAEgCiAPEKwGIAEoAgghCgsgCCABKAIENgIMIAggCjYCCCAIIAFBCGo2AgQjAEEgayIBJAAgBkEMaigCACEPIAYoAgghCiABQRBqIAhBBGoiDUEIaigCADYCACABIA0pAgA3AwggASAGKQIANwIUIAogD0kEQCMAQSBrIgAkACABQRRqIgEoAgAgAEEQaiABKAIEIgFBCGopAgA3AwAgAEEYaiABQRBqKAIANgIAIAAgCjYCHCAAIAEpAgA3AwgjAEEwayICJAAgAkEANgIYIAJBgICAgHg2AiAgAkEYaiILIQMjAEEQayIEJAAoAgAiByAHKAIAIgFBAWo2AgAgAUEASARAAAsgAkEMaiEIIABBCGohBSAEQQRqIQkjAEEwayIAJAAgA0EMaikCACEuIAMoAgghAQJ/IAMoAgBFBEAQ8AcMAQsgAygCBAsaIAAgAUGAgICAeEYEf0EABSAAIC43AgggACABNgIEIABBEGogAEEEahDfAiAAKAIQQYCAgIB4RwRADBILIABBGGooAgAhASAAKAIUCyABEKYDIgY2AgAgBiAGKAIAIgFBAWo2AgACQAJAAkACQCABQQBIDQBBgc3DAC0AABpBGEEEEIQJIgNFDQEgA0EANgIMIAMgBzYCCCADQoKAgIAQNwIAIAAgAzYCEEEAEMAGIgcEQCAHIAcoAgAiAUEBajYCACABQQBIDQELIAAgBxDABiIBNgIgAkAgAUUNACABIAEoAgAiAUEBazYCACABQQFHDQAgAEEgahCZBgsgACgCECIKKAIIIgEEQCABQQhqEOMFC0GBzcMALQAAGkEkQQQQhAkiAUUNAiABIAc2AgggASADNgIEIAEgBjYCACABIAUpAgA3AgwgAUEUaiAFQQhqKQIANwIAIAFBHGogBUEQaikCADcCACAAQSBqIAFBpIzCABDCByAAKQMgIS4gCUEBNgIAIAkgLjcCBCAKIAooAgAiAUEBazYCACABQQFGBEAgAEEQahDBAwsgACgCACIBIAEoAgAiAUEBazYCACABQQFGBEAgABD8BQsgAEEwaiQADAMLAAtBBEEYEN8JAAtBBEEkEN8JAAsgBCkCCCEuIAhBATYCACAIIC43AgQgBEEQaiQADBELIAEoAgggASgCDDYCACABQSBqJAAgCEEQaiQAIAJBJGoiAUEIaiAMKAIANgIAIAEgACkCFDcCACAAQSBqJAACQAJAAkACQAJAAkACQAJAAkAgBygCECIABEAgB0EIaikDACEuIAcpAwAhLyACQQhqIAdBHGooAgAiASABIABwayIBQQEQzgUgAiABNgKIASACIAIpAwg3AoABIAJBMGogAkGAAWoiASAAIC8gLhCWAiACQQA2AlggAkKAgICAEDcCUCACIAUoAggQZSIANgJcIABBDGooAgAhCiAAQRBqKAIAIQwgBSgCECEGIAUoAgghCCAAKAIIIQ8gAiAAQRRqKAIAIhI2ApABIAIgDDYCjAEgAiAKNgKIASACIA82AoQBIAIgAEEYaiIVNgKAASACIAYgCCABEJUBIAIoAgAiAEUNASACQdAAaiAAIAIoAgQiAWpBAWsiACABTyAAEP0IENMHIAUoAhwiAEUNHCAAIAUoAgwiBUsNBiAJKAIEIgEgCSgCCCIWQQV0aiEUIAUgAG4hBiACQfAAaiEYQQEhCSABIQADQCAWIAAgFEciCHJFDQYgGCACQTBqIg0gByAJQQFzIgkbIgVBCGopAwA3AwAgAiAFKQMANwNoIAIgBSgCEDYCeCACIAUpAxg3A2AgByANIAkbIgUpAwAhLiAFKAIQIRcgBSgCGCENIAVBCGopAwAhLyAFKAIcIhAEQCANQQAgEEEDdBDkCRoLIAJBgAFqIAAgASAIGyIREOIFIAIoAoABDQUgAi0AiAEhACACKAKEASIFLQACRQRAA0AgAkGAAWogBSAAQf8BcUEARxDUByACKAKAAQ0FIAItAIgBIQAgAigChAEiBS0AAkUNAAsLIAJBgAFqIBFBBGoQ4AUgAigCgAENBCACLQCIASEbIAIoAoQBIQggAkGQAWogLzcDACACIC43A4gBIAIgFzYCmAEgAiAQNgKEASACIA02AoABIAIgCEEUaikCADcCsAEgAiAIQQxqKQIANwKoASACIAgpAgQ3AqABIAIoAlQhDSACKAJYIRAgAiASNgLMASACIAw2AsgBIAIgCjYCxAEgAiAPNgLAASACIBU2ArwBIAJBgAFqIAJBoAFqIAJB4ABqIAJBvAFqIA0gEBBRIAVBADoAAgJAIBsNAEHszcMAKAIAQf////8HcUUNABDtCQ0AIAhBAToAAQsgCEEAOgAAAkAgAEH/AXENAEHszcMAKAIAQf////8HcUUNABDtCQ0AIAVBAToAAQsgEUEgaiEAIAVBADoAACAGQQFrIgYNAAsMBQsMGgtBvIHAAEErIAJBgAFqQeiBwABBkITAABD2BAALIAIgAi0AiAE6AKQBIAIgAigChAE2AqABQbyBwABBKyACQaABakGIgsAAQcCEwAAQ9gQACyACIAItAIgBOgCkASACIAIoAoQBNgKgAUG8gcAAQSsgAkGgAWpBmILAAEHQhMAAEPYEAAsgAiACLQCIAToApAEgAiACKAKEATYCoAFBvIHAAEErIAJBoAFqQYiCwABBsITAABD2BAALIAkNACAHKAIcIgAgAigCTCIBRw0BIAcoAhggAigCSCAAQQN0EOcJGgsCQCAHKQMAIi8gB0EIaikDACIuhFANACAHKAIcIgBFDQAgB0EYaigCACEFIC55IC95QkB9IC5CAFIbQj+DIS4gAEEDdCEAA0AgBSAFKQMAIC6IQgF8Qn6DIC6GNwMAIAVBCGohBSAAQQhrIgANAAsLIAIgAigCKCIANgKIASACIAIoAiQ2AoQBIAIgADYCgAEgAiAAIAIoAiwiAUEDdGo2AowBIAENASACQQA2AqABIAJBoAFqEJYGIAJBgAFqEO0DIAIoAlwiACAAKAIAIgBBAWs2AgAgAEEBRgRAIAJB3ABqEJQCCyACQdAAahD/ByACKAJEBEAgAkHIAGooAgAQawsgA0EANgIAIAJB0AFqJAAMAgsgACABQaCEwAAQwwUACwALIAMoAgQhASADKAIAIQAgAygCDEEMaigCAA0BDAILQQRBFBDfCQALA0AQ0QMgAygCDEEMaigCAA0ACwsCQCAARQRAIAMoAgwiAEEQai0AAEUEQCAAIAAoAgAiAEEBazYCACAAQQFGBEAgA0EMahCHBgsgA0EwaiQADAILIANBHGpCADcCACADQQE2AhQgA0GcjsAANgIQIANBpI7AADYCGCADQRBqQfC8wQAQ/AYACyAAIAEQ2gkACyAOEJwGIAQoApgBBEAgBCgCnAEQawsgBCgCPARAIAQoAkAQawsgBCgCKARAIAsQawsgBEGwAWokAAwHCyAEQaQBakHOADYCACAEIAU2AjwgBEICNwJYIARBAzYCUCAEQfS1wQA2AkwgBEHOADYCnAEgBCAANgKAASAEIARBmAFqNgJUIAQgBEGAAWo2AqABIAQgBEE8ajYCmAEgBEEYaiAEQShqIARBzABqQZC8wQAQhgcACyACEM0HIQAgBEGkAWpBzwA2AgAgBCAANgI8IARBzwA2ApwBIARCAjcCWCAEQQM2AlAgBEHwtsEANgJMIAQgBjYCgAEgBCAEQYABajYCoAEgBCAEQTxqNgKYASAEIARBmAFqNgJUIARBGGogBEEoaiAEQcwAakGgvMEAEIQHAAsgBEGkAWpBzQA2AgAgBCAANgI8IARCAjcCWCAEQQM2AlAgBEGAuMEANgJMIARBzQA2ApwBIAQgBjYCgAEgBCAEQZgBajYCVCAEIARBgAFqNgKgASAEIARBPGo2ApgBIARBGGogBEEoaiAEQcwAakGwvMEAEIcHAAsgBEHIAGpBLDYCACAEIC43A4gBIAQgLzcDgAEgBEICNwJYIARBAzYCUCAEQei4wQA2AkwgBEEsNgJAIAQgMDcDoAEgBCAxNwOYASAEIARBPGo2AlQgBCAEQZgBajYCRCAEIARBgAFqNgI8IARBGGogBEEoaiAEQcwAakHAvMEAEIUHAAsgBEHYAGpCADcCACAEQQE2AlAgBEG8ucEANgJMIARBhJDBADYCVCAEQcwAakHQvMEAEPwGAAtB/6DAAEErQby2wAAQzAYAC0G8usEAQdQAQeC8wQAQzAYACwwCC0HQk8EAQSsgE0EvakGMlMEAQfTOwQAQ9gQACyMAIgAhGCAAQYADa0FAcSIEJAAgBCAHNgJEIAQgAUEYaigCACIFQQFrIgY2AkggBCADKAIMIgA2AlgCQAJAAkACQAJAAkACQAJAIAAgBkYEQCACKAIQIghFDQ0gBCACQRxqKAIAIAhuIgk2AkggBCADKAIQIgA2AlggACAJRw0BIAQgCDYCSCAEIAMoAggiADYCWCAAIAhHDQIgBCABQQhqKQMAIjA3A1AgBCABKQMAIjE3A0ggBCACQQhqKQMAIi43A2AgBCACKQMAIi83A1ggMCAxhCIzQgBSIC4gL4QiMkIAUnMgLyAxhSAuIDCFhFAgM1AgMlByckVyDQMgB0UNBCAyUEUgL3sgLnt8QgJacQ0FIAVFDQYgAUEUaigCACEHIARBwAFqIgAgAxC+AyAEQcgAaiAAEKUFIAMoAhwiAUUNDkEAIQAgBEE4aiAGIAFuIgoQzQUgBEEANgJgIAQgBCkDODcCWCAEIAEgCmwiBTYCfCAEQYQBaiAGIAVrNgIAIAQgATYCiAEgBCAHNgJ4IAQgByAFQQN0ajYCgAEgBCgCUCEFIAQgBCgCTCIJNgKoASAEQQEgAXQiATYCuAEgBCAFIAFBAWtxIgE2ArQBIAQgBSABayIBNgKsASAEIAkgAUEYbGo2ArABIARBwAFqIARB+ABqIARBqAFqEKQDIAQoAuwBIgEgBCgC6AEiCUsEQCABIAlrIQUgBCgC0AEiC0EDdCEOIAQoAsABIAkgC2xBA3RqIQEgBCgC1AEgBCgC5AEiDEEYbCIPIAlsaiEJA0AgBCgCWCAARgRAIARB2ABqIAAQpQYgBCgCYCEACyAEKAJcIABBBHRqIgAgDDYCDCAAIAk2AgggACALNgIEIAAgATYCACAEIAQoAmBBAWoiADYCYCABIA5qIQEgCSAPaiEJIAVBAWsiBQ0ACwsgACAKRw0HIARBhAFqIARB4ABqKAIANgIAIAQgBCkCWDcCfCACKAIQIgC4EKoBITUgBEEAOwF4IAQgByAGQQN0aikDAEIBQT5BfwJ/IDWbIjVEAAAAAAAA8EFjIDVEAAAAAAAAAABmIgFxBEAgNasMAQtBAAtBACABGyA1RAAA4P///+9BZBsiAWtBP3GthnwgAUF/c0E/ca2IPgKQASAEQagBaiACQRhqKAIAIAIoAhwgABC3AyAEKAKwASIARQ0KIARB6AFqIAAgBCgCrAEiAU06AAAgBEHkAWogASAAbiIHNgIAIARB4AFqIAA2AgAgBEHYAWogBCgCqAEiBTYCACAEQcwBakEANgIAIARB3AFqIAAgB2wiADYCACAEQdQBaiABIABrNgIAIARB0AFqIAUgAEEDdGo2AgAgBEIANwLEASAEQdQANgLAASAEQcABaiIAIARBkAFqEIEDIAQgBCgCRDYCyAEgBEEANgLEASAEIAM2AsABIARB6ABqIgcgABCmBSAEQdwCakEBOgAAIARB1AJqQgQ3AgAgBEHMAmpCADcCACAEQcQCakKAgICAwAA3AgAgBEEAOwHAAiAEQgA3A4ACIARCADcDwAFBgc3DAC0AABpBgAJBwAAQhAkiAUUEQEHAAEGAAhDfCQALIAEgAEHAARDnCSIBQQA6AMgBIAFCgYCAgBA3A8ABIARBMGoiBSABNgIEIAUgATYCACAEKAI0IQEgBCAEKAIwNgKYASAEQQE2ApQBIAQgATYCoAEgBEEBNgKcASAEIAgQZSIONgKkASAEQbQBaiAOQRBqKQIANwIAIAQgDkEYajYCqAEgBCAOKQIINwKsASAEIAI2AtgBIAQgAzYCwAEgBCAEQZwBajYC3AEgBCAEQZQBajYC1AEgBCAEQcQAajYC0AEgBCAEQagBajYCzAEgBCAHNgLIASAEIARB+ABqNgLEASMAQUBqIgckABCaBSECQYHNwwAtAAAaAkACQEEUQQQQhAkiAQRAIAFBADoAECABQQA2AgwgASACNgIIIAFCgYCAgBA3AgAgByABNgIUIAdBMGogAEEYaikCADcDACAHQShqIABBEGopAgA3AwAgB0EgaiAAQQhqKQIANwMAIAcgACkCADcDGCAHIAdBFGo2AjgjAEHgAWsiAiQAIAdBGGoiACgCHCEPIAAoAhghBiAAKAIUIQEgACgCICEDIAAoAhAhCCAAKAIAIQUgACgCBCEJIAAoAgghECACIAAoAgwiCjYCMCACIBA2AiwgAiAJNgIoIAIgBTYCJCACIAgoAgA2AqABIAJBADYCnAEgAiADNgKUASACIAE2ApABIAIgAkEkajYCmAEjAEEgayIBJAAgAUEIaiACQZABaiIDQRBqKAIAIgAgAygCDGsiCEEAIAAgCE8bEMsFIAFBHGoiC0EANgIAIAEgASkDCDcCFCMAQRBrIggkACADQRBqKAIAIgAgAygCDGsiCUEAIAAgCU8bIgwgAUEUaiIAKAIAIAAoAggiCWtLBEAgACAJIAwQrAYgACgCCCEJCyAIIAAoAgQ2AgwgCCAJNgIIIAggAEEIajYCBCMAQSBrIgAkACADQRBqKAIAIQwgAygCDCEJIABBHGogA0EIaigCADYCACAAQRBqIAhBBGoiDUEIaigCADYCACAAIAMpAgA3AhQgACANKQIANwMIIAkgDEkEQCMAQTBrIgEkACAAQRRqIgMoAgAhACMAQRBrIgIkACACQQhqIQcCQAJAAkACQAJAAkAgACgCACIEQQFrDgIBAgALIAAoAgQiACAAKAKAAiIFQQFqNgKAAiAFQQBODQIMAwsgACgCBCIAIAAoAsABIgVBAWo2AsABIAVBAEgNAgwBCyAAKAIEIgAgACgCOCIFQQFqNgI4IAVBAEgNAQsgByAANgIEIAcgBDYCAAwBCwALIAIoAgwhACABQQhqIgcgAigCCDYCACAHIAA2AgQgAkEQaiQAIAMoAgQgASkDCCEuIAFBJGogAygCCCICQQhqKQIANwIAIAEgCTYCLCABIC43AhQgASACKQIANwIcIwBBMGsiAiQAIAJBADYCGCACQYCAgIB4NgIgIAJBGGoiCyEDIwBBEGsiBSQAKAIAIgQgBCgCACIAQQFqNgIAIABBAEgEQAALIAJBDGohCCABQRRqIQcgBUEEaiEJIwBBMGsiACQAIANBDGopAgAhLiADKAIIIQECfyADKAIARQRAEPAHDAELIAMoAgQLGiAAIAFBgICAgHhGBH9BAAUgACAuNwIIIAAgATYCBCAAQRBqIABBBGoQ3wIgACgCEEGAgICAeEcEQAwRCyAAQRhqKAIAIQEgACgCFAsgARCmAyIGNgIAIAYgBigCACIBQQFqNgIAAkACQAJAAkAgAUEASA0AQYHNwwAtAAAaQRhBBBCECSIDRQ0BIANBADYCDCADIAQ2AgggA0KCgICAEDcCACAAIAM2AhBBABDABiIEBEAgBCAEKAIAIgFBAWo2AgAgAUEASA0BCyAAIAQQwAYiATYCIAJAIAFFDQAgASABKAIAIgFBAWs2AgAgAUEBRw0AIABBIGoQmQYLIAAoAhAiCigCCCIBBEAgAUEIahDjBQtBgc3DAC0AABpBKEEEEIQJIgFFDQIgASAENgIIIAEgAzYCBCABIAY2AgAgASAHKQIANwIMIAFBFGogB0EIaikCADcCACABQRxqIAdBEGopAgA3AgAgAUEkaiAHQRhqKAIANgIAIABBIGogAUG0jMIAEMIHIAApAyAhLiAJQQE2AgAgCSAuNwIEIAogCigCACIBQQFrNgIAIAFBAUYEQCAAQRBqEMEDCyAAKAIAIgEgASgCACIBQQFrNgIAIAFBAUYEQCAAEPwFCyAAQTBqJAAMAwsAC0EEQRgQ3wkAC0EEQSgQ3wkACyAFKQIIIS4gCEEBNgIAIAggLjcCBCAFQRBqJAAMEAsgB0EIaiEXIAAoAgggACgCDDYCACAAQSBqJAAgCEEQaiQAIAJBNGoiAEEIaiALKAIANgIAIAAgASkCFDcCACABQSBqJAACQAJAAkACQAJAAkACQAJAAkAgBigCECIABEAgBkEIaikDACEuIAYpAwAhLyACQRhqIAZBHGooAgAiASABIABwayIBQQEQzgUgAiABNgKYASACIAIpAxg3ApABIAJBQGsgAkGQAWoiASAAIC8gLhCWAiACQQA2AmwgAkKAgICAEDcCZCAFKAIQIQAgBSgCCCEDIAJBoAFqIApBEGooAgA2AgAgAkGYAWogCkEIaikCADcDACACIAopAgA3A5ABIAJBEGogACADIAEQlQEgAigCECIARQ0BIAJB5ABqIAAgAigCFCIBakEBayIAIAFPIAAQ/QgQ0wcgBSgCHCIARQ0bIAUoAgwiASAAbiESIAAgAUsNByACQYABaiEbQQEhCQNAIAJBCGohFSMAQRBrIgskAAJAAkACQAJAIA8oAgBBAWsOAgECAAsgDygCBCEBIwBB0ABrIgAkACAAQYCU69wDNgIgIABCADcDGCAAQThqQQA2AgAgAEEwakIANwMAIABCADcDKCALQQhqIggCfwJAIAEgAEEoahDJAg0AA0ACQAJAIAAoAiAiA0GAlOvcA0YNACAAKQMYIS4Q+QYgACkDCCIvIC5UDQAgLiAvUg0BIAAoAhAgA08NAQtBzNHDACgCAEUEQBCYAyEDQczRwwApAgAhLkHQ0cMAIAM2AgBBzNHDAEEBNgIAIAAgLjcCRCAAQcQAahD2BgtB0NHDACgCACEDQdDRwwBBADYCAAJAIANFBEAgABCYAyIDNgJAIAAgATYCSCAAIABBGGo2AkwgACAAQShqNgJEIABBxABqIABBQGsQbiADIAMoAgAiA0EBazYCACADQQFHDQEgAEFAaxCHBgwBCyADQQxqQgA3AgAgACADNgJAIAAgATYCSCAAIABBGGo2AkwgACAAQShqNgJEIABBxABqIABBQGsQbkHQ0cMAKAIAIQVB0NHDACADNgIAIAAgBTYCRCAFRQ0AIAUgBSgCACIDQQFrNgIAIANBAUcNACAAQcQAahCHBgsgASAAQShqEMkCRQ0BDAILCyAIQQA6AAFBAQwBCyAAKAIoIgMEQCADIAAoAiw2AgAgAygCBCEDIAFBgAFqEIEBIAggAzYCBEEADAELIAhBAToAAUEBCzoAACAAQdAAaiQADAILIA8oAgQhAEEAIQVBACEIIwBB0ABrIgMkACADQYCU69wDNgIgIANCADcDGCADQThqQQA2AgAgA0EwakIANwMAIANCADcDKCALQQhqIg0CfwJAIAAgA0EoahCTAg0AA0ACQAJAIAMoAiAiAUGAlOvcA0YNACADKQMYIS4Q+QYgAykDCCIvIC5UDQAgLiAvUg0BIAMoAhAgAU8NAQtBzNHDACgCAEUEQBCYAyEBQczRwwApAgAhLkHQ0cMAIAE2AgBBzNHDAEEBNgIAIAMgLjcCRCADQcQAahD2BgtB0NHDACgCACEBQdDRwwBBADYCAAJAIAFFBEAgAxCYAyIBNgJAIAMgADYCSCADIANBGGo2AkwgAyADQShqNgJEIANBxABqIANBQGsQcSABIAEoAgAiAUEBazYCACABQQFHDQEgA0FAaxCHBgwBCyABQQxqQgA3AgAgAyABNgJAIAMgADYCSCADIANBGGo2AkwgAyADQShqNgJEIANBxABqIANBQGsQcUHQ0cMAKAIAIQxB0NHDACABNgIAIAMgDDYCRCAMRQ0AIAwgDCgCACIBQQFrNgIAIAFBAUcNACADQcQAahCHBgsgACADQShqEJMCRQ0BDAILCyANQQA6AAFBAQwBCwJAIANBKGoiACgCCCIMRQRAQQEhBQwBCyAMIABBDGooAgAiAUEDdGpBBGohEQNAIBEtAABBAXFFDQALIAwgAUEDdGooAgAhCEEAIQACQCABQQFqIgFBH0YNACARIBEoAgAiEUECcjYCACABIQAgEUEEcQ0ADAELAkAgAEEdTQRAIABBHmshASAAQQN0IAxqQQRqIQADQCAALQAAQQJxRQRAIAAgACgCACIRQQRyNgIAIBFBAnFFDQMLIABBCGohACABQQFqIgENAAsLIAwQawsLIAMgCDYCBCADIAU2AgAgAygCAEUEQCANIAMoAgQ2AgRBAAwBCyANQQE6AAFBAQs6AAAgA0HQAGokAAwBCyALQQhqIQwgDygCBCERQQAhBSMAQeAAayIAJAAgAEGAlOvcAzYCECAAQgA3AwggAEEoakEANgIAIABBIGpCADcDACAAQgA3AxggAEHIAGogERDgBQJAAkAgACgCSEUEQCAAQdAAai0AACENAkAgACgCTCIBQQxqKAIAIgNFDQAgAUEEaiEZIANBDGwhCBDcBiEaIAFBCGooAgAhAwNAAkAgAygCACIWQRRqKAIAIBpGDQAgFkEMaiIUIBQoAgAiFCADQQRqKAIAIBQbNgIAIBQNACADQQhqKAIAIgMEQCAWQRBqIAM2AgALIABBMGogGSAFQfDTwAAQ2QUgACgCMEUNAiAAQdAAaiAAQThqKAIAIgM2AgAgACAAKQIwNwNIIAAgAzYCKAJAIA0NAEHszcMAKAIAQf////8HcUUNABDtCQ0AIAFBAToAAQsgAUEAOgAAQQAhA0EAIQUCQCAAQRhqKAIQIgFFBEBBASEIDAELIAEtAAkEQCABKAIAQQAhCCABQQA2AgAEQCABKAIEIQUgAUEBOgAIDAILQfDMwABBK0H0z8AAEMwGAAsDQCABLQAIRQ0ACyABKAIAQQAhCCABQQA2AgBFBEBB8MzAAEErQeTPwAAQzAYACyABKAIEIQUgARBrCyAAIAU2AgQgACAINgIAAkAgACgCAEUEQCAMIAAoAgQ2AgQMAQtBASEDIAxBAToAAQsgDCADOgAAIAAoAkgiASABKAIAIgFBAWs2AgAgAUEBRw0FIABByABqEIcGDAULIANBDGohAyAFQQFqIQUgCEEMayIIDQALCyABQTRqLQAARQRAQczRwwAoAgBFBEAQmAMhA0HM0cMAKQIAIS5B0NHDACADNgIAQczRwwBBATYCACAAIC43AkggAEHIAGoQ9gYLQdDRwwAoAgAhA0HQ0cMAQQA2AgACQCADRQRAIAAQmAMiAzYCRCAAIA06AFggACABNgJUIAAgETYCUCAAIABBCGo2AkwgACAAQRhqNgJIIABBMGogAEHIAGogAEHEAGoQSyADIAMoAgAiAUEBazYCACABQQFHDQEgAEHEAGoQhwYMAQsgA0EMakIANwIAIAAgAzYCRCAAQdsAaiAAQcMAai0AADoAACAAIA06AFggACABNgJUIAAgETYCUCAAIAAvAEE7AFkgACAAQQhqNgJMIAAgAEEYajYCSCAAQTBqIABByABqIABBxABqEEtB0NHDACgCACEBQdDRwwAgAzYCACAAIAE2AkggAUUNACABIAEoAgAiAUEBazYCACABQQFHDQAgAEHIAGoQhwYLIAApAzAiLkL/AYNCAlENAiAMIC43AgAMAwsgDEGBAjsBAAJAIA0NAEHszcMAKAIAQf////8HcUUNABDtCQ0AIAFBAToAAQsgAUEAOgAADAILIAAgACgCTDYCMCAAIABB0ABqLQAAOgA0QcTOwABBKyAAQTBqQfDOwABBhNDAABD2BAALEJgDGkHwzMAAQStBtNXAABDMBgALIABB4ABqJAALIAstAAghACAVIAsoAgw2AgQgFSAANgIAIAtBEGokACACKAIIDQMgECgCCCIAIAIoAgwiAU0NBCAbIAJBQGsiAyAGIAlBAXMiCRsiAEEIaikDADcDACACIAApAwA3A3ggAiAAKAIQNgKIASACIAApAxg3A3AgECgCBCEIIAYgAyAJGyIAKQMAIS4gACgCECELIAAoAhghAyAAQQhqKQMAIS8gACgCHCIFBEAgA0EAIAVBA3QQ5AkaCyACQZABaiAIIAFBBXRqIgAQ4gUgAigCkAEEQCACIAItAJgBOgC0ASACIAIoApQBNgKwAUG8gcAAQSsgAkGwAWpBiILAAEHIg8AAEPYEAAsgAigClAEiAS0AAkUNBSACLQCYASEIIAJBkAFqIABBBGoQ4AUgAigCkAENBiACLQCYASEMIAIoApQBIQAgAkGgAWogLzcDACACIC43A5gBIAIgCzYCqAEgAiAFNgKUASACIAM2ApABIAIgAEEUaikCADcCwAEgAiAAQQxqKQIANwK4ASACIAApAgQ3ArABIAJB2AFqIApBEGooAgA2AgAgAkHQAWogCkEIaikCADcDACACIAopAgA3A8gBIAJBkAFqIAJBsAFqIAJB8ABqIAJByAFqIAIoAmggAigCbBBRAkAgDA0AQezNwwAoAgBB/////wdxRQ0AEO0JDQAgAEEBOgABCyAAQQA6AAAgAUEAOgACAkAgCA0AQezNwwAoAgBB/////wdxRQ0AEO0JDQAgAUEBOgABCyABQQA6AAAgEkEBayISDQALIAlFDQYMBwsMGQtBvIHAAEErIAJBkAFqQeiBwABBiIPAABD2BAALQbyBwABBKyACQZABakH4gcAAQaiDwAAQ9gQACyABIABBuIPAABDABQALQdiDwABB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gAEgASADRw0AIAAgBjYCBCAAQQE2AgAgAEEIaiAHNgIADAELIAAgAjYCAAsgBEEMahD3BiAEQRBqJAAL+gECA38CfiMAQTBrIgIkACACIAE2AiggAkEYaiACQShqEO4GIAIoAighASAAAn8gAigCGEUEQCAAIAE2AgRBAQwBCyACKQMgIQUgAULAABAAIgMQASEEIANBhAFPBEAgAxACCyABQYQBTwRAIAEQAgsgAiAENgIsIAJBCGogAkEsahDuBgJAIAIoAghFBEAgAigCLCEBDAELIAIpAxAiBhADIQEgAigCLCABEAQgAUGEAU8EQCABEAILIAIoAiwhAUUNACABQYQBTwRAIAEQAgsgACAFNwMIIABBEGogBjcDAEEADAELIAAgATYCBEEBCzYCACACQTBqJAAL+gECA38CfiMAQTBrIgIkACACIAE2AiggAkEYaiACQShqEO4GIAIoAighASAAAn8gAigCGEUEQCAAIAE2AgRBAQwBCyACKQMgIQUgAULAABAAIgMQASEEIANBhAFPBEAgAxACCyABQYQBTwRAIAEQAgsgAiAENgIsIAJBCGogAkEsahDuBgJAIAIoAghFBEAgAigCLCEBDAELIAIpAxAiBhAAIQEgAigCLCABEAQgAUGEAU8EQCABEAILIAIoAiwhAUUNACABQYQBTwRAIAEQAgsgACAFNwMIIABBEGogBjcDAEEADAELIAAgATYCBEEBCzYCACACQTBqJAAL9AYCCn8FfAJAAkAgASgCACIHKAJEIgZBAXQiBQRAIAQgBCAFbiINIAVsayIEQQAgBkH/////B3EiBSAEIAVJIgwbayEGIwBBIGsiBCQAQZzGwwAtAABB/wFGBEAQ2AkLIAQgBygCRCIFNgIAIAQgAzYCBAJAAkACQAJAIAMgBUYEQCADIAZNDQEgB0EMaigCACEIIAcoAgghBSAHKAIEIQogBygCACELIAQgAzYCACADaUEBRw0CIAcoAkAhCSAEIAo2AgQgAyAKRw0DAkACQAJAAkAgCQRAIANBAWshByADIAluQQFrDgIDAgELQdDCwgBBGUH8zcIAEMwGAAsgAyAIIAMgCEkbIgNFDQIDQCALIAUoAgAgBmwgB3FBBHRqIggrAwAhDyACQQhqIAgrAwg5AwAgAiAPOQMAIAVBBGohBSACQRBqIQIgA0EBayID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AAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDPASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvuAQIFfwJ+IwBBMGsiAyQAAkACQCABKAKoASIERQ0AIAFBqAFqIQUgAkEBaiECIAFBrAFqKAIAIQYCQAJAAkACQANAIAJBAUYNASADQSBqIAQgBigCDCIHEQAAIAJBAWshAiADKAIgQQFGDQALIAJFDQEMAgsgBigCDCEHCyADQRBqIAQgBxEAACADKQMQIginDQFBACECCyAFELYHIAVBADYCAAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDNASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvrAQIFfwJ+IwBBMGsiAyQAAkACQCABKAIwIgRFDQAgAUEwaiEFIAJBAWohAiABQTRqKAIAIQYCQAJAAkACQANAIAJBAUYNASADQSBqIAQgBigCDCIHEQAAIAJBAWshAiADKAIgQQFGDQALIAJFDQEMAgsgBigCDCEHCyADQRBqIAQgBxEAACADKQMQIginDQFBACECCyAFELYHIAVBADYCAAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDQASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvrAQIFfwJ+IwBBMGsiAyQAAkACQCABKAI4IgRFDQAgAUE4aiEFIAJBAWohAiABQTxqKAIAIQYCQAJAAkACQANAIAJBAUYNASADQSBqIAQgBigCDCIHEQAAIAJBAWshAiADKAIgQQFGDQALIAJFDQEMAgsgBigCDCEHCyADQRBqIAQgBxEAACADKQMQIginDQFBACECCyAFELYHIAVBADYCAAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDXASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvtAQIFfwJ+IwBBMGsiAyQAAkACQCABKAJIIgRFDQAgAUHIAGohBSACQQFqIQIgAUHMAGooAgAhBgJAAkACQAJAA0AgAkEBRg0BIANBIGogBCAGKAIMIgcRAAAgAkEBayECIAMoAiBBAUYNAAsgAkUNAQwCCyAGKAIMIQcLIANBEGogBCAHEQAAIAMpAxAiCKcNAUEAIQILIAUQtgcgBUEANgIADAELIAMpAxghCQwBCyABKQMAQgJRBEBCACEIDAELIAMgASACENIBIAMpAwghCSADKQMAIQgLIAAgCTcDCCAAIAg3AwAgA0EwaiQAC+4BAgV/An4jAEEwayIDJAACQAJAIAEoAqgBIgRFDQAgAUGoAWohBSACQQFqIQIgAUGsAWooAgAhBgJAAkACQAJAA0AgAkEBRg0BIANBIGogBCAGKAIMIgcRAAAgAkEBayECIAMoAiBBAUYNAAsgAkUNAQwCCyAGKAIMIQcLIANBEGogBCAHEQAAIAMpAxAiCKcNAUEAIQILIAUQtgcgBUEANgIADAELIAMpAxghCQwBCyABKQMAQgJRBEBCACEIDAELIAMgASACEMwBIAMpAwghCSADKQMAIQgLIAAgCTcDCCAAIAg3AwAgA0EwaiQAC+0BAgV/An4jAEEwayIDJAACQAJAIAEoAkgiBEUNACABQcgAaiEFIAJBAWohAiABQcwAaigCACEGAkACQAJAAkADQCACQQFGDQEgA0EgaiAEIAYoAgwiBxEAACACQQFrIQIgAygCIEEBRg0ACyACRQ0BDAILIAYoAgwhBwsgA0EQaiAEIAcRAAAgAykDECIIpw0BQQAhAgsgBRC2ByAFQQA2AgAMAQsgAykDGCEJDAELIAEpAwBCAlEEQEIAIQgMAQsgAyABIAIQ0wEgAykDCCEJIAMpAwAhCAsgACAJNwMIIAAgCDcDACADQTBqJAAL7QECBX8CfiMAQTBrIgMkAAJAAkAgASgCaCIERQ0AIAFB6ABqIQUgAkEBaiECIAFB7ABqKAIAIQYCQAJAAkACQANAIAJBAUYNASADQSBqIAQgBigCDCIHEQAAIAJBAWshAiADKAIgQQFGDQALIAJFDQEMAgsgBigCDCEHCyADQRBqIAQgBxEAACADKQMQIginDQFBACECCyAFELYHIAVBADYCAAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDWASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvrAQIFfwJ+IwBBMGsiAyQAAkACQCABKAIoIgRFDQAgAUEoaiEFIAJBAWohAiABQSxqKAIAIQYCQAJAAkACQANAIAJBAUYNASADQSBqIAQgBigCDCIHEQAAIAJBAWshAiADKAIgQQFGDQALIAJFDQEMAgsgBigCDCEHCyADQRBqIAQgBxEAACADKQMQIginDQFBACECCyAFELYHIAVBADYCAAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDAASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvrAQIFfwJ+IwBBMGsiAyQAAkACQCABKAI4IgRFDQAgAUE4aiEFIAJBAWohAiABQTxqKAIAIQYCQAJAAkACQANAIAJBAUYNASADQSBqIAQgBigCDCIHEQAAIAJBAWshAiADKAIgQQFGDQALIAJFDQEMAgsgBigCDCEHCyADQRBqIAQgBxEAACADKQMQIginDQFBACECCyAFELYHIAVBADYCAAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDUASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvuAQICfwN+IwBBQGoiAiQAAkAgASgCqAEiAwRAIAJBCGogAyABQawBaigCACgCDBEAACACKQMQIQUgAikDCCIEQv////8PgyIGQgFRDQEgAUGoAWoiAxC2ByADQQA2AgAgBkIAUg0BCwJAIAEpAwAiBEICUgRAIAEoAqABIgMNAQtCACEEDAELIAEgA0EBazYCoAECQCABKQMQQgJSBEAgAkEYaiABQRBqEGQgAikDGEIAUg0BIAFCAjcDECABKQMAIQQLIAEpAwghBQwBCyACKQMgIQVCASEECyAAIAU3AwggACAENwMAIAJBQGskAAvuAQICfwN+IwBBQGoiAiQAAkAgASgCqAEiAwRAIAJBCGogAyABQawBaigCACgCDBEAACACKQMQIQUgAikDCCIEQv////8PgyIGQgFRDQEgAUGoAWoiAxC2ByADQQA2AgAgBkIAUg0BCwJAIAEpAwAiBEICUgRAIAEoAqABIgMNAQtCACEEDAELIAEgA0EBazYCoAECQCABKQMQQgJSBEAgAkEYaiABQRBqEGMgAikDGEIAUg0BIAFCAjcDECABKQMAIQQLIAEpAwghBQwBCyACKQMgIQVCASEECyAAIAU3AwggACAENwMAIAJBQGsk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aCADIBE2AmQgAyAQNgJgIAMgDzYCXCADIA42AlggAyANNgJUIAMgCjYCUCADIAk2AkwgAyAINgJIIAMgFDYCOCADIBY5AzAgAyAMNgIcIAMgBzYCGCADIAs2AgQgAyAGNgIAIANBEGogAkEQaikDADcDACADQShqIAJBIGopAwA3AwAMAgsgAigCLCEBIANBAjYCACADIAE2AgQMAQsgAigCLCEBIANBAjYCACADIAE2AgQLIAJBQGskACAAAn4gBSgCCEECRwRAIABBCGogBUEIakH4ABDnCRpCAQwBCyAAIAUoAgw2AghCAgs3AwAMAQsgBSgCDCEBIABCAjcDACAAIAE2AggLIAVBgAFqJAAL5wECAn8DfiMAQSBrIgIkAAJAIAEoAkgiAwRAIAJBEGogAyABQcwAaigCACgCDBEAACACKQMYIQUgAikDECIEQv////8PgyIGQgFRDQEgAUHIAGoiAxC2ByADQQA2AgAgBkIAUg0BCwJAIAEpAwAiBEICUgRAIAEoAkAiAw0BC0IAIQQMAQsgASADQQFrNgJAAkAgASkDEEICUgRAIAIgAUEQahCyAyACKQMApw0BIAFCAjcDECABKQMAIQQLIAEpAwghBQwBCyACKQMIIQVCASEECyAAIAU3AwggACAENwMAIAJBIGokAAvnAQICfwN+IwBBIGsiAiQAAkAgASgCSCIDBEAgAkEQaiADIAFBzABqKAIAKAIMEQAAIAIpAxghBSACKQMQIgRC/////w+DIgZCAVENASABQcgAaiIDELYHIANBADYCACAGQgBSDQELAkAgASkDACIEQgJSBEAgASgCQCIDDQELQgAhBAwBCyABIANBAWs2AkACQCABKQMQQgJSBEAgAiABQRBqELEDIAIpAwCnDQEgAUICNwMQIAEpAwAhBAsgASkDCCEFDAELIAIpAwghBUIBIQQLIAAgBTcDCCAAIAQ3AwAgAkEgaiQAC9ABAQh/IwBBEGsiAyQAAkAgAUEUaigCACIIIAEoAhAiBUYEQEEBIQQMAQsgASAFQQN0aiEGQQEhBANAAkAgASAFQQFqIgU2AhAgBkEEaigCACEJIANBCGogByAEIAYoAgAiAiACIARJGyIEENYHIAMoAghFDQAgAygCDCECIAMgCSAEENYHIAMoAgBFDQAgAiACIAMoAgRqIgJLDQAgBkEI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BiMAQdAAayICJAACQCABKAIIIgUgASgCDEYEQEICIQgMAQsgASAFQQRqNgIIIAJBKGogBSgCABB7An4gAigCKARAIAIoAiwhASACQSUQ8AUgAigCACEHIAIoAgRBr4/BAEElEOcJIQUgAkElNgIQIAIgBTYCDCACIAc2AgggBUElEAUhBSACQQhqEP8HIAFBhAFPBEAgARACCwJAIAYoAgBFDQAgBigCBCIBQYQBSQ0AIAEQAgsgBiAFNgIEIAZBATYCAEIADAELIAJBIGogAkHIAGopAwA3AwAgAkEYaiACQUBrKQMANwMAIAJBEGogAkE4aikDADcDACACIAIpAzA3AwhCAQshCCAEIAIpAwg3AwggBEEgaiACQSBqKQMANwMAIARBGGogAkEYaikDADcDACAEQRBqIAJBEGopAwA3AwALIAQgCDcDACACQdAAaiQAIAACfgJAIAMpAygiCEICUQ0AIANBIGoiASADQcgAaikDADcDACADQRhqIgIgA0FAaykDADcDACADQRBqIgQgA0E4aikDADcDACADIAMpAzA3AwggCFANACAAIAMpAwg3AwggAEEgaiABKQMANwMAIABBGGogAikDADcDACAAQRBqIAQpAwA3AwBCAQwBC0IACzcDACADQdAAaiQAC40EAgZ/AX4jAEHQAGsiAyQAIANBKGohBCABKAIQIQYjAEHQAGsiAiQAAkAgASgCCCIFIAEoAgxGBEBCAiEIDAELIAEgBUEEajYCCCACQShqIAUoAgAQiAICfiACKAIoBEAgAigCLCEBIAJBJRDwBSACKAIAIQcgAigCBEHljsEAQSUQ5wkhBSACQSU2AhAgAiAFNgIMIAIgBzYCCCAFQSUQBSEFIAJBCGoQ/wcgAUGEAU8EQCABEAILAkAgBigCAEUNACAGKAIEIgFBhAFJDQAgARACCyAGIAU2AgQgBkEBNgIAQgAMAQsgAkEgaiACQcgAaikDADcDACACQRhqIAJBQGspAwA3AwAgAkEQaiACQThqKQMANwMAIAIgAikDMDcDCEIBCyEIIAQgAikDCDcDCCAEQSBqIAJBIGopAwA3AwAgBEEYaiACQRhqKQMANwMAIARBEGogAkEQaikDADcDAAsgBCAINwMAIAJB0ABqJAAgAAJ+AkAgAykDKCIIQgJRDQAgA0EgaiIBIANByABqKQMA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CGogASAEIANBFGoQywIgAygCDCEBIAMoAghFBEAgACAENgIAIAAgATYCBAwCCyABQYGAgIB4Rg0BIAFFDQAgASADQRBqKAIAEN8JAAsQ+wYACyADQSBqJAALyQEBA38jAEEgayICJAACQAJAIAFBAWoiAUUNAEEIIAAoAgAiBEEBdCIDIAEgASADSRsiASABQQhNGyIDQX9zQR92IQECQCAERQRAIAJBADYCGAwBCyACIAQ2AhwgAkEBNgIYIAIgACgCBDYCFAsgAkEIaiABIAMgAkEUahDLAiACKAIMIQEgAigCCEUEQCAAIAM2AgAgACABNgIEDAILIAFBgYCAgHhGDQEgAUUNACABIAJBEGooAgAQ3wkACxD7BgALIAJBIGokAAvLAQECfyMAQTBrIgUkACAFIAI2AgACQCACBEAgASgCCCIGIAJwRQ0BIAVBKGpBKTYCACAFQRBqQgI3AgAgBUEDNgIIIAVByLjAADYCBCAFQRY2AiAgBSAGNgIsIAUgBUEcajYCDCAFIAU2AiQgBSAFQSxqNgIcIAVBBGpB4LjAABD8BgALQYCgwABBOUHAt8AAEMwGAAsgACADNwMAIAAgAjYCECAAIAQ3AwggACABKQIANwIUIABBHGogAUEIaigCADYCACAFQTBqJAAL6wEDAX8BfAF+IwBBMGsiAyQAIAEoAgBFBEAgAyAAIAErAwggAUEQaisDABDmAiADKwMAIgQgBBCGCKEgArqiEIYIIgREAAAAAAAA4MNmIQACfiAEmUQAAAAAAADgQ2MEQCAEsAwBC0KAgICAgICAgIB/CyEFIANBMGokACACQv///////////wAgBUKAgICAgICAgIB/IAAbIARE////////30NkG0IAIAQgBGEbIgJCP4eDIAJ8DwsgA0EgakIANwIAIANBATYCGCADQfjGwQA2AhQgAyADQSxqNgIcIANBFGpBsMfBABD8BgALqwEBAX8gAAJ/AkACfwJAAkAgAQRAIAJBAEgNASADKAIEBEAgA0EIaigCACIEBEAgAygCACAEIAEgAhCNCAwFCwsgAkUNAkGBzcMALQAAGiACIAEQhAkMAwsgAEEANgIEIABBCGogAjYCAAwDCyAAQQA2AgQMAgsgAQsiAwRAIAAgAzYCBCAAQQhqIAI2AgBBAAwCCyAAIAE2AgQgAEEIaiACNgIA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MGokACAIKAIIIQECQCAIKAIYIgJBgICAgHhHBEAgACAIKQIMNwIEIABBDGogCEEUaigCADYCACAAQRRqIAhBHGpBJBDnCRogACACNgIQDAELIABBgYCAgHg2AhALIAAgATYCAAsgCEFAayQAC8IEAgl/A34jAEEwayICJAAgAkEANgIEIAJBIGogAUEIaikCADcDACACIAEpAgA3AxggAiACQQRqNgIoIAJBDGohByMAQUBqIgEkACABQRhqIAJBGGoiAxD9AgJAIAEpAxhQBEAgB0EANgIIIAdCgICAgIABNwIAIAMQ5wUMAQsgARDMBSABQShqIgUpAwAhCyABQTBqKQMAIQwgAUE4aikDACENIAEoAgAhBiABKAIEIgQgASkDIDcDACAEQRhqIA03AwAgBEEQaiAMNwMAIARBCGogCzcDACABQRRqIgpBATYCACABIAQ2AhAgASAGNgIMIAUgA0EQaigCADYCACABQSBqIANBCGopAgA3AwAgASADKQIANwMYIwBBMGsiAyQAIANBCGogAUEYaiIJEP0CIAMpAwhQRQRAIAFBDGohBCADQRBqIQUDQCAEKAIIIgYgBCgCAEYEQCAEIAYQqQYLIAQoAgQgBkEFdGoiCCAFKQMANwMAIAhBGGogBUEYaikDADcDACAIQRBqIAVBEGopAwA3AwAgCEEIaiAFQQhqKQMANwMAIAQgBkEBajYCCCADQQhqIAkQ/QIgAykDCFBFDQALCyAJEOcFIANBMGokACAHQQhqIAooAgA2AgAgByABKQIMNwIACyABQUBrJAACQCACKAIERQRAIAAgAikCDDcCACAAQQhqIAJBFGooAgA2AgAMAQsgACACKAIINgIEIABBgICAgHg2AgAgAigCDEUNACACKAIQEGsLIAJBMGokAAvCBAIJfwN+IwBBMGsiAiQAIAJBADYCBCACQSBqIAFBCGopAgA3AwAgAiABKQIANwMYIAIgAkEEajYCKCACQQxqIQcjAEFAaiIBJAAgAUEYaiACQRhqIgMQ/AICQCABKQMYUARAIAdBADYCCCAHQoCAgICAATcCACADEOcFDAELIAEQzAUgAUEoaiIFKQMAIQsgAUEwaikDACEMIAFBOGopAwAhDSABKAIAIQYgASgCBCIEIAEpAyA3AwAgBEEYaiANNwMAIARBEGogDDcDACAEQQhq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CGoiBCgCRCILQf8BTQRAIAJB2ABqIgVB4JnAACkDACIhNwMAIAJB0ABqIgxB2JnAACkDACIiNwMAIAJByABqIhFB0JnAACkDACIjNwMAIAJByJnAACkDACIkNwNAIAJBQGsiDSALEMoCIAJBOGoiCyAFKQMANwMAIAJBMGoiDiAMKQMANwMAIAJBKGoiEiARKQMANwMAIAIgAikDQDcDICAFICE3AwAgDCAiNwMAIBEgIzcDACACICQ3A0AgAkEgaiANEKsBIAJBGGogCykDADcDACACQRBqIA4pAwA3AwAgAkEIaiASKQMANwMAIAIgAikDIDcDACAFIARBGGopAwA3AwAgDCAEQRBqKQMANwMAIBEgBEEIaikDADcDACACIAQpAwA3A0ADQCACQUBrIAhqIgQgBCkDACACIAhqKQMAgzcDACAIQQhqIghBIEcNAAsgByACKQNANwMAIAdBGGogAkHYAGopAwA3AwAgB0EQaiACQdAAaikDADcDACAHQQhqIAJByABqKQMANwMADAELIAcgBCkDADcDACAHQRhqIARBGGopAwA3AwAgB0EQaiAEQRBqKQMANwMAIAdBCGogBEEIaikDADcDAAsgAkHgAGokAAsgA0HwAGokACAGRQ0BIBNBgAFqIQtBACENIwBBgAFrIgQkAAJAIAogBmdBH3NsIhZB/wFNBEAgBEH4AGoiAiALQRhqKQMANwMAIARB8ABqIgMgC0EQaikDADcDACAEQegAaiIHIAtBCGopAwA3AwAgBCALKQMANwNgIARB4ABqIBZBAWtBARDkASAEQdgAaiACKQMANwMAIARB0ABqIAMpAwA3AwAgBEHIAGogBykDADcDACAEIAQpA2A3A0ADQCAEQUBrIA1qIgIgAikDACANQcjKwQBqKQMAgzcDACANQQhqIg1BIEcNAAsgBEEYaiAEQdgAaiIXKQMANwMAIARBEGogBEHQAGoiGCkDADcDACAEQQhqIARByABqIhkpAwA3AwAgBCAEKQNANwMAQQAhDSAEQfgAaiIaQfjLwQApAwA3AwAgBEHwAGoiG0Hwy8EAKQMANwMAIARB6ABqIhxB6MvBACkDADcDACAEQeDLwQApAwA3A2BBACECIwBBgAFrIgMkACAEQZCLwQAQuQNBAWpB/wFxQQJPBEAgA0EYaiAEQRhqIgIpAwA3AwAg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E0EQahD0BSEBQQAMAQtBASElIBMoAhALIQIgACAlNgIIIAAgAjYCBCAAIAE2AgAgE0HQAWokAAvvEgIafwN+IwBBwAJrIg8kAAJAIAEEQCABKAIAIhNBf0YNAUEBIRcgASATQQFqNgIAIA9BCGohFCMAQcACayINJAAgDUEIaiEYIwBBwAJrIgwkACAMQQhqIgcgAUEIaiIFENsFAn9B8ABB9AAgDCkDCFAbIAdqLQAIBEAgDEEIaiMAQcACayIHJAACQAJAQQBBkN7AACgCABEFACIQBEAgECgCAA0BIBBBfzYCACAQQQhqIQ4jAEHAAWsiAyQAAkAgBRDhBSIaRQRAIANBCGogBUGUAmooAgAgBUGYAmooAgAQlAYgAygCDCECIAMoAgghBAJAAkACQEICIAUpAwBCAn0iHCAcQgJaGyIcp0EBaw4CAQIACyADQUBrIAVBCGpBgAEQ5wkaIANBOGogA0HwAGopAwA3AwAgA0EwaiADQegAaikDADcDACADIANB4ABqKQMANwMoDAMLIANBOGogBUEwaikDADcDACADQTBqIAVBKGopAwA3AwAgAyAFQSBqKQMANwMoDAILIANBOGogBUEwaikDADcDACADQTBqIAVBKGopAwA3AwAgAyAFQSBqKQMANwMoDAELIAMgBUGkAmooAgAgBUGoAmooAgAQlAYgAygCBCECIAMoAgAhBAJAAkACQEICIAUpAwBCAn0iHCAcQgJaGyIcp0EBaw4CAQIACyADQUBrIAVBCGpBgAEQ5wkaIANBOGogA0HYAGopAwA3AwAgA0EwaiADQdAAaikDADcDACADIAMpA0g3AygMAgsgA0E4aiAFQRhqKQMANwMAIANBMGogBUEQaikDADcDACADIAUpAwg3AygMAQsgA0E4aiAFQRhqKQMANwMAIANBMGogBUEQaikDADcDACADIAUpAwg3AygLIANBGGogA0EwaikDADcDACADQSBqIANBOGopAwA3AwAgAyAENgJAIAMgAykDKDcDECADIAI2AkQgB0GQAmohESADQUBrIRIgAkEGdEHAAWohAiADQRBqIRsCfwJAAkACQCAcp0EBaw4CAQIACyAFQcgAagwCCyAFQdAAagwBCyAFQUBrCyIEKQMAIRwgBEEIaikDACEdIwBBQGoiCCQAIAhBCGogAiASKAIEQQFqIgZs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IANBQGsgBUEIakGAARDnCRogA0E4aiADQfAAaikDADcDACADQTBqIANB6ABqKQMANwMAIAMgA0HgAGopAwA3AygMAwsgA0E4aiAFQTBqKQMANwMAIANBMGogBUEoaikDADcDACADIAVBIGopAwA3AygMAgsgA0E4aiAFQTBqKQMANwMAIANBMGogBUEoaikDADcDACADIAVBIGopAwA3AygMAQsgAyAFQaQCaigCACAFQagCaigCABCUBiADKAIEIQIgAygCACEIAkACQAJAQgIgBSkDAEICfSIcIBxCAlobIhynQQFrDgIBAgALIANBQGsgBUEIakGAARDnCRogA0E4aiADQdgAaikDADcDACADQTBqIANB0ABqKQMANwMAIAMgAykDSDcDKAwCCyADQThqIAVBGGopAwA3AwAgA0EwaiAFQRBqKQMANwMAIAMgBSkDCDcDKAwBCyADQThqIAVBGGopAwA3AwAgA0EwaiAFQRBqKQMANwMAIAMgBSkDCDcDKAsgA0EYaiADQTBqKQMANwMAIANBIGogA0E4aikDADcDACADIAg2AkAgAyADKQMoNwMQIAMgAjYCRCAKQZACaiEZIANBQGshCCACQQZ0QcABaiEEIANBEGohGgJ/AkACQAJAIBynQQFrDgIBAgALIAVByABqDAILIAVB0ABqDAELIAVBQGsLIgIpAwAhHCACQQhqKQMAIR1BwARqIQxBACECIwBB0ABrIgkkACAIKAIEIAlCADcDGCAJQgA3AxADQCAJQRBqIAJqIAwQ1QY6AAAgAkEBaiICQRBHDQALIAkpAxghHiAJKQMQIR8gCUEIaiAEQQEQzgUgCSAENgJMIAkgCSkDCDcCRCAJQRBqIQcgCUHEAGohBkEBaiELIwBBIGsiAiQAAkACQCAcIB2EUEUgHHsgHXt8QgJacUUEQCAGKAIIRQ0BIwBBIGsiBCQAIBwgHYRQIBx7IB17fEICVHJFBEAgBEEUakIANwIAIARBATYCDCAEQei9wAA2AgggBEH8n8AANgIQIARBCGpB3MXAABD8BgALIAcgHDcDECAHIB83AwAgByALNgIgIAdBGGogHTcDACAHIB43AwggByAGKQIANwIkIAdBLGogBkEIaigCADYCACAEQSBqJAAgAkEgaiQADAILIAJBFGpCADcCACACQQE2AgwgAkHg3MAA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ADcDkARQDQYgHCkDACE+IAMpA6gEIT8gAykDmAQhQCADKALEBCEmIAspAwALIT0gAygCwAQhCSADKAK8BCENIAMoArgEIQogA0HICWogPTcDACADQbgJaiA+NwMAIAMgPzcDwAkgAyBANwOwCSADICY2AtwJIAMgCTYC2AkgAyANNgLUCSADIAo2AtAJIAMgBTYCrAkgAyAINgKoCSADQZgOaiADQagJaiADKALwBBEAACADKAKYDiITRQ0FIANB4AxqIAdBNBDnCRogAygC+AQiHSADKAL8BEYNBSADIB1BCGo2AvgEIANBrAxqIANB4AxqQTQQ5wkaIANBqAlqIBIQigMgAygC4AoiHkUNBSADQZgOaiADQagJaiIKQbgBEOcJGiADKALkCiEFIAogFBCKAyADKALgCiIRRQRAIB4QawwGCyADQbAGaiIIIANBqAlqIh9BuAEQ5wkaIAMoAuQKIQkgA0HgDGoiCiADQZgOaiINQbgBEOcJGiAPIApBuAEQ5wkhCiAHIANBrAxqQTQQ5wkaIAMgEzYCmA4gHSkDACE9IB8gCkG4ARDnCRogAyAFNgLkCiADIB42AuAKIA4gCEG4ARDnCRogAyAJNgKkDCADIBE2AqAMIAQgDSA9ICIgHxBGIAMoAuAKEGsgAygCoAwQayADKALcBCINIAMoAuAEIgVPDQALDAQLIAMgCjYC7AcgBhCDByEAIANBDGpBzgA2AgAgA0G0CWpCAjcCACADQc4ANgIEIAMgADYCkAQgA0EDNgKsCSADQdycwQA2AqgJIAMgA0GQBGo2AgggAyADQewHajYCACADIAM2ArAJIANBqAlqQYigwQAQ/AYACyAEENgHIQAgA0EMakHPADYCACADQbQJakICNwIAIAMgAEEBajYC7AcgA0HPADYCBCADQQM2AqwJIANBvJ7BADYCqAkgAyAGKAIgNgKQBCADIANBkARqNgIIIAMgA0HsB2o2AgAgAyADNgKwCSADQagJakGYoMEAEPwGAAsgA0EMakHNADYCACADQbQJakICNwIAIAMgDTYC7AcgA0EDNgKsCSADQfCfwQA2AqgJIANBzQA2AgQgAyAKNgKQBCADIAM2ArAJIAMgA0GQBGo2AgggAyADQewHajYCACADQagJakGooMEAEPwGAAsgAyADLQCoCToAkARB0JPBAEErIANB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DAELIAgoAgghASAAQgU3AwAgACABNgIICyAIQZACaiQAC48BAgN/AX4jAEEgayICJAAgASgCAEGAgICAeEYEQCABKAIMIQMgAkEcaiIEQQA2AgAgAkKAgICAEDcCFCACQRRqQZztwgAgAxBsGiACQRBqIAQoAgAiAzYCACACIAIpAhQiBTcDCCABQQhqIAM2AgAgASAFNwIACyAAQaj4wgA2AgQgACABNgIAIAJBIGokAAuNAgEDfyMAQTBrIgUkACAFIAE2AgwgAWlBAUcEQCAFQRxqQgE3AgAgBUECNgIUIAVBvJTAADYCECAFQRY2AiwgBSAFQShqNgIYIAUgBUEMajYCKCAFQRBqQcyUwAAQ/AYACyAFQRBqIgYgAUEBdBCeBCMAQTBrIgQkACAGKAIIIgFpQQFHBEAgBEEUakIBNwIAIARBATYCDCAEQZyTwAA2AgggBEEWNgIoIAQgATYCLCAEIARBJGo2AhAgBCAEQSxqNgIkIARBCGpB3JPAABD8BgALIARBEGogBkEIaigCADYCACAEIAYpAgA3AwggACAEQQhqIAFBAXYgAiADEJYCIARBMGokACAFQTBqJAALiwECAn8BfiMAQSBrIgIkACABIABBGGoQpQQiA0UEQCACIAA1AhA3AwggASgCECgCACACQQhqIgNBCBCLCSACIAA1AhQ3AwggASgCECgCACADQQgQiwkgACkDACEEIAIgAEEIaikDADcDECACIAQ3AwggAkHAADYCGCADIAEQkAYhAwsgAkEgaiQAIAMLjgEBBn8jAEEQayIDJAAgASgCACIFRQRAQZSKwABBK0GEisAAEMwGAAsgASgCDCEGIAEoAhAhByABKAIIIQQgASgCBCEIIANBCGogAUEcaigCADYCACADIAEpAhQ3AwAgACAFKAIAIAgoAgBrIAIgBCgCACAEKAIEIAYgByADEHYgAUEgahDMByADQRBqJAALjgEBBn8jAEEQayIDJAAgASgCACIFRQRAQZSKwABBK0GEisAAEMwGAAsgASgCDCEGIAEoAhAhByABKAIIIQQgASgCBCEIIANBCGogAUEcaigCADYCACADIAEpAhQ3AwAgACAFKAIAIAgoAgBrIAIgBCgCACAEKAIEIAYgByADEHcgAUEgahDMByADQRBqJAALfgEBfyMAQUBqIgIkACACQczfwAA2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IQogAygCICEUIAhFDQIgCiAIQQN0IgRqIRUgCiECA0AgAiANENUGrUIBgzcDACACQQhqIQIgBEEIayIEDQALIAMgBSkDACIdNwNIIAMgBUEIaikDACIeNwNQIANB2ABqIAkgHSAeEJwFIANB+ABqIAcpAwAgB0EIaikDABDOAyAdeyAee3whISADQfAAaigCACIQQQN0IhZBCGshFyADQewAaigCACIJIBBBAWsiEUEDdGohGCAHQShqKAIAIQ4gA0HIAmohGUIBISAgCCENIAohBwNAIA1FICCnRXINBSAZIBw3AwAgAyAfNwPAAiADQQE2ArwCIAMgDjYCuAIgA0EIaiADQbgCahCRByADKAIYIhpFDQUgEEUNBCAIQQFrIg8gCEshGyAHKQMAISMgA0H4AGogCSARIB0gHhC1BgJAICFCAVINACADQcgAakGEq8EAEIsDISQgEUUNACAXIQQgCSECA0AgAiACKQMAICR+NwMAIAJBCGohAiAEQQhrIgQNAAsLIAdBCGohB0EAIA8gGxsgIEIAIAhBAUsbISAgDUEBayENIA5BCGohDiAYIBopAwA3AwAgFiEEIAkhAgNAIAIgAikDACAjfjcDACACQQhqIQIgBEEIayIEDQALIAUgA0HYAGoQ4AYhCCAHIBVHDQALDAQLIANB1ABqQSw2AgAgAyAcNwPAAiADIB83A7gCIANCAjcChAEgA0EDNgJ8IANBuKnBADYCeCADQSw2AkwgAyAdNwNgIAMgHjcDWCADIANByABqNgKAASADIANB2ABqNgJQIAMgA0G4Amo2AkggA0EoaiADQThqIANB+ABqQeSqwQAQhQcACyADQeQAakHOADYCACADQYQBakICNwIAIAMgCUEBazYCSCADQQM2AnwgA0G8qsEANgJ4IANBzgA2AlwgAyACQQFrNgK4AiADIANB2ABqNgKAASADIANBuAJqNgJgIAMgA0HIAGo2AlggA0H4AGpB9KrBABD8BgALIANB2ABqIAkgHiAdEJwFIANB+ABqIAcpAwAgB0EIaikDABDOAwwBC0H/oMAAQStB7LbAABDMBgALIAUgIhDhBiADKAKwAhBrIAMoAmgEQCADQewAaigCABBrCyAUBEAgChBrCyADQdACaiQAIAYgEiATbCAMbjYCLCAGIAw2AiggBkEBNgIkIAYgDEEBazYC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aikDADcDACACIAFBIGopAwA3A0gMAgsgAkHYAGogAUEwaikDADcDACACQdAAaiABQShqKQMANwMAIAIgAUEgaikDADcDSAwBCyACIAFBpAJqKAIAIAFBqAJqKAIAEJQGIAIoAgQhAyACKAIAIQUCQAJAAkBCAiABKQMAIhFCAn0iECAQQgJaG6dBAWsOAgECAAsgAkHgAGogAUEIakGAARDnCRogAkHYAGogAkH4AGopAwA3AwAgAkHQAGogAkHwAGopAwA3AwAgAiACKQNoNwNIDAILIAJB2ABqIAFBGGopAwA3AwAgAkHQAGogAUEQaikDADcDACACIAEpAwg3A0gMAQsgAkHYAGogAUEYaikDADcDACACQdAAaiABQRBqKQMANwMAIAIgASkDCDcDSAsgAkEYaiACQdAAaikDADcDACACQSBqIAJB2ABqKQMANwMAIAIgBTYCYCACIAIpA0g3AxAgAiADNgJkIAJBKGohCSACQeAAaiELIAJBEGohDiMAQSBrIgUkAAJAAn8CQAJAAkBCAiABKQMAQgJ9IhAgEEICWhunIgZBAWsOAgECAAsgAUH0AGohAyABQfgAagwCCyABQYwBaiEDIAFBkAFqDAELIAFB7ABqIQMgAUHwAGoLKAIAIAMoAgBsIgMEQCAHBEAgBSALKAIEQQFqAn8CQAJAAkAgBkEBaw4CAQIACyABQcgAagwCCyABQdAAagwBCyABQUBrCyIGKQMAIAZBCGopAwAQnAVCgICAgICAgICAfyADrYAgEiAHrYJ+IRAjAEFAaiIDJAACQAJAIAVBGGooAgAiCkEBayIGIAsoAgQiD0YEQCAKRQ0BIAVBFGooAgAhCiAFKQMAIRIgA0EgaiAFQQhqKQMAIhM3AwAgAyASNwMYIAMgCjYCECADIAY2AhQgAyATNwMwIAMgEjcDKCADIAogBkEDdGo2AjggCyADQRBqIANBKGogECAOIAwQ2wEgA0FAayQADAILIANBHGpBzgA2AgAgA0E0akICNwIAIAMgBjYCCCADQQM2AiwgA0HYpsEANgIoIANBzgA2AhQgAyAPNgIMIAMgA0EQajYCMCADIANBDGo2AhggAyADQQhqNgIQIANBKGpB8KbBABD8BgALQf+gwABBK0HstsAAEMwGAAsgCUEYaiAFQRhqKQMANwMAIAlBEGogBUEQaikD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QSUQ8AUgAigCACEHIAIoAgRBhYXAAEElEOcJIQMgAkElNgI4IAIgAzYCNCACIAc2AjAgA0ElEAUhAyACQTBqEP8HIARBhAFJDQEgBBACDAELIAJByABqIAJBKGopAwA3AwAgAkFAayACQSBqKQMANwMAIAJBOGogAkEYaikDADcDACACIAIpAxA3AzAjAEGAAWsiAyQAIAMgBBDbBSADIAQgAkEwaiADQewAaigCABCgBxD/BCACQQhqIgdBADYCACAHQQxqIANBCGooAgA2AgAgByADKQMANwIEIANBgAFqJAAgAigCCEUEQCACQRRqKAIAIQQgAkEQaigCACEDIAIoAgwMAgsgAikCDCEMIAIgAkEUaigCADYCECACIAw3AwggAkEIahCgBSEDC0GAgICAeAshByAJIAQ2AgggCSADNgIEIAkgBzYCACACQdAAaiQAAkAgBigCBEGBgICAeEcEQCAIIAYpAgQ3AgAgCEEIaiAGQQxqKAIANgIADAELIAZBDGooAgAhAiAGKAIIIQRBpI3CAEEQEAUhAyAIQYCAgIB4NgIAIAggAzYCBCAEIAIoAgARAQAgAigCBEUNACACKAIIGiAEEGsLIAZBEGokACAKIAooAgBBAWs2AgACfyAFKAIUQYCAgIB4RwRAIAVBFGoQ1gYhAUEADAELQQEhCyAFKAIYCyECIAAgCzYCCCAAIAI2AgQgACABNgIAIAVBIGokAAuMBQIJfwF+IwBBIGsiBSQAIAVBCGogAhDSBiAFKAIMIQogBUEUaiEIIAUoAgghBCMAQRBrIgYkACAGQQRqIQkjAEHQAGsiAiQAIAJBCGogARCIAgJ/AkAgAigCCARAIAIoAgwhBCACQSUQ8AUgAigCACEHIAIoAgRBhYXAAEElEOcJIQMgAkElNgI4IAIgAzYCNCACIAc2AjAgA0ElEAUhAyACQTBqEP8HIARBhAFJDQEgBBACDAELIAJByABqIAJBKGopAwA3AwAgAkFAayACQSBqKQMANwMAIAJBOGogAkEYaikDADcDACACIAIpAxA3AzAjAEGAAWsiAyQAIAMgBBDcBSADIAQgAkEwaiADQewAaigCABCgBxCEBSACQQhqIgdBADYCACAHQQxqIANBCGooAgA2AgAgByADKQMANwIEIANBgAFqJAAgAigCCEUEQCACQRRqKAIAIQQgAkEQaigCACEDIAIoAgwMAgsgAikCDCEMIAIgAkEUaigCADYCECACIAw3AwggAkEIahCgBSEDC0GAgICAeAshByAJIAQ2AgggCSADNgIEIAkgBzYCACACQdAAaiQAAkAgBigCBEGBgICAeEcEQCAIIAYpAgQ3AgAgCEEIaiAGQQxqKAIANgIADAELIAZBDGooAgAhAiAGKAIIIQRBpI3CAEEQEAUhAyAIQYCAgIB4NgIAIAggAzYCBCAEIAIoAgARAQAgAigCBEUNACACKAIIGiAEEGsLIAZBEGokACAKIAooAgBBAWs2AgACfyAFKAIUQYCAgIB4RwRAIAVBFGoQ1gYhAUEADAELQQEhCyAFKAIYCyECIAAgCzYCCCAAIAI2AgQgACABNgIAIAVBIGokAAuMBQIJfwF+IwBBIGsiBSQAIAVBCGogAhDSBiAFKAIMIQogBUEUaiEIIAUoAgghBCMAQRBrIgYkACAGQQRqIQkjAEHQAGsiAiQAIAJBCGogARCIAgJ/AkAgAigCCARAIAIoAgwhBCACQSUQ8AUgAigCACEHIAIoAgRBhYXAAEElEOcJIQMgAkElNgI4IAIgAzYCNCACIAc2AjAgA0ElEAUhAyACQTBqEP8HIARBhAFJDQEgBBACDAELIAJByABqIAJBKGopAwA3AwAgAkFAayACQSBqKQMANwMAIAJBOGogAkEYaikDADcDACACIAIpAxA3AzAjAEGAAWsiAyQAIAMgBBDeBSADIAQgAkEwaiADQewAaigCABCgBxCABSACQQhqIgdBADYCACAHQQxqIANBCGooAgA2AgAgByADKQMANwIEIANBgAFqJAAgAigCCEUEQCACQRRqKAIAIQQgAkEQaigCACEDIAIoAgwMAgsgAikCDCEMIAIgAkEUaigCADYCECACIAw3AwggAkEIahCgBSEDC0GAgICAeAshByAJIAQ2AgggCSADNgIEIAkgBzYCACACQdAAaiQAAkAgBigCBEGBgICAeEcEQCAIIAYpAgQ3AgAgCEEIaiAGQQxqKAIANgIADAELIAZBDGooAgAhAiAGKAIIIQRBpI3CAEEQEAUhAyAIQYCAgIB4NgIAIAggAzYCBCAEIAIoAgARAQAgAigCBEUNACACKAIIGiAEEGsLIAZBEGokACAKIAooAgBBAWs2AgACfyAFKAIUQYCAgIB4RwRAIAVBFGoQ1gYhAUEADAELQQEhCyAFKAIYCyECIAAgCzYCCCAAIAI2AgQgACABNgIAIAVBIGokAAu8BQIJfwF+IwBBIGsiBSQAIAVBCGogAhDSBiAFKAIMIQogBUEUaiEIIAUoAgghAyMAQRBrIgYkACAGQQRqIQkjAEHQAGsiAiQAIAJBCGogARCIAgJ/AkAgAigCCARAIAIoAgwhAyACQSUQ8AUgAigCACEHIAIoAgRBhYXAAEElEOcJIQQgAkElNgI4IAIgBDYCNCACIAc2AjAgBEElEAUhBCACQTBqEP8HIANBhAFJDQEgAxACDAELIAJByABqIAJBKGopAwA3AwAgAkFAayACQSBqKQMANwMAIAJBOGogAkEYaikDADcDACACIAIpAxA3AzAgAkEIaiEHIwBBEGsiBCQAIAQgAyACQTBqAn8CQAJAAkBCAiADKQMAQgJ9IgwgDEICWhunQQFrDgIBAgALIANB9ABqDAILIANBjAFqDAELIANB7ABqCygCABCgBxD6BCAHQQA2AgAgB0EMaiAEQQhqKAIANgIAIAcgBCkDADcCBCAEQRBqJAAgAigCCEUEQCACQRRqKAIAIQMgAkEQaigCACEEIAIoAgwMAgsgAikCDCEMIAIgAkEUaigCADYCECACIAw3AwggAkEIahCgBSEEC0GAgICAeAshByAJIAM2AgggCSAENgIEIAkgBzYCACACQdAAaiQAAkAgBigCBEGBgICAeEcEQCAIIAYpAgQ3AgAgCEEIaiAGQQxqKAIANgIADAELIAZBDGooAgAhAiAGKAIIIQNBpI3CAEEQEAUhBCAIQYCAgIB4NgIAIAggBDYCBCADIAIoAgARAQAgAigCBEUNACACKAIIGiADEGsLIAZBEGokACAKIAooAgBBAWs2AgACfyAFKAIUQYCAgIB4RwRAIAVBFGoQ1gYhAUEADAELQQEhCyAFKAIYCyECIAAgCzYCCCAAIAI2AgQgACABNgIAIAVBIGokAAvZBAIIfwF+IwBBIGsiBiQAIAZBCGogAhDSBiAGKAIMIQkgBkEQaiEHIAYoAgghBCMAQRBrIgUkACMAQdAAayICJAAgAkEIaiABEIgCAkAgAigCCARAIAIoAgwhBCACQSUQ8AUgAigCACEIIAIoAgRBhYXAAEElEOcJIQMgAkElNgI4IAIgAzYCNCACIAg2AjAgA0ElEAUhAyACQTBqEP8HIARBhAFPBEAgBBACC0ECIQQMAQsgAkHIAGogAkEoaikDADcDACACQUBrIAJBIGopAwA3AwAgAkE4aiACQRhqKQMANwMAIAIgAikDEDcDMCMAQYABayIDJAAgAyAEENsFIAJBCGoiCEEEaiAEIAJBMGogA0HsAGooAgAQoAcQ/QQgCEEANgIAIANBgAFqJAAgAigCCCIEQQJHBEAgAikCECELIAIoAgwhAwwBCyACKAIMIQMgAiACQRBqKQIANwIMIAIgAzYCCCACQQhqEKAFIQNBAiEECyAFIAs3AgggBSADNgIEIAUgBDYCACACQdAAaiQAAkAgBSgCAEEDRwRAIAcgBSkCADcCACAHQQhqIAVBCGopAgA3AgAMAQsgBUEIaigCACECIAUoAgQhA0GkjcIAQRAQBSEEIAdBAjYCACAHIAQ2AgQgAyACKAIAEQEAIAIoAgRFDQAgAigCCBogAxBrCyAFQRBqJAAgCSAJKAIAQQFrNgIAAn8gBigCEEECRwRAIAZBEGoQ1wYhAUEADAELQQEhCiAGKAIUCyECIAAgCjYCCCAAIAI2AgQgACABNgIAIAZBIGokAAuMBQIJfwF+IwBBIGsiBSQAIAVBCGogAhDSBiAFKAIMIQogBUEUaiEIIAUoAgghBCMAQRBrIgYkACAGQQRqIQkjAEHQAGsiAiQAIAJBCGogARCIAgJ/AkAgAigCCARAIAIoAgwhBCACQSUQ8AUgAigCACEHIAIoAgRBhYXAAEElEOcJIQMgAkElNgI4IAIgAzYCNCACIAc2AjAgA0ElEAUhAyACQTBqEP8HIARBhAFJDQEgBBACDAELIAJByABqIAJBKGopAwA3AwAgAkFAayACQSBqKQMANwMAIAJBOGogAkEYaikDADcDACACIAIpAxA3AzAjAEGAAWsiAyQAIAMgBBDbBSADIAQgAkEwaiADQewAaigCABCfBxD/BCACQQhqIgdBADYCACAHQQxqIANBCGooAgA2AgAgByADKQMANwIEIANBgAFqJAAgAigCCEUEQCACQRRqKAIAIQQgAkEQaigCACEDIAIoAgwMAgsgAikCDCEMIAIgAkEUaigCADYCECACIAw3AwggAkEIahCgBSEDC0GAgICAeAshByAJIAQ2AgggCSADNgIEIAkgBzYCACACQdAAaiQAAkAgBigCBEGBgICAeEcEQCAIIAYpAgQ3AgAgCEEIaiAGQQxqKAIANgIADAELIAZBDGooAgAhAiAGKAIIIQRBpI3CAEEQEAUhAyAIQYCAgIB4NgIAIAggAzYCBCAEIAIoAgARAQAgAigCBEUNACACKAIIGiAEEGsLIAZBEGokACAKIAooAgBBAWs2AgACfyAFKAIUQYCAgIB4RwRAIAVBFGoQ1gYhAUEADAELQQEhCyAFKAIYCyECIAAgCzYCCCAAIAI2AgQgACABNgIAIAVBIGokAAuMBQIJfwF+IwBBIGsiBSQAIAVBCGogAhDSBiAFKAIMIQogBUEUaiEIIAUoAgghBCMAQRBrIgYkACAGQQRqIQkjAEHQAGsiAiQAIAJBCGogARCIAgJ/AkAgAigCCARAIAIoAgwhBCACQSUQ8AUgAigCACEHIAIoAgRBhYXAAEElEOcJIQMgAkElNgI4IAIgAzYCNCACIAc2AjAgA0ElEAUhAyACQTBqEP8HIARBhAFJDQEgBBACDAELIAJByABqIAJBKGopAwA3AwAgAkFAayACQSBqKQMANwMAIAJBOGogAkEYaikDADcDACACIAIpAxA3AzAjAEGAAWsiAyQAIAMgBBDcBSADIAQgAkEwaiADQewAaigCABCfBxCEBSACQQhqIgdBADYCACAHQQxqIANBCGooAgA2AgAgByADKQMANwIEIANBgAFqJAAgAigCCEUEQCACQRRqKAIAIQQgAkEQaigCACEDIAIoAgwMAgsgAikCDCEMIAIgAkEUaigCADYCECACIAw3AwggAkEIahCgBSEDC0GAgICAeAshByAJIAQ2AgggCSADNgIEIAkgBzYCACACQdAAaiQAAkAgBigCBEGBgICAeEcEQCAIIAYpAgQ3AgAgCEEIaiAGQQxqKAIANgIADAELIAZBDGooAgAhAiAGKAIIIQRBpI3CAEEQEAUhAyAIQYCAgIB4NgIAIAggAzYCBCAEIAIoAgARAQAgAigCBEUNACACKAIIGiAEEGsLIAZBEGokACAKIAooAgBBAWs2AgACfyAFKAIUQYCAgIB4RwRAIAVBFGoQ1gYhAUEADAELQQEhCyAFKAIYCyECIAAgCzYCCCAAIAI2AgQgACABNgIAIAVBIGokAAuMBQIJfwF+IwBBIGsiBSQAIAVBCGogAhDSBiAFKAIMIQogBUEUaiEIIAUoAgghBCMAQRBrIgYkACAGQQRqIQkjAEHQAGsiAiQAIAJBCGogARCIAgJ/AkAgAigCCARAIAIoAgwhBCACQSUQ8AUgAigCACEHIAIoAgRBhYXAAEElEOcJIQMgAkElNgI4IAIgAzYCNCACIAc2AjAgA0ElEAUhAyACQTBqEP8HIARBhAFJDQEgBBACDAELIAJByABqIAJBKGopAwA3AwAgAkFAayACQSBqKQMANwMAIAJBOGogAkEYaikDADcDACACIAIpAxA3AzAjAEGAAWsiAyQAIAMgBBDeBSADIAQgAkEwaiADQewAaigCABCfBxCABSACQQhqIgdBADYCACAHQQxqIANBCGooAgA2AgAgByADKQMANwIEIANBgAFqJAAgAigCCEUEQCACQRRqKAIAIQQgAkEQaigCACEDIAIoAgwMAgsgAikCDCEMIAIgAkEUaigCADYCECACIAw3AwggAkEIahCgBSEDC0GAgICAeAshByAJIAQ2AgggCSADNgIEIAkgBzYCACACQdAAaiQAAkAgBigCBEGBgICAeEcEQCAIIAYpAgQ3AgAgCEEIaiAGQQxqKAIANgIADAELIAZBDGooAgAhAiAGKAIIIQRBpI3CAEEQEAUhAyAIQYCAgIB4NgIAIAggAzYCBCAEIAIoAgARAQAgAigCBEUNACACKAIIGiAEEGsLIAZBEGokACAKIAooAgBBAWs2AgACfyAFKAIUQYCAgIB4RwRAIAVBFGoQ1gYhAUEADAELQQEhCyAFKAIYCyECIAAgCzYCCCAAIAI2AgQgACABNgIAIAVBIGokAAu8BQIJfwF+IwBBIGsiBSQAIAVBCGogAhDSBiAFKAIMIQogBUEUaiEIIAUoAgghAyMAQRBrIgYkACAGQQRqIQkjAEHQAGsiAiQAIAJBCGogARCIAgJ/AkAgAigCCARAIAIoAgwhAyACQSUQ8AUgAigCACEHIAIoAgRBhYXAAEElEOcJIQQgAkElNgI4IAIgBDYCNCACIAc2AjAgBEElEAUhBCACQTBqEP8HIANBhAFJDQEgAxACDAELIAJByABqIAJBKGopAwA3AwAgAkFAayACQSBqKQMANwMAIAJBOGogAkEYaikDADcDACACIAIpAxA3AzAgAkEIaiEHIwBBEGsiBCQAIAQgAyACQTBqAn8CQAJAAkBCAiADKQMAQgJ9IgwgDEICWhunQQFrDgIBAgALIANB9ABqDAILIANBjAFqDAELIANB7ABqCygCABCfBxD6BCAHQQA2AgAgB0EMaiAEQQhqKAIANgIAIAcgBCkDADcCBCAEQRBqJAAgAigCCEUEQCACQRRqKAIAIQMgAkEQaigCACEEIAIoAgwMAgsgAikCDCEMIAIgAkEUaigCADYCECACIAw3AwggAkEIahCgBSEEC0GAgICAeAshByAJIAM2AgggCSAENgIEIAkgBzYCACACQdAAaiQAAkAgBigCBEGBgICAeEcEQCAIIAYpAgQ3AgAgCEEIaiAGQQxqKAIANgIADAELIAZBDGooAgAhAiAGKAIIIQNBpI3CAEEQEAUhBCAIQYCAgIB4NgIAIAggBDYCBCADIAIoAgARAQAgAigCBEUNACACKAIIGiADEGsLIAZBEGokACAKIAooAgBBAWs2AgACfyAFKAIUQYCAgIB4RwRAIAVBFGoQ1gYhAUEADAELQQEhCyAFKAIYCyECIAAgCzYCCCAAIAI2AgQgACABNgIAIAVBIGokAAvZBAIIfwF+IwBBIGsiBiQAIAZBCGogAhDSBiAGKAIMIQkgBkEQaiEHIAYoAgghBCMAQRBrIgUkACMAQdAAayICJAAgAkEIaiABEIgCAkAgAigCCARAIAIoAgwhBCACQSUQ8AUgAigCACEIIAIoAgRBhYXAAEElEOcJIQMgAkElNgI4IAIgAzYCNCACIAg2AjAgA0ElEAUhAyACQTBqEP8HIARBhAFPBEAgBBACC0ECIQQMAQsgAkHIAGogAkEoaikDADcDACACQUBrIAJBIGopAwA3AwAgAkE4aiACQRhqKQMANwMAIAIgAikDEDcDMCMAQYABayIDJAAgAyAEENsFIAJBCGoiCEEEaiAEIAJBMGogA0HsAGooAgAQnwcQ/QQgCEEANgIAIANBgAFqJAAgAigCCCIEQQJHBEAgAikCECELIAIoAgwhAwwBCyACKAIMIQMgAiACQRBqKQIANwIMIAIgAzYCCCACQQhqEKAFIQNBAiEECyAFIAs3AgggBSADNgIEIAUgBDYCACACQdAAaiQAAkAgBSgCAEEDRwRAIAcgBSkCADcCACAHQQhqIAVBCGopAgA3AgAMAQsgBUEIaigCACECIAUoAgQhA0GkjcIAQRAQBSEEIAdBAjYCACAHIAQ2AgQgAyACKAIAEQEAIAIoAgRFDQAgAigCCBogAxBrCyAFQRBqJAAgCSAJKAIAQQFrNgIAAn8gBigCEEECRwRAIAZBEGoQ1wYhAUEADAELQQEhCiAGKAIUCyECIAAgCjYCCCAAIAI2AgQgACABNgIAIAZBIGokAAu/CwISfwJ+IwBBIGsiCSQAIAlBCGogAhDSBiAJKAIMIREgCUEUaiEOIAkoAgghAiMAQRBrIgskACALQQRqIQ8jAEEwayIGJAAgBkEIaiABEJACAn8CQCAGKAIIBEAgBigCDCECIAZBJRDwBSAGKAIAIQUgBigCBEGqhcAAQSUQ5wkhAyAGQSU2AiwgBiADNgIoIAYgBTYCJCADQSUQBSEDIAZBJGoQ/wcgAkGEAUkNASACEAIMAQsgBikDECEVIAZBGGopAwAhFiMAQYABayIIJAAgCCACENsFIAhB7ABqKAIAELEHIQMjAEGAAWsiDSQAIA1BCGoiBSAVIBYCfwJAAkACQEICIAIpAwBCAn0iFSAVQgJaG6dBAWsOAgECAAsgAkH0AGoMAgsgAkGMAWoMAQsgAkHsAGoLKAIAIAMQnwUgDSACNgJ0IA0gDUH/AGo2AnAjAEGwAWsiAyQAAkACQAJAAkACQCAFKAJgIgRFDQAgBSAEQQFrNgJgAn4CQCAFKQMQQgJSBEAgA0EQaiAFQRBqIgQQ3wEgAykDEKcNASAEQgI3AwALIAUpAwBQDQIgBSkDCAwBCyADKQMYCyEVIAVB7ABqKAIAIQQgAyAVNwOoASADQThqIAQgA0GoAWoQpAQgAygCSEGAgICAeEcNAQsgCEEANgIIIAhCgICAgIABNwIADAELIANBCGpBBCAFKAJgIgcEfyAFKQMAIRUCQCAFKQMQQgJRBEBBf0EAIBVCAFIbIQQMAQsgFVAEQCAFKAJYIgRFDQQgBCAFKAJcTSEEDAELQX8hBCAFKAJYRQ0DCyAEIAcgBCAHSRsFQQALQQFqIgRBfyAEGyIEIARBBE0bEMkFIAMoAgghByADKAIMIANBOGoiBEE4EOMJIQwgA0E0aiITQQE2AgAgAyAMNgIwIAMgBzYCLCAEIAVB8AAQ5wkaIANBLGohDCMAQeAAayIFJAACQCAEKAJgIgdFDQAgBEEQaiESA0AgBCAHQQFrNgJgAn4CQCAEKQMQQgJSBEAgBUEIaiASEN8BIAUpAwinDQEgEkICNwMACyAEKQMAUA0DIAQpAwgMAQsgBSkDEAshFSAEKAJsIQcgBSAVNwNYIAVBIGogByAFQdgAahCkBCAFKAIwQYCAgIB4Rg0BIAQoAmAhByAMKAIIIhAgDCgCAEYEQCAMIBAgBwR/IAQpAwAhFQJAIAQpAxBCAlEEQEF/QQAgFUIAUhshCgwBCyAVUARAIAQoAlgiCkUNByAKIAQoAlxNIQoMAQtBfyEKIAQoAlhFDQYLIAogByAHIApLGwVBAAtBAWoiCkF/IAobEKgGCyAMKAIEIBBBOGxqIAVBIGpBOBDnCRogDCAQQQFqNgIIIAcNAAsLIAVB4ABqJAAgCEEIaiATKAIANgIAIAggAykCLDcCAAsgA0GwAWokAAwBC0Hgj8AAQRlB7JjAABDMBgALIA1BgAFqJAAgBkEIaiIDQQA2AgAgA0EMaiAIQQhqKAIANgIAIAMgCCkDADcCBCAIQYABaiQAIAYoAghFBEAgBkEUaigCACECIAZBEGooAgAhAyAGKAIMDAILIAYpAgwhFSAGIAZBFGooAgA2AhAgBiAVNwMIIAZBCGoQoAUhAwtBgICAgHgLIQUgDyACNgIIIA8gAzYCBCAPIAU2AgAgBkEwaiQAAkAgCygCBEGBgICAeEcEQCAOIAspAgQ3AgAgDkEIaiALQQxqKAIANgIADAELIAtBDGooAgAhAiALKAIIIQZBpI3CAEEQEAUhAyAOQYCAgIB4NgIAIA4gAzYCBCAGIAIoAgARAQAgAigCBEUNACACKAIIGiAGEGsLIAtBEGokACARIBEoAgBBAWs2AgACfyAJKAIUQYCAgIB4RwRAIAlBFGoQ1gYhAUEADAELQQEhFCAJKAIYCyECIAAgFDYCCCAAIAI2AgQgACABNgIAIAlBIGokAAu/CwISfwJ+IwBBIGsiCSQAIAlBCGogAhDSBiAJKAIMIREgCUEUaiEOIAkoAgghAiMAQRBrIgskACALQQRqIQ8jAEEwayIGJAAgBkEIaiABEJACAn8CQCAGKAIIBEAgBigCDCECIAZBJRDwBSAGKAIAIQUgBigCBEGqhcAAQSUQ5wkhAyAGQSU2AiwgBiADNgIoIAYgBTYCJCADQSUQBSEDIAZBJGoQ/wcgAkGEAUkNASACEAIMAQsgBikDECEVIAZBGGopAwAhFiMAQYABayIIJAAgCCACENwFIAhB7ABqKAIAELEHIQMjAEGAAWsiDSQAIA1BCGoiBSAVIBYCfwJAAkACQEICIAIpAwBCAn0iFSAVQgJaG6dBAWsOAgECAAsgAkH0AGoMAgsgAkGMAWoMAQsgAkHsAGoLKAIAIAMQnwUgDSACNgJ0IA0gDUH/AGo2AnAjAEGwAWsiAyQAAkACQAJAAkACQCAFKAJgIgRFDQAgBSAEQQFrNgJgAn4CQCAFKQMQQgJSBEAgA0EQaiAFQRBqIgQQ3wEgAykDEKcNASAEQgI3AwALIAUpAwBQDQIgBSkDCAwBCyADKQMYCyEVIAVB7ABqKAIAIQQgAyAVNwOoASADQThqIAQgA0GoAWoQowQgAygCSEGAgICAeEcNAQsgCEEANgIIIAhCgICAgIABNwIADAELIANBCGpBBCAFKAJgIgcEfyAFKQMAIRUCQCAFKQMQQgJRBEBBf0EAIBVCAFIbIQQMAQsgFVAEQCAFKAJYIgRFDQQgBCAFKAJcTSEEDAELQX8hBCAFKAJYRQ0DCyAEIAcgBCAHSRsFQQALQQFqIgRBfyAEGyIEIARBBE0bEMkFIAMoAgghByADKAIMIANBOGoiBEE4EOMJIQwgA0E0aiITQQE2AgAgAyAMNgIwIAMgBzYCLCAEIAVB8AAQ5wkaIANBLGohDCMAQeAAayIFJAACQCAEKAJgIgdFDQAgBEEQaiESA0AgBCAHQQFrNgJgAn4CQCAEKQMQQgJSBEAgBUEIaiASEN8BIAUpAwinDQEgEkICNwMACyAEKQMAUA0DIAQpAwgMAQsgBSkDEAshFSAEKAJsIQcgBSAVNwNYIAVBIGogByAFQdgAahCjBCAFKAIwQYCAgIB4Rg0BIAQoAmAhByAMKAIIIhAgDCgCAEYEQCAMIBAgBwR/IAQpAwAhFQJAIAQpAxBCAlEEQEF/QQAgFUIAUhshCgwBCyAVUARAIAQoAlgiCkUNByAKIAQoAlxNIQoMAQtBfyEKIAQoAlhFDQYLIAogByAHIApLGwVBAAtBAWoiCkF/IAobEKgGCyAMKAIEIBBBOGxqIAVBIGpBOBDnCRogDCAQQQFqNgIIIAcNAAsLIAVB4ABqJAAgCEEIaiATKAIANgIAIAggAykCLDcCAAsgA0GwAWokAAwBC0Hgj8AAQRlB7JjAABDMBgALIA1BgAFqJAAgBkEIaiIDQQA2AgAgA0EMaiAIQQhqKAIANgIAIAMgCCkDADcCBCAIQYABaiQAIAYoAghFBEAgBkEUaigCACECIAZBEGooAgAhAyAGKAIMDAILIAYpAgwhFSAGIAZBFGooAgA2AhAgBiAVNwMIIAZBCGoQoAUhAwtBgICAgHgLIQUgDyACNgIIIA8gAzYCBCAPIAU2AgAgBkEwaiQAAkAgCygCBEGBgICAeEcEQCAOIAspAgQ3AgAgDkEIaiALQQxqKAIANgIADAELIAtBDGooAgAhAiALKAIIIQZBpI3CAEEQEAUhAyAOQYCAgIB4NgIAIA4gAzYCBCAGIAIoAgARAQAgAigCBEUNACACKAIIGiAGEGsLIAtBEGokACARIBEoAgBBAWs2AgACfyAJKAIUQYCAgIB4RwRAIAlBFGoQ1gYhAUEADAELQQEhFCAJKAIYCyECIAAgFDYCCCAAIAI2AgQgACABNgIAIAlBIGokAAu/CwISfwJ+IwBBIGsiCSQAIAlBCGogAhDSBiAJKAIMIREgCUEUaiEOIAkoAgghAiMAQRBrIgskACALQQRqIQ8jAEEwayIGJAAgBkEIaiABEJACAn8CQCAGKAIIBEAgBigCDCECIAZBJRDwBSAGKAIAIQUgBigCBEGqhcAAQSUQ5wkhAyAGQSU2AiwgBiADNgIoIAYgBTYCJCADQSUQBSEDIAZBJGoQ/wcgAkGEAUkNASACEAIMAQsgBikDECEVIAZBGGopAwAhFiMAQYABayIIJAAgCCACEN4FIAhB7ABqKAIAELEHIQMjAEGAAWsiDSQAIA1BCGoiBSAVIBYCfwJAAkACQEICIAIpAwBCAn0iFSAVQgJaG6dBAWsOAgECAAsgAkH0AGoMAgsgAkGMAWoMAQsgAkHsAGoLKAIAIAMQnwUgDSACNgJ0IA0gDUH/AGo2AnAjAEGwAWsiAyQAAkACQAJAAkACQCAFKAJgIgRFDQAgBSAEQQFrNgJgAn4CQCAFKQMQQgJSBEAgA0EQaiAFQRBqIgQQ3wEgAykDEKcNASAEQgI3AwALIAUpAwBQDQIgBSkDCAwBCyADKQMYCyEVIAVB7ABqKAIAIQQgAyAVNwOoASADQThqIAQgA0GoAWoQogQgAygCSEGAgICAeEcNAQsgCEEANgIIIAhCgICAgIABNwIADAELIANBCGpBBCAFKAJgIgcEfyAFKQMAIRUCQCAFKQMQQgJRBEBBf0EAIBVCAFIbIQQMAQsgFVAEQCAFKAJYIgRFDQQgBCAFKAJcTSEEDAELQX8hBCAFKAJYRQ0DCyAEIAcgBCAHSRsFQQALQQFqIgRBfyAEGyIEIARBBE0bEMkFIAMoAgghByADKAIMIANBOGoiBEE4EOMJIQwgA0E0aiITQQE2AgAgAyAMNgIwIAMgBzYCLCAEIAVB8AAQ5wkaIANBLGohDCMAQeAAayIFJAACQCAEKAJgIgdFDQAgBEEQaiESA0AgBCAHQQFrNgJgAn4CQCAEKQMQQgJSBEAgBUEIaiASEN8BIAUpAwinDQEgEkICNwMACyAEKQMAUA0DIAQpAwgMAQsgBSkDEAshFSAEKAJsIQcgBSAVNwNYIAVBIGogByAFQdgAahCiBCAFKAIwQYCAgIB4Rg0BIAQoAmAhByAMKAIIIhAgDCgCAEYEQCAMIBAgBwR/IAQpAwAhFQJAIAQpAxBCAlEEQEF/QQAgFUIAUhshCgwBCyAVUARAIAQoAlgiCkUNByAKIAQoAlxNIQoMAQtBfyEKIAQoAlhFDQYLIAogByAHIApLGwVBAAtBAWoiCkF/IAobEKgGCyAMKAIEIBBBOGxqIAVBIGpBOBDnCRogDCAQQQFqNgIIIAcNAAsLIAVB4ABqJAAgCEEIaiATKAIANgIAIAggAykCLDcCAAsgA0GwAWokAAwBC0Hgj8AAQRlB7JjAABDMBgALIA1BgAFqJAAgBkEIaiIDQQA2AgAgA0EMaiAIQQhqKAIANgIAIAMgCCkDADcCBCAIQYABaiQAIAYoAghFBEAgBkEUaigCACECIAZBEGooAgAhAyAGKAIMDAILIAYpAgwhFSAGIAZBFGooAgA2AhAgBiAVNwMIIAZBCGoQoAUhAwtBgICAgHgLIQUgDyACNgIIIA8gAzYCBCAPIAU2AgAgBkEwaiQAAkAgCygCBEGBgICAeEcEQCAOIAspAgQ3AgAgDkEIaiALQQxqKAIANgIADAELIAtBDGooAgAhAiALKAIIIQZBpI3CAEEQEAUhAyAOQYCAgIB4NgIAIA4gAzYCBCAGIAIoAgARAQAgAigCBEUNACACKAIIGiAGEGsLIAtBEGokACARIBEoAgBBAWs2AgACfyAJKAIUQYCAgIB4RwRAIAlBFGoQ1gYhAUEADAELQQEhFCAJKAIYCyECIAAgFDYCCCAAIAI2AgQgACABNgIAIAlBIGokAAvICwITfwN+IwBBIGsiCCQAIAhBCGogAhDSBiAIKAIMIRIgCEEUaiEOIAgoAgghAiMAQRBrIgokACAKQQRqIQ8jAEEwayIEJAAgBEEIaiABEJACAn8CQCAEKAIIBEAgBCgCDCECIARBJRDwBSAEKAIAIQUgBCgCBEGqhcAAQSUQ5wkhBiAEQSU2AiwgBCAGNgIoIAQgBTYCJCAGQSUQBSEGIARBJGoQ/wcgAkGEAUkNASACEAIMAQsgBEEIaiEQIAQpAxAhFiAEQRhqKQMAIRcjAEEQayILJAACfwJAAkACQEICIAIpAwBCAn0iGCAYQgJaG6dBAWsOAgECAAsgAkH0AGoMAgsgAkGMAWoMAQsgAkHsAGoLKAIAELEHIQYjAEGAAWsiDSQAIA1BCGoiBSAWIBcCfwJAAkACQEICIAIpAwBCAn0iFiAWQgJaG6dBAWsOAgECAAsgAkH0AGoMAgsgAkGMAWoMAQsgAkHsAGoLKAIAIAYQnwUgDSACNgJ0IA0gDUH/AGo2AnAjAEGgAWsiBiQAAkACQAJAAkACQCAFKAJgIgNFDQAgBSADQQFrNgJgAn4CQCAFKQMQQgJSBEAgBkEIaiAFQRBqIgMQ3wEgBikDCKcNASADQgI3AwALIAUpAwBQDQIgBSkDCAwBCyAGKQMQCyEWIAZBMGogBUHsAGooAgAgFhBMIAYoAkBBgICAgHhHDQELIAtBADYCCCALQoCAgICAATcCAAwBCyAGQQQgBSgCYCIHBH8gBSkDACEWAkAgBSkDEEICUQRAQX9BACAWQgBSGyEDDAELIBZQBEAgBSgCWCIDRQ0EIAMgBSgCXE0hAwwBC0F/IQMgBSgCWEUNAwsgAyAHIAMgB0kbBUEAC0EBaiIDQX8gAxsiAyADQQRNGxDJBSAGKAIAIQcgBigCBCAGQTBqIgNBOBDjCSEMIAZBLGoiFEEBNgIAIAYgDDYCKCAGIAc2AiQgAyAFQfAAEOcJGiAGQSRqIQwjAEHQAGsiBSQAAkAgAygCYCIHRQ0AIANBEGohEwNAIAMgB0EBazYCYAJ+AkAgAykDEEICUgRAIAUgExDfASAFKQMApw0BIBNCAjcDAAsgAykDAFANAyADKQMIDAELIAUpAwgLIRYgBUEYaiADKAJsIBYQTCAFKAIoQYCAgIB4Rg0BIAMoAmAhByAMKAIIIhEgDCgCAEYEQCAMIBEgBwR/IAMpAwAhFgJAIAMpAxBCAlEEQEF/QQAgFkIAUhshCQwBCyAWUARAIAMoAlgiCUUNByAJIAMoAlxNIQkMAQtBfyEJIAMoAlhFDQYLIAkgByAHIAlLGwVBAAtBAWoiCUF/IAkbEKgGCyAMKAIEIBFBOGxqIAVBGGpBOBDnCRogDCARQQFqNgIIIAcNAAsLIAVB0ABqJAAgC0EIaiAUKAIANgIAIAsgBikCJDcCAAsgBkGgAWokAAwBC0Hgj8AAQRlB7JjAABDMBgALIA1BgAFqJAAgEEEANgIAIBBBDGogC0EIaigCADYCACAQIAspAwA3AgQgC0EQaiQAIAQoAghFBEAgBEEUaigCACECIARBEGooAgAhBiAEKAIMDAILIAQpAgwhFiAEIARBFGooAgA2AhAgBCAWNwMIIARBCGoQoAUhBgtBgICAgHgLIQUgDyACNgIIIA8gBjYCBCAPIAU2AgAgBEEwaiQAAkAgCigCBEGBgICAeEcEQCAOIAopAgQ3AgAgDkEIaiAKQQxqKAIANgIADAELIApBDGooAgAhAiAKKAIIIQRBpI3CAEEQEAUhBiAOQYCAgIB4NgIAIA4gBjYCBCAEIAIoAgARAQAgAigCBEUNACACKAIIGiAEEGsLIApBEGokACASIBIoAgBBAWs2AgACfyAIKAIUQYCAgIB4RwRAIAhBFGoQ1gYhAUEADAELQQEhFSAIKAIYCyECIAAgFTYCCCAAIAI2AgQgACABNgIAIAhBIGokAAuLCwISfwN+IwBBIGsiCCQAIAhBCGogAhDSBiAIKAIMIRAgCEEQaiEMIAgoAgghAyMAQRBrIgIkACMAQTBrIgYkACAGQQhqIAEQkAICQCAGKAIIBEAgBigCDCEDIAZBJRDwBSAGKAIAIQQgBigCBEGqhcAAQSUQ5wkhBSAGQSU2AiwgBiAFNgIoIAYgBDYCJCAFQSUQBSEHIAZBJGoQ/wcgA0GEAU8EQCADEAILQQIhAwwBCyAGKQMQIRUgBkEYaikDACEXIwBBgAFrIg4kACAOIAMQ2wUgBkEIaiISQQRqIQ0gDkHsAGooAgAQsQchBCMAQYABayIKJAAgCkEIaiIFIBUgFwJ/AkACQAJAQgIgAykDAEICfSIVIBVCAlobp0EBaw4CAQIACyADQfQAagwCCyADQYwBagwBCyADQewAagsoAgAgBBCfBSAKIAM2AnQgCiAKQf8AajYCcCMAQbABayIDJAACQAJAAkACQAJAIAUoAmAiBEUNACAFIARBAWs2AmACfgJAIAUpAxBCAlIEQCADQRBqIAVBEGoiBBDfASADKQMQpw0BIARCAjcDAAsgBSkDAFANAiAFKQMIDAELIAMpAxgLIRUgBUHsAGooAgAhBCADIBU3A6gBIANBOGogBCADQagBahChBCADLQB4QQJHDQELIA1BADYCCCANQoCAgICAATcCAAwBCyADQQhqQQQgBSgCYCIEBH8gBSkDACEVAkAgBSkDEEICUQRAQX9BACAVQgBSGyEHDAELIBVQBEAgBSgCWCIHRQ0EIAcgBSgCXE0hBwwBC0F/IQcgBSgCWEUNAwsgByAEIAQgB0sbBUEAC0EBaiIEQX8gBBsiBCAEQQRNGxDHBSADKAIIIQcgAygCDCADQThqIgRByAAQ4wkhCSADQTRqIhNBATYCACADIAk2AjAgAyAHNgIsIAQgBUHwABDnCRogA0EsaiELIwBB8ABrIgUkAAJAIAQoAmAiCUUNACAEQRBqIREDQCAEIAlBAWs2AmACfgJAIAQpAxBCAlIEQCAFQQhqIBEQ3wEgBSkDCKcNASARQgI3AwALIAQpAwBQDQMgBCkDCAwBCyAFKQMQCyEVIAQoAmwhByAFIBU3A2ggBUEgaiAHIAVB6ABqEKEEIAUtAGBBAkYNASAEKAJgIQkgCygCCCIPIAsoAgBGBEAgCyAPIAkEfyAEKQMAIRUCQCAEKQMQQgJRBEBBf0EAIBVCAFIbIQcMAQsgFVAEQCAEKAJYIgdFDQcgByAEKAJcTSEHDAELQX8hByAEKAJYRQ0GCyAHIAkgByAJSRsFQQALQQFqIgdBfyAHGxCqBgsgCygCBCAPQcgAbGogBUEgakHIABDnCRogCyAPQQFqNgIIIAkNAAsLIAVB8ABqJAAgDUEIaiATKAIANgIAIA0gAykCLDcCAAsgA0GwAWokAAwBC0Hgj8AAQRlB7JjAABDMBgALIApBgAFqJAAgEkEANgIAIA5BgAFqJAAgBigCCCIDQQJHBEAgBikCECEWIAYoAgwhBwwBCyAGKAIMIQMgBiAGQRBqKQIANwIMIAYgAzYCCCAGQQhqEKAFIQdBAiEDCyACIBY3AgggAiAHNgIEIAIgAzYCACAGQTBqJAACQCACKAIAQQNHBEAgDCACKQIANwIAIAxBCGogAkEIaikCADcCAAwBCyACQQhqKAIAIQMgAigCBCEGQaSNwgBBEBAFIQUgDEECNgIAIAwgBTYCBCAGIAMoAgARAQAgAygCBEUNACADKAIIGiAGEGsLIAJBEGokACAQIBAoAgBBAWs2AgACfyAIKAIQQQJHBEAgCEEQahDXBiEBQQAMAQtBASEUIAgoAhQLIQIgACAUNgIIIAAgAjYCBCAAIAE2AgAgCEEgaiQAC4sFAgl/AX4jAEEgayIFJAAgBUEIaiACENIGIAUoAgwhCiAFQRRqIQggBSgCCCEEIwBBEGsiBiQAIAZBBGohCSMAQdAAayICJAAgAkEIaiABEHsCfwJAIAIoAggEQCACKAIMIQQgAkElEPAFIAIoAgAhByACKAIEQc+FwABBJRDnCSEDIAJBJTYCOCACIAM2AjQgAiAHNgIwIANBJRAFIQMgAkEwahD/ByAEQYQBSQ0BIAQQAgwBCyACQcgAaiACQShqKQMANwMAIAJBQGsgAkEgaikDADcDACACQThqIAJBGGopAwA3AwAgAiACKQMQNwMwIwBBgAFrIgMkACADIAQQ2wUgAyAEIAJBMGogA0HsAGooAgAQsgcQgQUgAkEIaiIHQQA2AgAgB0EMaiADQQhqKAIANgIAIAcgAykDADcCBCADQYABaiQAIAIoAghFBEAgAkEUaigCACEEIAJBEGooAgAhAyACKAIMDAILIAIpAgwhDCACIAJBFGooAgA2AhAgAiAMNwMIIAJBCGoQoAUhAwtBgICAgHgLIQcgCSAENgIIIAkgAzYCBCAJIAc2AgAgAkHQAGokAAJAIAYoAgRBgYCAgHhHBEAgCCAGKQIENwIAIAhBCGogBkEMaigCADYCAAwBCyAGQQxqKAIAIQIgBigCCCEEQaSNwgBBEBAFIQMgCEGAgICAeDYCACAIIAM2AgQgBCACKAIAEQEAIAIoAgRFDQAgAigCCBogBBBrCyAGQRBqJAAgCiAKKAIAQQFrNgIAAn8gBSgCFEGAgICAeEcEQCAFQRRqENYGIQFBAAwBC0EBIQsgBSgCGAshAiAAIAs2AgggACACNgIEIAAgATYCACAFQSBqJAALiwUCCX8BfiMAQSBrIgUkACAFQQhqIAIQ0gYgBSgCDCEKIAVBFGohCCAFKAIIIQQjAEEQayIGJAAgBkEEaiEJIwBB0ABrIgIkACACQQhqIAEQewJ/AkAgAigCCARAIAIoAgwhBCACQSUQ8AUgAigCACEHIAIoAgRBz4XAAEElEOcJIQMgAkElNgI4IAIgAzYCNCACIAc2AjAgA0ElEAUhAyACQTBqEP8HIARBhAFJDQEgBBACDAELIAJByABqIAJBKGopAwA3AwAgAkFAayACQSBqKQMANwMAIAJBOGogAkEYaikDADcDACACIAIpAxA3AzAjAEGAAWsiAyQAIAMgBBDcBSADIAQgAkEwaiADQewAaigCABCyBxD7BCACQQhqIgdBADYCACAHQQxqIANBCGooAgA2AgAgByADKQMANwIEIANBgAFqJAAgAigCCEUEQCACQRRqKAIAIQQgAkEQaigCACEDIAIoAgwMAgsgAikCDCEMIAIgAkEUaigCADYCECACIAw3AwggAkEIahCgBSEDC0GAgICAeAshByAJIAQ2AgggCSADNgIEIAkgBzYCACACQdAAaiQAAkAgBigCBEGBgICAeEcEQCAIIAYpAgQ3AgAgCEEIaiAGQQxqKAIANgIADAELIAZBDGooAgAhAiAGKAIIIQRBpI3CAEEQEAUhAyAIQYCAgIB4NgIAIAggAzYCBCAEIAIoAgARAQAgAigCBEUNACACKAIIGiAEEGsLIAZBEGokACAKIAooAgBBAWs2AgACfyAFKAIUQYCAgIB4RwRAIAVBFGoQ1gYhAUEADAELQQEhCyAFKAIYCyECIAAgCzYCCCAAIAI2AgQgACABNgIAIAVBIGokAAuLBQIJfwF+IwBBIGsiBSQAIAVBCGogAhDSBiAFKAIMIQogBUEUaiEIIAUoAgghBCMAQRBrIgYkACAGQQRqIQkjAEHQAGsiAiQAIAJBCGogARB7An8CQCACKAIIBEAgAigCDCEEIAJBJRDwBSACKAIAIQcgAigCBEHPhcAAQSUQ5wkhAyACQSU2AjggAiADNgI0IAIgBzYCMCADQSUQBSEDIAJBMGoQ/wcgBEGEAUkNASAEEAIMAQsgAkHIAGogAkEoaikDADcDACACQUBrIAJBIGopAwA3AwAgAkE4aiACQRhqKQMANwMAIAIgAikDEDcDMCMAQYABayIDJAAgAyAEEN4FIAMgBCACQTBqIANB7ABqKAIAELIHEPwEIAJBCGoiB0EANgIAIAdBDGogA0EIaigCADYCACAHIAMpAwA3AgQgA0GAAWokACACKAIIRQRAIAJBFGooAgAhBCACQRBqKAIAIQMgAigCDAwCCyACKQIMIQwgAiACQRRqKAIANgIQIAIgDDcDCCACQQhqEKAFIQMLQYCAgIB4CyEHIAkgBDYCCCAJIAM2AgQgCSAHNgIAIAJB0ABqJAACQCAGKAIEQYGAgIB4RwRAIAggBikCBDcCACAIQQhqIAZBDGooAgA2AgAMAQsgBkEMaigCACECIAYoAgghBEGkjcIAQRAQBSEDIAhBgICAgHg2AgAgCCADNgIEIAQgAigCABEBACACKAIERQ0AIAIoAggaIAQQawsgBkEQaiQAIAogCigCAEEBazYCAAJ/IAUoAhRBgICAgHhHBEAgBUEUahDWBiEBQQAMAQtBASELIAUoAhgLIQIgACALNgIIIAAgAjYCBCAAIAE2AgAgBUEgaiQAC7sFAgl/AX4jAEEgayIFJAAgBUEIaiACENIGIAUoAgwhCiAFQRRqIQggBSgCCCEDIwBBEGsiBiQAIAZBBGohCSMAQdAAayICJAAgAkEIaiABEHsCfwJAIAIoAggEQCACKAIMIQMgAkElEPAFIAIoAgAhByACKAIEQc+FwABBJRDnCSEEIAJBJTYCOCACIAQ2AjQgAiAHNgIwIARBJRAFIQQgAkEwahD/ByADQYQBSQ0BIAMQAgwBCyACQcgAaiACQShqKQMANwMAIAJBQGsgAkEgaikDADcDACACQThqIAJBGGopAwA3AwAgAiACKQMQNwMwIAJBCGohByMAQRBrIgQkACAEIAMgAkEwagJ/AkACQAJAQgIgAykDAEICfSIMIAxCAlobp0EBaw4CAQIACyADQfQAagwCCyADQYwBagwBCyADQewAagsoAgAQsgcQggUgB0EANgIAIAdBDGogBEEIaigCADYCACAHIAQpAwA3AgQgBEEQaiQAIAIoAghFBEAgAkEUaigCACEDIAJBEGooAgAhBCACKAIMDAILIAIpAgwhDCACIAJBFGooAgA2AhAgAiAMNwMIIAJBCGoQoAUhBAtBgICAgHgLIQcgCSADNgIIIAkgBDYCBCAJIAc2AgAgAkHQAGokAAJAIAYoAgRBgYCAgHhHBEAgCCAGKQIENwIAIAhBCGogBkEMaigCADYCAAwBCyAGQQxqKAIAIQIgBigCCCEDQaSNwgBBEBAFIQQgCEGAgICAeDYCACAIIAQ2AgQgAyACKAIAEQEAIAIoAgRFDQAgAigCCBogAxBrCyAGQRBqJAAgCiAKKAIAQQFrNgIAAn8gBSgCFEGAgICAeEcEQCAFQRRqENYGIQFBAAwBC0EBIQsgBSgCGAshAiAAIAs2AgggACACNgIEIAAgATYCACAFQSBqJAAL2AQCCH8BfiMAQSBrIgYkACAGQQhqIAIQ0gYgBigCDCEJIAZBEGohByAGKAIIIQQjAEEQayIFJAAjAEHQAGsiAiQAIAJBCGogARB7AkAgAigCCARAIAIoAgwhBCACQSUQ8AUgAigCACEIIAIoAgRBz4XAAEElEOcJIQMgAkElNgI4IAIgAzYCNCACIAg2AjAgA0ElEAUhAyACQTBqEP8HIARBhAFPBEAgBBACC0ECIQQMAQsgAkHIAGogAkEoaikDADcDACACQUBrIAJBIGopAwA3AwAgAkE4aiACQRhqKQMANwMAIAIgAikDEDcDMCMAQYABayIDJAAgAyAEENsFIAJBCGoiCEEEaiAEIAJBMGogA0HsAGooAgAQsgcQ/gQgCEEANgIAIANBgAFqJAAgAigCCCIEQQJHBEAgAikCECELIAIoAgwhAwwBCyACKAIMIQMgAiACQRBqKQIANwIMIAIgAzYCCCACQQhqEKAFIQNBAiEECyAFIAs3AgggBSADNgIEIAUgBDYCACACQdAAaiQAAkAgBSgCAEEDRwRAIAcgBSkCADcCACAHQQhqIAVBCGopAgA3AgAMAQsgBUEIaigCACECIAUoAgQhA0GkjcIAQRAQBSEEIAdBAjYCACAHIAQ2AgQgAyACKAIAEQEAIAIoAgRFDQAgAigCCBogAxBrCyAFQRBqJAAgCSAJKAIAQQFrNgIAAn8gBigCEEECRwRAIAZBEGoQ1wYhAUEADAELQQEhCiAGKAIUCyECIAAgCjYCCCAAIAI2AgQgACABNgIAIAZBIGokAAuLBQIJfwF+IwBBIGsiBSQAIAVBCGogAhDSBiAFKAIMIQogBUEUaiEIIAUoAgghBCMAQRBrIgYkACAGQQRqIQkjAEHQAGsiAiQAIAJBCGogARB7An8CQCACKAIIBEAgAigCDCEEIAJBJRDwBSACKAIAIQcgAigCBEHPhcAAQSUQ5wkhAyACQSU2AjggAiADNgI0IAIgBzYCMCADQSUQBSEDIAJBMGoQ/wcgBEGEAUkNASAEEAIMAQsgAkHIAGogAkEoaikDADcDACACQUBrIAJBIGopAwA3AwAgAkE4aiACQRhqKQMANwMAIAIgAikDEDcDMCMAQYABayIDJAAgAyAEENsFIAMgBCACQTBqIANB7ABqKAIAELAHEIEFIAJBCGoiB0EANgIAIAdBDGogA0EIaigCADYCACAHIAMpAwA3AgQgA0GAAWokACACKAIIRQRAIAJBFGooAgAhBCACQRBqKAIAIQMgAigCDAwCCyACKQIMIQwgAiACQRRqKAIANgIQIAIgDDcDCCACQQhqEKAFIQMLQYCAgIB4CyEHIAkgBDYCCCAJIAM2AgQgCSAHNgIAIAJB0ABqJAACQCAGKAIEQYGAgIB4RwRAIAggBikCBDcCACAIQQhqIAZBDGooAgA2AgAMAQsgBkEMaigCACECIAYoAgghBEGkjcIAQRAQBSEDIAhBgICAgHg2AgAgCCADNgIEIAQgAigCABEBACACKAIERQ0AIAIoAggaIAQQawsgBkEQaiQAIAogCigCAEEBazYCAAJ/IAUoAhRBgICAgHhHBEAgBUEUahDWBiEBQQAMAQtBASELIAUoAhgLIQIgACALNgIIIAAgAjYCBCAAIAE2AgAgBUEgaiQAC4sFAgl/AX4jAEEgayIFJAAgBUEIaiACENIGIAUoAgwhCiAFQRRqIQggBSgCCCEEIwBBEGsiBiQAIAZBBGohCSMAQdAAayICJAAgAkEIaiABEHsCfwJAIAIoAggEQCACKAIMIQQgAkElEPAFIAIoAgAhByACKAIEQc+FwABBJRDnCSEDIAJBJTYCOCACIAM2AjQgAiAHNgIwIANBJRAFIQMgAkEwahD/ByAEQYQBSQ0BIAQQAgwBCyACQcgAaiACQShqKQMANwMAIAJBQGsgAkEgaikDADcDACACQThqIAJBGGopAwA3AwAgAiACKQMQNwMwIwBBgAFrIgMkACADIAQQ3AUgAyAEIAJBMGogA0HsAGooAgAQsAcQ+wQgAkEIaiIHQQA2AgAgB0EMaiADQQhqKAIANgIAIAcgAykDADcCBCADQYABaiQAIAIoAghFBEAgAkEUaigCACEEIAJBEGooAgAhAyACKAIMDAILIAIpAgwhDCACIAJBFGooAgA2AhAgAiAMNwMIIAJBCGoQoAUhAwtBgICAgHgLIQcgCSAENgIIIAkgAzYCBCAJIAc2AgAgAkHQAGokAAJAIAYoAgRBgYCAgHhHBEAgCCAGKQIENwIAIAhBCGogBkEMaigCADYCAAwBCyAGQQxqKAIAIQIgBigCCCEEQaSNwgBBEBAFIQMgCEGAgICAeDYCACAIIAM2AgQgBCACKAIAEQEAIAIoAgRFDQAgAigCCBogBBBrCyAGQRBqJAAgCiAKKAIAQQFrNgIAAn8gBSgCFEGAgICAeEcEQCAFQRRqENYGIQFBAAwBC0EBIQsgBSgCGAshAiAAIAs2AgggACACNgIEIAAgATYCACAFQSBqJAALiwUCCX8BfiMAQSBrIgUkACAFQQhqIAIQ0gYgBSgCDCEKIAVBFGohCCAFKAIIIQQjAEEQayIGJAAgBkEEaiEJIwBB0ABrIgIkACACQQhqIAEQewJ/AkAgAigCCARAIAIoAgwhBCACQSUQ8AUgAigCACEHIAIoAgRBz4XAAEElEOcJIQMgAkElNgI4IAIgAzYCNCACIAc2AjAgA0ElEAUhAyACQTBqEP8HIARBhAFJDQEgBBACDAELIAJByABqIAJBKGopAwA3AwAgAkFAayACQSBqKQMANwMAIAJBOGogAkEYaikDADcDACACIAIpAxA3AzAjAEGAAWsiAyQAIAMgBBDeBSADIAQgAkEwaiADQewAaigCABCwBxD8BCACQQhqIgdBADYCACAHQQxqIANBCGooAgA2AgAgByADKQMANwIEIANBgAFqJAAgAigCCEUEQCACQRRqKAIAIQQgAkEQaigCACEDIAIoAgwMAgsgAikCDCEMIAIgAkEUaigCADYCECACIAw3AwggAkEIahCgBSEDC0GAgICAeAshByAJIAQ2AgggCSADNgIEIAkgBzYCACACQdAAaiQAAkAgBigCBEGBgICAeEcEQCAIIAYpAgQ3AgAgCEEIaiAGQQxqKAIANgIADAELIAZBDGooAgAhAiAGKAIIIQRBpI3CAEEQEAUhAyAIQYCAgIB4NgIAIAggAzYCBCAEIAIoAgARAQAgAigCBEUNACACKAIIGiAEEGsLIAZBEGokACAKIAooAgBBAWs2AgACfyAFKAIUQYCAgIB4RwRAIAVBFGoQ1gYhAUEADAELQQEhCyAFKAIYCyECIAAgCzYCCCAAIAI2AgQgACABNgIAIAVBIGokAAu7BQIJfwF+IwBBIGsiBSQAIAVBCGogAhDSBiAFKAIMIQogBUEUaiEIIAUoAgghAyMAQRBrIgYkACAGQQRqIQkjAEHQAGsiAiQAIAJBCGogARB7An8CQCACKAIIBEAgAigCDCEDIAJBJRDwBSACKAIAIQcgAigCBEHPhcAAQSUQ5wkhBCACQSU2AjggAiAENgI0IAIgBzYCMCAEQSUQBSEEIAJBMGoQ/wcgA0GEAUkNASADEAIMAQsgAkHIAGogAkEoaikDADcDACACQUBrIAJBIGopAwA3AwAgAkE4aiACQRhqKQMANwMAIAIgAikDEDcDMCACQQhqIQcjAEEQayIEJAAgBCADIAJBMGoCfwJAAkACQEICIAMpAwBCAn0iDCAMQgJaG6dBAWsOAgECAAsgA0H0AGoMAgsgA0GMAWoMAQsgA0HsAGoLKAIAELAHEIIFIAdBADYCACAHQQxqIARBCGooAgA2AgAgByAEKQMANwIEIARBEGokACACKAIIRQRAIAJBFGooAgAhAyACQRBqKAIAIQQgAigCDAwCCyACKQIMIQwgAiACQRRqKAIANgIQIAIgDDcDCCACQQhqEKAFIQQLQYCAgIB4CyEHIAkgAzYCCCAJIAQ2AgQgCSAHNgIAIAJB0ABqJAACQCAGKAIEQYGAgIB4RwRAIAggBikCBDcCACAIQQhqIAZBDGooAgA2AgAMAQsgBkEMaigCACECIAYoAgghA0GkjcIAQRAQBSEEIAhBgICAgHg2AgAgCCAENgIEIAMgAigCABEBACACKAIERQ0AIAIoAggaIAMQawsgBkEQaiQAIAogCigCAEEBazYCAAJ/IAUoAhRBgICAgHhHBEAgBUEUahDWBiEBQQAMAQtBASELIAUoAhgLIQIgACALNgIIIAAgAjYCBCAAIAE2AgAgBUEgaiQAC9gEAgh/AX4jAEEgayIGJAAgBkEIaiACENIGIAYoAgwhCSAGQRBqIQcgBigCCCEEIwBBEGsiBSQAIwBB0ABrIgIkACACQQhqIAEQewJAIAIoAggEQCACKAIMIQQgAkElEPAFIAIoAgAhCCACKAIEQc+FwABBJRDnCSEDIAJBJTYCOCACIAM2AjQgAiAINgIwIANBJRAFIQMgAkEwahD/ByAEQYQBTwRAIAQQAgtBAiEEDAELIAJByABqIAJBKGopAwA3AwAgAkFAayACQSBqKQMANwMAIAJBOGogAkEYaikDADcDACACIAIpAxA3AzAjAEGAAWsiAyQAIAMgBBDbBSACQQhqIghBBGogBCACQTBqIANB7ABqKAIAELAHEP4EIAhBADYCACADQYABaiQAIAIoAggiBEECRwRAIAIpAhAhCyACKAIMIQMMAQsgAigCDCEDIAIgAkEQaikCADcCDCACIAM2AgggAkEIahCgBSEDQQIhBAsgBSALNwIIIAUgAzYCBCAFIAQ2AgAgAkHQAGokAAJAIAUoAgBBA0cEQCAHIAUpAgA3AgAgB0EIaiAFQQhqKQIANwIADAELIAVBCGooAgAhAiAFKAIEIQNBpI3CAEEQEAUhBCAHQQI2AgAgByAENgIEIAMgAigCABEBACACKAIERQ0AIAIoAggaIAMQawsgBUEQaiQAIAkgCSgCAEEBazYCAAJ/IAYoAhBBAkcEQCAGQRBqENcGIQFBAAwBC0EBIQogBigCFAshAiAAIAo2AgggACACNgIEIAAgATYCACAGQSBqJAAL1gMCCH8BfiMAQUBqIgQkACAEIAIQ0gYgBCgCBCECIARBCGohByAEKAIAIQYjAEFAaiIFJAAgBSABQQBHOgAHIAVBCGohAyMAQfAAayIBJAAgASAFQQdqMQAANwNoIAFBMGogBiABQegAahCkBCABQQE2AlAgASgCMCEGIAEpAjQhCyABKAI8IQkgASgCQCEIIAFBDGogAUHEAGpBJBDnCRoCQCAIQYCAgIB4RwRAIAFBMGogAUEMakEkEOcJGgwBCyABIAs3AjQgASAGNgIwIAFBMGoQoAUhBgsgA0EUaiABQTBqQSQQ5wkaIAMgCDYCECADIAk2AgwgAyALQiCIPgIIIAMgCz4CBCADIAY2AgAgAUHwAGokAAJAIAUoAhhBgYCAgHhHBEAgByAFQQhqQTgQ5wkaDAELIAUoAgghAyAFKAIMIQFBpI3CAEEQEAUhBiAHQYCAgIB4NgIQIAcgBjYCACADIAEoAgARAQAgASgCBEUNACABKAIIGiADEGsLIAVBQGskACACIAIoAgBBAWs2AgAgAAJ/IAQoAhhBgICAgHhHBEAgBEEIahD6BSECQQAMAQsgBCgCCCEKQQELNgIIIAAgCjYCBCAAIAI2AgAgBEFAayQAC9YDAgh/AX4jAEFAaiIEJAAgBCACENIGIAQoAgQhAiAEQQhqIQcgBCgCACEGIwBBQGoiBSQAIAUgAUEARzoAByAFQQhqIQMjAEHwAGsiASQAIAEgBUEHajEAADcDaCABQTBqIAYgAUHoAGoQowQgAUEBNgJQIAEoAjAhBiABKQI0IQsgASgCPCEJIAEoAkAhCCABQQxqIAFBxABqQSQQ5wkaAkAgCEGAgICAeEcEQCABQTBqIAFBDGpBJBDnCRoMAQsgASALNwI0IAEgBjYCMCABQTBqEKAFIQYLIANBFGogAUEwakEkEOcJGiADIAg2AhAgAyAJNgIMIAMgC0IgiD4CCCADIAs+AgQgAyAGNgIAIAFB8ABqJAACQCAFKAIYQYGAgIB4RwRAIAcgBUEIakE4EOcJGgwBCyAFKAIIIQMgBSgCDCEBQaSNwgBBEBAFIQYgB0GAgICAeDYCECAHIAY2AgAgAyABKAIAEQEAIAEoAgRFDQAgASgCCBogAxBrCyAFQUBrJAAgAiACKAIAQQFrNgIAIAACfyAEKAIYQYCAgIB4RwRAIARBCGoQ+gUhAkEADAELIAQoAgghCkEBCzYCCCAAIAo2AgQgACACNgIAIARBQGskAAvWAwIIfwF+IwBBQGoiBCQAIAQgAhDSBiAEKAIEIQIgBEEIaiEHIAQoAgAhBiMAQUBqIgUkACAFIAFBAEc6AAcgBUEIaiEDIwBB8ABrIgEkACABIAVBB2oxAAA3A2ggAUEwaiAGIAFB6ABqEKIEIAFBATYCUCABKAIwIQYgASkCNCELIAEoAjwhCSABKAJAIQggAUEMaiABQcQAakEkEOcJGgJAIAhBgICAgHhHBEAgAUEwaiABQQxqQSQQ5wkaDAELIAEgCzcCNCABIAY2AjAgAUEwahCgBSEGCyADQRRqIAFBMGpBJBDnCRogAyAINgIQIAMgCTYCDCADIAtCIIg+AgggAyALPgIEIAMgBjYCACABQfAAaiQAAkAgBSgCGEGBgICAeEcEQCAHIAVBCGpBOBDnCRoMAQsgBSgCCCEDIAUoAgwhAUGkjcIAQRAQBSEGIAdBgICAgHg2AhAgByAGNgIAIAMgASgCABEBACABKAIERQ0AIAEoAggaIAMQawsgBUFAayQAIAIgAigCAEEBazYCACAAAn8gBCgCGEGAgICAeEcEQCAEQQhqEPoFIQJBAAwBCyAEKAIIIQpBAQs2AgggACAKNgIEIAAgAjYCACAEQUBrJAALhgUCCn8CfiMAQUBqIgUkACAFIAIQ0gYgBSgCBCECIAVBCGohCiAFKAIAIQQjAEFAaiIGJAAgBiABQQBHOgAHIAZBCGohCCMAQeAAayIBJAAgAUEoaiEJIAZBB2otAAAhByMAQSBrIgMkACADQQRqIAQgB0EBEIMFAkACQCADKAIMIgcEQCADKAIIIgRBATYCICADIAQgB0E4bGo2AhwgAyADKAIENgIUIAMgBDYCECADIARBOGo2AhggBCgCECIHQYCAgIB4Rg0BIARBCGopAwAhDSAEKQMAIQ4gCUEUaiAEQRRqQSQQ5wkaIAkgDTcDCCAJIA43AwAgCSAHNgIQIANBEGoQkwcgA0EgaiQADAILQQBBAEGQicIAEMAFAAtB/PHBAEErQaCJwgAQzAYACyABKAIwIQQgASgCLCEJIAEoAighAwJAIAEoAjgiB0GAgICAeEcEQCABKAI0IQsgAUEEaiABQTxqQSQQ5wkaDAELIAEgASkCLDcCLCABIAM2AiggAUEoahCgBSEDCyAIQRRqIAFBBGpBJBDnCRogCCAHNgIQIAggCzYCDCAIIAQ2AgggCCAJNgIEIAggAzYCACABQeAAaiQAAkAgBigCGEGBgICAeEcEQCAKIAZBCGpBOBDnCRoMAQsgBigCCCEDIAYoAgwhAUGkjcIAQRAQBSEEIApBgICAgHg2AhAgCiAENgIAIAMgASgCABEBACABKAIERQ0AIAEoAggaIAMQawsgBkFAayQAIAIgAigCAEEBazYCACAAAn8gBSgCGEGAgICAeEcEQCAFQQhqEPoFIQJBAAwBCyAFKAIIIQxBAQs2AgggACAMNgIEIAAgAjYCACAFQUBrJAALhgQCB38BfiMAQdAAayIEJAAgBCACENIGIAQoAgQhAiAEQQhqIQcgBCgCACEGIwBB0ABrIgUkACAFIAFBAEc6AAcgBUEIaiEDIwBBkAFrIgEkACABIAVBB2oxAAA3A4gBIAFBQGsgBiABQYgBahChBCABQQE2AnAgASgCQCEGIAEpAkQhCiABQQxqIAFBzABqQTQQ5wkaIAEgASgAgQE2AgQgASABQYQBaigAADYABwJAIAEtAIABIghBA0cEQCABQUBrIAFBDGpBNBDnCRogASABKAAHNgCLASABIAEoAgQ2AogBDAELIAEgCjcCRCABIAY2AkAgAUFAaxCgBSEGCyADQQxqIAFBQGtBNBDnCRogA0HEAGogASgAiwE2AAAgAyABKAKIATYAQSADIAg6AEAgAyAKQiCIPgIIIAMgCj4CBCADIAY2AgAgAUGQAWokAAJAIAUtAEhBBEcEQCAHIAVBCGpByAAQ5wkaDAELIAUoAgghAyAFKAIMIQFBpI3CAEEQEAUhBiAHQQM6AEAgByAGNgIAIAMgASgCABEBACABKAIERQ0AIAEoAggaIAMQawsgBUHQAGokACACIAIoAgBBAWs2AgAgAAJ/IAQtAEhBA0cEQCAEQQhqEIkGIQJBAAwBCyAEKAIIIQlBAQs2AgggACAJNgIEIAAgAjYCACAEQdAAaiQAC6IEAgh/AX4jAEHQAGsiBCQAIAQgAhDSBiAEKAIEIQIgBEEIaiEHIAQoAgAhBiMAQdAAayIFJAAgBSABQQBHOgAHIAVBCGohAyMAQZABayIBJAAgASAFQQdqLQAAOgAAIAFByABqIAYgASABQQFqQQEQkgEgAUFAayIJIAFB3ABqKAIANgIAIAFBATYCcCABIAEpAlQ3AzggASgCSCEGIAEpAkwhCyABKAJgIQggAUEMaiABQeQAakEsEOcJGgJAIAhBgICAgHhHBEAgAUEIaiAJKAIANgIAIAEgASkDODcDACABQcgAaiABQQxqQSwQ5wkaDAELIAEgCzcCTCABIAY2AkggAUHIAGoQoAUhBgsgAyABKQMANwIMIANBFGogAUEIaigCADYCACADQRxqIAFByABqQSwQ5wkaIAMgCDYCGCADIAtCIIg+AgggAyALPgIEIAMgBjYCACABQZABaiQAAkAgBSgCIEGBgICAeEcEQCAHIAVBCGpByAAQ5wkaDAELIAUoAgghAyAFKAIMIQFBpI3CAEEQEAUhBiAHQYCAgIB4NgIYIAcgBjYCACADIAEoAgARAQAgASgCBEUNACABKAIIGiADEGsLIAVB0ABqJAAgAiACKAIAQQFrNgIAIAACfyAEKAIgQYCAgIB4RwRAIARBCGoQ+QUhAkEADAELIAQoAgghCkEBCzYCCCAAIAo2AgQgACACNgIAIARB0ABqJAAL0woCEn8BfiMAQSBrIgkkACAJQQhqIAIQ0gYgCSgCDCERIAlBFGohDSAJKAIIIQIjAEEQayIHJAAgByABOgADIAdBBGohDiMAQRBrIgUkACAHQQNqIhItAAAhAyMAQYABayIIJAAgCCACENsFIAhB7ABqKAIAEJ4HIQYjAEFAaiIMJAAgDEEIaiIEIAMCfwJAAkACQEICIAIpAwBCAn0iFSAVQgJaG6dBAWsOAgECAAsgAkH0AGoMAgsgAkGMAWoMAQsgAkHsAGoLKAIAIAYQ1QUgDCACNgI0IAwgDEE/ajYCMCMAQeAAayICJAACQAJAAkACQAJAIAQoAiAiA0UNACAEIANBAWs2AiACfgJAIARBG2otAABBAkcEQCACQRBqIARBEGoQnAMgAi0AEEEBcQ0BIARBAjoAGwsgBCkDAFANAiAEKQMIDAELIAIxABFC/wGDCyEVIARBLGooAgAhAyACIBU3A1ggAkEgaiADIAJB2ABqEKQEIAIoAjBBgICAgHhHDQELIAhBADYCCCAIQoCAgICAATcCAAwBCyACQQhqQQQgBCgCICIGBH8gBCkDACEVAkAgBC0AG0ECRgRAQX9BACAVQgBSGyEDDAELIBVQBEAgBCgCECIDRQ0EIAMgBEEUaigCAE0hAwwBC0F/IQMgBCgCEEUNAwsgAyAGIAMgBkkbBUEAC0EBaiIDQX8gAxsiAyADQQRNGxDJBSACKAIIIQYgAigCDCACQSBqIgNBOBDjCSELIAJBHGoiE0EBNgIAIAIgCzYCGCACIAY2AhQgAyAEQTAQ5wkaIAJBFGohCyMAQdAAayIEJAACQCADKAIgIgZFDQAgA0EQaiEPA0AgAyAGQQFrNgIgAn4CQCADLQAbQQJHBEAgBEEIaiAPEJwDIAQtAAhBAXENASADQQI6ABsLIAMpAwBQDQMgAykDCAwBCyAEMQAJQv8BgwshFSADKAIsIQYgBCAVNwNIIARBEGogBiAEQcgAahCkBCAEKAIgQYCAgIB4Rg0BIAMoAiAhBiALKAIIIhAgCygCAEYEQCALIBAgBgR/IAMpAwAhFQJAIAMtABtBAkYEQEF/QQAgFUIAUhshCgwBCyAVUARAIA8oAgAiCkUNByAKIAMoAhRNIQoMAQtBfyEKIA8oAgBFDQYLIAogBiAGIApLGwVBAAtBAWoiCkF/IAobEKgGCyALKAIEIBBBOGxqIARBEGpBOBDnCRogCyAQQQFqNgIIIAYNAAsLIARB0ABqJAAgCEEIaiATKAIANgIAIAggAikCFDcCAAsgAkHgAGokAAwBC0Hgj8AAQRlB7JjAABDMBgALIAxBQGskACAFQQA2AgAgBUEMaiAIQQhqKAIANgIAIAUgCCkDADcCBCAIQYABaiQAAn8gBSgCAEUEQCAFQQxqKAIAIRIgBSgCBCECIAVBCGooAgAMAQsgBSkCBCEVIAUgBUEMaigCADYCCCAFIBU3AwBBgICAgHghAiAFEKAFCyEEIA4gEjYCCCAOIAQ2AgQgDiACNgIAIAVBEGokAAJAIAcoAgRBgYCAgHhHBEAgDSAHKQIENwIAIA1BCGogB0EMaigCADYCAAwBCyAHQQxqKAIAIQIgBygCCCEEQaSNwgBBEBAFIQUgDUGAgICAeDYCACANIAU2AgQgBCACKAIAEQEAIAIoAgRFDQAgAigCCBogBBBrCyAHQRBqJAAgESARKAIAQQFrNgIAAn8gCSgCFEGAgICAeEcEQCAJQRRqENYGIQFBAAwBC0EBIRQgCSgCGAshAiAAIBQ2AgggACACNgIEIAAgATYCACAJQSBqJAAL0woCEn8BfiMAQSBrIgkkACAJQQhqIAIQ0gYgCSgCDCERIAlBFGohDSAJKAIIIQIjAEEQayIHJAAgByABOgADIAdBBGohDiMAQRBrIgUkACAHQQNqIhItAAAhAyMAQYABayIIJAAgCCACENwFIAhB7ABqKAIAEJ4HIQYjAEFAaiIMJAAgDEEIaiIEIAMCfwJAAkACQEICIAIpAwBCAn0iFSAVQgJaG6dBAWsOAgECAAsgAkH0AGoMAgsgAkGMAWoMAQsgAkHsAGoLKAIAIAYQ1QUgDCACNgI0IAwgDEE/ajYCMCMAQeAAayICJAACQAJAAkACQAJAIAQoAiAiA0UNACAEIANBAWs2AiACfgJAIARBG2otAABBAkcEQCACQRBqIARBEGoQnAMgAi0AEEEBcQ0BIARBAjoAGwsgBCkDAFANAiAEKQMIDAELIAIxABFC/wGDCyEVIARBLGooAgAhAyACIBU3A1ggAkEgaiADIAJB2ABqEKMEIAIoAjBBgICAgHhHDQELIAhBADYCCCAIQoCAgICAATcCAAwBCyACQQhqQQQgBCgCICIGBH8gBCkDACEVAkAgBC0AG0ECRgRAQX9BACAVQgBSGyEDDAELIBVQBEAgBCgCECIDRQ0EIAMgBEEUaigCAE0hAwwBC0F/IQMgBCgCEEUNAwsgAyAGIAMgBkkbBUEAC0EBaiIDQX8gAxsiAyADQQRNGxDJBSACKAIIIQYgAigCDCACQSBqIgNBOBDjCSELIAJBHGoiE0EBNgIAIAIgCzYCGCACIAY2AhQgAyAEQTAQ5wkaIAJBFGohCyMAQdAAayIEJAACQCADKAIgIgZFDQAgA0EQaiEPA0AgAyAGQQFrNgIgAn4CQCADLQAbQQJHBEAgBEEIaiAPEJwDIAQtAAhBAXENASADQQI6ABsLIAMpAwBQDQMgAykDCAwBCyAEMQAJQv8BgwshFSADKAIsIQYgBCAVNwNIIARBEGogBiAEQcgAahCjBCAEKAIgQYCAgIB4Rg0BIAMoAiAhBiALKAIIIhAgCygCAEYEQCALIBAgBgR/IAMpAwAhFQJAIAMtABtBAkYEQEF/QQAgFUIAUhshCgwBCyAVUARAIA8oAgAiCkUNByAKIAMoAhRNIQoMAQtBfyEKIA8oAgBFDQYLIAogBiAGIApLGwVBAAtBAWoiCkF/IAobEKgGCyALKAIEIBBBOGxqIARBEGpBOBDnCRogCyAQQQFqNgIIIAYNAAsLIARB0ABqJAAgCEEIaiATKAIANgIAIAggAikCFDcCAAsgAkHgAGokAAwBC0Hgj8AAQRlB7JjAABDMBgALIAxBQGskACAFQQA2AgAgBUEMaiAIQQhqKAIANgIAIAUgCCkDADcCBCAIQYABaiQAAn8gBSgCAEUEQCAFQQxqKAIAIRIgBSgCBCECIAVBCGooAgAMAQsgBSkCBCEVIAUgBUEMaigCADYCCCAFIBU3AwBBgICAgHghAiAFEKAFCyEEIA4gEjYCCCAOIAQ2AgQgDiACNgIAIAVBEGokAAJAIAcoAgRBgYCAgHhHBEAgDSAHKQIENwIAIA1BCGogB0EMaigCADYCAAwBCyAHQQxqKAIAIQIgBygCCCEEQaSNwgBBEBAFIQUgDUGAgICAeDYCACANIAU2AgQgBCACKAIAEQEAIAIoAgRFDQAgAigCCBogBBBrCyAHQRBqJAAgESARKAIAQQFrNgIAAn8gCSgCFEGAgICAeEcEQCAJQRRqENYGIQFBAAwBC0EBIRQgCSgCGAshAiAAIBQ2AgggACACNgIEIAAgATYCACAJQSBqJAAL0woCEn8BfiMAQSBrIgkkACAJQQhqIAIQ0gYgCSgCDCERIAlBFGohDSAJKAIIIQIjAEEQayIHJAAgByABOgADIAdBBGohDiMAQRBrIgUkACAHQQNqIhItAAAhAyMAQYABayIIJAAgCCACEN4FIAhB7ABqKAIAEJ4HIQYjAEFAaiIMJAAgDEEIaiIEIAMCfwJAAkACQEICIAIpAwBCAn0iFSAVQgJaG6dBAWsOAgECAAsgAkH0AGoMAgsgAkGMAWoMAQsgAkHsAGoLKAIAIAYQ1QUgDCACNgI0IAwgDEE/ajYCMCMAQeAAayICJAACQAJAAkACQAJAIAQoAiAiA0UNACAEIANBAWs2AiACfgJAIARBG2otAABBAkcEQCACQRBqIARBEGoQnAMgAi0AEEEBcQ0BIARBAjoAGwsgBCkDAFANAiAEKQMIDAELIAIxABFC/wGDCyEVIARBLGooAgAhAyACIBU3A1ggAkEgaiADIAJB2ABqEKIEIAIoAjBBgICAgHhHDQELIAhBADYCCCAIQoCAgICAATcCAAwBCyACQQhqQQQgBCgCICIGBH8gBCkDACEVAkAgBC0AG0ECRgRAQX9BACAVQgBSGyEDDAELIBVQBEAgBCgCECIDRQ0EIAMgBEEUaigCAE0hAwwBC0F/IQMgBCgCEEUNAwsgAyAGIAMgBkkbBUEAC0EBaiIDQX8gAxsiAyADQQRNGxDJBSACKAIIIQYgAigCDCACQSBqIgNBOBDjCSELIAJBHGoiE0EBNgIAIAIgCzYCGCACIAY2AhQgAyAEQTAQ5wkaIAJBFGohCyMAQdAAayIEJAACQCADKAIgIgZFDQAgA0EQaiEPA0AgAyAGQQFrNgIgAn4CQCADLQAbQQJHBEAgBEEIaiAPEJwDIAQtAAhBAXENASADQQI6ABsLIAMpAwBQDQMgAykDCAwBCyAEMQAJQv8BgwshFSADKAIsIQYgBCAVNwNIIARBEGogBiAEQcgAahCiBCAEKAIgQYCAgIB4Rg0BIAMoAiAhBiALKAIIIhAgCygCAEYEQCALIBAgBgR/IAMpAwAhFQJAIAMtABtBAkYEQEF/QQAgFUIAUhshCgwBCyAVUARAIA8oAgAiCkUNByAKIAMoAhRNIQoMAQtBfyEKIA8oAgBFDQYLIAogBiAGIApLGwVBAAtBAWoiCkF/IAobEKgGCyALKAIEIBBBOGxqIARBEGpBOBDnCRogCyAQQQFqNgIIIAYNAAsLIARB0ABqJAAgCEEIaiATKAIANgIAIAggAikCFDcCAAsgAkHgAGokAAwBC0Hgj8AAQRlB7JjAABDMBgALIAxBQGskACAFQQA2AgAgBUEMaiAIQQhqKAIANgIAIAUgCCkDADcCBCAIQYABaiQAAn8gBSgCAEUEQCAFQQxqKAIAIRIgBSgCBCECIAVBCGooAgAMAQsgBSkCBCEVIAUgBUEMaigCADYCCCAFIBU3AwBBgICAgHghAiAFEKAFCyEEIA4gEjYCCCAOIAQ2AgQgDiACNgIAIAVBEGokAAJAIAcoAgRBgYCAgHhHBEAgDSAHKQIENwIAIA1BCGogB0EMaigCADYCAAwBCyAHQQxqKAIAIQIgBygCCCEEQaSNwgBBEBAFIQUgDUGAgICAeDYCACANIAU2AgQgBCACKAIAEQEAIAIoAgRFDQAgAigCCBogBBBrCyAHQRBqJAAgESARKAIAQQFrNgIAAn8gCSgCFEGAgICAeEcEQCAJQRRqENYGIQFBAAwBC0EBIRQgCSgCGAshAiAAIBQ2AgggACACNgIEIAAgATYCACAJQSBqJAALlwQCCn8BfiMAQSBrIgUkACAFQQhqIAIQ0gYgBSgCDCEJIAVBFGohByAFKAIIIQMjAEEQayIEJAAgBCABOgADIARBBGohCCMAQRBrIgIkACAEQQNqIgotAAAhCyMAQRBrIgYkACAGIAMgCwJ/AkACQAJAQgIgAykDAEICfSINIA1CAlobp0EBaw4CAQIACyADQfQAagwCCyADQYwBagwBCyADQewAagsoAgAQngcQgwUgAkEANgIAIAJBDGogBkEIaigCADYCACACIAYpAwA3AgQgBkEQaiQAAn8gAigCAEUEQCACQQxqKAIAIQogAigCBCEDIAJBCGooAgAMAQsgAikCBCENIAIgAkEMaigCADYCCCACIA03AwBBgICAgHghAyACEKAFCyEGIAggCjYCCCAIIAY2AgQgCCADNgIAIAJBEGokAAJAIAQoAgRBgYCAgHhHBEAgByAEKQIENwIAIAdBCGogBEEMaigCADYCAAwBCyAEQQxqKAIAIQIgBCgCCCEDQaSNwgBBEBAFIQYgB0GAgICAeDYCACAHIAY2AgQgAyACKAIAEQEAIAIoAgRFDQAgAigCCBogAxBrCyAEQRBqJAAgCSAJKAIAQQFrNgIAAn8gBSgCFEGAgICAeEcEQCAFQRRqENYGIQFBAAwBC0EBIQwgBSgCGAshAiAAIAw2AgggACACNgIEIAAgATYCACAFQSBqJAALnAoCEn8CfiMAQSBrIggkACAIQQhqIAIQ0gYgCCgCDCESIAhBEGohDCAIKAIIIQIjAEEgayIHJAAgByABOgAPIAdBEGohDiMAQRBrIgYkACAHQQ9qLQAAIQMjAEGAAWsiDyQAIA8gAhDbBSAGQQRqIQ0gD0HsAGooAgAQngchBSMAQUBqIgskACALQQhqIgQgAwJ/AkACQAJAQgIgAikDAEICfSIVIBVCAlobp0EBaw4CAQIACyACQfQAagwCCyACQYwBagwBCyACQewAagsoAgAgBRDVBSALIAI2AjQgCyALQT9qNgIwIwBB8ABrIgIkAAJAAkACQAJAAkAgBCgCICIDRQ0AIAQgA0EBazYCIAJ+AkAgBEEbai0AAEECRwRAIAJBEGogBEEQahCcAyACLQAQQQFxDQEgBEECOgAbCyAEKQMAUA0CIAQpAwgMAQsgAjEAEUL/AYMLIRUgBEEsaigCACEDIAIgFTcDaCACQSBqIAMgAkHoAGoQoQQgAi0AYEECRw0BCyANQQA2AgggDUKAgICAgAE3AgAMAQsgAkEIakEEIAQoAiAiBQR/IAQpAwAhFQJAIAQtABtBAkYEQEF/QQAgFUIAUhshAwwBCyAVUARAIAQoAhAiA0UNBCADIARBFGooAgBNIQMMAQtBfyEDIAQoAhBFDQMLIAMgBSADIAVJGwVBAAtBAWoiA0F/IAMbIgMgA0EETRsQxwUgAigCCCEFIAIoAgwgAkEgaiIDQcgAEOMJIQogAkEcaiITQQE2AgAgAiAKNgIYIAIgBTYCFCADIARBMBDnCRogAkEUaiEKIwBB4ABrIgQkAAJAIAMoAiAiBUUNACADQRBqIRADQCADIAVBAWs2AiACfgJAIAMtABtBAkcEQCAEQQhqIBAQnAMgBC0ACEEBcQ0BIANBAjoAGwsgAykDAFANAyADKQMIDAELIAQxAAlC/wGDCyEVIAMoAiwhBSAEIBU3A1ggBEEQaiAFIARB2ABqEKEEIAQtAFBBAkYNASADKAIgIQUgCigCCCIRIAooAgBGBEAgCiARIAUEfyADKQMAIRUCQCADLQAbQQJGBEBBf0EAIBVCAFIbIQkMAQsgFVAEQCAQKAIAIglFDQcgCSADKAIUTSEJDAELQX8hCSAQKAIARQ0GCyAJIAUgBSAJSxsFQQALQQFqIglBfyAJGxCqBgsgCigCBCARQcgAbGogBEEQakHIABDnCRogCiARQQFqNgIIIAUNAAsLIARB4ABqJAAgDUEIaiATKAIANgIAIA0gAikCFDcCAAsgAkHwAGokAAwBC0Hgj8AAQRlB7JjAABDMBgALIAtBQGskACAGQQA2AgAgD0GAAWokAAJ/IAYoAgAiAkECRwRAIAYpAgghFiAGKAIEDAELIAYoAgQhBCAGIAZBCGopAgA3AgQgBiAENgIAIAYQoAULIQQgDiAWNwIIIA4gBDYCBCAOIAI2AgAgBkEQaiQAAkAgBygCEEEDRwRAIAwgBykCEDcCACAMQQhqIAdBGGopAgA3AgAMAQsgB0EYaigCACECIAcoAhQhBEGkjcIAQRAQBSEDIAxBAjYCACAMIAM2AgQgBCACKAIAEQEAIAIoAgRFDQAgAigCCBogBBBrCyAHQSBqJAAgEiASKAIAQQFrNgIAAn8gCCgCEEECRwRAIAhBEGoQ1wYhAUEADAELQQEhFCAIKAIUCyECIAAgFDYCCCAAIAI2AgQgACABNgIAIAhBIGokAAvJCgISfwF+IwBBIGsiCiQAIApBCGogAhDSBiAKKAIMIRAgCkEUaiENIAooAgghBCMAQRBrIggkACAIIAE7AQIgCEEEaiEOIwBBEGsiBiQAIAhBAmoiES8BACEDIwBBgAFrIgkkACAJIAQQ2wUgCUHsAGooAgAQnAchBSMAQUBqIgIkACACIAMCfwJAAkACQEICIAQpAwBCAn0iFSAVQgJaG6dBAWsOAgECAAsgBEH0AGoMAgsgBEGMAWoMAQsgBEHsAGoLKAIAIAUQvQUgAiAENgI0IAIgAkE/ajYCMCMAQeAAayIEJAACQAJAAkACQAJAIAIoAigiA0UNACACIANBAWs2AigCfgJAIAIvARBBAkcEQCAEQRBqIAJBEGoiAxChAyAELwEQDQEgA0ECOwEACyACKQMAUA0CIAIpAwgMAQsgBDMBEkL//wODCyEVIAJBNGooAgAhAyAEIBU3A1ggBEEgaiADIARB2ABqEKQEIAQoAjBBgICAgHhHDQELIAlBADYCCCAJQoCAgICAATcCAAwBCyAEQQhqQQQgAigCKCIFBH8gAikDACEVAkAgAi8BEEECRgRAQX9BACAVQgBSGyEDDAELIBVQBEAgAigCFCIDRQ0EIAMgAkEYaigCAE0hAwwBC0F/IQMgAigCFEUNAwsgAyAFIAMgBUkbBUEAC0EBaiIDQX8gAxsiAyADQQRNGxDJBSAEKAIIIQUgBCgCDCAEQSBqIgNBOBDjCSEHIARBHGoiE0EBNgIAIAQgBzYCGCAEIAU2AhQgAyACQTgQ5wkaIARBFGohDCMAQdAAayIFJAACQCADKAIoIgdFDQAgA0EQaiESA0AgAyAHQQFrNgIoAn4CQCADLwEQQQJHBEAgBUEIaiASEKEDIAUvAQgNASASQQI7AQALIAMpAwBQDQMgAykDCAwBCyAFMwEKQv//A4MLIRUgAygCNCEHIAUgFTcDSCAFQRBqIAcgBUHIAGoQpAQgBSgCIEGAgICAeEYNASADKAIoIQcgDCgCCCIPIAwoAgBGBEAgDCAPIAcEfyADKQMAIRUCQCADLwEQQQJGBEBBf0EAIBVCAFIbIQsMAQsgFVAEQCADKAIUIgtFDQcgCyADKAIYTSELDAELQX8hCyADKAIURQ0GCyALIAcgByALSxsFQQALQQFqIgtBfyALGxCoBgsgDCgCBCAPQThsaiAFQRBqQTgQ5wkaIAwgD0EBajYCCCAHDQALCyAFQdAAaiQAIAlBCGogEygCADYCACAJIAQpAhQ3AgALIARB4ABqJAAMAQtB4I/AAEEZQeyYwAAQzAYACyACQUBrJAAgBkEANgIAIAZBDGogCUEIaigCADYCACAGIAkpAwA3AgQgCUGAAWokAAJ/IAYoAgBFBEAgBkEMaigCACERIAYoAgQhAiAGQQhqKAIADAELIAYpAgQhFSAGIAZBDGooAgA2AgggBiAVNwMAQYCAgIB4IQIgBhCgBQshBCAOIBE2AgggDiAENgIEIA4gAjYCACAGQRBqJAACQCAIKAIEQYGAgIB4RwRAIA0gCCkCBDcCACANQQhqIAhBDGooAgA2AgAMAQsgCEEMaigCACECIAgoAgghBEGkjcIAQRAQBSEDIA1BgICAgHg2AgAgDSADNgIEIAQgAigCABEBACACKAIERQ0AIAIoAggaIAQQawsgCEEQaiQAIBAgECgCAEEBazYCAAJ/IAooAhRBgICAgHhHBEAgCkEUahDWBiEBQQAMAQtBASEUIAooAhgLIQIgACAUNgIIIAAgAjYCBCAAIAE2AgAgCkEgaiQAC8kKAhJ/AX4jAEEgayIKJAAgCkEIaiACENIGIAooAgwhECAKQRRqIQ0gCigCCCEEIwBBEGsiCCQAIAggATsBAiAIQQRqIQ4jAEEQayIGJAAgCEECaiIRLwEAIQMjAEGAAWsiCSQAIAkgBBDcBSAJQewAaigCABCcByEFIwBBQGoiAiQAIAIgAwJ/AkACQAJAQgIgBCkDAEICfSIVIBVCAlobp0EBaw4CAQIACyAEQfQAagwCCyAEQYwBagwBCyAEQewAagsoAgAgBRC9BSACIAQ2AjQgAiACQT9qNgIwIwBB4ABrIgQkAAJAAkACQAJAAkAgAigCKCIDRQ0AIAIgA0EBazYCKAJ+AkAgAi8BEEECRwRAIARBEGogAkEQaiIDEKEDIAQvARANASADQQI7AQALIAIpAwBQDQIgAikDCAwBCyAEMwESQv//A4MLIRUgAkE0aigCACEDIAQgFTcDWCAEQSBqIAMgBEHYAGoQowQgBCgCMEGAgICAeEcNAQsgCUEANgIIIAlCgICAgIABNwIADAELIARBCGpBBCACKAIoIgUEfyACKQMAIRUCQCACLwEQQQJGBEBBf0EAIBVCAFIbIQMMAQsgFVAEQCACKAIUIgNFDQQgAyACQRhqKAIATSEDDAELQX8hAyACKAIURQ0DCyADIAUgAyAFSRsFQQALQQFqIgNBfyADGyIDIANBBE0bEMkFIAQoAgghBSAEKAIMIARBIGoiA0E4EOMJIQcgBEEcaiITQQE2AgAgBCAHNgIYIAQgBTYCFCADIAJBOBDnCRogBEEUaiEMIwBB0ABrIgUkAAJAIAMoAigiB0UNACADQRBqIRIDQCADIAdBAWs2AigCfgJAIAMvARBBAkcEQCAFQQhqIBIQoQMgBS8BCA0BIBJBAjsBAAsgAykDAFANAyADKQMIDAELIAUzAQpC//8DgwshFSADKAI0IQcgBSAVNwNIIAVBEGogByAFQcgAahCjBCAFKAIgQYCAgIB4Rg0BIAMoAighByAMKAIIIg8gDCgCAEYEQCAMIA8gBwR/IAMpAwAhFQJAIAMvARBBAkYEQEF/QQAgFUIAUhshCwwBCyAVUARAIAMoAhQiC0UNByALIAMoAhhNIQsMAQtBfyELIAMoAhRFDQYLIAsgByAHIAtLGwVBAAtBAWoiC0F/IAsbEKgGCyAMKAIEIA9BOGxqIAVBEGpBOBDnCRogDCAPQQFqNgIIIAcNAAsLIAVB0ABqJAAgCUEIaiATKAIANgIAIAkgBCkCFDcCAAsgBEHgAGokAAwBC0Hgj8AAQRlB7JjAABDMBgALIAJBQGskACAGQQA2AgAgBkEMaiAJQQhqKAIANgIAIAYgCSkDADcCBCAJQYABaiQAAn8gBigCAEUEQCAGQQxqKAIAIREgBigCBCECIAZBCGooAgAMAQsgBikCBCEVIAYgBkEMaigCADYCCCAGIBU3AwBBgICAgHghAiAGEKAFCyEEIA4gETYCCCAOIAQ2AgQgDiACNgIAIAZBEGokAAJAIAgoAgRBgYCAgHhHBEAgDSAIKQIENwIAIA1BCGogCEEMaigCADYCAAwBCyAIQQxqKAIAIQIgCCgCCCEEQaSNwgBBEBAFIQMgDUGAgICAeDYCACANIAM2AgQgBCACKAIAEQEAIAIoAgRFDQAgAigCCBogBBBrCyAIQRBqJAAgECAQKAIAQQFrNgIAAn8gCigCFEGAgICAeEcEQCAKQRRqENYGIQFBAAwBC0EBIRQgCigCGAshAiAAIBQ2AgggACACNgIEIAAgATYCACAKQSBqJAALyQoCEn8BfiMAQSBrIgokACAKQQhqIAIQ0gYgCigCDCEQIApBFGohDSAKKAIIIQQjAEEQayIIJAAgCCABOwECIAhBBGohDiMAQRBrIgYkACAIQQJqIhEvAQAhAyMAQYABayIJJAAgCSAEEN4FIAlB7ABqKAIAEJwHIQUjAEFAaiICJAAgAiADAn8CQAJAAkBCAiAEKQMAQgJ9IhUgFUICWhunQQFrDgIBAgALIARB9ABqDAILIARBjAFqDAELIARB7ABqCygCACAFEL0FIAIgBDYCNCACIAJBP2o2AjAjAEHgAGsiBCQAAkACQAJAAkACQCACKAIoIgNFDQAgAiADQQFrNgIoAn4CQCACLwEQQQJHBEAgBEEQaiACQRBqIgMQoQMgBC8BEA0BIANBAjsBAAsgAikDAFANAiACKQMIDAELIAQzARJC//8DgwshFSACQTRqKAIAIQMgBCAVNwNYIARBIGogAyAEQdgAahCiBCAEKAIwQYCAgIB4Rw0BCyAJQQA2AgggCUKAgICAgAE3AgAMAQsgBEEIakEEIAIoAigiBQR/IAIpAwAhFQJAIAIvARBBAkYEQEF/QQAgFUIAUhshAwwBCyAVUARAIAIoAhQiA0UNBCADIAJBGGooAgBNIQMMAQtBfyEDIAIoAhRFDQMLIAMgBSADIAVJGwVBAAtBAWoiA0F/IAMbIgMgA0EETRsQyQUgBCgCCCEFIAQoAgwgBEEgaiIDQTgQ4wkhByAEQRxqIhNBATYCACAEIAc2AhggBCAFNgIUIAMgAkE4EOcJGiAEQRRqIQwjAEHQAGsiBSQAAkAgAygCKCIHRQ0AIANBEGohEgNAIAMgB0EBazYCKAJ+AkAgAy8BEEECRwRAIAVBCGogEhChAyAFLwEIDQEgEkECOwEACyADKQMAUA0DIAMpAwgMAQsgBTMBCkL//wODCyEVIAMoAjQhByAFIBU3A0ggBUEQaiAHIAVByABqEKIEIAUoAiBBgICAgHhGDQEgAygCKCEHIAwoAggiDyAMKAIARgRAIAwgDyAHBH8gAykDACEVAkAgAy8BEEECRgRAQX9BACAVQgBSGyELDAELIBVQBEAgAygCFCILRQ0HIAsgAygCGE0hCwwBC0F/IQsgAygCFEUNBgsgCyAHIAcgC0sbBUEAC0EBaiILQX8gCxsQqAYLIAwoAgQgD0E4bGogBUEQakE4EOcJGiAMIA9BAWo2AgggBw0ACwsgBUHQAGokACAJQQhqIBMoAgA2AgAgCSAEKQIUNwIACyAEQeAAaiQADAELQeCPwABBGUHsmMAAEMwGAAsgAkFAayQAIAZBADYCACAGQQxqIAlBCGooAgA2AgAgBiAJKQMANwIEIAlBgAFqJAACfyAGKAIARQRAIAZBDGooAgAhESAGKAIEIQIgBkEIaigCAAwBCyAGKQIEIRUgBiAGQQxqKAIANgIIIAYgFTcDAEGAgICAeCECIAYQoAULIQQgDiARNgIIIA4gBDYCBCAOIAI2AgAgBkEQaiQAAkAgCCgCBEGBgICAeEcEQCANIAgpAgQ3AgAgDUEIaiAIQQxqKAIANgIADAELIAhBDGooAgAhAiAIKAIIIQRBpI3CAEEQEAUhAyANQYCAgIB4NgIAIA0gAzYCBCAEIAIoAgARAQAgAigCBEUNACACKAIIGiAEEGsLIAhBEGokACAQIBAoAgBBAWs2AgACfyAKKAIUQYCAgIB4RwRAIApBFGoQ1gYhAUEADAELQQEhFCAKKAIYCyECIAAgFDYCCCAAIAI2AgQgACABNgIAIApBIGokAAvPCgISfwF+IwBBIGsiCCQAIAhBCGogAhDSBiAIKAIMIRAgCEEUaiENIAgoAgghBCMAQRBrIgckACAHIAE7AQIgB0EEaiEOIwBBEGsiBiQAIAdBAmoiES8BACEDIwBBEGsiCyQAAn8CQAJAAkBCAiAEKQMAQgJ9IhUgFUICWhunQQFrDgIBAgALIARB9ABqDAILIARBjAFqDAELIARB7ABqCygCABCcByEFIwBBQGoiAiQAIAIgAwJ/AkACQAJAQgIgBCkDAEICfSIVIBVCAlobp0EBaw4CAQIACyAEQfQAagwCCyAEQYwBagwBCyAEQewAagsoAgAgBRC9BSACIAQ2AjQgAiACQT9qNgIwIwBB0ABrIgQkAAJAAkACQAJAAkAgAigCKCIDRQ0AIAIgA0EBazYCKAJ+AkAgAi8BEEECRwRAIARBCGogAkEQaiIDEKEDIAQvAQgNASADQQI7AQALIAIpAwBQDQIgAikDCAwBCyAEMwEKQv//A4MLIRUgBEEYaiACQTRqKAIAIBUQTCAEKAIoQYCAgIB4Rw0BCyALQQA2AgggC0KAgICAgAE3AgAMAQsgBEEEIAIoAigiBQR/IAIpAwAhFQJAIAIvARBBAkYEQEF/QQAgFUIAUhshAwwBCyAVUARAIAIoAhQiA0UNBCADIAJBGGooAgBNIQMMAQtBfyEDIAIoAhRFDQMLIAMgBSADIAVJGwVBAAtBAWoiA0F/IAMbIgMgA0EETRsQyQUgBCgCACEFIAQoAgQgBEEYaiIDQTgQ4wkhCSAEQRRqIhNBATYCACAEIAk2AhAgBCAFNgIMIAMgAkE4EOcJGiAEQQxqIQwjAEFAaiIFJAACQCADKAIoIglFDQAgA0EQaiESA0AgAyAJQQFrNgIoAn4CQCADLwEQQQJHBEAgBSASEKEDIAUvAQANASASQQI7AQALIAMpAwBQDQMgAykDCAwBCyAFMwECQv//A4MLIRUgBUEIaiADKAI0IBUQTCAFKAIYQYCAgIB4Rg0BIAMoAighCSAMKAIIIg8gDCgCAEYEQCAMIA8gCQR/IAMpAwAhFQJAIAMvARBBAkYEQEF/QQAgFUIAUhshCgwBCyAVUARAIAMoAhQiCkUNByAKIAMoAhhNIQoMAQtBfyEKIAMoAhRFDQYLIAogCSAJIApLGwVBAAtBAWoiCkF/IAobEKgGCyAMKAIEIA9BOGxqIAVBCGpBOBDnCRogDCAPQQFqNgIIIAkNAAsLIAVBQGskACALQQhqIBMoAgA2AgAgCyAEKQIMNwIACyAEQdAAaiQADAELQeCPwABBGUHsmMAAEMwGAAsgAkFAayQAIAZBADYCACAGQQxqIAtBCGooAgA2AgAgBiALKQMANwIEIAtBEGokAAJ/IAYoAgBFBEAgBkEMaigCACERIAYoAgQhAiAGQQhqKAIADAELIAYpAgQhFSAGIAZBDGooAgA2AgggBiAVNwMAQYCAgIB4IQIgBhCgBQshBCAOIBE2AgggDiAENgIEIA4gAjYCACAGQRBqJAACQCAHKAIEQYGAgIB4RwRAIA0gBykCBDcCACANQQhqIAdBDGooAgA2AgAMAQsgB0EMaigCACECIAcoAgghBEGkjcIAQRAQBSEDIA1BgICAgHg2AgAgDSADNgIEIAQgAigCABEBACACKAIERQ0AIAIoAggaIAQQawsgB0EQaiQAIBAgECgCAEEBazYCAAJ/IAgoAhRBgICAgHhHBEAgCEEUahDWBiEBQQAMAQtBASEUIAgoAhgLIQIgACAUNgIIIAAgAjYCBCAAIAE2AgAgCEEgaiQAC5IKAhJ/An4jAEEgayIJJAAgCUEIaiACENIGIAkoAgwhESAJQRBqIQwgCSgCCCEDIwBBIGsiCCQAIAggATsBDiAIQRBqIQ4jAEEQayIGJAAgCEEOai8BACEEIwBBgAFrIg8kACAPIAMQ2wUgBkEEaiENIA9B7ABqKAIAEJwHIQUjAEFAaiICJAAgAiAEAn8CQAJAAkBCAiADKQMAQgJ9IhUgFUICWhunQQFrDgIBAgALIANB9ABqDAILIANBjAFqDAELIANB7ABqCygCACAFEL0FIAIgAzYCNCACIAJBP2o2AjAjAEHwAGsiAyQAAkACQAJAAkACQCACKAIoIgRFDQAgAiAEQQFrNgIoAn4CQCACLwEQQQJHBEAgA0EQaiACQRBqIgQQoQMgAy8BEA0BIARBAjsBAAsgAikDAFANAiACKQMIDAELIAMzARJC//8DgwshFSACQTRqKAIAIQQgAyAVNwNoIANBIGogBCADQegAahChBCADLQBgQQJHDQELIA1BADYCCCANQoCAgICAATcCAAwBCyADQQhqQQQgAigCKCIEBH8gAikDACEVAkAgAi8BEEECRgRAQX9BACAVQgBSGyEFDAELIBVQBEAgAigCFCIFRQ0EIAUgAkEYaigCAE0hBQwBC0F/IQUgAigCFEUNAwsgBSAEIAQgBUsbBUEAC0EBaiIEQX8gBBsiBCAEQQRNGxDHBSADKAIIIQUgAygCDCADQSBqIgRByAAQ4wkhByADQRxqIhNBATYCACADIAc2AhggAyAFNgIUIAQgAkE4EOcJGiADQRRqIQsjAEHgAGsiByQAAkAgBCgCKCIKRQ0AIARBEGohEgNAIAQgCkEBazYCKAJ+AkAgBC8BEEECRwRAIAdBCGogEhChAyAHLwEIDQEgEkECOwEACyAEKQMAUA0DIAQpAwgMAQsgBzMBCkL//wODCyEVIAQoAjQhBSAHIBU3A1ggB0EQaiAFIAdB2ABqEKEEIActAFBBAkYNASAEKAIoIQogCygCCCIQIAsoAgBGBEAgCyAQIAoEfyAEKQMAIRUCQCAELwEQQQJGBEBBf0EAIBVCAFIbIQUMAQsgFVAEQCAEKAIUIgVFDQcgBSAEKAIYTSEFDAELQX8hBSAEKAIURQ0GCyAFIAogBSAKSRsFQQALQQFqIgVBfyAFGxCqBgsgCygCBCAQQcgAbGogB0EQakHIABDnCRogCyAQQQFqNgIIIAoNAAsLIAdB4ABqJAAgDUEIaiATKAIANgIAIA0gAykCFDcCAAsgA0HwAGokAAwBC0Hgj8AAQRlB7JjAABDMBgALIAJBQGskACAGQQA2AgAgD0GAAWokAAJ/IAYoAgAiAkECRwRAIAYpAgghFiAGKAIEDAELIAYoAgQhAyAGIAZBCGopAgA3AgQgBiADNgIAIAYQoAULIQMgDiAWNwIIIA4gAzYCBCAOIAI2AgAgBkEQaiQAAkAgCCgCEEEDRwRAIAwgCCkCEDcCACAMQQhqIAhBGGopAgA3AgAMAQsgCEEYaigCACECIAgoAhQhA0GkjcIAQRAQBSEEIAxBAjYCACAMIAQ2AgQgAyACKAIAEQEAIAIoAgRFDQAgAigCCBogAxBrCyAIQSBqJAAgESARKAIAQQFrNgIAAn8gCSgCEEECRwRAIAlBEGoQ1wYhAUEADAELQQEhFCAJKAIUCyECIAAgFDYCCCAAIAI2AgQgACABNgIAIAlBIGokAAvFCgISfwF+IwBBIGsiCSQAIAlBCGogAhDSBiAJKAIMIREgCUEUaiEOIAkoAgghBCMAQRBrIgckACAHIAE2AgAgB0EEaiEPIwBBEGsiBiQAIAciDCgCACEDIwBBgAFrIggkACAIIAQQ2wUgCEHsAGooAgAQmwchBSMAQdAAayINJAAgDUEIaiICIAMCfwJAAkACQEICIAQpAwBCAn0iFSAVQgJaG6dBAWsOAgECAAsgBEH0AGoMAgsgBEGMAWoMAQsgBEHsAGoLKAIAIAUQvQMgDSAENgJEIA0gDUHPAGo2AkAjAEHwAGsiBCQAAkACQAJAAkACQCACKAIwIgNFDQAgAiADQQFrNgIwAn4CQCACKAIQQQJHBEAgBEEQaiACQRBqIgMQwwMgBCgCEA0BIANBAjYCAAsgAikDAFANAiACKQMIDAELIAQ1AhQLIRUgAkE8aigCACEDIAQgFTcDaCAEQShqIAMgBEHoAGoQpAQgBCgCOEGAgICAeEcNAQsgCEEANgIIIAhCgICAgIABNwIADAELIARBCGpBBCACKAIwIgUEfyACKQMAIRUCQCACKAIQQQJGBEBBf0EAIBVCAFIbIQMMAQsgFVAEQCACKAIgIgNFDQQgAyACQSRqKAIATSEDDAELQX8hAyACKAIgRQ0DCyADIAUgAyAFSRsFQQALQQFqIgNBfyADGyIDIANBBE0bEMkFIAQoAgghBSAEKAIMIARBKGoiA0E4EOMJIQsgBEEkaiITQQE2AgAgBCALNgIgIAQgBTYCHCADIAJBwAAQ5wkaIARBHGohCyMAQdAAayICJAACQCADKAIwIgVFDQAgA0EQaiESA0AgAyAFQQFrNgIwAn4CQCADKAIQQQJHBEAgAkEIaiASEMMDIAIoAggNASASQQI2AgALIAMpAwBQDQMgAykDCAwBCyACNQIMCyEVIAMoAjwhBSACIBU3A0ggAkEQaiAFIAJByABqEKQEIAIoAiBBgICAgHhGDQEgAygCMCEFIAsoAggiECALKAIARgRAIAsgECAFBH8gAykDACEVAkAgAygCEEECRgRAQX9BACAVQgBSGyEKDAELIBVQBEAgAygCICIKRQ0HIAogAygCJE0hCgwBC0F/IQogAygCIEUNBgsgCiAFIAUgCksbBUEAC0EBaiIKQX8gChsQqAYLIAsoAgQgEEE4bGogAkEQakE4EOcJGiALIBBBAWo2AgggBQ0ACwsgAkHQAGokACAIQQhqIBMoAgA2AgAgCCAEKQIcNwIACyAEQfAAaiQADAELQeCPwABBGUHsmMAAEMwGAAsgDUHQAGokACAGQQA2AgAgBkEMaiAIQQhqKAIANgIAIAYgCCkDADcCBCAIQYABaiQAAn8gBigCAEUEQCAGQQxqKAIAIQwgBigCBCECIAZBCGooAgAMAQsgBikCBCEVIAYgBkEMaigCADYCCCAGIBU3AwBBgICAgHghAiAGEKAFCyEEIA8gDDYCCCAPIAQ2AgQgDyACNgIAIAZBEGokAAJAIAcoAgRBgYCAgHhHBEAgDiAHKQIENwIAIA5BCGogB0EMaigCADYCAAwBCyAHQQxqKAIAIQIgBygCCCEMQaSNwgBBEBAFIQQgDkGAgICAeDYCACAOIAQ2AgQgDCACKAIAEQEAIAIoAgRFDQAgAigCCBogDBBrCyAHQRBqJAAgESARKAIAQQFrNgIAAn8gCSgCFEGAgICAeEcEQCAJQRRqENYGIQFBAAwBC0EBIRQgCSgCGAshAiAAIBQ2AgggACACNgIEIAAgATYCACAJQSBqJAALxQoCEn8BfiMAQSBrIgkkACAJQQhqIAIQ0gYgCSgCDCERIAlBFGohDiAJKAIIIQQjAEEQayIHJAAgByABNgIAIAdBBGohDyMAQRBrIgYkACAHIgwoAgAhAyMAQYABayIIJAAgCCAEENwFIAhB7ABqKAIAEJsHIQUjAEHQAGsiDSQAIA1BCGoiAiADAn8CQAJAAkBCAiAEKQMAQgJ9IhUgFUICWhunQQFrDgIBAgALIARB9ABqDAILIARBjAFqDAELIARB7ABqCygCACAFEL0DIA0gBDYCRCANIA1BzwBqNgJAIwBB8ABrIgQkAAJAAkACQAJAAkAgAigCMCIDRQ0AIAIgA0EBazYCMAJ+AkAgAigCEEECRwRAIARBEGogAkEQaiIDEMMDIAQoAhANASADQQI2AgALIAIpAwBQDQIgAikDCAwBCyAENQIUCyEVIAJBPGooAgAhAyAEIBU3A2ggBEEoaiADIARB6ABqEKMEIAQoAjhBgICAgHhHDQELIAhBADYCCCAIQoCAgICAATcCAAwBCyAEQQhqQQQgAigCMCIFBH8gAikDACEVAkAgAigCEEECRgRAQX9BACAVQgBSGyEDDAELIBVQBEAgAigCICIDRQ0EIAMgAkEkaigCAE0hAwwBC0F/IQMgAigCIEUNAwsgAyAFIAMgBUkbBUEAC0EBaiIDQX8gAxsiAyADQQRNGxDJBSAEKAIIIQUgBCgCDCAEQShqIgNBOBDjCSELIARBJGoiE0EBNgIAIAQgCzYCICAEIAU2AhwgAyACQcAAEOcJGiAEQRxqIQsjAEHQAGsiAiQAAkAgAygCMCIFRQ0AIANBEGohEgNAIAMgBUEBazYCMAJ+AkAgAygCEEECRwRAIAJBCGogEhDDAyACKAIIDQEgEkECNgIACyADKQMAUA0DIAMpAwgMAQsgAjUCDAshFSADKAI8IQUgAiAVNwNIIAJBEGogBSACQcgAahCjBCACKAIgQYCAgIB4Rg0BIAMoAjAhBSALKAIIIhAgCygCAEYEQCALIBAgBQR/IAMpAwAhFQJAIAMoAhBBAkYEQEF/QQAgFUIAUhshCgwBCyAVUARAIAMoAiAiCkUNByAKIAMoAiRNIQoMAQtBfyEKIAMoAiBFDQYLIAogBSAFIApLGwVBAAtBAWoiCkF/IAobEKgGCyALKAIEIBBBOGxqIAJBEGpBOBDnCRogCyAQQQFqNgIIIAUNAAsLIAJB0ABqJAAgCEEIaiATKAIANgIAIAggBCkCHDcCAAsgBEHwAGokAAwBC0Hgj8AAQRlB7JjAABDMBgALIA1B0ABqJAAgBkEANgIAIAZBDGogCEEIaigCADYCACAGIAgpAwA3AgQgCEGAAWokAAJ/IAYoAgBFBEAgBkEMaigCACEMIAYoAgQhAiAGQQhqKAIADAELIAYpAgQhFSAGIAZBDGooAgA2AgggBiAVNwMAQYCAgIB4IQIgBhCgBQshBCAPIAw2AgggDyAENgIEIA8gAjYCACAGQRBqJAACQCAHKAIEQYGAgIB4RwRAIA4gBykCBDcCACAOQQhqIAdBDGooAgA2AgAMAQsgB0EMaigCACECIAcoAgghDEGkjcIAQRAQBSEEIA5BgICAgHg2AgAgDiAENgIEIAwgAigCABEBACACKAIERQ0AIAIoAggaIAwQawsgB0EQaiQAIBEgESgCAEEBazYCAAJ/IAkoAhRBgICAgHhHBEAgCUEUahDWBiEBQQAMAQtBASEUIAkoAhgLIQIgACAUNgIIIAAgAjYCBCAAIAE2AgAgCUEgaiQAC8UKAhJ/AX4jAEEgayIJJAAgCUEIaiACENIGIAkoAgwhESAJQRRqIQ4gCSgCCCEEIwBBEGsiByQAIAcgATYCACAHQQRqIQ8jAEEQayIGJAAgByIMKAIAIQMjAEGAAWsiCCQAIAggBBDeBSAIQewAaigCABCbByEFIwBB0ABrIg0kACANQQhqIgIgAwJ/AkACQAJAQgIgBCkDAEICfSIVIBVCAlobp0EBaw4CAQIACyAEQfQAagwCCyAEQYwBagwBCyAEQewAagsoAgAgBRC9AyANIAQ2AkQgDSANQc8AajYCQCMAQfAAayIEJAACQAJAAkACQAJAIAIoAjAiA0UNACACIANBAWs2AjACfgJAIAIoAhBBAkcEQCAEQRBqIAJBEGoiAxDDAyAEKAIQDQEgA0ECNgIACyACKQMAUA0CIAIpAwgMAQsgBDUCFAshFSACQTxqKAIAIQMgBCAVNwNoIARBKGogAyAEQegAahCiBCAEKAI4QYCAgIB4Rw0BCyAIQQA2AgggCEKAgICAgAE3AgAMAQsgBEEIakEEIAIoAjAiBQR/IAIpAwAhFQJAIAIoAhBBAkYEQEF/QQAgFUIAUhshAwwBCyAVUARAIAIoAiAiA0UNBCADIAJBJGooAgBNIQMMAQtBfyEDIAIoAiBFDQMLIAMgBSADIAVJGwVBAAtBAWoiA0F/IAMbIgMgA0EETRsQyQUgBCgCCCEFIAQoAgwgBEEoaiIDQTgQ4wkhCyAEQSRqIhNBATYCACAEIAs2AiAgBCAFNgIcIAMgAkHAABDnCRogBEEcaiELIwBB0ABrIgIkAAJAIAMoAjAiBUUNACADQRBqIRIDQCADIAVBAWs2AjACfgJAIAMoAhBBAkcEQCACQQhqIBIQwwMgAigCCA0BIBJBAjYCAAsgAykDAFANAyADKQMIDAELIAI1AgwLIRUgAygCPCEFIAIgFTcDSCACQRBqIAUgAkHIAGoQogQgAigCIEGAgICAeEYNASADKAIwIQUgCygCCCIQIAsoAgBGBEAgCyAQIAUEfyADKQMAIRUCQCADKAIQQQJGBEBBf0EAIBVCAFIbIQoMAQsgFVAEQCADKAIgIgpFDQcgCiADKAIkTSEKDAELQX8hCiADKAIgRQ0GCyAKIAUgBSAKSxsFQQALQQFqIgpBfyAKGxCoBgsgCygCBCAQQThsaiACQRBqQTgQ5wkaIAsgEEEBajYCCCAFDQALCyACQdAAaiQAIAhBCGogEygCADYCACAIIAQpAhw3AgALIARB8ABqJAAMAQtB4I/AAEEZQeyYwAAQzAYACyANQdAAaiQAIAZBADYCACAGQQxqIAhBCGooAgA2AgAgBiAIKQMANwIEIAhBgAFqJAACfyAGKAIARQRAIAZBDGooAgAhDCAGKAIEIQIgBkEIaigCAAwBCyAGKQIEIRUgBiAGQQxqKAIANgIIIAYgFTcDAEGAgICAeCECIAYQoAULIQQgDyAMNgIIIA8gBDYCBCAPIAI2AgAgBkEQaiQAAkAgBygCBEGBgICAeEcEQCAOIAcpAgQ3AgAgDkEIaiAHQQxqKAIANgIADAELIAdBDGooAgAhAiAHKAIIIQxBpI3CAEEQEAUhBCAOQYCAgIB4NgIAIA4gBDYCBCAMIAIoAgARAQAgAigCBEUNACACKAIIGiAMEGsLIAdBEGokACARIBEoAgBBAWs2AgACfyAJKAIUQYCAgIB4RwRAIAlBFGoQ1gYhAUEADAELQQEhFCAJKAIYCyECIAAgFDYCCCAAIAI2AgQgACABNgIAIAlBIGokAAvLCgISfwF+IwBBIGsiCCQAIAhBCGogAhDSBiAIKAIMIREgCEEUaiEOIAgoAgghBCMAQRBrIgckACAHIAE2AgAgB0EEaiEPIwBBEGsiBSQAIAciDCgCACEDIwBBEGsiCiQAAn8CQAJAAkBCAiAEKQMAQgJ9IhUgFUICWhunQQFrDgIBAgALIARB9ABqDAILIARBjAFqDAELIARB7ABqCygCABCbByEGIwBB0ABrIg0kACANQQhqIgIgAwJ/AkACQAJAQgIgBCkDAEICfSIVIBVCAlobp0EBaw4CAQIACyAEQfQAagwCCyAEQYwBagwBCyAEQewAagsoAgAgBhC9AyANIAQ2AkQgDSANQc8AajYCQCMAQeAAayIEJAACQAJAAkACQAJAIAIoAjAiA0UNACACIANBAWs2AjACfgJAIAIoAhBBAkcEQCAEQQhqIAJBEGoiAxDDAyAEKAIIDQEgA0ECNgIACyACKQMAUA0CIAIpAwgMAQsgBDUCDAshFSAEQSBqIAJBPGooAgAgFRBMIAQoAjBBgICAgHhHDQELIApBADYCCCAKQoCAgICAATcCAAwBCyAEQQQgAigCMCIGBH8gAikDACEVAkAgAigCEEECRgRAQX9BACAVQgBSGyEDDAELIBVQBEAgAigCICIDRQ0EIAMgAkEkaigCAE0hAwwBC0F/IQMgAigCIEUNAwsgAyAGIAMgBkkbBUEAC0EBaiIDQX8gAxsiAyADQQRNGxDJBSAEKAIAIQYgBCgCBCAEQSBqIgNBOBDjCSELIARBHGoiE0EBNgIAIAQgCzYCGCAEIAY2AhQgAyACQcAAEOcJGiAEQRRqIQsjAEFAaiICJAACQCADKAIwIgZFDQAgA0EQaiESA0AgAyAGQQFrNgIwAn4CQCADKAIQQQJHBEAgAiASEMMDIAIoAgANASASQQI2AgALIAMpAwBQDQMgAykDCAwBCyACNQIECyEVIAJBCGogAygCPCAVEEwgAigCGEGAgICAeEYNASADKAIwIQYgCygCCCIQIAsoAgBGBEAgCyAQIAYEfyADKQMAIRUCQCADKAIQQQJGBEBBf0EAIBVCAFIbIQkMAQsgFVAEQCADKAIgIglFDQcgCSADKAIkTSEJDAELQX8hCSADKAIgRQ0GCyAJIAYgBiAJSxsFQQALQQFqIglBfyAJGxCoBgsgCygCBCAQQThsaiACQQhqQTgQ5wkaIAsgEEEBajYCCCAGDQALCyACQUBrJAAgCkEIaiATKAIANgIAIAogBCkCFDcCAAsgBEHgAGokAAwBC0Hgj8AAQRlB7JjAABDMBgALIA1B0ABqJAAgBUEANgIAIAVBDGogCkEIaigCADYCACAFIAopAwA3AgQgCkEQaiQAAn8gBSgCAEUEQCAFQQxqKAIAIQwgBSgCBCECIAVBCGooAgAMAQsgBSkCBCEVIAUgBUEMaigCADYCCCAFIBU3AwBBgICAgHghAiAFEKAFCyEEIA8gDDYCCCAPIAQ2AgQgDyACNgIAIAVBEGokAAJAIAcoAgRBgYCAgHhHBEAgDiAHKQIENwIAIA5BCGogB0EMaigCADYCAAwBCyAHQQxqKAIAIQIgBygCCCEMQaSNwgBBEBAFIQQgDkGAgICAeDYCACAOIAQ2AgQgDCACKAIAEQEAIAIoAgRFDQAgAigCCBogDBBrCyAHQRBqJAAgESARKAIAQQFrNgIAAn8gCCgCFEGAgICAeEcEQCAIQRRqENYGIQFBAAwBC0EBIRQgCCgCGAshAiAAIBQ2AgggACACNgIEIAAgATYCACAIQSBqJAALjgoCEn8CfiMAQSBrIggkACAIQQhqIAIQ0gYgCCgCDCERIAhBEGohDCAIKAIIIQIjAEEgayIHJAAgByABNgIMIAdBEGohDiMAQRBrIgYkACAHQQxqKAIAIQMjAEGAAWsiDyQAIA8gAhDbBSAGQQRqIQ0gD0HsAGooAgAQmwchBSMAQdAAayILJAAgC0EIaiIEIAMCfwJAAkACQEICIAIpAwBCAn0iFSAVQgJaG6dBAWsOAgECAAsgAkH0AGoMAgsgAkGMAWoMAQsgAkHsAGoLKAIAIAUQvQMgCyACNgJEIAsgC0HPAGo2AkAjAEHwAGsiAiQAAkACQAJAAkACQCAEKAIwIgNFDQAgBCADQQFrNgIwAn4CQCAEKAIQQQJHBEAgAkEIaiAEQRBqIgMQwwMgAigCCA0BIANBAjYCAAsgBCkDAFANAiAEKQMIDAELIAI1AgwLIRUgBEE8aigCACEDIAIgFTcDaCACQSBqIAMgAkHoAGoQoQQgAi0AYEECRw0BCyANQQA2AgggDUKAgICAgAE3AgAMAQsgAkEEIAQoAjAiBQR/IAQpAwAhFQJAIAQoAhBBAkYEQEF/QQAgFUIAUhshAwwBCyAVUARAIAQoAiAiA0UNBCADIARBJGooAgBNIQMMAQtBfyEDIAQoAiBFDQMLIAMgBSADIAVJGwVBAAtBAWoiA0F/IAMbIgMgA0EETRsQxwUgAigCACEFIAIoAgQgAkEgaiIDQcgAEOMJIQogAkEcaiITQQE2AgAgAiAKNgIYIAIgBTYCFCADIARBwAAQ5wkaIAJBFGohCiMAQeAAayIEJAACQCADKAIwIgVFDQAgA0EQaiESA0AgAyAFQQFrNgIwAn4CQCADKAIQQQJHBEAgBEEIaiASEMMDIAQoAggNASASQQI2AgALIAMpAwBQDQMgAykDCAwBCyAENQIMCyEVIAMoAjwhBSAEIBU3A1ggBEEQaiAFIARB2ABqEKEEIAQtAFBBAkYNASADKAIwIQUgCigCCCIQIAooAgBGBEAgCiAQIAUEfyADKQMAIRUCQCADKAIQQQJGBEBBf0EAIBVCAFIbIQkMAQsgFVAEQCADKAIgIglFDQcgCSADKAIkTSEJDAELQX8hCSADKAIgRQ0GCyAJIAUgBSAJSxsFQQALQQFqIglBfyAJGxCqBgsgCigCBCAQQcgAbGogBEEQakHIABDnCRogCiAQQQFqNgIIIAUNAAsLIARB4ABqJAAgDUEIaiATKAIANgIAIA0gAikCFDcCAAsgAkHwAGokAAwBC0Hgj8AAQRlB7JjAABDMBgALIAtB0ABqJAAgBkEANgIAIA9BgAFqJAACfyAGKAIAIgJBAkcEQCAGKQIIIRYgBigCBAwBCyAGKAIEIQQgBiAGQQhqKQIANwIEIAYgBDYCACAGEKAFCyEEIA4gFjcCCCAOIAQ2AgQgDiACNgIAIAZBEGokAAJAIAcoAhBBA0cEQCAMIAcpAhA3AgAgDEEIaiAHQRhqKQIANwIADAELIAdBGGooAgAhAiAHKAIUIQRBpI3CAEEQEAUhAyAMQQI2AgAgDCADNgIEIAQgAigCABEBACACKAIERQ0AIAIoAggaIAQQawsgB0EgaiQAIBEgESgCAEEBazYCAAJ/IAgoAhBBAkcEQCAIQRBqENcGIQFBAAwBC0EBIRQgCCgCFAshAiAAIBQ2AgggACACNgIEIAAgATYCACAIQSBqJAALwAoBE38jAEEgayIJJAAgCUEIaiACENIGIAkoAgwhECAJQRRqIQ0gCSgCCCEEIwBBIGsiByQAIAcgATcDCCAHQRRqIQ4jAEEQayIFJAAgB0EIaiIRKQMAIQEjAEGAAWsiCCQAIAggBBDbBSAIQewAaigCABChByEDIwBB4ABrIgwkACAMQQhqIgIgAQJ/AkACQAJAQgIgBCkDAEICfSIBIAFCAlobp0EBaw4CAQIACyAEQfQAagwCCyAEQYwBagwBCyAEQewAagsoAgAgAxC2BSAMIAQ2AlQgDCAMQd8AajYCUCMAQYABayIEJAACQAJAAkACQAJAIAIoAkAiA0UNACACIANBAWs2AkACfgJAIAIpAxBCAlIEQCAEQQhqIAJBEGoiAxCyAyAEKQMIpw0BIANCAjcDAAsgAikDAFANAiACKQMIDAELIAQpAxALIQEgAkHMAGooAgAhAyAEIAE3A3ggBEEoaiADIARB+ABqEKQEIAQoAjhBgICAgHhHDQELIAhBADYCCCAIQoCAgICAATcCAAwBCyAEQQQgAigCQCIGBH8gAikDACEBAkAgAikDEEICUQRAQX9BACABQgBSGyEDDAELIAFQBEAgAigCOCIDRQ0EIAMgAigCPE0hAwwBC0F/IQMgAigCOEUNAwsgAyAGIAMgBkkbBUEAC0EBaiIDQX8gAxsiAyADQQRNGxDJBSAEKAIAIQYgBCgCBCAEQShqIgNBOBDjCSELIARBJGoiE0EBNgIAIAQgCzYCICAEIAY2AhwgAyACQdAAEOcJGiAEQRxqIQsjAEHQAGsiAiQAAkAgAygCQCIGRQ0AIANBEGohEgNAIAMgBkEBazYCQAJ+AkAgAykDEEICUgRAIAIgEhCyAyACKQMApw0BIBJCAjcDAAsgAykDAFANAyADKQMIDAELIAIpAwgLIQEgAygCTCEGIAIgATcDSCACQRBqIAYgAkHIAGoQpAQgAigCIEGAgICAeEYNASADKAJAIQYgCygCCCIPIAsoAgBGBEAgCyAPIAYEfyADKQMAIQECQCADKQMQQgJRBEBBf0EAIAFCAFIbIQoMAQsgAVAEQCADKAI4IgpFDQcgCiADKAI8TSEKDAELQX8hCiADKAI4RQ0GCyAKIAYgBiAKSxsFQQALQQFqIgpBfyAKGxCoBgsgCygCBCAPQThsaiACQRBqQTgQ5wkaIAsgD0EBajYCCCAGDQALCyACQdAAaiQAIAhBCGogEygCADYCACAIIAQpAhw3AgALIARBgAFqJAAMAQtB4I/AAEEZQeyYwAAQzAYACyAMQeAAaiQAIAVBADYCACAFQQxqIAhBCGooAgA2AgAgBSAIKQMANwIEIAhBgAFqJAACfyAFKAIARQRAIAVBDGooAgAhESAFKAIEIQIgBUEIaigCAAwBCyAFKQIEIQEgBSAFQQxqKAIANgIIIAUgATcDAEGAgICAeCECIAUQoAULIQQgDiARNgIIIA4gBDYCBCAOIAI2AgAgBUEQaiQAAkAgBygCFEGBgICAeEcEQCANIAcpAhQ3AgAgDUEIaiAHQRxqKAIANgIADAELIAdBHGooAgAhAiAHKAIYIQRBpI3CAEEQEAUhAyANQYCAgIB4NgIAIA0gAzYCBCAEIAIoAgARAQAgAigCBEUNACACKAIIGiAEEGsLIAdBIGokACAQIBAoAgBBAWs2AgACfyAJKAIUQYCAgIB4RwRAIAlBFGoQ1gYhFEEADAELQQEhFSAJKAIYCyECIAAgFTYCCCAAIAI2AgQgACAUNgIAIAlBIGokAAvACgETfyMAQSBrIgkkACAJQQhqIAIQ0gYgCSgCDCEQIAlBFGohDSAJKAIIIQQjAEEgayIHJAAgByABNwMIIAdBFGohDiMAQRBrIgUkACAHQQhqIhEpAwAhASMAQYABayIIJAAgCCAEENwFIAhB7ABqKAIAEKEHIQMjAEHgAGsiDCQAIAxBCGoiAiABAn8CQAJAAkBCAiAEKQMAQgJ9IgEgAUICWhunQQFrDgIBAgALIARB9ABqDAILIARBjAFqDAELIARB7ABqCygCACADELYFIAwgBDYCVCAMIAxB3wBqNgJQIwBBgAFrIgQkAAJAAkACQAJAAkAgAigCQCIDRQ0AIAIgA0EBazYCQAJ+AkAgAikDEEICUgRAIARBCGogAkEQaiIDELIDIAQpAwinDQEgA0ICNwMACyACKQMAUA0CIAIpAwgMAQsgBCkDEAshASACQcwAaigCACEDIAQgATcDeCAEQShqIAMgBEH4AGoQowQgBCgCOEGAgICAeEcNAQsgCEEANgIIIAhCgICAgIABNwIADAELIARBBCACKAJAIgYEfyACKQMAIQECQCACKQMQQgJRBEBBf0EAIAFCAFIbIQMMAQsgAVAEQCACKAI4IgNFDQQgAyACKAI8TSEDDAELQX8hAyACKAI4RQ0DCyADIAYgAyAGSRsFQQALQQFqIgNBfyADGyIDIANBBE0bEMkFIAQoAgAhBiAEKAIEIARBKGoiA0E4EOMJIQsgBEEkaiITQQE2AgAgBCALNgIgIAQgBjYCHCADIAJB0AAQ5wkaIARBHGohCyMAQdAAayICJAACQCADKAJAIgZFDQAgA0EQaiESA0AgAyAGQQFrNgJAAn4CQCADKQMQQgJSBEAgAiASELIDIAIpAwCnDQEgEkICNwMACyADKQMAUA0DIAMpAwgMAQsgAikDCAshASADKAJMIQYgAiABNwNIIAJBEGogBiACQcgAahCjBCACKAIgQYCAgIB4Rg0BIAMoAkAhBiALKAIIIg8gCygCAEYEQCALIA8gBgR/IAMpAwAhAQJAIAMpAxBCAlEEQEF/QQAgAUIAUhshCgwBCyABUARAIAMoAjgiCkUNByAKIAMoAjxNIQoMAQtBfyEKIAMoAjhFDQYLIAogBiAGIApLGwVBAAtBAWoiCkF/IAobEKgGCyALKAIEIA9BOGxqIAJBEGpBOBDnCRogCyAPQQFqNgIIIAYNAAsLIAJB0ABqJAAgCEEIaiATKAIANgIAIAggBCkCHDcCAAsgBEGAAWokAAwBC0Hgj8AAQRlB7JjAABDMBgALIAxB4ABqJAAgBUEANgIAIAVBDGogCEEIaigCADYCACAFIAgpAwA3AgQgCEGAAWokAAJ/IAUoAgBFBEAgBUEMaigCACERIAUoAgQhAiAFQQhqKAIADAELIAUpAgQhASAFIAVBDGooAgA2AgggBSABNwMAQYCAgIB4IQIgBRCgBQshBCAOIBE2AgggDiAENgIEIA4gAjYCACAFQRBqJAACQCAHKAIUQYGAgIB4RwRAIA0gBykCFDcCACANQQhqIAdBHGooAgA2AgAMAQsgB0EcaigCACECIAcoAhghBEGkjcIAQRAQBSEDIA1BgICAgHg2AgAgDSADNgIEIAQgAigCABEBACACKAIERQ0AIAIoAggaIAQQawsgB0EgaiQAIBAgECgCAEEBazYCAAJ/IAkoAhRBgICAgHhHBEAgCUEUahDWBiEUQQAMAQtBASEVIAkoAhgLIQIgACAVNgIIIAAgAjYCBCAAIBQ2AgAgCUEgaiQAC8AKARN/IwBBIGsiCSQAIAlBCGogAhDSBiAJKAIMIRAgCUEUaiENIAkoAgghBCMAQSBrIgckACAHIAE3AwggB0EUaiEOIwBBEGsiBSQAIAdBCGoiESkDACEBIwBBgAFrIggkACAIIAQQ3gUgCEHsAGooAgAQoQchAyMAQeAAayIMJAAgDEEIaiICIAECfwJAAkACQEICIAQpAwBCAn0iASABQgJaG6dBAWsOAgECAAsgBEH0AGoMAgsgBEGMAWoMAQsgBEHsAGoLKAIAIAMQtgUgDCAENgJUIAwgDEHfAGo2AlAjAEGAAWsiBCQAAkACQAJAAkACQCACKAJAIgNFDQAgAiADQQFrNgJAAn4CQCACKQMQQgJSBEAgBEEIaiACQRBqIgMQsgMgBCkDCKcNASADQgI3AwALIAIpAwBQDQIgAikDCAwBCyAEKQMQCyEBIAJBzABqKAIAIQMgBCABNwN4IARBKGogAyAEQfgAahCiBCAEKAI4QYCAgIB4Rw0BCyAIQQA2AgggCEKAgICAgAE3AgAMAQsgBEEEIAIoAkAiBgR/IAIpAwAhAQJAIAIpAxBCAlEEQEF/QQAgAUIAUhshAwwBCyABUARAIAIoAjgiA0UNBCADIAIoAjxNIQMMAQtBfyEDIAIoAjhFDQMLIAMgBiADIAZJGwVBAAtBAWoiA0F/IAMbIgMgA0EETRsQyQUgBCgCACEGIAQoAgQgBEEoaiIDQTgQ4wkhCyAEQSRqIhNBATYCACAEIAs2AiAgBCAGNgIcIAMgAkHQABDnCRogBEEcaiELIwBB0ABrIgIkAAJAIAMoAkAiBkUNACADQRBqIRIDQCADIAZBAWs2AkACfgJAIAMpAxBCAlIEQCACIBIQsgMgAikDAKcNASASQgI3AwALIAMpAwBQDQMgAykDCAwBCyACKQMICyEBIAMoAkwhBiACIAE3A0ggAkEQaiAGIAJByABqEKIEIAIoAiBBgICAgHhGDQEgAygCQCEGIAsoAggiDyALKAIARgRAIAsgDyAGBH8gAykDACEBAkAgAykDEEICUQRAQX9BACABQgBSGyEKDAELIAFQBEAgAygCOCIKRQ0HIAogAygCPE0hCgwBC0F/IQogAygCOEUNBgsgCiAGIAYgCksbBUEAC0EBaiIKQX8gChsQqAYLIAsoAgQgD0E4bGogAkEQakE4EOcJGiALIA9BAWo2AgggBg0ACwsgAkHQAGokACAIQQhqIBMoAgA2AgAgCCAEKQIcNwIACyAEQYABaiQADAELQeCPwABBGUHsmMAAEMwGAAsgDEHgAGokACAFQQA2AgAgBUEMaiAIQQhqKAIANgIAIAUgCCkDADcCBCAIQYABaiQAAn8gBSgCAEUEQCAFQQxqKAIAIREgBSgCBCECIAVBCGooAgAMAQsgBSkCBCEBIAUgBUEMaigCADYCCCAFIAE3AwBBgICAgHghAiAFEKAFCyEEIA4gETYCCCAOIAQ2AgQgDiACNgIAIAVBEGokAAJAIAcoAhRBgYCAgHhHBEAgDSAHKQIUNwIAIA1BCGogB0EcaigCADYCAAwBCyAHQRxqKAIAIQIgBygCGCEEQaSNwgBBEBAFIQMgDUGAgICAeDYCACANIAM2AgQgBCACKAIAEQEAIAIoAgRFDQAgAigCCBogBBBrCyAHQSBqJAAgECAQKAIAQQFrNgIAAn8gCSgCFEGAgICAeEcEQCAJQRRqENYGIRRBAAwBC0EBIRUgCSgCGAshAiAAIBU2AgggACACNgIEIAAgFDYCACAJQSBqJAAL1goCE38BfiMAQSBrIggkACAIQQhqIAIQ0gYgCCgCDCEQIAhBFGohDSAIKAIIIQQjAEEgayIHJAAgByABNwMIIAdBFGohDiMAQRBrIgUkACAHQQhqIhEpAwAhASMAQRBrIgokAAJ/AkACQAJAQgIgBCkDAEICfSIWIBZCAlobp0EBaw4CAQIACyAEQfQAagwCCyAEQYwBagwBCyAEQewAagsoAgAQoQchAyMAQeAAayIMJAAgDEEIaiICIAECfwJAAkACQEICIAQpAwBCAn0iASABQgJaG6dBAWsOAgECAAsgBEH0AGoMAgsgBEGMAWoMAQsgBEHsAGoLKAIAIAMQtgUgDCAENgJUIAwgDEHfAGo2AlAjAEGAAWsiBCQAAkACQAJAAkACQCACKAJAIgNFDQAgAiADQQFrNgJAAn4CQCACKQMQQgJSBEAgBEEQaiACQRBqIgMQsgMgBCkDEKcNASADQgI3AwALIAIpAwBQDQIgAikDCAwBCyAEKQMYCyEBIARBMGogAkHMAGooAgAgARBMIAQoAkBBgICAgHhHDQELIApBADYCCCAKQoCAgICAATcCAAwBCyAEQQhqQQQgAigCQCIGBH8gAikDACEBAkAgAikDEEICUQRAQX9BACABQgBSGyEDDAELIAFQBEAgAigCOCIDRQ0EIAMgAigCPE0hAwwBC0F/IQMgAigCOEUNAwsgAyAGIAMgBkkbBUEAC0EBaiIDQX8gAxsiAyADQQRNGxDJBSAEKAIIIQYgBCgCDCAEQTBqIgNBOBDjCSELIARBLGoiE0EBNgIAIAQgCzYCKCAEIAY2AiQgAyACQdAAEOcJGiAEQSRqIQsjAEHQAGsiAiQAAkAgAygCQCIGRQ0AIANBEGohEgNAIAMgBkEBazYCQAJ+AkAgAykDEEICUgRAIAJBCGogEhCyAyACKQMIpw0BIBJCAjcDAAsgAykDAFANAyADKQMIDAELIAIpAxALIQEgAkEYaiADKAJMIAEQTCACKAIoQYCAgIB4Rg0BIAMoAkAhBiALKAIIIg8gCygCAEYEQCALIA8gBgR/IAMpAwAhAQJAIAMpAxBCAlEEQEF/QQAgAUIAUhshCQwBCyABUARAIAMoAjgiCUUNByAJIAMoAjxNIQkMAQtBfyEJIAMoAjhFDQYLIAkgBiAGIAlLGwVBAAtBAWoiCUF/IAkbEKgGCyALKAIEIA9BOGxqIAJBGGpBOBDnCRogCyAPQQFqNgIIIAYNAAsLIAJB0ABqJAAgCkEIaiATKAIANgIAIAogBCkCJDcCAAsgBEGAAWokAAwBC0Hgj8AAQRlB7JjAABDMBgALIAxB4ABqJAAgBUEANgIAIAVBDGogCkEIaigCADYCACAFIAopAwA3AgQgCkEQaiQAAn8gBSgCAEUEQCAFQQxqKAIAIREgBSgCBCECIAVBCGooAgAMAQsgBSkCBCEBIAUgBUEMaigCADYCCCAFIAE3AwBBgICAgHghAiAFEKAFCyEEIA4gETYCCCAOIAQ2AgQgDiACNgIAIAVBEGokAAJAIAcoAhRBgYCAgHhHBEAgDSAHKQIUNwIAIA1BCGogB0EcaigCADYCAAwBCyAHQRxqKAIAIQIgBygCGCEEQaSNwgBBEBAFIQMgDUGAgICAeDYCACANIAM2AgQgBCACKAIAEQEAIAIoAgRFDQAgAigCCBogBBBrCyAHQSBqJAAgECAQKAIAQQFrNgIAAn8gCCgCFEGAgICAeEcEQCAIQRRqENYGIRRBAAwBC0EBIRUgCCgCGAshAiAAIBU2AgggACACNgIEIAAgFDYCACAIQSBqJAALjwoCE38BfiMAQSBrIggkACAIQQhqIAIQ0gYgCCgCDCERIAhBEGohDCAIKAIIIQIjAEEgayIHJAAgByABNwMIIAdBEGohDkIAIQEjAEEQayIGJAAgB0EIaikDACEWIwBBgAFrIg8kACAPIAIQ2wUgBkEEaiENIA9B7ABqKAIAEKEHIQMjAEHgAGsiCiQAIApBCGoiBCAWAn8CQAJAAkBCAiACKQMAQgJ9IhYgFkICWhunQQFrDgIBAgALIAJB9ABqDAILIAJBjAFqDAELIAJB7ABqCygCACADELYFIAogAjYCVCAKIApB3wBqNgJQIwBBgAFrIgIkAAJAAkACQAJAAkAgBCgCQCIDRQ0AIAQgA0EBazYCQAJ+AkAgBCkDEEICUgRAIAJBCGogBEEQaiIDELIDIAIpAwinDQEgA0ICNwMACyAEKQMAUA0CIAQpAwgMAQsgAikDEAshFiAEQcwAaigCACEDIAIgFjcDeCACQShqIAMgAkH4AGoQoQQgAi0AaEECRw0BCyANQQA2AgggDUKAgICAgAE3AgAMAQsgAkEEIAQoAkAiAwR/IAQpAwAhFgJAIAQpAxBCAlEEQEF/QQAgFkIAUhshBQwBCyAWUARAIAQoAjgiBUUNBCAFIAQoAjxNIQUMAQtBfyEFIAQoAjhFDQMLIAUgAyADIAVLGwVBAAtBAWoiA0F/IAMbIgMgA0EETRsQxwUgAigCACEFIAIoAgQgAkEoaiIDQcgAEOMJIQkgAkEkaiITQQE2AgAgAiAJNgIgIAIgBTYCHCADIARB0AAQ5wkaIAJBHGohCyMAQeAAayIEJAACQCADKAJAIglFDQAgA0EQaiESA0AgAyAJQQFrNgJAAn4CQCADKQMQQgJSBEAgBCASELIDIAQpAwCnDQEgEkICNwMACyADKQMAUA0DIAMpAwgMAQsgBCkDCAshFiADKAJMIQUgBCAWNwNYIARBEGogBSAEQdgAahChBCAELQBQQQJGDQEgAygCQCEJIAsoAggiECALKAIARgRAIAsgECAJBH8gAykDACEWAkAgAykDEEICUQRAQX9BACAWQgBSGyEFDAELIBZQBEAgAygCOCIFRQ0HIAUgAygCPE0hBQwBC0F/IQUgAygCOEUNBgsgBSAJIAUgCUkbBUEAC0EBaiIFQX8gBRsQqgYLIAsoAgQgEEHIAGxqIARBEGpByAAQ5wkaIAsgEEEBajYCCCAJDQALCyAEQeAAaiQAIA1BCGogEygCADYCACANIAIpAhw3AgALIAJBgAFqJAAMAQtB4I/AAEEZQeyYwAAQzAYACyAKQeAAaiQAIAZBADYCACAPQYABaiQAAn8gBigCACICQQJHBEAgBikCCCEBIAYoAgQMAQsgBigCBCEEIAYgBkEIaikCADcCBCAGIAQ2AgAgBhCgBQshBCAOIAE3AgggDiAENgIEIA4gAjYCACAGQRBqJAACQCAHKAIQQQNHBEAgDCAHKQIQNwIAIAxBCGogB0EYaikCADcCAAwBCyAHQRhqKAIAIQIgBygCFCEEQaSNwgBBEBAFIQMgDEECNgIAIAwgAzYCBCAEIAIoAgARAQAgAigCBEUNACACKAIIGiAEEGsLIAdBIGokACARIBEoAgBBAWs2AgACfyAIKAIQQQJHBEAgCEEQahDXBiEUQQAMAQtBASEVIAgoAhQLIQIgACAVNgIIIAAgAjYCBCAAIBQ2AgAgCEEgaiQAC80KAhJ/AX4jAEEgayIJJAAgCUEIaiACENIGIAkoAgwhESAJQRRqIQ0gCSgCCCECIwBBEGsiByQAIAcgAToAAyAHQQRqIQ4jAEEQayIFJAAgB0EDaiISLQAAIQMjAEGAAWsiCCQAIAggAhDbBSAIQewAaigCABC0ByEGIwBBQGoiDCQAIAxBCGoiBCADAn8CQAJAAkBCAiACKQMAQgJ9IhUgFUICWhunQQFrDgIBAgALIAJB9ABqDAILIAJBjAFqDAELIAJB7ABqCygCACAGENUFIAwgAjYCNCAMIAxBP2o2AjAjAEHgAGsiAiQAAkACQAJAAkACQCAEKAIgIgNFDQAgBCADQQFrNgIgAn4CQCAEQRtqLQAAQQJHBEAgAkEQaiAEQRBqEKADIAItABBBAXENASAEQQI6ABsLIAQpAwBQDQIgBCkDCAwBCyACMQARwgshFSAEQSxqKAIAIQMgAiAVNwNYIAJBIGogAyACQdgAahCkBCACKAIwQYCAgIB4Rw0BCyAIQQA2AgggCEKAgICAgAE3AgAMAQsgAkEIakEEIAQoAiAiBgR/IAQpAwAhFQJAIAQtABtBAkYEQEF/QQAgFUIAUhshAwwBCyAVUARAIAQoAhAiA0UNBCADIARBFGooAgBNIQMMAQtBfyEDIAQoAhBFDQMLIAMgBiADIAZJGwVBAAtBAWoiA0F/IAMbIgMgA0EETRsQyQUgAigCCCEGIAIoAgwgAkEgaiIDQTgQ4wkhCyACQRxqIhNBATYCACACIAs2AhggAiAGNgIUIAMgBEEwEOcJGiACQRRqIQsjAEHQAGsiBCQAAkAgAygCICIGRQ0AIANBEGohDwNAIAMgBkEBazYCIAJ+AkAgAy0AG0ECRwRAIARBCGogDxCgAyAELQAIQQFxDQEgA0ECOgAbCyADKQMAUA0DIAMpAwgMAQsgBDEACcILIRUgAygCLCEGIAQgFTcDSCAEQRBqIAYgBEHIAGoQpAQgBCgCIEGAgICAeEYNASADKAIgIQYgCygCCCIQIAsoAgBGBEAgCyAQIAYEfyADKQMAIRUCQCADLQAbQQJGBEBBf0EAIBVCAFIbIQoMAQsgFVAEQCAPKAIAIgpFDQcgCiADKAIUTSEKDAELQX8hCiAPKAIARQ0GCyAKIAYgBiAKSxsFQQALQQFqIgpBfyAKGxCoBgsgCygCBCAQQThsaiAEQRBqQTgQ5wkaIAsgEEEBajYCCCAGDQALCyAEQdAAaiQAIAhBCGogEygCADYCACAIIAIpAhQ3AgALIAJB4ABqJAAMAQtB4I/AAEEZQeyYwAAQzAYACyAMQUBrJAAgBUEANgIAIAVBDGogCEEIaigCADYCACAFIAgpAwA3AgQgCEGAAWokAAJ/IAUoAgBFBEAgBUEMaigCACESIAUoAgQhAiAFQQhqKAIADAELIAUpAgQhFSAFIAVBDGooAgA2AgggBSAVNwMAQYCAgIB4IQIgBRCgBQshBCAOIBI2AgggDiAENgIEIA4gAjYCACAFQRBqJAACQCAHKAIEQYGAgIB4RwRAIA0gBykCBDcCACANQQhqIAdBDGooAgA2AgAMAQsgB0EMaigCACECIAcoAgghBEGkjcIAQRAQBSEFIA1BgICAgHg2AgAgDSAFNgIEIAQgAigCABEBACACKAIERQ0AIAIoAggaIAQQawsgB0EQaiQAIBEgESgCAEEBazYCAAJ/IAkoAhRBgICAgHhHBEAgCUEUahDWBiEBQQAMAQtBASEUIAkoAhgLIQIgACAUNgIIIAAgAjYCBCAAIAE2AgAgCUEgaiQAC80KAhJ/AX4jAEEgayIJJAAgCUEIaiACENIGIAkoAgwhESAJQRRqIQ0gCSgCCCECIwBBEGsiByQAIAcgAToAAyAHQQRqIQ4jAEEQayIFJAAgB0EDaiISLQAAIQMjAEGAAWsiCCQAIAggAhDcBSAIQewAaigCABC0ByEGIwBBQGoiDCQAIAxBCGoiBCADAn8CQAJAAkBCAiACKQMAQgJ9IhUgFUICWhunQQFrDgIBAgALIAJB9ABqDAILIAJBjAFqDAELIAJB7ABqCygCACAGENUFIAwgAjYCNCAMIAxBP2o2AjAjAEHgAGsiAiQAAkACQAJAAkACQCAEKAIgIgNFDQAgBCADQQFrNgIgAn4CQCAEQRtqLQAAQQJHBEAgAkEQaiAEQRBqEKADIAItABBBAXENASAEQQI6ABsLIAQpAwBQDQIgBCkDCAwBCyACMQARwgshFSAEQSxqKAIAIQMgAiAVNwNYIAJBIGogAyACQdgAahCjBCACKAIwQYCAgIB4Rw0BCyAIQQA2AgggCEKAgICAgAE3AgAMAQsgAkEIakEEIAQoAiAiBgR/IAQpAwAhFQJAIAQtABtBAkYEQEF/QQAgFUIAUhshAwwBCyAVUARAIAQoAhAiA0UNBCADIARBFGooAgBNIQMMAQtBfyEDIAQoAhBFDQMLIAMgBiADIAZJGwVBAAtBAWoiA0F/IAMbIgMgA0EETRsQyQUgAigCCCEGIAIoAgwgAkEgaiIDQTgQ4wkhCyACQRxqIhNBATYCACACIAs2AhggAiAGNgIUIAMgBEEwEOcJGiACQRRqIQsjAEHQAGsiBCQAAkAgAygCICIGRQ0AIANBEGohDwNAIAMgBkEBazYCIAJ+AkAgAy0AG0ECRwRAIARBCGogDxCgAyAELQAIQQFxDQEgA0ECOgAbCyADKQMAUA0DIAMpAwgMAQsgBDEACcILIRUgAygCLCEGIAQgFTcDSCAEQRBqIAYgBEHIAGoQowQgBCgCIEGAgICAeEYNASADKAIgIQYgCygCCCIQIAsoAgBGBEAgCyAQIAYEfyADKQMAIRUCQCADLQAbQQJGBEBBf0EAIBVCAFIbIQoMAQsgFVAEQCAPKAIAIgpFDQcgCiADKAIUTSEKDAELQX8hCiAPKAIARQ0GCyAKIAYgBiAKSxsFQQALQQFqIgpBfyAKGxCoBgsgCygCBCAQQThsaiAEQRBqQTgQ5wkaIAsgEEEBajYCCCAGDQALCyAEQdAAaiQAIAhBCGogEygCADYCACAIIAIpAhQ3AgALIAJB4ABqJAAMAQtB4I/AAEEZQeyYwAAQzAYACyAMQUBrJAAgBUEANgIAIAVBDGogCEEIaigCADYCACAFIAgpAwA3AgQgCEGAAWokAAJ/IAUoAgBFBEAgBUEMaigCACESIAUoAgQhAiAFQQhqKAIADAELIAUpAgQhFSAFIAVBDGooAgA2AgggBSAVNwMAQYCAgIB4IQIgBRCgBQshBCAOIBI2AgggDiAENgIEIA4gAjYCACAFQRBqJAACQCAHKAIEQYGAgIB4RwRAIA0gBykCBDcCACANQQhqIAdBDGooAgA2AgAMAQsgB0EMaigCACECIAcoAgghBEGkjcIAQRAQBSEFIA1BgICAgHg2AgAgDSAFNgIEIAQgAigCABEBACACKAIERQ0AIAIoAggaIAQQawsgB0EQaiQAIBEgESgCAEEBazYCAAJ/IAkoAhRBgICAgHhHBEAgCUEUahDWBiEBQQAMAQtBASEUIAkoAhgLIQIgACAUNgIIIAAgAjYCBCAAIAE2AgAgCUEgaiQAC80KAhJ/AX4jAEEgayIJJAAgCUEIaiACENIGIAkoAgwhESAJQRRqIQ0gCSgCCCECIwBBEGsiByQAIAcgAToAAyAHQQRqIQ4jAEEQayIFJAAgB0EDaiISLQAAIQMjAEGAAWsiCCQAIAggAhDeBSAIQewAaigCABC0ByEGIwBBQGoiDCQAIAxBCGoiBCADAn8CQAJAAkBCAiACKQMAQgJ9IhUgFUICWhunQQFrDgIBAgALIAJB9ABqDAILIAJBjAFqDAELIAJB7ABqCygCACAGENUFIAwgAjYCNCAMIAxBP2o2AjAjAEHgAGsiAiQAAkACQAJAAkACQCAEKAIgIgNFDQAgBCADQQFrNgIgAn4CQCAEQRtqLQAAQQJHBEAgAkEQaiAEQRBqEKADIAItABBBAXENASAEQQI6ABsLIAQpAwBQDQIgBCkDCAwBCyACMQARwgshFSAEQSxqKAIAIQMgAiAVNwNYIAJBIGogAyACQdgAahCiBCACKAIwQYCAgIB4Rw0BCyAIQQA2AgggCEKAgICAgAE3AgAMAQsgAkEIakEEIAQoAiAiBgR/IAQpAwAhFQJAIAQtABtBAkYEQEF/QQAgFUIAUhshAwwBCyAVUARAIAQoAhAiA0UNBCADIARBFGooAgBNIQMMAQtBfyEDIAQoAhBFDQMLIAMgBiADIAZJGwVBAAtBAWoiA0F/IAMbIgMgA0EETRsQyQUgAigCCCEGIAIoAgwgAkEgaiIDQTgQ4wkhCyACQRxqIhNBATYCACACIAs2AhggAiAGNgIUIAMgBEEwEOcJGiACQRRqIQsjAEHQAGsiBCQAAkAgAygCICIGRQ0AIANBEGohDwNAIAMgBkEBazYCIAJ+AkAgAy0AG0ECRwRAIARBCGogDxCgAyAELQAIQQFxDQEgA0ECOgAbCyADKQMAUA0DIAMpAwgMAQsgBDEACcILIRUgAygCLCEGIAQgFTcDSCAEQRBqIAYgBEHIAGoQogQgBCgCIEGAgICAeEYNASADKAIgIQYgCygCCCIQIAsoAgBGBEAgCyAQIAYEfyADKQMAIRUCQCADLQAbQQJGBEBBf0EAIBVCAFIbIQoMAQsgFVAEQCAPKAIAIgpFDQcgCiADKAIUTSEKDAELQX8hCiAPKAIARQ0GCyAKIAYgBiAKSxsFQQALQQFqIgpBfyAKGxCoBgsgCygCBCAQQThsaiAEQRBqQTgQ5wkaIAsgEEEBajYCCCAGDQALCyAEQdAAaiQAIAhBCGogEygCADYCACAIIAIpAhQ3AgALIAJB4ABqJAAMAQtB4I/AAEEZQeyYwAAQzAYACyAMQUBrJAAgBUEANgIAIAVBDGogCEEIaigCADYCACAFIAgpAwA3AgQgCEGAAWokAAJ/IAUoAgBFBEAgBUEMaigCACESIAUoAgQhAiAFQQhqKAIADAELIAUpAgQhFSAFIAVBDGooAgA2AgggBSAVNwMAQYCAgIB4IQIgBRCgBQshBCAOIBI2AgggDiAENgIEIA4gAjYCACAFQRBqJAACQCAHKAIEQYGAgIB4RwRAIA0gBykCBDcCACANQQhqIAdBDGooAgA2AgAMAQsgB0EMaigCACECIAcoAgghBEGkjcIAQRAQBSEFIA1BgICAgHg2AgAgDSAFNgIEIAQgAigCABEBACACKAIERQ0AIAIoAggaIAQQawsgB0EQaiQAIBEgESgCAEEBazYCAAJ/IAkoAhRBgICAgHhHBEAgCUEUahDWBiEBQQAMAQtBASEUIAkoAhgLIQIgACAUNgIIIAAgAjYCBCAAIAE2AgAgCUEgaiQAC9MKAhJ/AX4jAEEgayIIJAAgCEEIaiACENIGIAgoAgwhESAIQRRqIQ0gCCgCCCEDIwBBEGsiByQAIAcgAToAAyAHQQRqIQ4jAEEQayIFJAAgB0EDaiISLQAAIQQjAEEQayIKJAACfwJAAkACQEICIAMpAwBCAn0iFSAVQgJaG6dBAWsOAgECAAsgA0H0AGoMAgsgA0GMAWoMAQsgA0HsAGoLKAIAELQHIQYjAEFAaiIMJAAgDEEIaiICIAQCfwJAAkACQEICIAMpAwBCAn0iFSAVQgJaG6dBAWsOAgECAAsgA0H0AGoMAgsgA0GMAWoMAQsgA0HsAGoLKAIAIAYQ1QUgDCADNgI0IAwgDEE/ajYCMCMAQdAAayIDJAACQAJAAkACQAJAIAIoAiAiBEUNACACIARBAWs2AiACfgJAIAJBG2otAABBAkcEQCADQQhqIAJBEGoQoAMgAy0ACEEBcQ0BIAJBAjoAGwsgAikDAFANAiACKQMIDAELIAMxAAnCCyEVIANBGGogAkEsaigCACAVEEwgAygCKEGAgICAeEcNAQsgCkEANgIIIApCgICAgIABNwIADAELIANBBCACKAIgIgYEfyACKQMAIRUCQCACLQAbQQJGBEBBf0EAIBVCAFIbIQQMAQsgFVAEQCACKAIQIgRFDQQgBCACQRRqKAIATSEEDAELQX8hBCACKAIQRQ0DCyAEIAYgBCAGSRsFQQALQQFqIgRBfyAEGyIEIARBBE0bEMkFIAMoAgAhBiADKAIEIANBGGoiBEE4EOMJIQsgA0EUaiITQQE2AgAgAyALNgIQIAMgBjYCDCAEIAJBMBDnCRogA0EMaiELIwBBQGoiAiQAAkAgBCgCICIGRQ0AIARBEGohDwNAIAQgBkEBazYCIAJ+AkAgBC0AG0ECRwRAIAIgDxCgAyACLQAAQQFxDQEgBEECOgAbCyAEKQMAUA0DIAQpAwgMAQsgAjEAAcILIRUgAkEIaiAEKAIsIBUQTCACKAIYQYCAgIB4Rg0BIAQoAiAhBiALKAIIIhAgCygCAEYEQCALIBAgBgR/IAQpAwAhFQJAIAQtABtBAkYEQEF/QQAgFUIAUhshCQwBCyAVUARAIA8oAgAiCUUNByAJIAQoAhRNIQkMAQtBfyEJIA8oAgBFDQYLIAkgBiAGIAlLGwVBAAtBAWoiCUF/IAkbEKgGCyALKAIEIBBBOGxqIAJBCGpBOBDnCRogCyAQQQFqNgIIIAYNAAsLIAJBQGskACAKQQhqIBMoAgA2AgAgCiADKQIMNwIACyADQdAAaiQADAELQeCPwABBGUHsmMAAEMwGAAsgDEFAayQAIAVBADYCACAFQQxqIApBCGooAgA2AgAgBSAKKQMANwIEIApBEGokAAJ/IAUoAgBFBEAgBUEMaigCACESIAUoAgQhAiAFQQhqKAIADAELIAUpAgQhFSAFIAVBDGooAgA2AgggBSAVNwMAQYCAgIB4IQIgBRCgBQshAyAOIBI2AgggDiADNgIEIA4gAjYCACAFQRBqJAACQCAHKAIEQYGAgIB4RwRAIA0gBykCBDcCACANQQhqIAdBDGooAgA2AgAMAQsgB0EMaigCACECIAcoAgghA0GkjcIAQRAQBSEFIA1BgICAgHg2AgAgDSAFNgIEIAMgAigCABEBACACKAIERQ0AIAIoAggaIAMQawsgB0EQaiQAIBEgESgCAEEBazYCAAJ/IAgoAhRBgICAgHhHBEAgCEEUahDWBiEBQQAMAQtBASEUIAgoAhgLIQIgACAUNgIIIAAgAjYCBCAAIAE2AgAgCEEgaiQAC5YKAhJ/An4jAEEgayIIJAAgCEEIaiACENIGIAgoAgwhEiAIQRBqIQwgCCgCCCECIwBBIGsiByQAIAcgAToADyAHQRBqIQ4jAEEQayIGJAAgB0EPai0AACEDIwBBgAFrIg8kACAPIAIQ2wUgBkEEaiENIA9B7ABqKAIAELQHIQUjAEFAaiILJAAgC0EIaiIEIAMCfwJAAkACQEICIAIpAwBCAn0iFSAVQgJaG6dBAWsOAgECAAsgAkH0AGoMAgsgAkGMAWoMAQsgAkHsAGoLKAIAIAUQ1QUgCyACNgI0IAsgC0E/ajYCMCMAQfAAayICJAACQAJAAkACQAJAIAQoAiAiA0UNACAEIANBAWs2AiACfgJAIARBG2otAABBAkcEQCACQRBqIARBEGoQoAMgAi0AEEEBcQ0BIARBAjoAGwsgBCkDAFANAiAEKQMIDAELIAIxABHCCyEVIARBLGooAgAhAyACIBU3A2ggAkEgaiADIAJB6ABqEKEEIAItAGBBAkcNAQsgDUEANgIIIA1CgICAgIABNwIADAELIAJBCGpBBCAEKAIgIgUEfyAEKQMAIRUCQCAELQAbQQJGBEBBf0EAIBVCAFIbIQMMAQsgFVAEQCAEKAIQIgNFDQQgAyAEQRRqKAIATSEDDAELQX8hAyAEKAIQRQ0DCyADIAUgAyAFSRsFQQALQQFqIgNBfyADGyIDIANBBE0bEMcFIAIoAgghBSACKAIMIAJBIGoiA0HIABDjCSEKIAJBHGoiE0EBNgIAIAIgCjYCGCACIAU2AhQgAyAEQTAQ5wkaIAJBFGohCiMAQeAAayIEJAACQCADKAIgIgVFDQAgA0EQaiEQA0AgAyAFQQFrNgIgAn4CQCADLQAbQQJHBEAgBEEIaiAQEKADIAQtAAhBAXENASADQQI6ABsLIAMpAwBQDQMgAykDCAwBCyAEMQAJwgshFSADKAIsIQUgBCAVNwNYIARBEGogBSAEQdgAahChBCAELQBQQQJGDQEgAygCICEFIAooAggiESAKKAIARgRAIAogESAFBH8gAykDACEVAkAgAy0AG0ECRgRAQX9BACAVQgBSGyEJDAELIBVQBEAgECgCACIJRQ0HIAkgAygCFE0hCQwBC0F/IQkgECgCAEUNBgsgCSAFIAUgCUsbBUEAC0EBaiIJQX8gCRsQqgYLIAooAgQgEUHIAGxqIARBEGpByAAQ5wkaIAogEUEBajYCCCAFDQALCyAEQeAAaiQAIA1BCGogEygCADYCACANIAIpAhQ3AgALIAJB8ABqJAAMAQtB4I/AAEEZQeyYwAAQzAYACyALQUBrJAAgBkEANgIAIA9BgAFqJAACfyAGKAIAIgJBAkcEQCAGKQIIIRYgBigCBAwBCyAGKAIEIQQgBiAGQQhqKQIANwIEIAYgBDYCACAGEKAFCyEEIA4gFjcCCCAOIAQ2AgQgDiACNgIAIAZBEGokAAJAIAcoAhBBA0cEQCAMIAcpAhA3AgAgDEEIaiAHQRhqKQIANwIADAELIAdBGGooAgAhAiAHKAIUIQRBpI3CAEEQEAUhAyAMQQI2AgAgDCADNgIEIAQgAigCABEBACACKAIERQ0AIAIoAggaIAQQawsgB0EgaiQAIBIgEigCAEEBazYCAAJ/IAgoAhBBAkcEQCAIQRBqENcGIQFBAAwBC0EBIRQgCCgCFAshAiAAIBQ2AgggACACNgIEIAAgATYCACAIQSBqJAALwQoCEn8BfiMAQSBrIgokACAKQQhqIAIQ0gYgCigCDCEQIApBFGohDSAKKAIIIQQjAEEQayIIJAAgCCABOwECIAhBBGohDiMAQRBrIgYkACAIQQJqIhEvAQAhAyMAQYABayIJJAAgCSAEENsFIAlB7ABqKAIAEK8HIQUjAEFAaiICJAAgAiADAn8CQAJAAkBCAiAEKQMAQgJ9IhUgFUICWhunQQFrDgIBAgALIARB9ABqDAILIARBjAFqDAELIARB7ABqCygCACAFEL0FIAIgBDYCNCACIAJBP2o2AjAjAEHgAGsiBCQAAkACQAJAAkACQCACKAIoIgNFDQAgAiADQQFrNgIoAn4CQCACLwEQQQJHBEAgBEEQaiACQRBqIgMQqAMgBC8BEA0BIANBAjsBAAsgAikDAFANAiACKQMIDAELIAQzARLDCyEVIAJBNGooAgAhAyAEIBU3A1ggBEEgaiADIARB2ABqEKQEIAQoAjBBgICAgHhHDQELIAlBADYCCCAJQoCAgICAATcCAAwBCyAEQQhqQQQgAigCKCIFBH8gAikDACEVAkAgAi8BEEECRgRAQX9BACAVQgBSGyEDDAELIBVQBEAgAigCFCIDRQ0EIAMgAkEYaigCAE0hAwwBC0F/IQMgAigCFEUNAwsgAyAFIAMgBUkbBUEAC0EBaiIDQX8gAxsiAyADQQRNGxDJBSAEKAIIIQUgBCgCDCAEQSBqIgNBOBDjCSEHIARBHGoiE0EBNgIAIAQgBzYCGCAEIAU2AhQgAyACQTgQ5wkaIARBFGohDCMAQdAAayIFJAACQCADKAIoIgdFDQAgA0EQaiESA0AgAyAHQQFrNgIoAn4CQCADLwEQQQJHBEAgBUEIaiASEKgDIAUvAQgNASASQQI7AQALIAMpAwBQDQMgAykDCAwBCyAFMwEKwwshFSADKAI0IQcgBSAVNwNIIAVBEGogByAFQcgAahCkBCAFKAIgQYCAgIB4Rg0BIAMoAighByAMKAIIIg8gDCgCAEYEQCAMIA8gBwR/IAMpAwAhFQJAIAMvARBBAkYEQEF/QQAgFUIAUhshCwwBCyAVUARAIAMoAhQiC0UNByALIAMoAhhNIQsMAQtBfyELIAMoAhRFDQYLIAsgByAHIAtLGwVBAAtBAWoiC0F/IAsbEKgGCyAMKAIEIA9BOGxqIAVBEGpBOBDnCRogDCAPQQFqNgIIIAcNAAsLIAVB0ABqJAAgCUEIaiATKAIANgIAIAkgBCkCFDcCAAsgBEHgAGokAAwBC0Hgj8AAQRlB7JjAABDMBgALIAJBQGskACAGQQA2AgAgBkEMaiAJQQhqKAIANgIAIAYgCSkDADcCBCAJQYABaiQAAn8gBigCAEUEQCAGQQxqKAIAIREgBigCBCECIAZBCGooAgAMAQsgBikCBCEVIAYgBkEMaigCADYCCCAGIBU3AwBBgICAgHghAiAGEKAFCyEEIA4gETYCCCAOIAQ2AgQgDiACNgIAIAZBEGokAAJAIAgoAgRBgYCAgHhHBEAgDSAIKQIENwIAIA1BCGogCEEMaigCADYCAAwBCyAIQQxqKAIAIQIgCCgCCCEEQaSNwgBBEBAFIQMgDUGAgICAeDYCACANIAM2AgQgBCACKAIAEQEAIAIoAgRFDQAgAigCCBogBBBrCyAIQRBqJAAgECAQKAIAQQFrNgIAAn8gCigCFEGAgICAeEcEQCAKQRRqENYGIQFBAAwBC0EBIRQgCigCGAshAiAAIBQ2AgggACACNgIEIAAgATYCACAKQSBqJAALwQoCEn8BfiMAQSBrIgokACAKQQhqIAIQ0gYgCigCDCEQIApBFGohDSAKKAIIIQQjAEEQayIIJAAgCCABOwECIAhBBGohDiMAQRBrIgYkACAIQQJqIhEvAQAhAyMAQYABayIJJAAgCSAEENwFIAlB7ABqKAIAEK8HIQUjAEFAaiICJAAgAiADAn8CQAJAAkBCAiAEKQMAQgJ9IhUgFUICWhunQQFrDgIBAgALIARB9ABqDAILIARBjAFqDAELIARB7ABqCygCACAFEL0FIAIgBDYCNCACIAJBP2o2AjAjAEHgAGsiBCQAAkACQAJAAkACQCACKAIoIgNFDQAgAiADQQFrNgIoAn4CQCACLwEQQQJHBEAgBEEQaiACQRBqIgMQqAMgBC8BEA0BIANBAjsBAAsgAikDAFANAiACKQMIDAELIAQzARLDCyEVIAJBNGooAgAhAyAEIBU3A1ggBEEgaiADIARB2ABqEKMEIAQoAjBBgICAgHhHDQELIAlBADYCCCAJQoCAgICAATcCAAwBCyAEQQhqQQQgAigCKCIFBH8gAikDACEVAkAgAi8BEEECRgRAQX9BACAVQgBSGyEDDAELIBVQBEAgAigCFCIDRQ0EIAMgAkEYaigCAE0hAwwBC0F/IQMgAigCFEUNAwsgAyAFIAMgBUkbBUEAC0EBaiIDQX8gAxsiAyADQQRNGxDJBSAEKAIIIQUgBCgCDCAEQSBqIgNBOBDjCSEHIARBHGoiE0EBNgIAIAQgBzYCGCAEIAU2AhQgAyACQTgQ5wkaIARBFGohDCMAQdAAayIFJAACQCADKAIoIgdFDQAgA0EQaiESA0AgAyAHQQFrNgIoAn4CQCADLwEQQQJHBEAgBUEIaiASEKgDIAUvAQgNASASQQI7AQALIAMpAwBQDQMgAykDCAwBCyAFMwEKwwshFSADKAI0IQcgBSAVNwNIIAVBEGogByAFQcgAahCjBCAFKAIgQYCAgIB4Rg0BIAMoAighByAMKAIIIg8gDCgCAEYEQCAMIA8gBwR/IAMpAwAhFQJAIAMvARBBAkYEQEF/QQAgFUIAUhshCwwBCyAVUARAIAMoAhQiC0UNByALIAMoAhhNIQsMAQtBfyELIAMoAhRFDQYLIAsgByAHIAtLGwVBAAtBAWoiC0F/IAsbEKgGCyAMKAIEIA9BOGxqIAVBEGpBOBDnCRogDCAPQQFqNgIIIAcNAAsLIAVB0ABqJAAgCUEIaiATKAIANgIAIAkgBCkCFDcCAAsgBEHgAGokAAwBC0Hgj8AAQRlB7JjAABDMBgALIAJBQGskACAGQQA2AgAgBkEMaiAJQQhqKAIANgIAIAYgCSkDADcCBCAJQYABaiQAAn8gBigCAEUEQCAGQQxqKAIAIREgBigCBCECIAZBCGooAgAMAQsgBikCBCEVIAYgBkEMaigCADYCCCAGIBU3AwBBgICAgHghAiAGEKAFCyEEIA4gETYCCCAOIAQ2AgQgDiACNgIAIAZBEGokAAJAIAgoAgRBgYCAgHhHBEAgDSAIKQIENwIAIA1BCGogCEEMaigCADYCAAwBCyAIQQxqKAIAIQIgCCgCCCEEQaSNwgBBEBAFIQMgDUGAgICAeDYCACANIAM2AgQgBCACKAIAEQEAIAIoAgRFDQAgAigCCBogBBBrCyAIQRBqJAAgECAQKAIAQQFrNgIAAn8gCigCFEGAgICAeEcEQCAKQRRqENYGIQFBAAwBC0EBIRQgCigCGAshAiAAIBQ2AgggACACNgIEIAAgATYCACAKQSBqJAALwQoCEn8BfiMAQSBrIgokACAKQQhqIAIQ0gYgCigCDCEQIApBFGohDSAKKAIIIQQjAEEQayIIJAAgCCABOwECIAhBBGohDiMAQRBrIgYkACAIQQJqIhEvAQAhAyMAQYABayIJJAAgCSAEEN4FIAlB7ABqKAIAEK8HIQUjAEFAaiICJAAgAiADAn8CQAJAAkBCAiAEKQMAQgJ9IhUgFUICWhunQQFrDgIBAgALIARB9ABqDAILIARBjAFqDAELIARB7ABqCygCACAFEL0FIAIgBDYCNCACIAJBP2o2AjAjAEHgAGsiBCQAAkACQAJAAkACQCACKAIoIgNFDQAgAiADQQFrNgIoAn4CQCACLwEQQQJHBEAgBEEQaiACQRBqIgMQqAMgBC8BEA0BIANBAjsBAAsgAikDAFANAiACKQMIDAELIAQzARLDCyEVIAJBNGooAgAhAyAEIBU3A1ggBEEgaiADIARB2ABqEKIEIAQoAjBBgICAgHhHDQELIAlBADYCCCAJQoCAgICAATcCAAwBCyAEQQhqQQQgAigCKCIFBH8gAikDACEVAkAgAi8BEEECRgRAQX9BACAVQgBSGyEDDAELIBVQBEAgAigCFCIDRQ0EIAMgAkEYaigCAE0hAwwBC0F/IQMgAigCFEUNAwsgAyAFIAMgBUkbBUEAC0EBaiIDQX8gAxsiAyADQQRNGxDJBSAEKAIIIQUgBCgCDCAEQSBqIgNBOBDjCSEHIARBHGoiE0EBNgIAIAQgBzYCGCAEIAU2AhQgAyACQTgQ5wkaIARBFGohDCMAQdAAayIFJAACQCADKAIoIgdFDQAgA0EQaiESA0AgAyAHQQFrNgIoAn4CQCADLwEQQQJHBEAgBUEIaiASEKgDIAUvAQgNASASQQI7AQALIAMpAwBQDQMgAykDCAwBCyAFMwEKwwshFSADKAI0IQcgBSAVNwNIIAVBEGogByAFQcgAahCiBCAFKAIgQYCAgIB4Rg0BIAMoAighByAMKAIIIg8gDCgCAEYEQCAMIA8gBwR/IAMpAwAhFQJAIAMvARBBAkYEQEF/QQAgFUIAUhshCwwBCyAVUARAIAMoAhQiC0UNByALIAMoAhhNIQsMAQtBfyELIAMoAhRFDQYLIAsgByAHIAtLGwVBAAtBAWoiC0F/IAsbEKgGCyAMKAIEIA9BOGxqIAVBEGpBOBDnCRogDCAPQQFqNgIIIAcNAAsLIAVB0ABqJAAgCUEIaiATKAIANgIAIAkgBCkCFDcCAAsgBEHgAGokAAwBC0Hgj8AAQRlB7JjAABDMBgALIAJBQGskACAGQQA2AgAgBkEMaiAJQQhqKAIANgIAIAYgCSkDADcCBCAJQYABaiQAAn8gBigCAEUEQCAGQQxqKAIAIREgBigCBCECIAZBCGooAgAMAQsgBikCBCEVIAYgBkEMaigCADYCCCAGIBU3AwBBgICAgHghAiAGEKAFCyEEIA4gETYCCCAOIAQ2AgQgDiACNgIAIAZBEGokAAJAIAgoAgRBgYCAgHhHBEAgDSAIKQIENwIAIA1BCGogCEEMaigCADYCAAwBCyAIQQxqKAIAIQIgCCgCCCEEQaSNwgBBEBAFIQMgDUGAgICAeDYCACANIAM2AgQgBCACKAIAEQEAIAIoAgRFDQAgAigCCBogBBBrCyAIQRBqJAAgECAQKAIAQQFrNgIAAn8gCigCFEGAgICAeEcEQCAKQRRqENYGIQFBAAwBC0EBIRQgCigCGAshAiAAIBQ2AgggACACNgIEIAAgATYCACAKQSBqJAALxwoCEn8BfiMAQSBrIggkACAIQQhqIAIQ0gYgCCgCDCEQIAhBFGohDSAIKAIIIQQjAEEQayIHJAAgByABOwECIAdBBGohDiMAQRBrIgYkACAHQQJqIhEvAQAhAyMAQRBrIgskAAJ/AkACQAJAQgIgBCkDAEICfSIVIBVCAlobp0EBaw4CAQIACyAEQfQAagwCCyAEQYwBagwBCyAEQewAagsoAgAQrwchBSMAQUBqIgIkACACIAMCfwJAAkACQEICIAQpAwBCAn0iFSAVQgJaG6dBAWsOAgECAAsgBEH0AGoMAgsgBEGMAWoMAQsgBEHsAGoLKAIAIAUQvQUgAiAENgI0IAIgAkE/ajYCMCMAQdAAayIEJAACQAJAAkACQAJAIAIoAigiA0UNACACIANBAWs2AigCfgJAIAIvARBBAkcEQCAEQQhqIAJBEGoiAxCoAyAELwEIDQEgA0ECOwEACyACKQMAUA0CIAIpAwgMAQsgBDMBCsMLIRUgBEEYaiACQTRqKAIAIBUQTCAEKAIoQYCAgIB4Rw0BCyALQQA2AgggC0KAgICAgAE3AgAMAQsgBEEEIAIoAigiBQR/IAIpAwAhFQJAIAIvARBBAkYEQEF/QQAgFUIAUhshAwwBCyAVUARAIAIoAhQiA0UNBCADIAJBGGooAgBNIQMMAQtBfyEDIAIoAhRFDQMLIAMgBSADIAVJGwVBAAtBAWoiA0F/IAMbIgMgA0EETRsQyQUgBCgCACEFIAQoAgQgBEEYaiIDQTgQ4wkhCSAEQRRqIhNBATYCACAEIAk2AhAgBCAFNgIMIAMgAkE4EOcJGiAEQQxqIQwjAEFAaiIFJAACQCADKAIoIglFDQAgA0EQaiESA0AgAyAJQQFrNgIoAn4CQCADLwEQQQJHBEAgBSASEKgDIAUvAQANASASQQI7AQALIAMpAwBQDQMgAykDCAwBCyAFMwECwwshFSAFQQhqIAMoAjQgFRBMIAUoAhhBgICAgHhGDQEgAygCKCEJIAwoAggiDyAMKAIARgRAIAwgDyAJBH8gAykDACEVAkAgAy8BEEECRgRAQX9BACAVQgBSGyEKDAELIBVQBEAgAygCFCIKRQ0HIAogAygCGE0hCgwBC0F/IQogAygCFEUNBgsgCiAJIAkgCksbBUEAC0EBaiIKQX8gChsQqAYLIAwoAgQgD0E4bGogBUEIakE4EOcJGiAMIA9BAWo2AgggCQ0ACwsgBUFAayQAIAtBCGogEygCADYCACALIAQpAgw3AgALIARB0ABqJAAMAQtB4I/AAEEZQeyYwAAQzAYACyACQUBrJAAgBkEANgIAIAZBDGogC0EIaigCADYCACAGIAspAwA3AgQgC0EQaiQAAn8gBigCAEUEQCAGQQxqKAIAIREgBigCBCECIAZBCGooAgAMAQsgBikCBCEVIAYgBkEMaigCADYCCCAGIBU3AwBBgICAgHghAiAGEKAFCyEEIA4gETYCCCAOIAQ2AgQgDiACNgIAIAZBEGokAAJAIAcoAgRBgYCAgHhHBEAgDSAHKQIENwIAIA1BCGogB0EMaigCADYCAAwBCyAHQQxqKAIAIQIgBygCCCEEQaSNwgBBEBAFIQMgDUGAgICAeDYCACANIAM2AgQgBCACKAIAEQEAIAIoAgRFDQAgAigCCBogBBBrCyAHQRBqJAAgECAQKAIAQQFrNgIAAn8gCCgCFEGAgICAeEcEQCAIQRRqENYGIQFBAAwBC0EBIRQgCCgCGAshAiAAIBQ2AgggACACNgIEIAAgATYCACAIQSBqJAALigoCEn8CfiMAQSBrIgkkACAJQQhqIAIQ0gYgCSgCDCERIAlBEGohDCAJKAIIIQMjAEEgayIIJAAgCCABOwEOIAhBEGohDiMAQRBrIgYkACAIQQ5qLwEAIQQjAEGAAWsiDyQAIA8gAxDbBSAGQQRqIQ0gD0HsAGooAgAQrwchBSMAQUBqIgIkACACIAQCfwJAAkACQEICIAMpAwBCAn0iFSAVQgJaG6dBAWsOAgECAAsgA0H0AGoMAgsgA0GMAWoMAQsgA0HsAGoLKAIAIAUQvQUgAiADNgI0IAIgAkE/ajYCMCMAQfAAayIDJAACQAJAAkACQAJAIAIoAigiBEUNACACIARBAWs2AigCfgJAIAIvARBBAkcEQCADQRBqIAJBEGoiBBCoAyADLwEQDQEgBEECOwEACyACKQMAUA0CIAIpAwgMAQsgAzMBEsMLIRUgAkE0aigCACEEIAMgFTcDaCADQSBqIAQgA0HoAGoQoQQgAy0AYEECRw0BCyANQQA2AgggDUKAgICAgAE3AgAMAQsgA0EIakEEIAIoAigiBAR/IAIpAwAhFQJAIAIvARBBAkYEQEF/QQAgFUIAUhshBQwBCyAVUARAIAIoAhQiBUUNBCAFIAJBGGooAgBNIQUMAQtBfyEFIAIoAhRFDQMLIAUgBCAEIAVLGwVBAAtBAWoiBEF/IAQbIgQgBEEETRsQxwUgAygCCCEFIAMoAgwgA0EgaiIEQcgAEOMJIQcgA0EcaiITQQE2AgAgAyAHNgIYIAMgBTYCFCAEIAJBOBDnCRogA0EUaiELIwBB4ABrIgckAAJAIAQoAigiCkUNACAEQRBqIRIDQCAEIApBAWs2AigCfgJAIAQvARBBAkcEQCAHQQhqIBIQqAMgBy8BCA0BIBJBAjsBAAsgBCkDAFANAyAEKQMIDAELIAczAQrDCyEVIAQoAjQhBSAHIBU3A1ggB0EQaiAFIAdB2ABqEKEEIActAFBBAkYNASAEKAIoIQogCygCCCIQIAsoAgBGBEAgCyAQIAoEfyAEKQMAIRUCQCAELwEQQQJGBEBBf0EAIBVCAFIbIQUMAQsgFVAEQCAEKAIUIgVFDQcgBSAEKAIYTSEFDAELQX8hBSAEKAIURQ0GCyAFIAogBSAKSRsFQQALQQFqIgVBfyAFGxCqBgsgCygCBCAQQcgAbGogB0EQakHIABDnCRogCyAQQQFqNgIIIAoNAAsLIAdB4ABqJAAgDUEIaiATKAIANgIAIA0gAykCFDcCAAsgA0HwAGokAAwBC0Hgj8AAQRlB7JjAABDMBgALIAJBQGskACAGQQA2AgAgD0GAAWokAAJ/IAYoAgAiAkECRwRAIAYpAgghFiAGKAIEDAELIAYoAgQhAyAGIAZBCGopAgA3AgQgBiADNgIAIAYQoAULIQMgDiAWNwIIIA4gAzYCBCAOIAI2AgAgBkEQaiQAAkAgCCgCEEEDRwRAIAwgCCkCEDcCACAMQQhqIAhBGGopAgA3AgAMAQsgCEEYaigCACECIAgoAhQhA0GkjcIAQRAQBSEEIAxBAjYCACAMIAQ2AgQgAyACKAIAEQEAIAIoAgRFDQAgAigCCBogAxBrCyAIQSBqJAAgESARKAIAQQFrNgIAAn8gCSgCEEECRwRAIAlBEGoQ1wYhAUEADAELQQEhFCAJKAIUCyECIAAgFDYCCCAAIAI2AgQgACABNgIAIAlBIGokAAvFCgISfwF+IwBBIGsiCSQAIAlBCGogAhDSBiAJKAIMIREgCUEUaiEOIAkoAgghBCMAQRBrIgckACAHIAE2AgAgB0EEaiEPIwBBEGsiBiQAIAciDCgCACEDIwBBgAFrIggkACAIIAQQ2wUgCEHsAGooAgAQtQchBSMAQdAAayINJAAgDUEIaiICIAMCfwJAAkACQEICIAQpAwBCAn0iFSAVQgJaG6dBAWsOAgECAAsgBEH0AGoMAgsgBEGMAWoMAQsgBEHsAGoLKAIAIAUQvQMgDSAENgJEIA0gDUHPAGo2AkAjAEHwAGsiBCQAAkACQAJAAkACQCACKAIwIgNFDQAgAiADQQFrNgIwAn4CQCACKAIQQQJHBEAgBEEQaiACQRBqIgMQwgMgBCgCEA0BIANBAjYCAAsgAikDAFANAiACKQMIDAELIAQ0AhQLIRUgAkE8aigCACEDIAQgFTcDaCAEQShqIAMgBEHoAGoQpAQgBCgCOEGAgICAeEcNAQsgCEEANgIIIAhCgICAgIABNwIADAELIARBCGpBBCACKAIwIgUEfyACKQMAIRUCQCACKAIQQQJGBEBBf0EAIBVCAFIbIQMMAQsgFVAEQCACKAIgIgNFDQQgAyACQSRqKAIATSEDDAELQX8hAyACKAIgRQ0DCyADIAUgAyAFSRsFQQALQQFqIgNBfyADGyIDIANBBE0bEMkFIAQoAgghBSAEKAIMIARBKGoiA0E4EOMJIQsgBEEkaiITQQE2AgAgBCALNgIgIAQgBTYCHCADIAJBwAAQ5wkaIARBHGohCyMAQdAAayICJAACQCADKAIwIgVFDQAgA0EQaiESA0AgAyAFQQFrNgIwAn4CQCADKAIQQQJHBEAgAkEIaiASEMIDIAIoAggNASASQQI2AgALIAMpAwBQDQMgAykDCAwBCyACNAIMCyEVIAMoAjwhBSACIBU3A0ggAkEQaiAFIAJByABqEKQEIAIoAiBBgICAgHhGDQEgAygCMCEFIAsoAggiECALKAIARgRAIAsgECAFBH8gAykDACEVAkAgAygCEEECRgRAQX9BACAVQgBSGyEKDAELIBVQBEAgAygCICIKRQ0HIAogAygCJE0hCgwBC0F/IQogAygCIEUNBgsgCiAFIAUgCksbBUEAC0EBaiIKQX8gChsQqAYLIAsoAgQgEEE4bGogAkEQakE4EOcJGiALIBBBAWo2AgggBQ0ACwsgAkHQAGokACAIQQhqIBMoAgA2AgAgCCAEKQIcNwIACyAEQfAAaiQADAELQeCPwABBGUHsmMAAEMwGAAsgDUHQAGokACAGQQA2AgAgBkEMaiAIQQhqKAIANgIAIAYgCCkDADcCBCAIQYABaiQAAn8gBigCAEUEQCAGQQxqKAIAIQwgBigCBCECIAZBCGooAgAMAQsgBikCBCEVIAYgBkEMaigCADYCCCAGIBU3AwBBgICAgHghAiAGEKAFCyEEIA8gDDYCCCAPIAQ2AgQgDyACNgIAIAZBEGokAAJAIAcoAgRBgYCAgHhHBEAgDiAHKQIENwIAIA5BCGogB0EMaigCADYCAAwBCyAHQQxqKAIAIQIgBygCCCEMQaSNwgBBEBAFIQQgDkGAgICAeDYCACAOIAQ2AgQgDCACKAIAEQEAIAIoAgRFDQAgAigCCBogDBBrCyAHQRBqJAAgESARKAIAQQFrNgIAAn8gCSgCFEGAgICAeEcEQCAJQRRqENYGIQFBAAwBC0EBIRQgCSgCGAshAiAAIBQ2AgggACACNgIEIAAgATYCACAJQSBqJAALxQoCEn8BfiMAQSBrIgkkACAJQQhqIAIQ0gYgCSgCDCERIAlBFGohDiAJKAIIIQQjAEEQayIHJAAgByABNgIAIAdBBGohDyMAQRBrIgYkACAHIgwoAgAhAyMAQYABayIIJAAgCCAEENwFIAhB7ABqKAIAELUHIQUjAEHQAGsiDSQAIA1BCGoiAiADAn8CQAJAAkBCAiAEKQMAQgJ9IhUgFUICWhunQQFrDgIBAgALIARB9ABqDAILIARBjAFqDAELIARB7ABqCygCACAFEL0DIA0gBDYCRCANIA1BzwBqNgJAIwBB8ABrIgQkAAJAAkACQAJAAkAgAigCMCIDRQ0AIAIgA0EBazYCMAJ+AkAgAigCEEECRwRAIARBEGogAkEQaiIDEMIDIAQoAhANASADQQI2AgALIAIpAwBQDQIgAikDCAwBCyAENAIUCyEVIAJBPGooAgAhAyAEIBU3A2ggBEEoaiADIARB6ABqEKMEIAQoAjhBgICAgHhHDQELIAhBADYCCCAIQoCAgICAATcCAAwBCyAEQQhqQQQgAigCMCIFBH8gAikDACEVAkAgAigCEEECRgRAQX9BACAVQgBSGyEDDAELIBVQBEAgAigCICIDRQ0EIAMgAkEkaigCAE0hAwwBC0F/IQMgAigCIEUNAwsgAyAFIAMgBUkbBUEAC0EBaiIDQX8gAxsiAyADQQRNGxDJBSAEKAIIIQUgBCgCDCAEQShqIgNBOBDjCSELIARBJGoiE0EBNgIAIAQgCzYCICAEIAU2AhwgAyACQcAAEOcJGiAEQRxqIQsjAEHQAGsiAiQAAkAgAygCMCIFRQ0AIANBEGohEgNAIAMgBUEBazYCMAJ+AkAgAygCEEECRwRAIAJBCGogEhDCAyACKAIIDQEgEkECNgIACyADKQMAUA0DIAMpAwgMAQsgAjQCDAshFSADKAI8IQUgAiAVNwNIIAJBEGogBSACQcgAahCjBCACKAIgQYCAgIB4Rg0BIAMoAjAhBSALKAIIIhAgCygCAEYEQCALIBAgBQR/IAMpAwAhFQJAIAMoAhBBAkYEQEF/QQAgFUIAUhshCgwBCyAVUARAIAMoAiAiCkUNByAKIAMoAiRNIQoMAQtBfyEKIAMoAiBFDQYLIAogBSAFIApLGwVBAAtBAWoiCkF/IAobEKgGCyALKAIEIBBBOGxqIAJBEGpBOBDnCRogCyAQQQFqNgIIIAUNAAsLIAJB0ABqJAAgCEEIaiATKAIANgIAIAggBCkCHDcCAAsgBEHwAGokAAwBC0Hgj8AAQRlB7JjAABDMBgALIA1B0ABqJAAgBkEANgIAIAZBDGogCEEIaigCADYCACAGIAgpAwA3AgQgCEGAAWokAAJ/IAYoAgBFBEAgBkEMaigCACEMIAYoAgQhAiAGQQhqKAIADAELIAYpAgQhFSAGIAZBDGooAgA2AgggBiAVNwMAQYCAgIB4IQIgBhCgBQshBCAPIAw2AgggDyAENgIEIA8gAjYCACAGQRBqJAACQCAHKAIEQYGAgIB4RwRAIA4gBykCBDcCACAOQQhqIAdBDGooAgA2AgAMAQsgB0EMaigCACECIAcoAgghDEGkjcIAQRAQBSEEIA5BgICAgHg2AgAgDiAENgIEIAwgAigCABEBACACKAIERQ0AIAIoAggaIAwQawsgB0EQaiQAIBEgESgCAEEBazYCAAJ/IAkoAhRBgICAgHhHBEAgCUEUahDWBiEBQQAMAQtBASEUIAkoAhgLIQIgACAUNgIIIAAgAjYCBCAAIAE2AgAgCUEgaiQAC8UKAhJ/AX4jAEEgayIJJAAgCUEIaiACENIGIAkoAgwhESAJQRRqIQ4gCSgCCCEEIwBBEGsiByQAIAcgATYCACAHQQRqIQ8jAEEQayIGJAAgByIMKAIAIQMjAEGAAWsiCCQAIAggBBDeBSAIQewAaigCABC1ByEFIwBB0ABrIg0kACANQQhqIgIgAwJ/AkACQAJAQgIgBCkDAEICfSIVIBVCAlobp0EBaw4CAQIACyAEQfQAagwCCyAEQYwBagwBCyAEQewAagsoAgAgBRC9AyANIAQ2AkQgDSANQc8AajYCQCMAQfAAayIEJAACQAJAAkACQAJAIAIoAjAiA0UNACACIANBAWs2AjACfgJAIAIoAhBBAkcEQCAEQRBqIAJBEGoiAxDCAyAEKAIQDQEgA0ECNgIACyACKQMAUA0CIAIpAwgMAQsgBDQCFAshFSACQTxqKAIAIQMgBCAVNwNoIARBKGogAyAEQegAahCiBCAEKAI4QYCAgIB4Rw0BCyAIQQA2AgggCEKAgICAgAE3AgAMAQsgBEEIakEEIAIoAjAiBQR/IAIpAwAhFQJAIAIoAhBBAkYEQEF/QQAgFUIAUhshAwwBCyAVUARAIAIoAiAiA0UNBCADIAJBJGooAgBNIQMMAQtBfyEDIAIoAiBFDQMLIAMgBSADIAVJGwVBAAtBAWoiA0F/IAMbIgMgA0EETRsQyQUgBCgCCCEFIAQoAgwgBEEoaiIDQTgQ4wkhCyAEQSRqIhNBATYCACAEIAs2AiAgBCAFNgIcIAMgAkHAABDnCRogBEEcaiELIwBB0ABrIgIkAAJAIAMoAjAiBUUNACADQRBqIRIDQCADIAVBAWs2AjACfgJAIAMoAhBBAkcEQCACQQhqIBIQwgMgAigCCA0BIBJBAjYCAAsgAykDAFANAyADKQMIDAELIAI0AgwLIRUgAygCPCEFIAIgFTcDSCACQRBqIAUgAkHIAGoQogQgAigCIEGAgICAeEYNASADKAIwIQUgCygCCCIQIAsoAgBGBEAgCyAQIAUEfyADKQMAIRUCQCADKAIQQQJGBEBBf0EAIBVCAFIbIQoMAQsgFVAEQCADKAIgIgpFDQcgCiADKAIkTSEKDAELQX8hCiADKAIgRQ0GCyAKIAUgBSAKSxsFQQALQQFqIgpBfyAKGxCoBgsgCygCBCAQQThsaiACQRBqQTgQ5wkaIAsgEEEBajYCCCAFDQALCyACQdAAaiQAIAhBCGogEygCADYCACAIIAQpAhw3AgALIARB8ABqJAAMAQtB4I/AAEEZQeyYwAAQzAYACyANQdAAaiQAIAZBADYCACAGQQxqIAhBCGooAgA2AgAgBiAIKQMANwIEIAhBgAFqJAACfyAGKAIARQRAIAZBDGooAgAhDCAGKAIEIQIgBkEIaigCAAwBCyAGKQIEIRUgBiAGQQxqKAIANgIIIAYgFTcDAEGAgICAeCECIAYQoAULIQQgDyAMNgIIIA8gBDYCBCAPIAI2AgAgBkEQaiQAAkAgBygCBEGBgICAeEcEQCAOIAcpAgQ3AgAgDkEIaiAHQQxqKAIANgIADAELIAdBDGooAgAhAiAHKAIIIQxBpI3CAEEQEAUhBCAOQYCAgIB4NgIAIA4gBDYCBCAMIAIoAgARAQAgAigCBEUNACACKAIIGiAMEGsLIAdBEGokACARIBEoAgBBAWs2AgACfyAJKAIUQYCAgIB4RwRAIAlBFGoQ1gYhAUEADAELQQEhFCAJKAIYCyECIAAgFDYCCCAAIAI2AgQgACABNgIAIAlBIGokAAvLCgISfwF+IwBBIGsiCCQAIAhBCGogAhDSBiAIKAIMIREgCEEUaiEOIAgoAgghBCMAQRBrIgckACAHIAE2AgAgB0EEaiEPIwBBEGsiBSQAIAciDCgCACEDIwBBEGsiCiQAAn8CQAJAAkBCAiAEKQMAQgJ9IhUgFUICWhunQQFrDgIBAgALIARB9ABqDAILIARBjAFqDAELIARB7ABqCygCABC1ByEGIwBB0ABrIg0kACANQQhqIgIgAwJ/AkACQAJAQgIgBCkDAEICfSIVIBVCAlobp0EBaw4CAQIACyAEQfQAagwCCyAEQYwBagwBCyAEQewAagsoAgAgBhC9AyANIAQ2AkQgDSANQc8AajYCQCMAQeAAayIEJAACQAJAAkACQAJAIAIoAjAiA0UNACACIANBAWs2AjACfgJAIAIoAhBBAkcEQCAEQQhqIAJBEGoiAxDCAyAEKAIIDQEgA0ECNgIACyACKQMAUA0CIAIpAwgMAQsgBDQCDAshFSAEQSBqIAJBPGooAgAgFRBMIAQoAjBBgICAgHhHDQELIApBADYCCCAKQoCAgICAATcCAAwBCyAEQQQgAigCMCIGBH8gAikDACEVAkAgAigCEEECRgRAQX9BACAVQgBSGyEDDAELIBVQBEAgAigCICIDRQ0EIAMgAkEkaigCAE0hAwwBC0F/IQMgAigCIEUNAwsgAyAGIAMgBkkbBUEAC0EBaiIDQX8gAxsiAyADQQRNGxDJBSAEKAIAIQYgBCgCBCAEQSBqIgNBOBDjCSELIARBHGoiE0EBNgIAIAQgCzYCGCAEIAY2AhQgAyACQcAAEOcJGiAEQRRqIQsjAEFAaiICJAACQCADKAIwIgZFDQAgA0EQaiESA0AgAyAGQQFrNgIwAn4CQCADKAIQQQJHBEAgAiASEMIDIAIoAgANASASQQI2AgALIAMpAwBQDQMgAykDCAwBCyACNAIECyEVIAJBCGogAygCPCAVEEwgAigCGEGAgICAeEYNASADKAIwIQYgCygCCCIQIAsoAgBGBEAgCyAQIAYEfyADKQMAIRUCQCADKAIQQQJGBEBBf0EAIBVCAFIbIQkMAQsgFVAEQCADKAIgIglFDQcgCSADKAIkTSEJDAELQX8hCSADKAIgRQ0GCyAJIAYgBiAJSxsFQQALQQFqIglBfyAJGxCoBgsgCygCBCAQQThsaiACQQhqQTgQ5wkaIAsgEEEBajYCCCAGDQALCyACQUBrJAAgCkEIaiATKAIANgIAIAogBCkCFDcCAAsgBEHgAGokAAwBC0Hgj8AAQRlB7JjAABDMBgALIA1B0ABqJAAgBUEANgIAIAVBDGogCkEIaigCADYCACAFIAopAwA3AgQgCkEQaiQAAn8gBSgCAEUEQCAFQQxqKAIAIQwgBSgCBCECIAVBCGooAgAMAQsgBSkCBCEVIAUgBUEMaigCADYCCCAFIBU3AwBBgICAgHghAiAFEKAFCyEEIA8gDDYCCCAPIAQ2AgQgDyACNgIAIAVBEGokAAJAIAcoAgRBgYCAgHhHBEAgDiAHKQIENwIAIA5BCGogB0EMaigCADYCAAwBCyAHQQxqKAIAIQIgBygCCCEMQaSNwgBBEBAFIQQgDkGAgICAeDYCACAOIAQ2AgQgDCACKAIAEQEAIAIoAgRFDQAgAigCCBogDBBrCyAHQRBqJAAgESARKAIAQQFrNgIAAn8gCCgCFEGAgICAeEcEQCAIQRRqENYGIQFBAAwBC0EBIRQgCCgCGAshAiAAIBQ2AgggACACNgIEIAAgATYCACAIQSBqJAALjgoCEn8CfiMAQSBrIggkACAIQQhqIAIQ0gYgCCgCDCERIAhBEGohDCAIKAIIIQIjAEEgayIHJAAgByABNgIMIAdBEGohDiMAQRBrIgYkACAHQQxqKAIAIQMjAEGAAWsiDyQAIA8gAhDbBSAGQQRqIQ0gD0HsAGooAgAQtQchBSMAQdAAayILJAAgC0EIaiIEIAMCfwJAAkACQEICIAIpAwBCAn0iFSAVQgJaG6dBAWsOAgECAAsgAkH0AGoMAgsgAkGMAWoMAQsgAkHsAGoLKAIAIAUQvQMgCyACNgJEIAsgC0HPAGo2AkAjAEHwAGsiAiQAAkACQAJAAkACQCAEKAIwIgNFDQAgBCADQQFrNgIwAn4CQCAEKAIQQQJHBEAgAkEIaiAEQRBqIgMQwgMgAigCCA0BIANBAjYCAAsgBCkDAFANAiAEKQMIDAELIAI0AgwLIRUgBEE8aigCACEDIAIgFTcDaCACQSBqIAMgAkHoAGoQoQQgAi0AYEECRw0BCyANQQA2AgggDUKAgICAgAE3AgAMAQsgAkEEIAQoAjAiBQR/IAQpAwAhFQJAIAQoAhBBAkYEQEF/QQAgFUIAUhshAwwBCyAVUARAIAQoAiAiA0UNBCADIARBJGooAgBNIQMMAQtBfyEDIAQoAiBFDQMLIAMgBSADIAVJGwVBAAtBAWoiA0F/IAMbIgMgA0EETRsQxwUgAigCACEFIAIoAgQgAkEgaiIDQcgAEOMJIQogAkEcaiITQQE2AgAgAiAKNgIYIAIgBTYCFCADIARBwAAQ5wkaIAJBFGohCiMAQeAAayIEJAACQCADKAIwIgVFDQAgA0EQaiESA0AgAyAFQQFrNgIwAn4CQCADKAIQQQJHBEAgBEEIaiASEMIDIAQoAggNASASQQI2AgALIAMpAwBQDQMgAykDCAwBCyAENAIMCyEVIAMoAjwhBSAEIBU3A1ggBEEQaiAFIARB2ABqEKEEIAQtAFBBAkYNASADKAIwIQUgCigCCCIQIAooAgBGBEAgCiAQIAUEfyADKQMAIRUCQCADKAIQQQJGBEBBf0EAIBVCAFIbIQkMAQsgFVAEQCADKAIgIglFDQcgCSADKAIkTSEJDAELQX8hCSADKAIgRQ0GCyAJIAUgBSAJSxsFQQALQQFqIglBfyAJGxCqBgsgCigCBCAQQcgAbGogBEEQakHIABDnCRogCiAQQQFqNgIIIAUNAAsLIARB4ABqJAAgDUEIaiATKAIANgIAIA0gAikCFDcCAAsgAkHwAGokAAwBC0Hgj8AAQRlB7JjAABDMBgALIAtB0ABqJAAgBkEANgIAIA9BgAFqJAACfyAGKAIAIgJBAkcEQCAGKQIIIRYgBigCBAwBCyAGKAIEIQQgBiAGQQhqKQIANwIEIAYgBDYCACAGEKAFCyEEIA4gFjcCCCAOIAQ2AgQgDiACNgIAIAZBEGokAAJAIAcoAhBBA0cEQCAMIAcpAhA3AgAgDEEIaiAHQRhqKQIANwIADAELIAdBGGooAgAhAiAHKAIUIQRBpI3CAEEQEAUhAyAMQQI2AgAgDCADNgIEIAQgAigCABEBACACKAIERQ0AIAIoAggaIAQQawsgB0EgaiQAIBEgESgCAEEBazYCAAJ/IAgoAhBBAkcEQCAIQRBqENcGIQFBAAwBC0EBIRQgCCgCFAshAiAAIBQ2AgggACACNgIEIAAgATYCACAIQSBqJAALwAoBE38jAEEgayIJJAAgCUEIaiACENIGIAkoAgwhECAJQRRqIQ0gCSgCCCEEIwBBIGsiByQAIAcgATcDCCAHQRRqIQ4jAEEQayIFJAAgB0EIaiIRKQMAIQEjAEGAAWsiCCQAIAggBBDbBSAIQewAaigCABCzByEDIwBB4ABrIgwkACAMQQhqIgIgAQJ/AkACQAJAQgIgBCkDAEICfSIBIAFCAlobp0EBaw4CAQIACyAEQfQAagwCCyAEQYwBagwBCyAEQewAagsoAgAgAxC2BSAMIAQ2AlQgDCAMQd8AajYCUCMAQYABayIEJAACQAJAAkACQAJAIAIoAkAiA0UNACACIANBAWs2AkACfgJAIAIpAxBCAlIEQCAEQQhqIAJBEGoiAxCxAyAEKQMIpw0BIANCAjcDAAsgAikDAFANAiACKQMIDAELIAQpAxALIQEgAkHMAGooAgAhAyAEIAE3A3ggBEEoaiADIARB+ABqEKQEIAQoAjhBgICAgHhHDQELIAhBADYCCCAIQoCAgICAATcCAAwBCyAEQQQgAigCQCIGBH8gAikDACEBAkAgAikDEEICUQRAQX9BACABQgBSGyEDDAELIAFQBEAgAigCOCIDRQ0EIAMgAigCPE0hAwwBC0F/IQMgAigCOEUNAwsgAyAGIAMgBkkbBUEAC0EBaiIDQX8gAxsiAyADQQRNGxDJBSAEKAIAIQYgBCgCBCAEQShqIgNBOBDjCSELIARBJGoiE0EBNgIAIAQgCzYCICAEIAY2AhwgAyACQdAAEOcJGiAEQRxqIQsjAEHQAGsiAiQAAkAgAygCQCIGRQ0AIANBEGohEgNAIAMgBkEBazYCQAJ+AkAgAykDEEICUgRAIAIgEhCxAyACKQMApw0BIBJCAjcDAAsgAykDAFANAyADKQMIDAELIAIpAwgLIQEgAygCTCEGIAIgATcDSCACQRBqIAYgAkHIAGoQpAQgAigCIEGAgICAeEYNASADKAJAIQYgCygCCCIPIAsoAgBGBEAgCyAPIAYEfyADKQMAIQECQCADKQMQQgJRBEBBf0EAIAFCAFIbIQoMAQsgAVAEQCADKAI4IgpFDQcgCiADKAI8TSEKDAELQX8hCiADKAI4RQ0GCyAKIAYgBiAKSxsFQQALQQFqIgpBfyAKGxCoBgsgCygCBCAPQThsaiACQRBqQTgQ5wkaIAsgD0EBajYCCCAGDQALCyACQdAAaiQAIAhBCGogEygCADYCACAIIAQpAhw3AgALIARBgAFqJAAMAQtB4I/AAEEZQeyYwAAQzAYACyAMQeAAaiQAIAVBADYCACAFQQxqIAhBCGooAgA2AgAgBSAIKQMANwIEIAhBgAFqJAACfyAFKAIARQRAIAVBDGooAgAhESAFKAIEIQIgBUEIaigCAAwBCyAFKQIEIQEgBSAFQQxqKAIANgIIIAUgATcDAEGAgICAeCECIAUQoAULIQQgDiARNgIIIA4gBDYCBCAOIAI2AgAgBUEQaiQAAkAgBygCFEGBgICAeEcEQCANIAcpAhQ3AgAgDUEIaiAHQRxqKAIANgIADAELIAdBHGooAgAhAiAHKAIYIQRBpI3CAEEQEAUhAyANQYCAgIB4NgIAIA0gAzYCBCAEIAIoAgARAQAgAigCBEUNACACKAIIGiAEEGsLIAdBIGokACAQIBAoAgBBAWs2AgACfyAJKAIUQYCAgIB4RwRAIAlBFGoQ1gYhFEEADAELQQEhFSAJKAIYCyECIAAgFTYCCCAAIAI2AgQgACAUNgIAIAlBIGokAAvACgETfyMAQSBrIgkkACAJQQhqIAIQ0gYgCSgCDCEQIAlBFGohDSAJKAIIIQQjAEEgayIHJAAgByABNwMIIAdBFGohDiMAQRBrIgUkACAHQQhqIhEpAwAhASMAQYABayIIJAAgCCAEENwFIAhB7ABqKAIAELMHIQMjAEHgAGsiDCQAIAxBCGoiAiABAn8CQAJAAkBCAiAEKQMAQgJ9IgEgAUICWhunQQFrDgIBAgALIARB9ABqDAILIARBjAFqDAELIARB7ABqCygCACADELYFIAwgBDYCVCAMIAxB3wBqNgJQIwBBgAFrIgQkAAJAAkACQAJAAkAgAigCQCIDRQ0AIAIgA0EBazYCQAJ+AkAgAikDEEICUgRAIARBCGogAkEQaiIDELEDIAQpAwinDQEgA0ICNwMACyACKQMAUA0CIAIpAwgMAQsgBCkDEAshASACQcwAaigCACEDIAQgATcDeCAEQShqIAMgBEH4AGoQowQgBCgCOEGAgICAeEcNAQsgCEEANgIIIAhCgICAgIABNwIADAELIARBBCACKAJAIgYEfyACKQMAIQECQCACKQMQQgJRBEBBf0EAIAFCAFIbIQMMAQsgAVAEQCACKAI4IgNFDQQgAyACKAI8TSEDDAELQX8hAyACKAI4RQ0DCyADIAYgAyAGSRsFQQALQQFqIgNBfyADGyIDIANBBE0bEMkFIAQoAgAhBiAEKAIEIARBKGoiA0E4EOMJIQsgBEEkaiITQQE2AgAgBCALNgIgIAQgBjYCHCADIAJB0AAQ5wkaIARBHGohCyMAQdAAayICJAACQCADKAJAIgZFDQAgA0EQaiESA0AgAyAGQQFrNgJAAn4CQCADKQMQQgJSBEAgAiASELEDIAIpAwCnDQEgEkICNwMACyADKQMAUA0DIAMpAwgMAQsgAikDCAshASADKAJMIQYgAiABNwNIIAJBEGogBiACQcgAahCjBCACKAIgQYCAgIB4Rg0BIAMoAkAhBiALKAIIIg8gCygCAEYEQCALIA8gBgR/IAMpAwAhAQJAIAMpAxBCAlEEQEF/QQAgAUIAUhshCgwBCyABUARAIAMoAjgiCkUNByAKIAMoAjxNIQoMAQtBfyEKIAMoAjhFDQYLIAogBiAGIApLGwVBAAtBAWoiCkF/IAobEKgGCyALKAIEIA9BOGxqIAJBEGpBOBDnCRogCyAPQQFqNgIIIAYNAAsLIAJB0ABqJAAgCEEIaiATKAIANgIAIAggBCkCHDcCAAsgBEGAAWokAAwBC0Hgj8AAQRlB7JjAABDMBgALIAxB4ABqJAAgBUEANgIAIAVBDGogCEEIaigCADYCACAFIAgpAwA3AgQgCEGAAWokAAJ/IAUoAgBFBEAgBUEMaigCACERIAUoAgQhAiAFQQhqKAIADAELIAUpAgQhASAFIAVBDGooAgA2AgggBSABNwMAQYCAgIB4IQIgBRCgBQshBCAOIBE2AgggDiAENgIEIA4gAjYCACAFQRBqJAACQCAHKAIUQYGAgIB4RwRAIA0gBykCFDcCACANQQhqIAdBHGooAgA2AgAMAQsgB0EcaigCACECIAcoAhghBEGkjcIAQRAQBSEDIA1BgICAgHg2AgAgDSADNgIEIAQgAigCABEBACACKAIERQ0AIAIoAggaIAQQawsgB0EgaiQAIBAgECgCAEEBazYCAAJ/IAkoAhRBgICAgHhHBEAgCUEUahDWBiEUQQAMAQtBASEVIAkoAhgLIQIgACAVNgIIIAAgAjYCBCAAIBQ2AgAgCUEgaiQAC8AKARN/IwBBIGsiCSQAIAlBCGogAhDSBiAJKAIMIRAgCUEUaiENIAkoAgghBCMAQSBrIgckACAHIAE3AwggB0EUaiEOIwBBEGsiBSQAIAdBCGoiESkDACEBIwBBgAFrIggkACAIIAQQ3gUgCEHsAGooAgAQswchAyMAQeAAayIMJAAgDEEIaiICIAECfwJAAkACQEICIAQpAwBCAn0iASABQgJaG6dBAWsOAgECAAsgBEH0AGoMAgsgBEGMAWoMAQsgBEHsAGoLKAIAIAMQtgUgDCAENgJUIAwgDEHfAGo2AlAjAEGAAWsiBCQAAkACQAJAAkACQCACKAJAIgNFDQAgAiADQQFrNgJAAn4CQCACKQMQQgJSBEAgBEEIaiACQRBqIgMQsQMgBCkDCKcNASADQgI3AwALIAIpAwBQDQIgAikDCAwBCyAEKQMQCyEBIAJBzABqKAIAIQMgBCABNwN4IARBKGogAyAEQfgAahCiBCAEKAI4QYCAgIB4Rw0BCyAIQQA2AgggCEKAgICAgAE3AgAMAQsgBEEEIAIoAkAiBgR/IAIpAwAhAQJAIAIpAxBCAlEEQEF/QQAgAUIAUhshAwwBCyABUARAIAIoAjgiA0UNBCADIAIoAjxNIQMMAQtBfyEDIAIoAjhFDQMLIAMgBiADIAZJGwVBAAtBAWoiA0F/IAMbIgMgA0EETRsQyQUgBCgCACEGIAQoAgQgBEEoaiIDQTgQ4wkhCyAEQSRqIhNBATYCACAEIAs2AiAgBCAGNgIcIAMgAkHQABDnCRogBEEcaiELIwBB0ABrIgIkAAJAIAMoAkAiBkUNACADQRBqIRIDQCADIAZBAWs2AkACfgJAIAMpAxBCAlIEQCACIBIQsQMgAikDAKcNASASQgI3AwALIAMpAwBQDQMgAykDCAwBCyACKQMICyEBIAMoAkwhBiACIAE3A0ggAkEQaiAGIAJByABqEKIEIAIoAiBBgICAgHhGDQEgAygCQCEGIAsoAggiDyALKAIARgRAIAsgDyAGBH8gAykDACEBAkAgAykDEEICUQRAQX9BACABQgBSGyEKDAELIAFQBEAgAygCOCIKRQ0HIAogAygCPE0hCgwBC0F/IQogAygCOEUNBgsgCiAGIAYgCksbBUEAC0EBaiIKQX8gChsQqAYLIAsoAgQgD0E4bGogAkEQakE4EOcJGiALIA9BAWo2AgggBg0ACwsgAkHQAGokACAIQQhqIBMoAgA2AgAgCCAEKQIcNwIACyAEQYABaiQADAELQeCPwABBGUHsmMAAEMwGAAsgDEHgAGokACAFQQA2AgAgBUEMaiAIQQhqKAIANgIAIAUgCCkDADcCBCAIQYABaiQAAn8gBSgCAEUEQCAFQQxqKAIAIREgBSgCBCECIAVBCGooAgAMAQsgBSkCBCEBIAUgBUEMaigCADYCCCAFIAE3AwBBgICAgHghAiAFEKAFCyEEIA4gETYCCCAOIAQ2AgQgDiACNgIAIAVBEGokAAJAIAcoAhRBgYCAgHhHBEAgDSAHKQIUNwIAIA1BCGogB0EcaigCADYCAAwBCyAHQRxqKAIAIQIgBygCGCEEQaSNwgBBEBAFIQMgDUGAgICAeDYCACANIAM2AgQgBCACKAIAEQEAIAIoAgRFDQAgAigCCBogBBBrCyAHQSBqJAAgECAQKAIAQQFrNgIAAn8gCSgCFEGAgICAeEcEQCAJQRRqENYGIRRBAAwBC0EBIRUgCSgCGAshAiAAIBU2AgggACACNgIEIAAgFDYCACAJQSBqJAAL1goCE38BfiMAQSBrIggkACAIQQhqIAIQ0gYgCCgCDCEQIAhBFGohDSAIKAIIIQQjAEEgayIHJAAgByABNwMIIAdBFGohDiMAQRBrIgUkACAHQQhqIhEpAwAhASMAQRBrIgokAAJ/AkACQAJAQgIgBCkDAEICfSIWIBZCAlobp0EBaw4CAQIACyAEQfQAagwCCyAEQYwBagwBCyAEQewAagsoAgAQswchAyMAQeAAayIMJAAgDEEIaiICIAECfwJAAkACQEICIAQpAwBCAn0iASABQgJaG6dBAWsOAgECAAsgBEH0AGoMAgsgBEGMAWoMAQsgBEHsAGoLKAIAIAMQtgUgDCAENgJUIAwgDEHfAGo2AlAjAEGAAWsiBCQAAkACQAJAAkACQCACKAJAIgNFDQAgAiADQQFrNgJAAn4CQCACKQMQQgJSBEAgBEEQaiACQRBqIgMQsQMgBCkDEKcNASADQgI3AwALIAIpAwBQDQIgAikDCAwBCyAEKQMYCyEBIARBMGogAkHMAGooAgAgARBMIAQoAkBBgICAgHhHDQELIApBADYCCCAKQoCAgICAATcCAAwBCyAEQQhqQQQgAigCQCIGBH8gAikDACEBAkAgAikDEEICUQRAQX9BACABQgBSGyEDDAELIAFQBEAgAigCOCIDRQ0EIAMgAigCPE0hAwwBC0F/IQMgAigCOEUNAwsgAyAGIAMgBkkbBUEAC0EBaiIDQX8gAxsiAyADQQRNGxDJBSAEKAIIIQYgBCgCDCAEQTBqIgNBOBDjCSELIARBLGoiE0EBNgIAIAQgCzYCKCAEIAY2AiQgAyACQdAAEOcJGiAEQSRqIQsjAEHQAGsiAiQAAkAgAygCQCIGRQ0AIANBEGohEgNAIAMgBkEBazYCQAJ+AkAgAykDEEICUgRAIAJBCGogEhCxAyACKQMIpw0BIBJCAjcDAAsgAykDAFANAyADKQMIDAELIAIpAxALIQEgAkEYaiADKAJMIAEQTCACKAIoQYCAgIB4Rg0BIAMoAkAhBiALKAIIIg8gCygCAEYEQCALIA8gBgR/IAMpAwAhAQJAIAMpAxBCAlEEQEF/QQAgAUIAUhshCQwBCyABUARAIAMoAjgiCUUNByAJIAMoAjxNIQkMAQtBfyEJIAMoAjhFDQYLIAkgBiAGIAlLGwVBAAtBAWoiCUF/IAkbEKgGCyALKAIEIA9BOGxqIAJBGGpBOBDnCRogCyAPQQFqNgIIIAYNAAsLIAJB0ABqJAAgCkEIaiATKAIANgIAIAogBCkCJDcCAAsgBEGAAWokAAwBC0Hgj8AAQRlB7JjAABDMBgALIAxB4ABqJAAgBUEANgIAIAVBDGogCkEIaigCADYCACAFIAopAwA3AgQgCkEQaiQAAn8gBSgCAEUEQCAFQQxqKAIAIREgBSgCBCECIAVBCGooAgAMAQsgBSkCBCEBIAUgBUEMaigCADYCCCAFIAE3AwBBgICAgHghAiAFEKAFCyEEIA4gETYCCCAOIAQ2AgQgDiACNgIAIAVBEGokAAJAIAcoAhRBgYCAgHhHBEAgDSAHKQIUNwIAIA1BCGogB0EcaigCADYCAAwBCyAHQRxqKAIAIQIgBygCGCEEQaSNwgBBEBAFIQMgDUGAgICAeDYCACANIAM2AgQgBCACKAIAEQEAIAIoAgRFDQAgAigCCBogBBBrCyAHQSBqJAAgECAQKAIAQQFrNgIAAn8gCCgCFEGAgICAeEcEQCAIQRRqENYGIRRBAAwBC0EBIRUgCCgCGAshAiAAIBU2AgggACACNgIEIAAgFDYCACAIQSBqJAALjwoCE38BfiMAQSBrIggkACAIQQhqIAIQ0gYgCCgCDCERIAhBEGohDCAIKAIIIQIjAEEgayIHJAAgByABNwMIIAdBEGohDkIAIQEjAEEQayIGJAAgB0EIaikDACEWIwBBgAFrIg8kACAPIAIQ2wUgBkEEaiENIA9B7ABqKAIAELMHIQMjAEHgAGsiCiQAIApBCGoiBCAWAn8CQAJAAkBCAiACKQMAQgJ9IhYgFkICWhunQQFrDgIBAgALIAJB9ABqDAILIAJBjAFqDAELIAJB7ABqCygCACADELYFIAogAjYCVCAKIApB3wBqNgJQIwBBgAFrIgIkAAJAAkACQAJAAkAgBCgCQCIDRQ0AIAQgA0EBazYCQAJ+AkAgBCkDEEICUgRAIAJBCGogBEEQaiIDELEDIAIpAwinDQEgA0ICNwMACyAEKQMAUA0CIAQpAwgMAQsgAikDEAshFiAEQcwAaigCACEDIAIgFjcDeCACQShqIAMgAkH4AGoQoQQgAi0AaEECRw0BCyANQQA2AgggDUKAgICAgAE3AgAMAQsgAkEEIAQoAkAiAwR/IAQpAwAhFgJAIAQpAxBCAlEEQEF/QQAgFkIAUhshBQwBCyAWUARAIAQoAjgiBUUNBCAFIAQoAjxNIQUMAQtBfyEFIAQoAjhFDQMLIAUgAyADIAVLGwVBAAtBAWoiA0F/IAMbIgMgA0EETRsQxwUgAigCACEFIAIoAgQgAkEoaiIDQcgAEOMJIQkgAkEkaiITQQE2AgAgAiAJNgIgIAIgBTYCHCADIARB0AAQ5wkaIAJBHGohCyMAQeAAayIEJAACQCADKAJAIglFDQAgA0EQaiESA0AgAyAJQQFrNgJAAn4CQCADKQMQQgJSBEAgBCASELEDIAQpAwCnDQEgEkICNwMACyADKQMAUA0DIAMpAwgMAQsgBCkDCAshFiADKAJMIQUgBCAWNwNYIARBEGogBSAEQdgAahChBCAELQBQQQJGDQEgAygCQCEJIAsoAggiECALKAIARgRAIAsgECAJBH8gAykDACEWAkAgAykDEEICUQRAQX9BACAWQgBSGyEFDAELIBZQBEAgAygCOCIFRQ0HIAUgAygCPE0hBQwBC0F/IQUgAygCOEUNBgsgBSAJIAUgCUkbBUEAC0EBaiIFQX8gBRsQqgYLIAsoAgQgEEHIAGxqIARBEGpByAAQ5wkaIAsgEEEBajYCCCAJDQALCyAEQeAAaiQAIA1BCGogEygCADYCACANIAIpAhw3AgALIAJBgAFqJAAMAQtB4I/AAEEZQeyYwAAQzAYACyAKQeAAaiQAIAZBADYCACAPQYABaiQAAn8gBigCACICQQJHBEAgBikCCCEBIAYoAgQMAQsgBigCBCEEIAYgBkEIaikCADcCBCAGIAQ2AgAgBhCgBQshBCAOIAE3AgggDiAENgIEIA4gAjYCACAGQRBqJAACQCAHKAIQQQNHBEAgDCAHKQIQNwIAIAxBCGogB0EYaikCADcCAAwBCyAHQRhqKAIAIQIgBygCFCEEQaSNwgBBEBAFIQMgDEECNgIAIAwgAzYCBCAEIAIoAgARAQAgAigCBEUNACACKAIIGiAEEGsLIAdBIGokACARIBEoAgBBAWs2AgACfyAIKAIQQQJHBEAgCEEQahDXBiEUQQAMAQtBASEVIAgoAhQLIQIgACAVNgIIIAAgAjYCBCAAIBQ2AgAgCEEgaiQAC4ABAQF/IwBBQGoiBSQAIAUgATYCDCAFIAA2AgggBSADNgIUIAUgAjYCECAFQSRqQgI3AgAgBUE8akHUAzYCACAFQQI2AhwgBUGwpMMANgIYIAVB1QM2AjQgBSAFQTBqNgIgIAUgBUEQajYCOCAFIAVBCGo2AjAgBUEYaiAEEPwGAAt7AQJ/IwBBEGsiAiQAIAEoAgQhAyACIAAgASgCCCIBEO4FIAIoAgQhACACKAIARQRAIAEEQCABQQN0IQEgACgCACEAA0AgAiADKQMANwMIIAAgAkEIakEIEIsJIANBCGohAyABQQhrIgENAAsLQQAhAAsgAkEQaiQAIAAL1gQBCn8jAEHQA2siBSQAIAVBCGogARDSBiAFKAIMIQggBUEQaiEGIAUoAgghByMAQfAGayICJAAgAkGwA2ohCSMAQSBrIgMkAAJAAkACQCAHQewAaigCAEECaw4DAAEAAQsjAEHQBGsiASQAAkACQEEAQayBwgAoAgARBQAiBARAIAQoAgANASAEQX82AgAgAUHAAmogB0GAARDnCRogAUICNwO4AiABQQhqIARBCGogAUG4AmoQogIgBCAEKAIAQQFqNgIAIAEpAwhCBFINAgtBwobAAEHGACABQc8EakGIh8AAQeiHwAAQ9gQACxCyBgALIAkgAUEIakGwAhDnCRogAUHQBGokACAJQbACaiAHQYABakGQARDnCRogA0EgaiQADAELIANBFGpCADcCACADQQE2AgwgA0GIhcIANgIIIANBsPDBADYCECADQQhqQaCFwgAQ/AYACyACKAK8AyEBIAIoArgDIQMgAigCsAMhBCACKAK0AyEHIAIgAkHAA2pBsAMQ5wkhAgJAIAStIAetQiCGhEIEUgRAIAYgATYCDCAGIAM2AgggBiAHNgIEIAYgBDYCACAGQRBqIAJBsAMQ5wkaDAELQaSNwgBBEBAFIQQgBkIENwMAIAYgBDYCCCADIAEoAgARAQAgASgCBEUNACABKAIIGiADEGsLIAJB8AZqJAAgCCAIKAIAQQFrNgIAAn8gBSkDEEIEUgRAIAVBEGoQ8wUhCkEADAELQQEhCyAFKAIYCyEBIAAgCzYCCCAAIAE2AgQgACAKNgIAIAVB0ANqJAALgQEBBH8jAEEQayICJAAgAkEAOgAHAkAgASgCBCIEBEAgAkEHakEBIAEoAgAiBUEBQbDYwAAQ3gcgASAEQQFrNgIEIAEgBUEBajYCACAAIAItAAc6AAEMAQsgAkKBygA3AwggACACQQhqELsHNgIEQQEhAwsgACADOgAAIAJBEGokAAvbBgIHfwF+IwBBwAFrIggkACAIQQhqIgQgAgJ/AkACQAJAQgIgASkDAEICfSILIAtCAlobp0EBaw4CAQIACyABQfQAagwCCyABQYwBagwBCyABQewAagso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AgJ/AkACQAJAIAQtALACIgZFBEAgE0EBaw4CAwUBCwJAAkACQCATQQFrDgIBAgALIANB0ABqIARBCGpBgAEQ5wkaIANByABqIANB6ABqKQMANwMAIANBQGsgA0HgAGopAwA3AwAgAyADKQNYNwM4DAMLIARBCGoMBAsgBEEIagwFCyADQdAAaiAEQQhqQYABEOcJGiADQcgAaiADQYABaikDADcDACADQUBrIANB+ABqKQMANwMAIAMgA0HwAGopAwA3AzgLIAMgA0E4ajYCXCADIANBBGo2AlggAyADQRBqIgI2AlQgAyAENgJQIANB0ABqEIwCIAQoAnQhBSAKIAJBKBDnCRogBEH4AGoMBAsgBEEgagsiAkEQaikDADcDACADQUBrIAJBCGopAwA3AwAgAyACKQMANwM4IAMgA0E4ajYCXCADIANBBGo2AlggAyADQRBqIgI2AlQgAyAENgJQIANB0ABqEIwCIARBjAFqKAIAIQUgCiACQSgQ5wkaIARBkAFqDAILIARBIGoLIgJBEGopAwA3AwAgA0FAayACQQhqKQMANwMAIAMgAikDADcDOCADIANBOGo2AlwgAyADQQRqNgJYIAMgA0EQaiICNgJUIAMgBDYCUCADQdAAahCMAiAEKAJsIQUgCiACQSgQ5wkaIARB8ABqCyECIAogBjoAOCAKIAU2AiwgCkEBNgI0IAogAigCADYCMCAKIAVBAWs2AiggAygCBARAIAMoAggQawsgA0HQAWokAAwBC0Hgj8AAQRlB7JjAABDMBgALIAogETYCQCAXQdAAaiQADAULIAMpAwAhHSAJQQhqIgMgAQJ/AkACQAJAQgIgBCkDAEICfSIBIAFCAlobpyITQQFrDgIBAgALIARB9ABqDAILIARBjAFqDAELIARB7ABqCygCACIGIBEQtgUgCUGYAWogHSAGIBEQtgUgCUHQAGogA0HIABDnCRpBgc3DAC0AABpBkAFBCBCECSILRQ0BIAsgCUHQAGpBkAEQ5wkhAyASIAJBEGoiD0YEQEGc7cEAIQwMBAsgBEH0AGohBiAEQYwBaiEFIARB7ABqIQhBnO3BACEMA0AgBiECAkACQAJAIBNBAWsOAgABAgsgBSECDAELIAghAgsgCUHQAGogDykDACACKAIAIBEQtgVBgc3DAC0AABpB0ABBCBCECSILRQ0D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Cwt/AQJ/IwBBEGsiAyQAIAAgARCaBCICRQRAIAMgADUCKDcDCCABKAIQKAIAIANBCGoiAkEIEIsJIAMgADUCLDcDCCABKAIQKAIAIAJBCBCLCSADIAA1AjA3AwggASgCECgCACACQQgQiwkgAEE0aiABEJIGIQILIANBEGokACACC3kBAX8gACgCACICIAAoAgRGBEBBAw8LIAAgAkEEajYCAEEBQQIgAigCABAXIgBBAUYbQQAgABsiAEECRgR/QdSPwQBBFhAFIQACQCABKAIARQ0AIAEoAgQiAkGEAUkNACACEAILIAEgADYCBCABQQE2AgBBAgUgAAsLfgEBfyMAQUBqIgAkACAAQQo2AhAgAEGwxMIANgIMIABBAToAFyAAQSRqQgI3AgAgAEE8akGmAzYCACAAQQI2AhwgAEHA4sIANgIYIABBGDYCNCAAIABBMGo2AiAgACAAQRdqNgI4IAAgAEEMajYCMCAAQRhqQbDjwgAQ/AYAC44BAQN/IwBBIGsiACQAAkACQEHE0cMAKAIAIgFFBEAQrwMhAUHE0cMAKAIADQFBxNHDACABNgIACyABIAEoAgAiAkEBajYCACACQQBIDQEgAEEgaiQAIAEPCyAAQRRqQgA3AgAgAEEBNgIMIABBjOvCADYCCCAAQfzqwgA2AhAgAEEIakHk68IAEPwGAAsAC4cBAgN/AX4jAEEgayICJAAgASgCBCIDRQRAIAJBFGpCADcCACACQQE2AgwgAkGktsAANgIIIAJB/J/AADYCECACQQhqQay2wAAQ/AYACyABQRBqKQMAIQUgASgCACEEIAAgASkDCDcDCCAAIAM2AgQgACAENgIAIABBEGogBTcDACACQSBqJAALggEBAX8jAEEwayIEJAAgBEEMaiABEJ4EIAQoAhRFBEAgBEEkakIANwIAIARBATYCHCAEQaS2wAA2AhggBEH8n8AANgIgIARBGGpBrLbAABD8BgALIAAgAjcDACAAIAQpAgw3AhAgACADNwMIIABBGGogBEEUaigCADYCACAEQTBqJAALhwECA38BfiMAQSBrIgIkACABKAIEIgNFBEAgAkEUakIANwIAIAJBATYCDCACQdiuwAA2AgggAkH8n8AANgIQIAJBCGpBkK/AABD8BgALIAFBIGopAwAhBSABKAIAIQQgACABKQMYNwMIIAAg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cUUgAUEFdBD9CCABQYCAgIABSSIEIAFBBHQiARD9CCEDQcAAENEHIgIgA0HAABDRB2oiAyACTyADEP0IIQIgBCABEP0IIQEgACACQcAAENEHIgIgAUHAABDRB2oiASACTyABEP0INgIEIABBwAA2AgALwgQBBn8jAEEQayIGJAACQCABKAIEIgVFBEAgAEGAgICAeDYCAAwBCyABIAVBAWs2AgQgBkEEaiEFIAEoAgAhByMAQRBrIgMkACADQgA3AwgCQAJAAn8gBygCBCIEQQdNBEAgA0KBygA3AwggA0EIahC7BwwBCyADQQhqQQggBygCACIBQQhBsNjAABDeByAHIARBCGs2AgQgByABQQhqNgIAIAMgAykDCBDeAiADKAIARQ0BIAMoAgQLIQEgBUGAgICAeDYCACAFIAE2AgQMAQsgAygCBCEBIwBB4ABrIgIkACACIAc2AhQgAiABNgIYIAJBCGpBpJIBIAEgAUGkkgFPGxDJBSACQQA2AiQgAiACKQMINwIcIAJBKGogAkEUahCmAgJAAkAgAigCQCIEQYGAgIB4RwRAA0AgBEGAgICAeEYNAiACKAIkIgQgAigCHEYEQCACQRxqIAQQpwYgAigCJCEECyACKAIgIARBOGxqIAJBKGoiAUE4EOcJGiACIARBAWo2AiQgASACQRRqEKYCIAIoAkAiBEGBgICAeEcNAAsLIAUgAigCKDYCBCAFQYCAgIB4NgIAIAJBHGoQnQYgAigCHEUNASACKAIgEGsMAQsgBSACKQIcNwIAIAVBCGogAkEkaigCADYCAAsgAkHgAGokAAsgA0EQaiQAIAYoAgQiAUGAgICAeEcEQCAAIAYpAgg3AgQgACABNgIADAELIAYoAgghASAAQYGAgIB4NgIAIAAgATYCBAsgBkEQaiQAC9kEAQZ/IwBBEGsiBiQAAkAgASgCBCIFRQRAIABBgICAgHg2AgAMAQsgASAFQQFrNgIEIAZBBGohBSABKAIAIQcjAEEQayIDJAACQAJAAkAgB0IIEKIGIgENACADQgA3AwggBygCDCICKAIEIgRBB00EQCADQoKAgICAvokINwMIIANBCGoQuwchAQwBCyADQQhqQQggAigCACIBQQhBxMvAABDeByACIARBCGs2AgQgAiABQQhqNgIAIAMgAykDCBDeAiADKAIARQ0BIAMo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AARAIABBA3QhAQNAIANCCBCMBiIADQIgAUEIayIBDQALC0EAIQALIAJBEGokACAAC3MBAn8jAEEQayICJAACQCABKAIEIgNFBEAgAEEANgIADAELIAEgA0EBazYCBCACQQhqIAEoAgAQqQMgAigCCEUEQCAAIAIoAgw2AgQgAEEBNgIADAELIAIoAgwhASAAQQI2AgAgACABNgIECyACQRBqJAALcwECfyMAQRBrIgIkAAJAIAEoAgQiA0UEQCAAQQA2AgAMAQsgASADQQFrNgIEIAJBCGogASgCABCAAyACKAIIRQRAIAAgAigCDDYCBCAAQQE2AgAMAQsgAigCDCEBIABBAjYCACAAIAE2AgQLIAJBEGokAAt2AAJAIAIEQCACZ0EfcyICQRFPDQEgAEEAOwEgIAAgATsBHCAAQRA2AhggACACNgIUIABBADsBECAAIAM2AiggAEIANwMIIABCATcDACAAQX8gAnRBf3M7AR4PC0GYycEAEP0GAAtB8JfAAEEyQcyYwAAQzAYAC3wBAn8jAEEQayICJAACfwJAAkACQEECIAAoAgAiAC0AAEEEa0H/AXEiAyADQQJPG0EBaw4CAQIACyABQcirwgBBHBCFCAwCCyABQeSrwgBBGhCFCAwBCyACIAA2AgwgAUH+q8IAQQcgAkEMakGIrMIAEMwCCyACQRBqJAALbQEBfyMAQTBrIgMkACADIAA2AgAgAyABNgIEIANBFGpCAjcCACADQSxqQRY2AgAgA0ECNgIMIANB1KjDADYCCCADQRY2AiQgAyADQSBqNgIQIAMgA0EEajYCKCADIAM2AiAgA0EIaiACEPwGAAttAQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EUakICNwIAIANBLGpBFjYCACADQQI2AgwgA0H8osMANgIIIANBFjYCJCADIANBIGo2AhAgAyADNgIoIAMgA0EEajYCICADQQhqIAIQ/AYAC20BAX8jAEEwayIDJAAgAyAANgIAIAMgATYCBCADQRRqQgI3AgAgA0EsakEWNgIAIANBAjYCDCADQfSowwA2AgggA0EWNgIkIAMgA0EgajYCECADIANBBGo2AiggAyADNgIgIANBCGogAhD8BgALbQEBfyMAQTBrIgMkACADIAA2AgAgAyABNgIEIANBFGpCAjcCACADQSxqQRY2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AGsiAyQAIAdBBGoiBSgCBCEEIAUoAgAgASACRwRAIAUoAgggBEE4bGohBSAEIAIgAWtByABuIgJqIQQDQCADQUBrIgogAUEwEOcJGiADQQhqIgsgChCfAiADIAFBQGstAAA6ADggAyABQThqKAIANgI0IAMgAUE0aigCADYCMCADIAFBPGooAgA2AiwgAyABQTBqKAIANgIoIAFByABqIQEgBSALQTgQ5wlBOGohBSACQQFrIgINAAsLIAQ2AgAgA0HwAGokACAHQRBqJAAgAEEIaiAIKAIANgIAIAAgBikCFDcCACAGQSBqJAALawECfyMAQSBrIgEkACABIAAoAgAiAEEBcSICNgIEIAJFBEAgAUEgaiQAIABBAXYPCyABQgA3AhQgAUH8n8AANgIQIAFBATYCDCABQeSnwAA2AgggAUEEakGMp8AAIAFBCGpBmKjAABCLBwALVAEDfyAAKAIMIgEgACgCCCICRwRAIAEgAmtBAnYhAQNAIAIoAgAiA0GEAU8EQCADEAILIAJBBGohAiABQQFrIgENAAsLIAAoAgQEQCAAKAIAEGsLC2gAIwBBMGsiACQAQYDNwwAtAAAEQCAAQRhqQgE3AgAgAEECNgIQIABB+PbCADYCDCAAQRY2AiggACABNgIsIAAgAEEkajYCFCAAIABBLGo2AiQgAEEMakGg98IAEPwGAAsgAEEwaiQAC00BAX8jAEEQayIDJAAgA0GHgICAeDYCACADEM0GIAMgAq03AwAgASgCECgCACADQQgQiwlBACECIAAgATYCBCAAIAI2AgAgA0EQaiQAC0IBAn8jAEEQayICJAAgAkGHgICAeDYCBCACQQRqEM0GIAEgASkDAEIIfDcDACAAIAE2AgQgACADNgIAIAJBEGokAAuZAQECfyMAQbABayIBJAAjAEHAAWsiAiQAAkACQCAABEAgACgCAA0BIABBADYCACACQQhqIABBuAEQ5wkaIAEgAkEQakGwARDnCRogABBrIAJBwAFqJAAMAgsQ0gkACxDTCQALIAFBjAFqKAIABEAgAUGQAWooAgAQawsgAUHIAGooAgAEQCABQcwAaigCABBrCyABQbABaiQAC1YBAX4CQCADQcAAcUUEQCADRQ0BIAJBACADa0E/ca2GIAEgA0E/ca0iBIiEIQEgAiAEiCECDAELIAIgA0E/ca2I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AgAiAUEDRiABQQJGcg0AAkAgAUUEQCAAKAIEIgBBgwFLDQEMAgsgACgCBCIBQYQBTwRAIAEQAgsgACgCCCIAQYQBSQ0BCyAAEAILC4UBAQF+AkACQCAArSABrX4iAkIgiKcNACACpyIAQUBLIABBAEhyDQBBgc3DAC0AABogAEHAABCECSIBDQFBwAAgABDfCQALIwBBIGsiACQAIABBFGpCADcCACAAQQE2AgwgAEGg5sIANgIIIABBjObCADYCECAAQQhqQYTnwgAQ/AYACyABC1sBAX8jAEEgayIDJAAgAkUEQCADQRRqQgA3AgAgA0EBNgIMIANBkLzAADYCCCADQfyfwAA2AhAgA0EIakHEvMAAEPwGAAsgACACNgIEIAAgATYCACADQSBqJAALWgIBfwF+IwBBEGsiAiQAIAApAwAhAyACIABBCGopAwA3AwggAiADNwMAIAEoAhAiASgCACACQRAQiwkgAiAANQIQNwMAIAEoAgAgAkEIEIsJIAJBEGokAEEAC04BAX8CQCACIANNBEAgASgCBCIFIANJDQEgASgCACEBIAAgAyACazYCBCAAIAEgAkEDdGo2AgAPCyACIAMgBBDCBQALIAMgBSAEEMEFAAtWAQF/IwBBEGsiAiQAAkAgAC0AAEUEQCACQQA2AgggASgCECgCACACQQhqQQQQiwkMAQsgAkEBNgIMIAEoAhAoAgAgAkEMakEEEIsJCyACQRBqJABBAAswAQF/IABBBGohAQJAIAAoAgBFBEAMAQsgARCdBgsgASgCAARAIABBCGooAgAQawsLWwEBfyMAQSBrIgMkACACRQRAIANBFGpCADcCACADQQE2AgwgA0Hw/8EANgIIIANBsPDBADYCECADQQhqQaiAwgAQ/AYACyAAIAI2AgQgACABNgIAIANBIGokAAtKAQF/IwBBEGsiAiQAAkAgACgCACIABEAgAiABNgIEIAJBkwI2AgAgACACEJgCDAELIAFBfHEiAEEMahDWAyAAEGsLIAJBEGokAAtQAQF/AkAgACgCACIBRQ0AIAEgASgCACIBQQFrNgIAIAFBAUYEQCAAEPwFCyAAKAIEIgEgASgCACIBQQFrNgIAIAFBAUcNACAAQQRqEMEDCwuMAwIJfwF+IwBBEGsiAiQAIAIgARC+ASACKAIAIQEgAiACKAIEIgMgAigC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DQEgACkDECIDUA0CIAIgA3wiAyACVA0DIAIgBFQNBCADQoCAgICAgICAIFoNBSAaIAAvARgiADsBCCAaIAIgBH0iBDcDACAAIABBIGsgACADQoCAgIAQVCIBGyIYQRBrIBggA0IghiADIAEbIgNCgICAgICAwABUIgEbIhhBCGsgGCADQhCGIAMgARsiA0KAgICAgICAgAFUIgEbIhhBBGsgGCADQgiGIAMgARsiA0KAgICAgICAgBBUIgEbIhhBAmsgGCADQgSGIAMgARsiA0KAgICAgICAgMAAVCIBGyADQgKGIAMgARsiBUIAWSIYayIBa8EiIUEASA0GIBpCfyAhrSIGiCIDIASDNwMQIAMgBFQNCiAaIAA7AQggGiACNwMAIBogAiADgzcDECACIANWDQpBoH8gAWvBQdAAbEGwpwVqQc4QbSIAQdEATw0HIABBBHQiAEGAkMMAaikDACIHQv////8PgyIDIAIgBkI/gyIChiIIQiCIIhF+IglCIIgiFSAHQiCIIgYgEX58IAYgCEL/////D4MiB34iCEIgiCIWfCELIAlC/////w+DIAMgB35CIIh8IAhC/////w+DfEKAgICACHxCIIghEkIBQQAgASAAQYiQwwBqLwEAamtBP3GtIgmGIgdCAX0hDCADIAQgAoYiAkIgiCIEfiIIQv////8PgyADIAJC/////w+DIgJ+QiCIfCACIAZ+IgJC/////w+DfEKAgICACHxCIIghDyAEIAZ+IQQgAkIgiCECIAhCIIghCCAAQYqQwwBqLwEAIQEgBiAFIBithiIFQiCIIhN+IhQgAyATfiIKQiCIIg18IAYgBUL/////D4MiBX4iDkIgiCIQfCAKQv////8PgyADIAV+QiCIfCAOQv////8Pg3xCgICAgAh8QiCIIg58QgF8IgogCYinIgBBkM4ATwRAIABBwIQ9SQ0JIABBgMLXL08EQEEIQQkgAEGAlOvcA0kiGBshIUGAwtcvQYCU69wDIBgbDAsLQQZBByAAQYCt4gRJIhgbISFBwIQ9QYCt4gQgGBsMCgsgAEHkAE8EQEECQQMgAEHoB0kiGBshIUHkAEHoByAYGwwKC0EKQQEgAEEJSyIhGwwJC0HTi8MAQRxB0JrDABDMBgALQYCMwwBBHUHgmsMAEMwGAAtBsIzDAEEcQfCawwAQzAYAC0GU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DCAEIAA2AghBACAEQQhqQYyVwQAgBEEMakGMlcEAIAIgAxCiAQALNgEBfyMAQRBrIgIkACACIAA2AgwgAUG0jcIAQQVBuY3CACACQQxqQcCNwgAQpwMgAkEQaiQACzYBAX8jAEEQayICJAAgAiAANgIMIAFB8KfCAEEUQYSowgAgAkEMakGIqMIAEKcDIAJBEGokAAs5AQF/IwBBEGsiBCQAIAQgATYCDCAEIAA2AghBACAEQQhqQYTAwgAgBEEMakGEwMIAIAIgAxCiAQALOQEBfyMAQRBrIgQkACAEIAE2AgwgBCAANgIIQQAgBEEIakGUwMIAIARBDGpBlMDCACACIAMQogEACzkBAX8jAEEQayIEJAAgBCABNgIMIAQgADYCCEEAIARBCGpBrOLCACAEQQxqQaziwgAgAiADEKIBAAs0AQF/IwBBEGsiAiQAIAIgACgCADYCDCABQdfJwABBCCACQQxqQbTJwAAQzAIgAkEQaiQACzQBAX8jAEEQayICJAAgAiAAKAIANgIMIAFBy8nAAEEMIAJBDGpBtMnAABDMAiACQRBqJAALNAEBfyMAQRBrIgIkACACIAAoAgA2AgwgAUHfycAAQQ4gAkEMakG0ycAAEMwCIAJBEGokAAs5ACABKAIERQRAQQBBAEGUtMAAEMAFAAsgACABKQMINwMAIAAgASgCADYCECAAIAFBEGopAwA3AwgLOQAgASgCBEUEQEEAQQBBhLTAABDABQALIAAgASkDCDcDACAAIAEoAgA2AhAgACABQRBqKQMANwMICzIAAkAgASAAQRhqELoFIgANACABQggQjAYiAA0AIAFCCBCMBiIADQAgARD8ByEACyAACygBAX8gACgCCCIBIAAoAgwgAWtBOG4QuQYgACgCBARAIAAoAgAQawsLKAEBfyAAKAIIIgEgACgCDCABa0EMbhDEBiAAKAIEBEAgACgCABBrCws0AQF/IwBBEGsiAiQAIAIgACgCADYCDCABQeXQwQBBByACQQxqQezQwQAQzAIgAkEQaiQACzIBAX8gASgCHCICQRBxRQRAIAJBIHFFBEAgACABELwJDwsgACABENgDDwsgACABENcDCzIBAX8gASgCHCICQRBxRQRAIAJBIHFFBEAgACABENIHDwsgACABENgDDwsgACABENcDCy4AAkAgA2lBAUdBgICA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DQAgASAAKAIEIgAoAgARAQAgACgCBEUNACAAKAIIGiABEGsLCzEBAX8jAEEQayICJAAgAiAANgIMIAFBhO/BAEEMIAJBDGpBkO/BABDMAiACQRBqJAALMQEBfyMAQRBrIgIkACACIAA2AgwgAUGwicIAQQwgAkEMakG8icIAEMwCIAJBEGokAAssAQF/IwBBEGsiACQAIABBCGoiAiABQdCNwgBBCRDIByACELADIABBEGokAAssAQF/IwBBEGsiACQAIABBCGoiAiABQdmNwgBBCxDIByACELADIABBEGokAAsxAQF/IwBBEGsiASQAIAFBgICAgHg2AgQgASAAKQIANwIIIAFBBGoQ7QYgAUEQaiQACzEBAX8jAEEQayICJAAgAiAANgIMIAFBrKLCAEEIIAJBDGpBtKLCABDMAiACQRBqJAALLAEBfyMAQRBrIgAkACAAQQhqIgIgAUHMtcIAQQsQyAcgAhCwAyAAQRBqJAALLAEBfyMAQRBrIgAkACAAQQhqIgIgAUGU7sIAQQsQyAcgAhC5BSAAQRBqJAALOgEBfyAAKAIAIQECQCAALQAEDQBB7M3DACgCAEH/////B3FFDQAQ7QkNACABQQE6AAELIAFBADoAAAstACABIAJJBEBByNTBAEEhQezUwQAQzAYACyABIAJrIgEgACABQQN0aiACEHALHQAgACgCAEF8cSIAKAIEBEAgACgCABBrCyAAEGsLLwAgAEG078IANgIEIABBAjoAACABIAIoAgARAQAgAigCBARAIAIoAggaIAEQawsLjQICBH4DfwJAIAEoAgAhByABKAIEIQYgASgCKCEIIAEpAwghBCABQRBqKQMAIQUgASkDGCECIAFBIGopAwAhAyMAQSBrIgEkAAJAIAIgA4RQRSACeyADe3xCAlpxRQRAIAZFDQEgACACNwMYIAAgBDcDCCAAIAg2AiggACAGNgIEIAAgBzYCACAAQSBqIAM3AwAgAEEQaiAFNwMAIAFBIGokAAwCCyABQRRqQgA3AgAgAUEBNgIMIAFB6L3AADYCCCABQfyfwAA2AhAgAUEIakH0w8AAEPwGAAsgAUEUakIANwIAIAFBATYCDCABQbzEwAA2AgggAUH8n8AANgIQIAFBCGpBxMTAABD8BgALCzAAIAAgASgCACABKAIEIAEoAiggASkDCCABQRBqKQMAIAEpAxggAUEgaikDABCOBAsrACABIAJJBEBBidLBAEEjQZTUwQAQzAYACyACIAAgAkEDdGogASACaxBwC90CAQN/AkACQAJAIAAoAgBBAWsOAgECAAsjAEEQayICJAAgAEEEaigCACIAIAAoAoACIgFBAWs2AoACAkAgAUEBRw0AIAAgACgCQCIBIAAoAsgBIgNyNgJAIAEgA3FFBEAgAEGgAWoQlwELIAAtAIgCIABBAToAiAJFDQAgAiAANgIMIAJBDGoQ1AYLIAJBEGokAA8LIwBBEGsiAiQAIABBBGooAgAiACAAKALAASIBQQFrNgLAAQJAIAFBAUcNACAAIAAoAkAiAUEBcjYCQCABQQFxRQRAIABBgAFqEJcBCyAALQDIASAAQQE6AMgBRQ0AIAIgADYCDCACQQxqEPYHCyACQRBqJAAPCyMAQRBrIgIkACAAQQRqKAIAIgAgACgCOCIBQQFrNgI4AkAgAUEBRw0AIAAQaiAALQBAIABBAToAQEUNACACIAA2AgwgAkEMahDjBwsgAkEQaiQACzIBAX9Bgc3DAC0AABpBCEEEEIQJIgJFBEBBBEEIEN8JAAsgAiABNgIEIAIgADYCACACCzAAIAEoAhQgAiADIAFBGGooAgAoAgwRBgAhAiAAQQA6AAUgACACOgAEIAAgATYCAAsqAQF/IAAoAgAiASAAKAIEIgAoAgARAQAgACgCBARAIAAoAggaIAEQawsLKAEBfwJAIAAoAgAiAUGAgICAeEYNACAAEJ4GIAFFDQAgACgCBBBrCwspAQF/An9BvKfCABDHBiIABEAgAEGMAWoMAQsQ7AMLKAIAQYQCaigCAAsuAAJAAkACQCAAKAIADgIBAgALIABBBGoQyQcLDwsgACgCBCAAQQxqKAIAELkGCyoBAX8gACgCECIBBEAgAEEcaigCACABbg8LQeCfwABBGUHMscAAEMwGAAuaAQEDfyMAQRBrIgMkACADQQRqIQEjAEEQayICJAACQAJAIAAEQCAAKAIADQEgAEEANgIAIAJBCGogAEEIaikCADcDACACIAApAgA3AwAgASACKQIENwIAIAFBCGogAkEMaigCADYCACAAEGsgAkEQaiQADAILENIJAAsQ0wkACyABEJ4GIAEoAgAEQCABKAIEEGsLIANBEGokAAs6AQJ/QYzNwwAtAAAhAUGMzcMAQQA6AABBkM3DACgCACECQZDNwwBBADYCACAAIAI2AgQgACABNgIACycAIABCADcAACAAQRhqQgA3AAAgAEEQakIANwAAIABBCGpCADcAAAsgAQF/IAAgACABakEBayICSwRAEOwJAAsgAkEAIAFrcQsiACAAKAIAIgCtIABBf3OsQgF8IABBAE4iABsgACABEMkBC5sBAQN/IAAoAggiAiABTwRAIAEgACgCCE0EQCAAIAE2AggLDwsgASACayICIAAoAgAgACgCCCIDa0sEQCAAIAMgAhCtBgsgACgCBCIEIAAoAggiAWohAwJAAkAgAkECTwRAIANBACACQQFrIgIQ5AkaIAQgASACaiIBaiEDDAELIAJFDQELIANBADoAACABQQFqIQELIAAgATYCCAsjABD6BiAAQQhqIAI6AAAgACABNgIEIAAgAS0AAUEARzYCAAsuAQF/QYHNwwAtAAAaQYwIQQQQhAkiAUUEQEEEQYwIEN8JAAsgASAAQYwIEOcJCyMBAX8gACABIAJqQQFrIgNBACACa3E2AgQgACABIANNNgIACyYAIAAgASkDCDcDCCAAIAEpAwA3AwAgAEEQaiABQRBqKQMANwMACycBAX8gACgCDCIBBEAgACgCCCABbg8LQeCfwABBGUHEs8AAEMwGAAsiAQF/IwBBkAJrIgEkACABIAAQ8QUgARD4BSABQZACaiQACyYBAX9Bgc3DAC0AABpB4AJBBBCECSIABEAgAA8LQQRB4AIQ3wkACyoBAX8gACgCECIBRQRAQbDPwgBBGUGcz8IAEMwGAAsgAEEMaigCACABbgsmACAAIAAoAgAgACgCBEEDdEHAACABQQN0EI0INgIAIAAgATYCBAsmACAAIAAoAgAgACgCBEEEdEHAACABQQR0EI0INgIAIAAgATYCBAsfACABIANGBEAgACACIAEQ5wkaDwsgASADIAQQwwUACyUAIABFBEBBgJ7CAEEyENEJAAsgACACIAMgBCAFIAEoAhARDwALKAAgASAAKAIALQAAQQJ0IgBB7OrCAGooAgAgAEHc6sIAaigCABCFCAsgAQJ+IAApAwAiAiACQj+HIgOFIAN9IAJCAFkgARDJAQvlAQIDfwJ+IAEoAgAhBCABKAIEIQMgASgCGCECIAEpAwghBSABQRBqKQMAIQYjAEEwayIBJAAgASACNgIAAkAgAgRAIAMgAnBFDQEgAUEoakEpNgIAIAFBEGpCAjcCACABQQM2AgggAUHIuMAANgIEIAFBFjYCICABIAM2AiwgASABQRxqNgIMIAEgATYCJCABIAFBLGo2AhwgAUEEakHguMAAEPwGAAtBgKDAAEE5QcC3wAAQzAYACyAAIAU3AwggACACNgIYIAAgAzYCBCAAIAQ2AgAgAEEQaiAGNwMAIAFBMGokAAsbACAAKAIAIgBBBGoQhgYgAEEcahCGBiAAEGsLJQAgASAALQAAQQJ0IgBBiNHBAGooAgAgAEH80MEAaigCABCFCAsdACACIAOEUEUEQCAAIAEgAhCHAw8LIAAgARDuAwvKAQECfyMAQRBrIgEkACMAQSBrIgIkAAJAAkAgAARAIAAoAgANASAAQQA2AgAgAkEQaiAAQQhqKQIANwMAIAJBGGogAEEQaigCADYCACACIAApAgA3AwggASACKQIMNwIAIAFBCGogAkEUaikCADcCACAAEGsgAkEgaiQADAILENIJAAsQ0wkACyABQQRqIQACQCABKAIARQRAIAAoAgBFDQEgAUEIaigCABBrDAELIAAQnQYgACgCAARAIAAoAgQQawsLIAFBEGokAAsjACAARQRAQYCewgBBMhDRCQALIAAgAiADIAQgASgCEBEHAAsjACAARQRAQYCewgBBMhDRCQALIAAgAiADIAQgASgCEBEiAAsjACAARQRAQYCewgBBMhDRCQALIAAgAiADIAQgASgCEBFAAAsjACAARQRAQYCewgBBMhDRCQALIAAgAiADIAQgASgCEBEVAAsjACAARQRAQYCewgBBMhDRCQALIAAgAiADIAQgASgCEBFCAAsiACAAIAEoAkAiAUEEdDYCBCAAIAFBgICAgAFJQQZ0NgIACycBAX8gACgCECIBRQRAQbDPwgBBGUHMz8IAEMwGAAsgACgCBCABbgsZAQF/IAEgA0YEfyAAIAIgARDmCUUFIAQLCx8AIAAoAgBBgICAgHhyQYCAgIB4RwRAIAAoAgQQawsLJQEBf0HUzcMAKAIAIgAEQCAAQQFrDwtB1M3DAEGBIDYCAEGAIAslACABIAAtAABBAnQiAEGcg8MAaigCACAAQfiBwwBqKAIAEIUIC7cBAQJ/QaDGwwApAwBQBH8jAEHQDGsiASQAAkAgAARA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gAFqIQIgOkEBaiI6ID1HDQALCyAEQeAAaiQADAQLIARBADYCBCAEQcwAaiAEIARBBGpB1NfCABCMBwALIARBADYCBCAEQcwAaiAEIARBBGpBxNfCABCMBwALIARBADYCBCAEQcwAaiAEIARBBGpBtNfCABCMBwALIARBADYCBCAEQcwAaiAEIARBBGpBpNfCABCMBwALC5gNAjF8CH8CQCMAQeAAayIEJAAgBEEgNgIAIAQgATYCTCABQSBGBEAgBCADNgJMIANBIEYEQCAEIAU2AkwgBUEgRgRAIAQgBzYCTCAHQSBGBEAgAEGAAWohB0GAfyEBA0AgASACaiIDQYgEaiAAIAFqIgVBiAFqKwMAIg8gBUGIA2orAwAiEKEiFyAFQYACaisDACIRIAVBgARqKwMAIhihIhmhOQMAIANBgARqIAVBgAFqKwMAIhIgBUGAA2orAwAiCKEiCiAFQYgCaisDACINIAVBiARqKwMAIgmhIgugOQMAIANBiANqIA8gEKAiDyANIAmgIhChOQMAIANBgANqIBIgCKAiEiARIBigIhGhOQMAIANBiAJqIBcgGaA5AwAgA0GAAmogCiALoTkDACADQYgBaiAPIBCgOQMAIANBgAFqIBIgEaA5AwAgAUEQaiIBDQALIARChICAgBA3AkQgBEEANgI8IAQgADYCQCAEIABBQGsiATYCOCAEQoSAgIAQNwJYIAQgATYCVCAEQQA2AlAgBCAHNgJMIARBBGogBEE4aiAEQcwAahCXAwJAQQQgBCgCMCAEKAIsIgVrIgEgAUEETxsiPUUNACAEKAIMIgdFDQAgBCgCKCIBQQR0IT4gBCgCFCIDQQR0IT8gBCgCICABIAVsQQR0aiE6IAcgAyAFbEEEdGohOyADIAEgASADSxsiQEEARyEDA0AgQARAIAYgOUEHdGoiASsDcCEPIAErA2AhECABKwNQIRcgASsDQCERIAErAzAhGCABKwMgIRkgASsDECESIAFB+ABqKwMAIiOaISQgAUHoAGorAwAiJZohJiABQdgAaisDACInmiEoIAFByABqKwMAIimaISogAUE4aisDACIrmiEsIAFBKGorAwAiLZohLiABQRhqKwMAIi+aITBBACEHIAMhAQNAIAIgB2oiBUHwAGorAwAhCCAFQfgAaisDACEKIBggBUE4aisDACIaICsg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QQR0IRAgCCgCGCABIARsQQR0aiEMIAgoAgQgAyAEbEEEdGohDSADIAEgASADSxsiEUEARyEFIAAhASACIQMDQCARBEAgBiALQQh0aiIEKwPwASEqIAQrA+ABISAgBCsD0AEhKyAEKwPAASEsIAQrA7ABITMgBCsDoAEhISAEKwOQASEtIAQrA4ABITQgBCsDcCE1IAQrA2AhIiAEKwNQITYgBCsDQCE3IAQrAzAhOCAEKwMgIUAgBCsDECFBIARB+AFqKwMAIkuaIUwgBEHoAWorAwAiTZohTiAEQdgBaisDACJPmiFQIARByAFqKwMAIlGaIVIgBEG4AWorAwAiU5ohVCAEQagBaisDACJVmiFWIARBmAFqKwMAIleaIVggBEGIAWorAwAiWZohWiAEQfgAaisDACJbmiFcIARB6ABqKwMAIl2aIV4gBEHYAGorAwAiX5ohYCAEQcgAaisDACJhmiFiIARBOGorAwAiY5ohZCAEQShqKwMAImWaIWYgBEEYaisDACJnmiFoQQAhCiAFIQQDQCAKIA1qIhIrAwAhGCABIApqIglBgAhqKwMAIRkgCUGADGorAwAhGiAJQYAEaisDACEjIAlBgApqKwMAIRYgCUGAAmorAwAhFCAJQYAOaisDACEkIAlBgAZqKwMAISUgCiAMaiITKwMAIRsgCUGACWorAwAhJiAJQYANaisDACEnIAlBgAVqKwMAISggCUGAC2orAwAhFSAJQYADaisDACE5IAlBgA9qKwMAIS4gCUGAB2orAwAhLyADIApqIgdBCGogEkEIaisDACI6IAlBiAhqKwMAIjCgIhwgCUGIBGorAwAiQiAJQYgMaisDACJDoCIdoCIeIAlBiAJqKwMAIjsgCUGICmorAwAiRKAiHyAJQYgGaisDACJFIAlBiA5qKwMAIkagIjGgIhegIikgE0EIaisDACJpIAlBiAlqKwMAImqgIjwgCUGIBWorAwAiayAJQYgNaisDACJsoCI9oCI+IAlBiANqKwMAIm0gCUGIC2orAwAibqAiPyAJQYgHaisDACJvIAlBiA9qKwMAInCgIkegIjKgIkigOQMAIAcgGCAZoCJxICMgGqAicqAiSSAUIBagInMgJSAkoCJ0oCJ1oCJ2IBsgJqAidyAoICegInigIkogOSAVoCJ5IC8gLqAieqAie6AifKA5AwAg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WCAEQYgBaisDACJZmiFaIARB+ABqKwMAIluaIVwgBEHoAGorAwAiXZohXiAEQdgAaisDACJfmiFgIARByABqKwMAImGaIWIgBEE4aisDACJjmiFkIARBKGorAwAiZZohZiAEQRhqKwMAImeaIWhBACEKIAUhBANAIAogDWoiEisDACEcIAEgCmoiCUGAAmorAwAhICAJQYADaisDACEdIAlBgAFqKwMAISEgCUHAAmorAwAhFyAJQUBrKwMAIRQgCUHAA2orAwAhIiAJQcABaisDACEjIAogDGoiEysDACEeIAlBoAJqKwMAISQgCUGgA2orAwAhJSAJQaABaisDACEmIAlB4AJqKwMAIRUgCUHgAGorAwAhLCAJQeADaisDACEnIAlB4AFqKwMAISggAyAKaiIHQQhqIBJBCGorAwAiLSAJQYgCaisDACIpoCIYIAlBiAFqKwMAIjcgCUGIA2orAwAiOKAiGaAiGiAJQcgAaisDACIuIAlByAJqKwMAIjmgIhsgCUHIAWorAwAiOiAJQcgDaisDACI7oCIqoCIWoCIfIBNBCGorAwAiaSAJQagCaisDACJqoCIvIAlBqAFqKwMAImsgCUGoA2orAwAibKAiMKAiMSAJQegAaisDACJtIAlB6AJqKwMAIm6gIjIgCUHoAWorAwAibyAJQegDaisDACJwoCI8oCIroCI9oDkDACAHIBwgIKAicSAhIB2gInKgIj4gFCAXoCJzICMgIqAidKAidaAidiAeICSgIncgJiAloCJ4oCI/ICwgFaAieSAoICegInqgInugInygOQMAIAdByAFqIDYgGiAWoSIaID8ge6EiFqAiPyBRID4gdaEiPiAxICuhIjGhIiuiEOUJOQMAIAdBwAFqIDYgKyA/IFKiEOUJOQMAIAdBiAFqIEMgHyA9oSIfIFkgdiB8oSIrohDlCTkDACAHQYABaiBDICsgHyBaohDlCTkDACAHQcgAaiBHIBogFqEiGiBhID4gMaAiFqIQ5Qk5AwAgB0FAayBHIBYgGiBiohDlCTkDACAHQegBaiA0IBggGaEiGCBzIHShIhmgIhogLyAwoSIWIHkgeqEiH6AiLyB3IHihIjAgMiA8oSIxoSIyoETNO39mnqDmP6IiPKAiKyBNIHEgcqEiPSAbICqhIhuhIiogMiAvoUTNO39mnqDmP6IiL6Ai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KwMAIgwgBUGIDGorAwAiDaAiECAFQYgIaisDACIRIAVBiBBqKwMAIhigIimhIhKhOQMAIANBiApqIBwgFaAiHCAQICmgIhWhOQMAIANBgApqIAggC6AiCCAWICigIhahOQMAIANBiAZqIB4gNaE5AwAgA0GABmogDyASoDkDACADQYgCaiAcIBWgOQMAIANBgAJqIAggFqA5AwAgA0GIEGogGyAUoSIbIBcgCaEiFKAiHCAMIA2hIhUgJiAnoSIeoCIWICQgJaEiJCARIBihIiWhIiagRM07f2aeoOY/oiInoDkDACADQYAQaiA2IAqhIiggHSAjoSIdoSIjICYgFqFEzTt/Zp6g5j+iIhagOQMAIANBiAxqIBsgFKEiGyAVIB6hIhQgJCAloCIVoUTNO39mnqDmP6IiHqE5AwAgA0GADGogKCAdoCIdIBQgFaBEzTt/Zp6g5j+iIhShOQMAIANBiAhqIBwgJ6E5AwAgA0GACGogIyAWoTkDACADQYgEaiAbIB6gOQMAIANBgARqIB0gFKA5AwAgAUEQaiIBDQALIARCiICAgBA3AkQgBEEANgI8IAQgADYCQCAEIABBgAFqIgE2AjggBEKIgICAEDcCWCAEIAE2AlQgBEEANgJQIAQgBzYCTCAEQQRqIARBOGogBEHMAGoQlwNBCCAEKAIwIAQoAiwiBWsiASABQQhPGyJ1BEAgBCgCKCIBQQR0IXYgBCgCFCIDQQR0IXcgBCgCICABIAVsQQR0aiFzIAQoAgwgAyAFbEEEdGohdCADIAEgASADSxsieEEARyEDA0AgeARAIAYgckEIdGoiASsD8AEhGyABKwPgASEUIAErA9ABIRwgASsDwAEhHSABKwOwASEjIAErA6ABIRUgASsDkAEhHiABKwOAASEkIAErA3AhJSABKwNgIRYgASsDUCEmIAErA0AhJyABKwMwISggASsDICE1IAErAxAhNiABQfgBaisDACJFmiFGIAFB6AFqKwMAIkeaIUggAUHYAWorAwAiSZohSiABQcgBaisDACJLmiFMIAFBuAFqKwMAIk2aIU4gAUGoAWorAwAiT5ohUCABQZgBaisDACJRmiFSIAFBiAFqKwMAIlOaIVQgAUH4AGorAwAiVZohViABQegAaisDACJXmiFYIAFB2ABqKwMAIlmaIVogAUHIAGorAwAiW5oh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A0GIAmogJyAooDkDACADQYACaiApICqgOQMAIAFBEGoiAQ0ACyAEQoKAgIAQNwJEIARBADYCPCAEIAA2AkAgBCAAQSBqIgE2AjggBEKCgICAEDcCWCAEIAE2AlQgBEEANgJQIAQgAEFAazYCTCAEQQRqIARBOGogBEHMAGoQlwNBAiAEKAIwIAQoAiwiBWsiASABQQJPGyJ1BEAgBCgCKCIBQQR0IXYgBCgCFCIDQQR0IXcgBCgCICABIAVsQQR0aiFzIAQoAgwgAyAFbEEEdGohdCADIAEgASADSxsieEEARyEDA0AgeARAIAYgckEIdGoiASsD8AEhJyABKwPgASEoIAErA9ABISkgASsDwAEhKiABKwOwASE6IAErA6ABITsgASsDkAEhPCABKwOAASE9IAErA3AhPiABKwNgIT8gASsDUCFAIAErA0AhQSABKwMwIUIgASsDICFDIAErAxAhRCABQfgBaisDACJFmiFGIAFB6AFqKwMAIkeaIUggAUHYAWorAwAiSZohSiABQcgBaisDACJLmiFMIAFBuAFqKwMAIk2aIU4gAUGoAWorAwAiT5ohUCABQZgBaisDACJRmiFSIAFBiAFqKwMAIlOaIVQgAUH4AGorAwAiVZohViABQegAaisDACJXmiFYIAFB2ABqKwMAIlmaIVogAUHIAGorAwAiW5ohXCABQThqKwMAIl2aIV4gAUEoaisDACJfmiFgIAFBGGorAwAiYZohYkEAIQcgAyEBA0AgAiAHaiIFQfABaisDACEKIAVB+AFqKwMAIQggPiAFQfgAaisDACIcIFUgBUHwAGorAwAiIqIQ5QkhFiAnIAggRSAKohDlCSEJIAVBsAFqKwMAIQsgBUG4AWorAwAhECBCIAVBOGorAwAiIyBdIAVBMGorAwAiMaIQ5QkhDSA6IBAgTSALohDlCSEOIAVB0AFqKwMAIREgBUHYAWorAwAhEiBAIAVB2ABqKwMAIiQgWSAFQdAAaisDACIlohDlCSEXICkgEiBJIBGiEOUJISsgBUGQAWorAwAhEyAFQZgBaisDACEPIEQgBUEYaisDACIyIGEgBUEQaisDACImohDlCSEdIDwgDyBRIBOiEOUJIRggBUHgAWorAwAhFCAFQegBaisDACEMID8gBUHoAGorAwAiMyBXIAVB4ABqKwMAIjSiEOUJIR4g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IAVB6ANqIBggHqAiCCAPIBWgIhVERo0yz2uQ7T8gESALoCILRGSprqbifdi/ohDlCSIKoDkDACAFQeADaiAdIA6gIgkgC0RGjTLPa5DtPyAVRGSprqbifdg/ohDlCSILoDkDACAFQegBaiAIIAqhOQMAIAVB4AFqIAkgC6E5AwAgB0EQaiEHIAFBAWsiAQ0ACwsgAEEQaiEAIHMgdmohcyB0IHdqIXQgAkGAAmohAiByQQFqInIgdUcNAAsLIARB4ABqJAAMBAsgBEEANgIEIARBzABqIAQgBEEEakGs2sIAEIwHAAsgBEEANgIEIARBzABqIAQgBEEEakGc2sIAEIwHAAsgBEEANgIEIARBzABqIAQgBEEEakGM2sIAEIwHAAsgBEEANgIEIARBzABqIAQgBEEEakH82cIAEIwHAAsLuCMCanwIfwJAIwBB4ABrIgQkACAEQYACNgIAIAQgATYCTCABQYACRgRAIAQgAzYCTCADQYACRgRAIAQgBTYCTCAFQYACRgRAIAQgBzYCTCAHQYACRgRAIABBgAJqIQcgAEGABGohckGAfiEBA0AgACABaiIDQYASaisDACEbIANBgAJqKwMAIRwgA0GAGmorAwAhHSADQYAKaisDACEsIANBgBZqKwMAIR4gA0GABmorAwAhHyADQYAeaisDACEgIANBgA5qKwMAISEgA0GIFGorAwAhIiADQYgEaisDACEVIANBiBxqKwMAIS0gA0GIDGorAwAhIyADQYgYaisDACEWIANBiAhqKwMAIS4gA0GIIGorAwAhJCADQYgQaisDACEKIAEgAmoiBUGIGmogA0GIAmorAwAiCCADQYgSaisDACIToCIJIANBiApqKwMAIgwgA0GIGmorAwAiF6AiC6AiDiADQYgGaisDACIYIANBiBZqKwMAIhGgIg8gA0GIDmorAwAiMCADQYgeaisDACIZoCINoCIQoSIUIANBgARqKwMAIiUgA0GAFGorAwAiEqAiKCADQYAMaisDACIpIANBgBxqKwMAIiagIiegIhogA0GACGorAwAiMSADQYAYaisDACIvoCIqIANBgBBqKwMAIjQgA0GAIGorAwAiNaAiMqAiK6EiNqE5AwAgBUGAGmogHCAboCIzICwgHaAiPaAiNyAfIB6gIj4gISAgoCI/oCJAoSJBIBUgIqAiQiAjIC2g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QQA2AgQgCEHMAGogCCAIQQRqQazawgAQjAcACyAIQQA2AgQgCEHMAGogCCAIQQRqQZzawgAQjAcACyAIQQA2AgQgCEHMAGogCCAIQQRqQYzawgAQjAcACyAIQQA2AgQgCEHMAGogCCAIQQRqQfzZwgAQjAcACwu4IwJqfAh/AkAjAEHgAGsiBCQAIARBgAI2AgAgBCABNgJMIAFBgAJGBEAgBCADNgJMIANBgAJGBEAgBCAFNgJMIAVBgAJGBEAgBCAHNgJMIAdBgAJGBEAgAEGAAmohByAAQYAEaiFyQYB+IQEDQCAAIAFqIgNBgBJqKwMAIRwgA0GAAmorAwAhHSADQYAaaisDACEeIANBgApqKwMAISsgA0GAFmorAwAhHyADQYAGaisDACEgIANBgB5qKwMAISEgA0GADmorAwAhIiADQYgUaisDACEjIANBiARqKwMAIRUgA0GIHGorAwAhLCADQYgMaisDACEkIANBiBhqKwMAIRYgA0GICGorAwAhLSADQYggaisDACElIANBiBBqKwMAIQogASACaiIFQYgaaiADQYgCaisDACIIIANBiBJqKwMAIhOgIgkgA0GICmorAwAiDSADQYgaaisDACIXoCILoCIMIANBiAZqKwMAIhggA0GIFmorAwAiEaAiDyADQYgOaisDACIwIANBiB5qKwMAIhmgIg6gIhChIhQgA0GABGorAwAiJiADQYAUaisDACISoCInIANBgAxqKwMAIiggA0GAHGorAwAiLqAiGqAiGyADQYAIaisDACIxIANBgBhqKwMAIi+gIikgA0GAEGorAwAiNCADQYAgaisDACI1oCIyoCIqoSI2oDkDACAFQYAaaiAdIBygIjMgKyAeoCI9oCI3ICAgH6AiPiAiICGgIj+gIkChIkEgFSAjoCJCICQgLKAiQ6AiRCAtIBagIkUgCiAloCJGoCJHoSJIoTkDACAFQYgSaiAMIBCgIgwgRCBHoCIQoTkDACAFQYASaiA3IECgIjcgGyAqoCIboTkDACAFQYgKaiAUIDahOQMAIAVBgApqIEEgSKA5AwAgBUGIAmogDCAQoDkDACAFQYACaiA3IBugOQMAIAVBiB5qIAkgC6EiCSA+ID+hIgugIgwgQiBDoSIQICkgMqEiFKAiGyAnIBqhIicgRSBGoSIaoSIpoETNO39mnqDmP6Ii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IAJBBGogAiACQQhqQYzawgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBnNrCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakGs2sIAEIwHAAsLgwMBCHwCQCMAQSBrIgIkACACQQQ2AgAgAiABNgIEAkACQAJAIAFBBEYEQCACIAM2AgQgA0EERw0BIAIgBTYCBCAFQQRHDQIgAiAHNgIEIAdBBEcNAyAAIAArAwAiCiAAKwMgIgugIgggACsDECIMIAArAzAiDaAiCaE5AyAgACAIIAmgOQMAIABBOGoiASsDACEIIAEgACsDCCIJIABBKGoiASsDACIOoSIPIAwgDaEiDKA5AwAgACAKIAuhIgogAEEYaiIDKwMAIgsgCKEiDaE5AzAgASAJIA6gIgkgCyAIoCIIoTkDACADIA8gDKE5AwAgACAKIA2gOQMQIAAgCSAIoDkDCCACQSBqJAAMBAsgAkEANgIIIAJBBGogAiACQQhqQfzZwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBjNrCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakGc2sIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQazawgAQjAcACwufDQI4fAl/AkAjAEEgayICJAAgAkEQNgIAIAIgATYCBAJAAkACQCABQRBGBEAgAiADNgIEIANBEEcNASACIAU2AgQgBUEQRw0CIAIgBzYCBCAHQRBHDQMgAEGYAWoiASsDACEIIABBGGoiAysDACEJIABB2AFqIgQrAwAhDSAAQdgAaiIFKwMAIQ4gAEG4AWoiBisDACEKIABBOGoiBysDACEPIABB+AFqIkArAwAhECAAQfgAaiJBKwMAIREgAEGIAWoiQisDACESIABByAFqIkMrAwAhGiAAQcgAaiJEKwMAIRsgAEGoAWoiRSsDACETIABBKGoiRisDACEcIABB6AFqIkcrAwAhFCAAQegAaiJIKwMAIR0gACsDCCEeIAAgACsDACIfIAArA4ABIiWgIhUgACsDQCIgIAArA8ABIiGgIhagIgsgACsDICImIAArA6ABIiKgIhcgACsDYCInIAArA+ABIiigIiOgIgygIhggACsDECIwIAArA5ABIjGgIikgACsDUCIyIAArA9ABIjOgIiqgIhkgACsDMCI0IAArA7ABIjWgIisgACsD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nqDmP6IiDaE5A1AgBiAQIBShOQMAIAAgDyALoTkDMCABIAggCqA5AwAgACAMIA2gOQMQIAJBIGokAAwECyACQQA2AgggAkEEaiACIAJBCGpB/NnCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakGM2sIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQZzawgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBrNrCABCMBwALCxMAIABBGTYCBCAAQYjiwgA2AgALEAAgACgCACAAKAIEIAEQUAsRACAAKAIAIAAoAgQgARDiCQsRACABIAAoAgAgACgCBBCFCAsiACAAQpzKtJyT4uSVzwA3AwggAELRxe/NzYLN4f8ANwMACyAAIABC5N7HhZDQhd59NwMIIABCwff56MyTstFBNwMACyIAIABCjYSZ6OiU74GjfzcDCCAAQqSF9JiC9Ziku383AwALIAAgAELrnd3g6M63nQc3AwggAEL9xtfm68XEvTM3AwALEwAgAEG4+MIANgIEIAAgATYCAAsQACABIAAoAgAgACgCBBBOCw0AIAAgASACEIsJQQALCgAgACgCuAEQawsNACAAIAEgAhCJCUEACw0AIAAoAgQgACgCAGsLDgAgACgCABoDQAwACwALDgAgADUCAEEBIAEQyQELDgAgADEAAEEBIAEQyQELDgAgACkDAEEBIAEQyQELvAICAn8BfgJ/IAAoAgApAwAhBCMAQYABayIDJAACQAJAAn8CQCABKAIcIgBBEHFFBEAgAEEgcQ0BIARBASABEMkBDAILQQAhAANAIAAgA2pB/wBqQTBB1wAgBKdBD3EiAkEKSRsgAmo6AAAgAEEBayEAIARCEFQgBEIEiCEERQ0ACyAAQYABaiICQYABSw0CIAFBAUGspcMAQQIgACADakGAAWpBACAAaxBfDAELQQAhAANAIAAgA2pB/wBqQTBBNyAEp0EPcSICQQpJGyACajoAACAAQQFrIQAgBEIQVCAEQgSIIQRFDQALIABBgAFqIgJBgAFLDQIgAUEBQaylwwBBAiAAIANqQYABakEAIABrEF8LIANBgAFqJAAMAgsgAkGAAUGcpcMAEL8FAAsgAkGAAUGcpcMAEL8FAAsLCwAgACMAaiQAIwALDgAgAUGogsAAQQkQhQgLDgAgAUGxgsAAQQwQhQgLBwAg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AAAtAAAAPQEQAEsAAAAEAwAASAAAAEZhaWxlZCB0byBjb252ZXJ0IHRoZSB2YWx1ZSB0byBhIHUxMjhGYWlsZWQgdG8gY29udmVydCB0aGUgdmFsdWUgdG8gYSBVMjU2RmFpbGVkIHRvIGNvbnZlcnQgdGhlIHZhbHVlIHRvIGEgaTEyOEZhaWxlZCB0byBjb252ZXJ0IHRoZSB2YWx1ZSB0byBhIEkyNTZWYWx1ZSBkb2VzIG5vdCBmaXQgaW4gYSB1MTI4UHVibGljS2V5IHVzaW5nIGJpZyBwYXJhbWV0ZXJzIG5vdCBjb21wYXRpYmxlIHdhc21jYW5ub3QgYWNjZXNzIGEgVGhyZWFkIExvY2FsIFN0b3JhZ2UgdmFsdWUgZHVyaW5nIG9yIGFmdGVyIGRlc3RydWN0aW9uDQAAAAAAAAABAAAADgAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbG9jYWwucnMAmAMQAE8AAAD2AAAAGgAAAHRmaGUvc3JjL3Nob3J0aW50L2VuZ2luZS9tb2QucnMA+AMQAB8AAAAvAQAAPwAAAHRmaGUvc3JjL2hpZ2hfbGV2ZWxfYXBpL2dsb2JhbF9zdGF0ZS5ycwAoBBAAJwAAAIUAAAAgAAAAKAQQACcAAACJAAAADgAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGUvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yYXlvbi1jb3JlLTEuMTIuMS9zcmMvam9iLnJzAJgEEABbAAAA5gAAACAAAACYBBAAWwAAAGYAAAAgAAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZWNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAAA8AAAAIAAAABAAAAAgAAAAvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yYXlvbi1jb3JlLTEuMTIuMS9zcmMvbGF0Y2gucnMAAAB8BRAAXQAAAAsBAAAqAAAAmAQQAFsAAAB3AAAALgAAABIAAAATAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY29uc29sZV9lcnJvcl9wYW5pY19ob29rLTAuMS43L3NyYy9saWIucnMEBhAAaAAAAJUAAAAOAAAAZmFpbGVkIHRvIHNwYXduIHRocmVhZAAAGQAAAAgAAAAEAAAAGgAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvc2NvcGVkLnJzpAYQAFAAAADCAAAALgAAAGEgc2NvcGVkIHRocmVhZCBwYW5pY2tlZAQHEAAYAAAAGwAAAAwAAAAEAAAAHAAAAB0AAAAeAAAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseQAfAAAAAAAAAAEAAAAgAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAIQHEABLAAAAMwoAAA4AAABhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZUVycm9yaW52YWxpZCB2YWx1ZTogLCBleHBlY3RlZCAAKQgQAA8AAAA4CBAACwAAAGludmFsaWQgbGVuZ3RoIABUCBAADwAAADgIEAALAAAASW8AACEAAAAEAAAABAAAACIAAABJbnZhbGlkVXRmOEVuY29kaW5nACEAAAAEAAAABAAAACMAAABJbnZhbGlkQm9vbEVuY29kaW5nACEAAAAEAAAABAAAACQAAABJbnZhbGlkQ2hhckVuY29kaW5nSW52YWxpZFRhZ0VuY29kaW5nAAAAIQAAAAQAAAAEAAAAJQAAAERlc2VyaWFsaXplQW55Tm90U3VwcG9ydGVkU2l6ZUxpbWl0U2VxdWVuY2VNdXN0SGF2ZUxlbmd0aEN1c3RvbQAhAAAABAAAAAQAAAAmAAAATHdlQ29tcGFjdFB1YmxpY0tleSBjb250YWluZXIgbGVuIG11c3QgYmUgYSBwb3dlciBvZiAyLCBnb3QgbGVuID0gAABYCRAAQgAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2VudGl0aWVzL2x3ZV9jb21wYWN0X3B1YmxpY19rZXkucnMApAkQADcAAABLAAAACQAAAEx3ZUNvbXBhY3RQdWJsaWNLZXkgb25seSBzdXBwb3J0cyBwb3dlciBvZiAyIEx3ZURpbWVuc2lvbi4gR290IGx3ZV9kaW1lbnNpb24gPSAu7AkQAE8AAAA7ChAAAQAAAKQJEAA3AAAArgAAAAkAAABTZWVkZWQgZW50aXRpZXMgYXJlIG5vdCB5ZXQgY29tcGF0aWJsZSB3aXRoIG5vbiBwb3dlciBvZiAyIG1vZHVsaS4AAFwKEABCAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZW50aXRpZXMvc2VlZGVkX2x3ZV9jb21wYWN0X3B1YmxpY19rZXkucnMAAKgKEAA+AAAAaAAAAAkAAABTZWVkZWRMd2VDb21wYWN0UHVibGljS2V5IGNvbnRhaW5lciBsZW4gbXVzdCBiZSBhIHBvd2VyIG9mIDIsIGdvdCBsZW4gPSD4ChAASAAAAKgKEAA+AAAAbQAAAAkAAABTZWVkZWRMd2VDb21wYWN0UHVibGljS2V5IG9ubHkgc3VwcG9ydHMgcG93ZXIgb2YgMiBMd2VEaW1lbnNpb24uIEdvdCBsd2VfZGltZW5zaW9uID0gAAAAWAsQAFUAAAA7ChAAAQAAAKgKEAA+AAAA2AAAAAkAQfCXwAAL2QFhc3NlcnRpb24gZmFpbGVkOiBiaXRzX3Blcl9ibG9jayA8PSBUOjpCSVRTIGFzIHUzMnRmaGUvc3JjL2ludGVnZXIvYmxvY2tfZGVjb21wb3NpdGlvbi5ycwAAACIMEAAnAAAAdAAAAAkAAAAiDBAAJwAAAHgAAAA6AAAAIgwQACcAAACwAAAAIgAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYubnVtX2JpdHNfaW5fbWFzayA8PSBWOjpCSVRTIGFzIHUzMgAAACIMEAAnAAAAvwAAAAkAAAABAEHomcAAC74FdGZoZS9zcmMvaGlnaF9sZXZlbF9hcGkvaW50ZWdlcnMvbW9kLnJzAOgMEAAnAAAAIQAAAC4AAADoDBAAJwAAACEAAAAJAAAAMC4zaGlnaF9sZXZlbF9hcGk6OkNvbXByZXNzZWRGaGVVaW50aGlnaF9sZXZlbF9hcGk6OkNvbXBhY3RGaGVJbnRoaWdoX2xldmVsX2FwaTo6RmhlSW50aGlnaF9sZXZlbF9hcGk6OkNvbXByZXNzZWRGaGVJbnRoaWdoX2xldmVsX2FwaTo6Q29tcGFjdEZoZUJvb2xoaWdoX2xldmVsX2FwaTo6RmhlVWludGhpZ2hfbGV2ZWxfYXBpOjpDb21wYWN0RmhlVWludGhpZ2hfbGV2ZWxfYXBpOjpDb21wcmVzc2VkRmhlQm9vbGhpZ2hfbGV2ZWxfYXBpOjpGaGVCb29sAAAwDRAAAwAAANwNEAAeAAAAT24gZGVzZXJpYWxpemF0aW9uLCBleHBlY3RlZCB0eXBlICwgZ290IHR5cGUgAAAARA4QACIAAABmDhAACwAAAE9uIGRlc2VyaWFsaXphdGlvbiwgZXhwZWN0ZWQgc2VyaWFsaXphdGlvbiB2ZXJzaW9uICwgZ290IHZlcnNpb24gAAAAhA4QADMAAAC3DhAADgAAAMUNEAAXAAAAVA0QAB0AAACnDRAAHgAAAHENEAAWAAAAMw0QACEAAAD6DRAAIQAAAIcNEAAgAAAAGw4QABcAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9jb21tb25zL251bWVyaWMvdW5zaWduZWQucnMYDxAAMAAAAAcBAAABAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9pdGVyLnJzAEGwn8AAC7srYXR0ZW1wdCB0byBkaXZpZGUgYnkgemVybwAAAFgPEABOAAAAWwcAABEAAAAAAAAAYXR0ZW1wdCB0byBkaXZpZGUgYnkgemVybwAAAAAAAABhdHRlbXB0IHRvIGNhbGN1bGF0ZSB0aGUgcmVtYWluZGVyIHdpdGggYSBkaXZpc29yIG9mIHplcm9jaHVuayBzaXplIG11c3QgYmUgbm9uLXplcm85EBAAGwAAAGFzc2VydGlvbiBmYWlsZWQ6IG1pZCA8PSBzZWxmLmxlbigpY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZS9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JheW9uLTEuMTAuMC9zcmMvc2xpY2UvbW9kLnJzAACqEBAAXAAAAEsDAAAoAAAATWlzbWF0Y2hlZCBDaXBoZXJ0ZXh0TW9kdWx1cyBiZXR3ZWVuIGlucHV0IFNlZWRlZEdsd2VDaXBoZXJ0ZXh0ICgpIGFuZCBvdXRwdXQgR2x3ZUNpcGhlcnRleHQgKCkAGBEQAEEAAABZERAAHQAAAHYREAABAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vYWxnb3JpdGhtcy9zZWVkZWRfZ2x3ZV9jaXBoZXJ0ZXh0X2RlY29tcHJlc3Npb24ucnMAkBEQAEcAAAAZAAAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IGNpcGhlcnRleHRfbW9kdWx1cy5pc19jb21wYXRpYmxlX3dpdGhfbmF0aXZlX21vZHVsdXMoKZAREABHAAAAJQAAAAUAAACQERAARwAAAC0AAAAgAAAAkBEQAEcAAAAyAAAACgAAAEV4cGVjdGVkIGFuIHVuc2lnbmVkIGludGVnZXIgd2l0aCAgYml0cywgZm91bmQgIGJpdHMgZHVyaW5nIGRlc2VyaWFsaXphdGlvbiBvZiBDaXBoZXJ0ZXh0TW9kdWx1cywgaGF2ZSB5b3UgbWl4ZWQgdHlwZXMgZHVyaW5nIGRlc2VyaWFsaXphdGlvbj8AAGASEAAiAAAAghIQAA0AAACPEhAAXwAAAEAAAABDYW5ub3QgZ2V0IHNjYWxpbmcgZm9yIG5vbiBwb3dlciBvZiB0d28gbW9kdWx1cyAMExAAMAAAAENpcGhlcnRleHRNb2R1bHVzKDJeRBMQABQAAAB2ERAAAQAAAENpcGhlcnRleHRNb2R1bHVzKAAAaBMQABIAAAB2ERAAAQAAAAAAAABDYW5ub3QgY29udmVydCBhIFBvbHlub21pYWxTaXplIHRoYXQgaXMgbm90IGEgbXVsdGlwbGUgb2YgMiB0byBGb3VyaWVyUG9seW5vbWlhbFNpemWQExAAVAAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2NvbW1vbnMvcGFyYW1ldGVycy5ycwAA7BMQACoAAAB1AAAACQAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2NvbW1vbnMvdHJhaXRzL2NvbnRpZ3VvdXNfZW50aXR5X2NvbnRhaW5lci5ycwAAKBQQAEIAAAB5AAAAHAAAACgUEABCAAAAowAAADsAAAAoFBAAQgAAANMAAAAOAAAAVGhlIGN1cnJlbnQgY29udGFpbmVyIGhhcyAgZW50aXRpZXMsIHdoaWNoIGlzIG5vdCBkaXZpZGFibGUgYnkgdGhlIHJlcXVlc3RlZCBjaHVua19zaXplOiAAAAAoFBAAQgAAAE0BAAAOAAAAKBQQAEIAAACZAQAADgAAACgUEABCAAAApAEAAA0AAAAoFBAAQgAAAK8BAAAOAAAALCBwcmV2ZW50aW5nIGNodW5rc19leGFjdF9tdXQgZnJvbSByZXR1cm5pbmcgYW4gaXRlcmF0b3IuAAAAnBQQABoAAAC2FBAAPwAAADgVEAA5AAAAKBQQAEIAAACjAQAACQAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2VudGl0aWVzL2NvbXByZXNzZWRfbW9kdWx1c19zd2l0Y2hlZF9sd2VfY2lwaGVydGV4dC5yc01pc21hdGNoIGJldHdlZW4gYWN0dWFsKD0pIGFuZCBleHBlY3RlZCg9KSBDb21wcmVzc2VkTW9kdWx1c1N3aXRjaGVkTHdlQ2lwaGVydGV4dCBwYWNrZWRfY29lZmZzIHNpemUA5xUQABkAAAAAFhAAEAAAABAWEAA7AAAAnBUQAEsAAACxAAAACQAAAC4gR290IGNvbnRhaW5lciBsZW5ndGg6ICBhbmQgZ2x3ZV9zaXplOiAsIHBvbHlub21pYWxfc2l6ZTogLlRoZSBwcm92aWRlZCBjb250YWluZXIgbGVuZ3RoIGlzIG5vdCB2YWxpZC4gRXhwZWN0ZWQgbGVuZ3RoIG9mIC5Hb3QgY29udGFpbmVyIGxlbmd0aDogIGFuZCBkZWNvbXBfbGV2ZWxfY291bnQ6ICwgIGdsd2Vfc2l6ZTogR290IGFuIGVtcHR5IGNvbnRhaW5lciB0byBjcmVhdGUgYSBHbHdlQm9keS0XEAArAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZW50aXRpZXMvZ2x3ZV9jaXBoZXJ0ZXh0LnJzYBcQ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cmVhdGUgYSBTZWVkZWRHbHdlQ2lwaGVydGV4dAAEIhAANwAAALwhEAA3AAAAggAAAAkAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9lbnRpdGllcy9zZWVkZWRfZ2x3ZV9jaXBoZXJ0ZXh0X2xpc3QucnNUIhAAPAAAAHQAAAAJAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZW50aXRpZXMvc2VlZGVkX2x3ZV9jaXBoZXJ0ZXh0X2xpc3QucnMAoCIQADsAAABnAAAACQAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2VudGl0aWVzL3NlZWRlZF9sd2Vfa2V5c3dpdGNoX2tleS5ycwAAAOwiEAA5AAAAigAAAAkAAABHb3QgYW4gZW1wdHkgY29udGFpbmVyIHRvIGNyZWF0ZSBhbiBTZWVkZWRMd2VLZXlzd2l0Y2hLZXkAAAA4IxAAOQAAAOwiEAA5AAAAjwAAAAkAAADsIhAAOQAAAJQAAAANAAAAVGhlIHByb3ZpZGVkIGNvbnRhaW5lciBsZW5ndGggaXMgbm90IHZhbGlkLiBJdCBuZWVkcyB0byBiZSBkaXZpZGFibGUgYnkgZGVjb21wX2xldmVsX2NvdW50OiCcIxAAXAAAAHQWEAAYAAAABhcQABkAAACvFhAAAQAAAOwiEAA5AAAAkwAAAAkAAADsIhAAOQAAALgAAAAWAAAAdGZoZS9zcmMvaW50ZWdlci9jaXBoZXJ0ZXh0L2NvbXBhY3RfbGlzdC5ycwA4JBAAKwAAAEIAAAAJAAAAdGZoZS9zcmMvc2hvcnRpbnQvY2lwaGVydGV4dC9jb21wYWN0X2xpc3QucnN0JBAALAAAADsAAAAOAAAAOAAAADkAAAAEAAAABAAAACUAAABMd2VTaXplTHdlRGltZW5zaW9uR2x3ZVNpemVQb2x5bm9taWFsU2l6ZURlY29tcG9zaXRpb25MZXZlbENvdW50dmFyaWFudCBpbmRleCAwIDw9IGkgPCAyBCUQABgAAAA5AAAACAAAAAQAAAA6AAAAPAAAAAAAAAABAAAAPQAAADwAAAAAAAAAAQAAAD4AAAA/AAAAQAAAAEEAAAD//////////2AlEABB+MrAAAvbLS9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy9pby9pbXBscy5ycwB4JRAASwAAACkBAAARAAAAZmFpbGVkIHRvIGZpbGwgd2hvbGUgYnVmZmVyANQlEAAbAAAAJQAAAE9uY2UgaW5zdGFuY2UgaGFzIHByZXZpb3VzbHkgYmVlbiBwb2lzb25lZAAA/CUQACoAAABvbmUtdGltZSBpbml0aWFsaXphdGlvbiBtYXkgbm90IGJlIHBlcmZvcm1lZCByZWN1cnNpdmVseTAmEAA4AAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZS9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy9zeW5jL21wbWMvbGlzdC5yc5smEABRAAAA7wAAAEMAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlmyYQAFEAAAC/AQAAKgAAAJsmEABRAAAAwQEAADkAAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlAEIAAAAIAAAABAAAAAoAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L3N0ZC9zcmMvc3luYy9tcG1jL3plcm8ucnMAAACAJxAAUQAAAB4BAAArAAAAgCcQAFEAAACEAAAANgAAAIAnEABRAAAAfQAAADYAAACAJxAAUQAAAOkAAAArAAAAgCcQAFEAAAAIAQAAJgAAAIAnEABRAAAACgEAAEsAAACAJxAAUQAAAAoBAAAnAAAAgCcQAFEAAAAOAQAASwAAAIAnEABRAAAADgEAACcAAACAJxAAUQAAABQBAABAAAAAgCcQAFEAAACsAAAALQAAAIAnEABRAAAApQAAACsAAACAJxAAUQAAAMEAAAAmAAAAgCcQAFEAAADDAAAASQAAAIAnEABRAAAAxAAAAEcAAACAJxAAUQAAAMMAAAAnAAAAgCcQAFEAAADIAAAASQAAAIAnEABRAAAAyQAAAEcAAACAJxAAUQAAAMgAAAAnAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3N5bmMvbXBtYy9hcnJheS5ycwAABCkQAFIAAACQAQAAKgAAAAQpEABSAAAAkgEAADkAAAAEKRAAUgAAAF0BAAAqAAAABCkQAFIAAABfAQAANwAAAEMAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L3N0ZC9zcmMvc3luYy9tcG1jL3dha2VyLnJzAACcKRAAUgAAAF0AAAArAAAAnCkQAFIAAAA7AAAAKAAAAEIAAAAIAAAABAAAAAoAAACcKRAAUgAAAL0AAAArAAAAnCkQAFIAAACjAAAAKwAAAJwpEABSAAAArgAAAC8AAACcKRAAUgAAAJoAAAArAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3N5bmMvbXBtYy9jb250ZXh0LnJzYCoQAFQAAAAxAAAAHgAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy9zeW5jL29uY2UucnPEKhAATAAAANAAAAAxAAAAxCoQAEwAAACVAAAAMgAAAABjYW5ub3QgcmVjdXJzaXZlbHkgYWNxdWlyZSBtdXRleAAAADErEAAgAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3N5cy93YXNtLy4uL3Vuc3VwcG9ydGVkL2xvY2tzL211dGV4LnJzAABcKxAAZgAAABQAAAAJAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYmluY29kZS0xLjMuMy9zcmMvZGUvcmVhZC5ycwDUKxAAWwAAAE4AAAANAAAA/////y9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy9zeXMvd2FzbS8uLi91bnN1cHBvcnRlZC9sb2Nrcy9yd2xvY2sucnMARCwQAGcAAAA/AAAACQAAAE1pc21hdGNoZWQgTHdlRGltZW5zaW9uIGJldHdlZW4gaW5wdXQgTHdlU2VjcmV0S2V5ICBhbmQgb3V0cHV0IEx3ZVB1YmxpY0tleSC8LBAAMwAAAO8sEAAZAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vYWxnb3JpdGhtcy9sd2VfcHVibGljX2tleV9nZW5lcmF0aW9uLnJzGC0QADwAAAAcAAAABQAAACBhbmQgb3V0cHV0IFNlZWRlZEx3ZVB1YmxpY0tleSAAvCwQADMAAABkLRAAHwAAABgtEAA8AAAApAAAAAUAAABHb3QgYW4gZW1wdHkgY29udGFpbmVyIHRvIGNyZWF0ZSBhbiBMd2VQdWJsaWNLZXmkLRAAMAAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2VudGl0aWVzL2x3ZV9wdWJsaWNfa2V5LnJzANwtEAAvAAAAZAAAAAkAAABTZWVkZWQgZW50aXRpZXMgYXJlIG5vdCB5ZXQgY29tcGF0aWJsZSB3aXRoIG5vbiBwb3dlciBvZiAyIG1vZHVsaS4AABwuEABCAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZW50aXRpZXMvc2VlZGVkX2x3ZV9wdWJsaWNfa2V5LnJzAABoLhAANgAAAIoAAAAJAAAAR290IGFuIGVtcHR5IGNvbnRhaW5lciB0byBjcmVhdGUgYSBTZWVkZWRMd2VQdWJsaWNLZXkAAACwLhAANQAAAGguEAA2AAAAjwAAAAkAAAA8AAAAAAAAAAEAAABEAAAARQAAAHRmaGUvc3JjL3Nob3J0aW50L3BhcmFtZXRlcnMvbW9kLnJzV29wYnNPbmx5IHBhcmFtZXRlcnMgZG8gbm90IGhhdmUgYSBNYXhOb2lzZUxldmVsIGluZm9ybWF0aW9uADcvEAA8AAAAFC8QACMAAAABAgAAEQAAAHN0cnVjdCBTZXJpYWxpYXphYmxlTHdlQ2lwaGVydGV4dE1vZHVsdXMgd2l0aCAyIGVsZW1lbnRzjC8QADgAAABGAAAACAAAAAQAAAA6AAAAc3RydWN0IEdhdXNzaWFuIHdpdGggMiBlbGVtZW50cwDcLxAAHwAAAHN0cnVjdCBUVW5pZm9ybSB3aXRoIDIgZWxlbWVudHMABDAQAB8AAABMd2VEaW1lbnNpb25GAAAABAAAAAQAAAAlAAAAc3RydWN0IENvbXByZXNzZWRNb2R1bHVzU3dpdGNoZWRMd2VDaXBoZXJ0ZXh0IHdpdGggNCBlbGVtZW50cwAAAEgwEAA9AAAAc3RydWN0IEdsd2VDaXBoZXJ0ZXh0IHdpdGggMyBlbGVtZW50cwAAAJAwEAAlAAAAc3RydWN0IEdsd2VTZWNyZXRLZXkgd2l0aCAyIGVsZW1lbnRzwDAQACQAAABzdHJ1Y3QgTHdlQ2lwaGVydGV4dCB3aXRoIDIgZWxlbWVudHPsMBAAJAAAAHN0cnVjdCBMd2VDaXBoZXJ0ZXh0TGlzdCB3aXRoIDMgZWxlbWVudHMYMRAAKAAAAHN0cnVjdCBMd2VDb21wYWN0Q2lwaGVydGV4dExpc3Qgd2l0aCA0IGVsZW1lbnRzAEgxEAAvAAAAc3RydWN0IEx3ZUNvbXBhY3RQdWJsaWNLZXkgd2l0aCAxIGVsZW1lbnQAAACAMRAAKQAAAHN0cnVjdCBMd2VQdWJsaWNLZXkgd2l0aCAxIGVsZW1lbnQAALQxEAAiAAAAc3RydWN0IEx3ZVNlY3JldEtleSB3aXRoIDEgZWxlbWVudAAA4DEQACIAAABzdHJ1Y3QgU2VlZGVkR2dzd0NpcGhlcnRleHRMaXN0IHdpdGggNyBlbGVtZW50cwAMMhAALwAAAHN0cnVjdCBTZWVkZWRHbHdlQ2lwaGVydGV4dCB3aXRoIDQgZWxlbWVudHMARDIQACsAAABzdHJ1Y3QgU2VlZGVkTHdlQm9vdHN0cmFwS2V5IHdpdGggMSBlbGVtZW50AHgyEAArAAAAc3RydWN0IFNlZWRlZEx3ZUNpcGhlcnRleHQgd2l0aCA0IGVsZW1lbnRzAACsMhAAKgAAAHN0cnVjdCBTZWVkZWRMd2VDaXBoZXJ0ZXh0TGlzdCB3aXRoIDQgZWxlbWVudHMAAOAyEAAuAAAAc3RydWN0IFNlZWRlZEx3ZUNvbXBhY3RQdWJsaWNLZXkgd2l0aCAxIGVsZW1lbnQAGDMQAC8AAABzdHJ1Y3QgU2VlZGVkTHdlS2V5c3dpdGNoS2V5IHdpdGggNiBlbGVtZW50c1AzEAAsAAAAc3RydWN0IFNlZWRlZEx3ZU11bHRpQml0Qm9vdHN0cmFwS2V5IHdpdGggMiBlbGVtZW50c4QzEAA0AAAAc3RydWN0IFNlZWRlZEx3ZVB1YmxpY0tleSB3aXRoIDEgZWxlbWVudMAzEAAoAAAAc3RydWN0IEJhc2VSYWRpeENpcGhlcnRleHQgd2l0aCAxIGVsZW1lbnQAAADwMxAAKQAAAHN0cnVjdCBCYXNlU2lnbmVkUmFkaXhDaXBoZXJ0ZXh0IHdpdGggMSBlbGVtZW50ACQ0EAAvAAAAc3RydWN0IENvbXBhY3RDaXBoZXJ0ZXh0TGlzdCB3aXRoIDIgZWxlbWVudHNcNBAALAAAAHN0cnVjdCBDbGllbnRLZXkgd2l0aCAxIGVsZW1lbnQAkDQQAB8AAABzdHJ1Y3QgQ29tcGFjdFB1YmxpY0tleSB3aXRoIDEgZWxlbWVudAAAuDQQACYAAABzdHJ1Y3QgQ29tcHJlc3NlZENvbXBhY3RQdWJsaWNLZXkgd2l0aCAxIGVsZW1lbnToNBAAMAAAAHN0cnVjdCBDb21wcmVzc2VkUHVibGljS2V5IHdpdGggMSBlbGVtZW50AAAAIDUQACkAAABzdHJ1Y3QgUHVibGljS2V5IHdpdGggMSBlbGVtZW50AFQ1EAAfAAAAc3RydWN0IENvbXByZXNzZWRTZXJ2ZXJLZXkgd2l0aCAxIGVsZW1lbnQAAAB8NRAAKQAAAHN0cnVjdCBDb21wYWN0Q2lwaGVydGV4dExpc3Qgd2l0aCA2IGVsZW1lbnRzsDUQACwAAABzdHJ1Y3QgQ29tcHJlc3NlZENpcGhlcnRleHQgd2l0aCA2IGVsZW1lbnRzAOQ1EAArAAAAc3RydWN0IENvbXByZXNzZWRNb2R1bHVzU3dpdGNoZWRDaXBoZXJ0ZXh0IHdpdGggNSBlbGVtZW50cwAAGDYQADoAAABzdHJ1Y3QgQ2lwaGVydGV4dCB3aXRoIDYgZWxlbWVudHMAAABcNhAAIQAAAHN0cnVjdCBDbGllbnRLZXkgd2l0aCAzIGVsZW1lbnRziDYQACAAAABzdHJ1Y3QgTXVsdGlCaXRQQlNQYXJhbWV0ZXJzIHdpdGggMTcgZWxlbWVudHMAAACwNhAALQAAAHN0cnVjdCBXb3Bic1BhcmFtZXRlcnMgd2l0aCAxOCBlbGVtZW50cwDoNhAAJwAAAHN0cnVjdCBDbGFzc2ljUEJTUGFyYW1ldGVycyB3aXRoIDE1IGVsZW1lbnRzGDcQACwAAAB2YXJpYW50IGluZGV4IDAgPD0gaSA8IDJMNxAAGAAAAHZhcmlhbnQgaW5kZXggMCA8PSBpIDwgM2w3EAAYAAAAdHVwbGUgdmFyaWFudCBTaG9ydGludFBhcmFtZXRlclNldElubmVyOjpQQlNBbmRXb3BicyB3aXRoIDIgZWxlbWVudHOMNxAARAAAAHN0cnVjdCBTaG9ydGludFBhcmFtZXRlclNldCB3aXRoIDEgZWxlbWVudAAA2DcQACoAAABzdHJ1Y3QgQ29tcGFjdFB1YmxpY0tleSB3aXRoIDMgZWxlbWVudHMADDgQACcAAABzdHJ1Y3QgQ29tcHJlc3NlZENvbXBhY3RQdWJsaWNLZXkgd2l0aCAzIGVsZW1lbnRzAAAAPDgQADEAAABzdHJ1Y3QgQ29tcHJlc3NlZFB1YmxpY0tleSB3aXRoIDMgZWxlbWVudHMAAHg4EAAqAAAAc3RydWN0IFB1YmxpY0tleSB3aXRoIDMgZWxlbWVudHOsOBAAIAAAAHN0cnVjdCB2YXJpYW50IFNob3J0aW50Q29tcHJlc3NlZEJvb3RzdHJhcHBpbmdLZXk6Ok11bHRpQml0IHdpdGggMiBlbGVtZW50cwDUOBAASwAAAHN0cnVjdCBDb21wcmVzc2VkU2VydmVyS2V5IHdpdGggOCBlbGVtZW50cwAAKDkQACoAAABzdHJ1Y3QgSW50ZWdlckNsaWVudEtleSB3aXRoIDIgZWxlbWVudHMAXDkQACcAAABzdHJ1Y3QgSW50ZWdlckNvbXByZXNzZWRTZXJ2ZXJLZXkgd2l0aCAxIGVsZW1lbnSMORAAMAAAAHN0cnVjdCBJbnRlZ2VyQ29tcGFjdFB1YmxpY0tleSB3aXRoIDEgZWxlbWVudAAAAMQ5EAAtAAAAc3RydWN0IEludGVnZXJDb21wcmVzc2VkQ29tcGFjdFB1YmxpY0tleSB3aXRoIDEgZWxlbWVudAD8ORAANwAAAHN0cnVjdCBGaGVCb29sIHdpdGggMSBlbGVtZW50AAAAPDoQAB0AAABzdHJ1Y3QgQ29tcGFjdEZoZUJvb2wgd2l0aCAxIGVsZW1lbnRkOhAAJAAAAHN0cnVjdCBDb21wYWN0RmhlQm9vbExpc3Qgd2l0aCAxIGVsZW1lbnSQOhAAKAAAAHN0cnVjdCBGaGVJbnQgd2l0aCAyIGVsZW1lbnRzAAAAwDoQAB0AAABzdHJ1Y3QgQ29tcGFjdEZoZUludCB3aXRoIDIgZWxlbWVudHPoOhAAJAAAAHN0cnVjdCBDb21wYWN0RmhlSW50TGlzdCB3aXRoIDIgZWxlbWVudHMUOxAAKAAAAHN0cnVjdCBDb21wcmVzc2VkRmhlSW50IHdpdGggMiBlbGVtZW50cwBEOxAAJwAAAHN0cnVjdCBGaGVVaW50IHdpdGggMiBlbGVtZW50cwAAdDsQAB4AAABzdHJ1Y3QgQ29tcGFjdEZoZVVpbnQgd2l0aCAyIGVsZW1lbnRzAAAAnDsQACUAAABzdHJ1Y3QgQ29tcGFjdEZoZVVpbnRMaXN0IHdpdGggMiBlbGVtZW50cwAAAMw7EAApAAAAc3RydWN0IENvbXByZXNzZWRGaGVVaW50IHdpdGggMiBlbGVtZW50cwA8EAAoAAAAYXNzZXJ0aW9uIGZhaWxlZDogbWlkIDw9IHNlbGYubGVuKCkAQeD4wAALZ2F0dGVtcHQgdG8gY2FsY3VsYXRlIHRoZSByZW1haW5kZXIgd2l0aCBhIGRpdmlzb3Igb2YgemVyb2NhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUwPBAAQdD5wAALggVhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvdGZoZS9zcmMvc2hvcnRpbnQvZW5naW5lL2NsaWVudF9zaWRlLnJz6TwQACcAAABFAAAAFQAAAOk8EAAnAAAASgAAABEAAADpPBAAJwAAAHYAAAAdAAAA6TwQACcAAAC6AAAAHQAAAOk8EAAnAAAAvwAAABUAAAB0ZmhlL3NyYy9zaG9ydGludC9lbmdpbmUvcHVibGljX3NpZGUucnMAYD0QACcAAACRAAAAHQAAAGA9EAAnAAAAlgAAABUAAABgPRAAJwAAAMEAAAAdAAAAYD0QACcAAADGAAAAFQAAAHRmaGUvc3JjL3Nob3J0aW50L2VuZ2luZS9zZXJ2ZXJfc2lkZS5ycwDIPRAAJwAAALwAAABHAAAAdGZoZS9zcmMvc2hvcnRpbnQvZW5naW5lL21vZC5ycwAAPhAAHwAAAD0AAAAaAAAAAD4QAB8AAABUAAAABQAAAAA+EAAfAAAAWAAAAAUAAAAAPhAAHwAAAGUAAAAUAAAAAD4QAB8AAAB6AAAAHwAAAAA+EAAfAAAAdAAAABgAAABUaGUgc2VydmVyIGtleSB3YXMgbm90IHByb3Blcmx5IGluaXRpYWxpemVkLgpEaWQgeW91IGZvcmdldCB0byBjYWxsIGBzZXRfc2VydmVyX2tleWAgaW4gdGhlIGN1cnJlbnQgdGhyZWFkID8KICAgICAgICAgICAgAAAAgD4QAHkAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL2l0ZXIucnMAQeD+wAALqQxhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvdG9vIG1hbnkgdmFsdWVzIHB1c2hlZCB0byBjb25zdW1lcgB5PxAAIgAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JheW9uLTEuMTAuMC9zcmMvaXRlci9jb2xsZWN0L2NvbnN1bWVyLnJzpD8QAGgAAAB+AAAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IGluZGV4IDw9IGxlbgAApD8QAGgAAABhAAAADQAAAGFsaWduX29mZnNldDogYWxpZ24gaXMgbm90IGEgcG93ZXItb2YtdHdvAAAATEAQACkAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL3B0ci9tdXRfcHRyLnJzAIBAEABPAAAAYwYAAA0AAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAASAAAAAQAAAAEAAAASQAAAGV4cGVjdGVkICB0b3RhbCB3cml0ZXMsIGJ1dCBnb3QgSEEQAAkAAABRQRAAFwAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JheW9uLTEuMTAuMC9zcmMvaXRlci9jb2xsZWN0L21vZC5ycwB4QRAAYwAAAGQAAAAFAAAAYXNzZXJ0aW9uIGZhaWxlZDogdmVjLmNhcGFjaXR5KCkgLSBzdGFydCA+PSBsZW4ApD8QAGgAAAASAAAACQAAAAQ/EABOAAAAWwcAABEAAAAKcmVxdWVzdGVkIGFsaWdubWVudCBpcyBsZXNzIHRoYW4gdGhlIG1pbmltdW0gdmFsaWQgYWxpZ25tZW50IGZvciBgYDoKIC0gcmVxdWVzdGVkIGFsaWdubWVudDogCiAtIG1pbmltdW0gYWxpZ25tZW50OiAKAAA8QhAAQwAAAH9CEAAbAAAAmkIQABcAAACxQhAAAQAAAApidWZmZXIgaXMgbm90IGxhcmdlIGVub3VnaCB0byBhbGxvY2F0ZSBhbiBhcnJheSBvZiB0eXBlIGBgIG9mIHRoZSByZXF1ZXN0ZWQgbGVuZ3RoOgogLSByZW1haW5pbmcgYnVmZmVyIGxlbmd0aCAoYWZ0ZXIgYWRqdXN0aW5nIGZvciBhbGlnbm1lbnQpOiAsCiAtIHJlcXVlc3RlZCBhcnJheSBsZW5ndGg6ICAoIGJ5dGVzKSwKAAAA1EIQADoAAAAOQxAAVwAAAGVDEAAdAAAAgkMQAAIAAACEQxAACQAAAApidWZmZXIgaXMgbm90IGxhcmdlIGVub3VnaCB0byBhY2NvbW9kYXRlIHRoZSByZXF1ZXN0ZWQgYWxpZ25tZW50CiAtIGJ1ZmZlciBsZW5ndGg6IAogLSByZXF1ZXN0ZWQgYWxpZ25tZW50OiAKIC0gYnl0ZSBvZmZzZXQgZm9yIGFsaWdubWVudDoguEMQAFQAAAAMRBAAGQAAACVEEAAfAAAAsUIQAAEAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9lbnRpdGllcy9jb21wcmVzc2VkX21vZHVsdXNfc3dpdGNoZWRfbHdlX2NpcGhlcnRleHQucnMAZEQQAEsAAAD5AAAAFQAAAGREEABLAAAA+wAAADgAAABkRBAASwAAAP4AAAArAAAAZEQQAEsAAADcAAAAJwAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2ZmdF9pbXBsL2ZmdDY0L2NyeXB0by9ib290c3RyYXAucnMA8EQQADcAAAAFAQAAFgAAAPBEEAA3AAAACAEAACMAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9mZnRfaW1wbC9mZnQ2NC9jcnlwdG8vZ2dzdy5ycwAASEUQADIAAAAqAgAAFgBBsIvBAAsBAQBB0IvBAAvVPmFyZ3VtZW50IG9mIGludGVnZXIgbG9nYXJpdGhtIG11c3QgYmUgcG9zaXRpdmUAANBFEAAuAAAAdGZoZS9zcmMvaW50ZWdlci9iaWdpbnQvc3RhdGljX3NpZ25lZC5ycwhGEAAoAAAATwAAAAkAAAAzNDAyODIzNjY5MjA5Mzg0NjM0NjMzNzQ2MDc0MzE3NjgyMTE0NTUxMjh0ZmhlL3NyYy9qc19vbl93YXNtX2FwaS9qc19oaWdoX2xldmVsX2FwaS9pbnRlZ2Vycy5ycwBqRhAANQAAABoAAAAtAAAAdmFsdWUgaXMgb3V0IG9mIHJhbmdlIGZvciB1MjU2AABqRhAANQAAAEsAAAAtAAAAakYQADUAAABNAAAALwAAAAEAAAB0ZmhlL3NyYy9oaWdoX2xldmVsX2FwaS9ib29sZWFucy9jb21wYWN0LnJzAPRGEAArAAAAiAAAABEAAAD0RhAAKwAAAIkAAABaAAAARmFpbGVkIHRvIGNvbnZlcnQgdGhlIHZhbHVlIHRvIGEgdTEyOEZhaWxlZCB0byBjb252ZXJ0IHRoZSB2YWx1ZSB0byBhIFUyNTZGYWlsZWQgdG8gY29udmVydCB0aGUgdmFsdWUgdG8gYSBpMTI4RmFpbGVkIHRvIGNvbnZlcnQgdGhlIHZhbHVlIHRvIGEgSTI1NlZhbHVlIGlzIG5vdCBhIGJvb2xlYW5Ob25lU29tZQAASgAAAAQAAAAEAAAAJAAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvY29yZS9zcmMvbnVtL21vZC5ycwAESBAASwAAAJEEAAAFAAAAYXR0ZW1wdCB0byBkaXZpZGUgYnkgemVybwAAAARIEABLAAAAqQQAAAUAAAAAAAAAYXR0ZW1wdCB0byBjYWxjdWxhdGUgdGhlIHJlbWFpbmRlciB3aXRoIGEgZGl2aXNvciBvZiB6ZXJvYXNzZXJ0aW9uIGZhaWxlZDogbWlkIDw9IHNlbGYubGVuKClhc3NlcnRpb24gZmFpbGVkOiBzdGVwICE9IDAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL2l0ZXIvYWRhcHRlcnMvc3RlcF9ieS5ycwdJEABZAAAAIQAAAAkAAABjaHVuayBzaXplIG11c3QgYmUgbm9uLXplcm8AcEkQABsAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlAFYAAAABAAAAAQAAAFcAAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlAFgAAAAEAAAABAAAAFkAAABaAAAAAAAAAAEAAABbAAAAXAAAAAgAAAAEAAAACAAAAF0AAAAIAAAABAAAAAoAAABdAAAACAAAAAQAAAAKAAAAWAAAAAQAAAAEAAAAXgAAAFgAAAAEAAAABAAAAF8AAABYAAAABAAAAAQAAABgAAAAWAAAAAQAAAAEAAAAYQAAAFgAAAAEAAAABAAAAGIAAABTaXplT3ZlcmZsb3dGb3JrVG9vTGFyZ2VaZXJvQ2hpbGRyZW5Db3VudFplcm9CeXRlc1BlckNoaWxkIGluIG91dHB1dCwgYW5kICBpbiBzZWNyZXQga2V5LnRmaGUvc3JjL2NvcmVfY3J5cHRvL2FsZ29yaXRobXMvZ2dzd19lbmNyeXB0aW9uLnJzRmFpbGVkIHRvIHNwbGl0IGdlbmVyYXRvciBpbnRvIGdnc3cgbGV2ZWxzYXNzZXJ0aW9uIGZhaWxlZDogY2lwaGVydGV4dF9tb2R1bHVzLmlzX2NvbXBhdGlibGVfd2l0aF9uYXRpdmVfbW9kdWx1cygpRmFpbGVkIHRvIHNwbGl0IGdlbmVyYXRvciBpbnRvIGdsd2X1ShAAMgAAAHIBAAAKAAAA9UoQADIAAAB5AQAABQAAAPVKEAAyAAAAhQEAAC4AAAD1ShAAMgAAAIoBAAAOAAAA9UoQADIAAADxAgAACQAAAPVKEAAyAAAA6QIAABcAAABNaXNtYXRjaGVkIG1vZHVsaSBiZXR3ZWVuIG91dHB1dF9tYXNrICgpIGFuZCBvdXRwdXRfYm9keSAoKQAcTBAAJwAAAENMEAATAAAAVkwQAAEAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL2dsd2VfZW5jcnlwdGlvbi5ycwAAcEwQADIAAAAlAAAABQAAAHBMEAAyAAAALwAAAAUAAABwTBAAMgAAADoAAAAwAAAATWlzbWF0Y2ggYmV0d2VlbiBHbHdlRGltZW5zaW9uIG9mIG91dHB1dCBjaXBoZXJ0ZXh0IGFuZCBpbnB1dCBzZWNyZXQga2V5LiBHb3QgAADUTBAATgAAANZKEAAQAAAA5koQAA8AAABNaXNtYXRjaCBiZXR3ZWVuIFBvbHlub21pYWxTaXplIG9mIG91dHB1dCBjaXBoZXJ0ZXh0IGFuZCBpbnB1dCBzZWNyZXQga2V5LiBHb3QgADxNEABPAAAA1koQABAAAADmShAADwAAAHBMEAAyAAAAzgAAAAUAAABwTBAAMgAAANUAAAAFAAAATWlzbWF0Y2hlZCBMd2VEaW1lbnNpb24gYmV0d2VlbiBpbnB1dCBMV0Ugc2VjcmV0IGtleSBhbmQgTFdFIGJvb3RzdHJhcCBrZXkuIElucHV0IExXRSBzZWNyZXQga2V5IEx3ZURpbWVuc2lvbjogLCBMV0UgYm9vdHN0cmFwIGtleSBpbnB1dCBMd2VEaW1lbnNpb24gLgDETRAAbwAAADNOEAAnAAAAWk4QAAEAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL2x3ZV9ib290c3RyYXBfa2V5X2dlbmVyYXRpb24ucnNNaXNtYXRjaGVkIEdsd2VTaXplIGJldHdlZW4gb3V0cHV0IEdMV0Ugc2VjcmV0IGtleSBhbmQgTFdFIGJvb3RzdHJhcCBrZXkuIE91dHB1dCBHTFdFIHNlY3JldCBrZXkgR2x3ZVNpemU6ICwgTFdFIGJvb3RzdHJhcCBrZXkgR2x3ZVNpemUgALNOEABrAAAAHk8QAB0AAABaThAAAQAAAE1pc21hdGNoZWQgUG9seW5vbWlhbFNpemUgYmV0d2VlbiBvdXRwdXQgR0xXRSBzZWNyZXQga2V5IGFuZCBMV0UgYm9vdHN0cmFwIGtleS4gT3V0cHV0IEdMV0Ugc2VjcmV0IGtleSBQb2x5bm9taWFsU2l6ZTogLCBMV0UgYm9vdHN0cmFwIGtleSBQb2x5bm9taWFsU2l6ZSAAAFRPEAB3AAAAy08QACMAAABaThAAAQAAAHROEAA/AAAAjgEAAAUAAAB0ThAAPwAAAJYBAAAFAAAAdE4QAD8AAACeAQAABQAAAHROEAA/AAAAsgEAAAoAAABhc3NlcnRpb24gZmFpbGVkOiBvdXRwdXRfbHdlX2NpcGhlcnRleHRfbGlzdC5lbnRpdHlfY291bnQoKSA9PQogICAgaW5wdXRfbHdlX2NvbXBhY3RfY2lwaGVydGV4dF9saXN0Lmx3ZV9jaXBoZXJ0ZXh0X2NvdW50KCkuMHRmaGUvc3JjL2NvcmVfY3J5cHRvL2FsZ29yaXRobXMvbHdlX2NvbXBhY3RfY2lwaGVydGV4dF9saXN0X2V4cGFuc2lvbi5ycwAAAMVQEABIAAAAFAAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiBvdXRwdXRfbHdlX2NpcGhlcnRleHRfbGlzdC5sd2Vfc2l6ZSgpID09CiAgICBpbnB1dF9sd2VfY29tcGFjdF9jaXBoZXJ0ZXh0X2xpc3QubHdlX3NpemUoKQDFUBAASAAAABkAAAAFAAAAxVAQAEgAAAAsAAAAHwAAAE1pc21hdGNoZWQgbW9kdWxpIGJldHdlZW4gbWFzayAoKSBhbmQgYm9keSAorFEQACAAAADMURAADAAAAFZMEAABAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vYWxnb3JpdGhtcy9sd2VfZW5jcnlwdGlvbi5ycwAAAPBREAAxAAAAJQAAAAUAAADwURAAMQAAAFgAAAAFAAAA8FEQADEAAABiAAAABQAAAPBREAAxAAAAeAAAADQAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2Rl8FEQADEAAAB8AAAAKQAAAPBREAAxAAAAlAAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiAhY2lwaGVydGV4dF9tb2R1bHVzLmlzX2NvbXBhdGlibGVfd2l0aF9uYXRpdmVfbW9kdWx1cygpAAAA8FEQADEAAACeAAAABQAAAE1pc21hdGNoIGJldHdlZW4gTHdlRGltZW5zaW9uIG9mIG91dHB1dCBjaXBoZXJ0ZXh0IGFuZCBpbnB1dCBzZWNyZXQga2V5LiBHb3QgAAAACFMQAE0AAADWShAAEAAAAOZKEAAPAAAA8FEQADEAAAD/AAAABQAAAPBREAAxAAAAJwIAAAUAAADwURAAMQAAADEC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Q2lwaGVydGV4dCBpbnB1dCBMd2VEaW1lbnNpb24gLiBGb3VyaWVyTHdlTXVsdGlCaXRCb290c3RyYXBLZXkgaW5wdXQgTHdlRGltZW5zaW9uIIBaEABAAAAAwFoQADQAAABaThAAAQAAABRaEABLAAAAMAEAAAUAAABNaXNtYXRjaGVkIEdsd2VTaXplLiBBY2N1bXVsYXRvciBHbHdlU2l6ZSAuIEZvdXJpZXJMd2VNdWx0aUJpdEJvb3RzdHJhcEtleSBHbHdlU2l6ZSAcWxAAKgAAAEZbEAAqAAAAWk4QAAEAAAAUWhAASwAAADkBAAAFAAAATWlzbWF0Y2hlZCBQb2x5bm9taWFsU2l6ZS4gQWNjdW11bGF0b3IgUG9seW5vbWlhbFNpemUgLiBGb3VyaWVyTHdlTXVsdGlCaXRCb290c3RyYXBLZXkgUG9seW5vbWlhbFNpemUgAACYWxAANgAAAM5bEAAwAAAAWk4QAAEAAAAUWhAASwAAAEIBAAAFAAAATWlzbWF0Y2hlZCBDaXBoZXJ0ZXh0TW9kdWx1cyBiZXR3ZWVuIGlucHV0ICgpIGFuZCBhY2N1bXVsYXRvciAoAChcEAAsAAAAVFwQABMAAABWTBAAAQAAABRaEABLAAAASwEAAAUAAABHb3QgdGhyZWFkX2NvdW50ID09IDAsIHRoaXMgaXMgbm90IHN1cHBvcnRlZJBcEAAsAAAAFFoQAEsAAABTAQAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IGFjY3VtdWxhdG9yLmNpcGhlcnRleHRfbW9kdWx1cygpLmlzX2NvbXBhdGlibGVfd2l0aF9uYXRpdmVfbW9kdWx1cygpAAAUWhAASwAAAFgBAAAFAAAAYXNzZXJ0aW9uIGZhaWxlZDogd29ya19xdWV1ZS5sZW4oKSA9PSBsd2VfbWFzay5sd2VfZGltZW5zaW9uKCkuMCAvIGdyb3VwaW5nX2ZhY3Rvci4wFFoQAEsAAABtAQAABQAAABRaEABLAAAAkgEAAAUAAAAUWhAASwAAAJoBAAAwAAAAFFoQAEsAAACeAQAAPAAAABRaEABLAAAApQEAAE0AAAAUWhAASwAAAK0BAABKAAAAFFoQAEsAAAC7AQAAIwAAABRaEABLAAAAqgEAAEsAAAAUWhAASwAAACgCAAAFAAAAFFoQAEsAAAAxAgAABQAAABRaEABLAAAAOgIAAAUAAAAUWhAASwAAAEMCAAAFAAAAFFoQAEsAAABLAgAABQAAABRaEABLAAAAYQIAAAUAAAAUWhAASwAAAIICAAAFAAAAFFoQAEsAAACOAgAANAAAABRaEABLAAAAkAIAAE0AAAAUWhAASwAAAJgCAABKAAAAFFoQAEsAAACeAgAANQAAABRaEABLAAAAowIAABYAAAAUWhAASwAAAJUCAABLAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vYWxnb3JpdGhtcy9wb2x5bm9taWFsX2FsZ29yaXRobXMucnPgXhAAOAAAACEAAAAFAAAA4F4QADgAAACBAAAAMwAAAE91dHB1dCBwb2x5bm9taWFsIHNpemUgIGlzIG5vdCB0aGUgc2FtZSBhcyBpbnB1dCBsaHMgcG9seW5vbWlhbCA4XxAAFwAAAE9fEAApAAAAWk4QAAEAAADgXhAAOAAAAK8AAAAFAAAAIGlzIG5vdCB0aGUgc2FtZSBhcyBpbnB1dCByaHMgcG9seW5vbWlhbCAAAAA4XxAAFwAAAKBfEAApAAAAWk4QAAEAAADgXhAAOAAAALUAAAAFAAAA4F4QADgAAADhAAAAHQAAAOBeEAA4AAAACwEAAB0AAAAgaXMgbm90IHRoZSBzYW1lIGFzIGlucHV0IHBvbHlub21pYWwgc2l6ZSAAADhfEAAXAAAAFGAQACoAAABaThAAAQAAAOBeEAA4AAAAQwEAAAUAAADgXhAAOAAAAEsBAAAcAAAA4F4QADgAAADHAQAABQAAAOBeEAA4AAAAzwEAABwAAADgXhAAOAAAALUCAAAFAAAA4F4QADgAAAC7AgAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IHBvbHlfc2l6ZS5pc19wb3dlcl9vZl90d28oKQAAAOBeEAA4AAAAxQIAAAUAAADgXhAAOAAAANMCAAAkAAAA4F4QADgAAADTAgAAOAAAAOBeEAA4AAAA1AIAACQAAADgXhAAOAAAANQCAAA1AAAA4F4QADgAAADVAgAAKwAAAOBeEAA4AAAA1QIAAD8AAADgXhAAOAAAANYCAAArAAAA4F4QADgAAADWAgAAPwAAAOBeEAA4AAAAAgMAACgAAADgXhAAOAAAAAIDAAA8AAAA4F4QADgAAAADAwAAKAAAAOBeEAA4AAAAAwMAADkAAADgXhAAOAAAAAkDAAAkAAAA4F4QADgAAADuAgAAHwAAAE1pc21hdGNoZWQgQ2lwaGVydGV4dE1vZHVsdXMgYmV0d2VlbiBpbnB1dCBTZWVkZWRMd2VDaXBoZXJ0ZXh0TGlzdCAoKSBhbmQgb3V0cHV0IEx3ZUNpcGhlcnRleHRMaXN0ICjYYRAARAAAABxiEAAgAAAAVkwQAAEAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL3NlZWRlZF9sd2VfY2lwaGVydGV4dF9saXN0X2RlY29tcHJlc3Npb24ucnMAVGIQAEsAAAAbAAAABQAAAEVycm9yIHdoaWxlIGZvcmtpbmcgZ2VuZXJhdG9yIGZvciBTZWVkZWRMd2VDaXBoZXJ0ZXh0TGlzdCBkZWNvbXByZXNzaW9uLlRiEABLAAAALQAAAAoAAABUYhAASwAAAEAAAAAoAAAAbm90IHlldCBpbXBsZW1lbnRlZDogVGhpcyBkaXN0cmlidXRpb24gZG9lcyBub3Qgc3VwcG9ydCBjdXN0b20gbW9kdWx1cyBnZW5lcmF0aW9uIGF0IHRoaXMgdGltZS4AGGMQAF8AAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9jb21tb25zL21hdGgvcmFuZG9tL21vZC5ycwCAYxAALwAAAD8AAAAJAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZW50aXRpZXMvc2VlZGVkX2x3ZV9tdWx0aV9iaXRfYm9vdHN0cmFwX2tleS5ycwDAYxAAQwAAAG4BAAANAAAATXVsdGkgQml0IEJTSyByZXF1aXJlcyBpbnB1dCBMV0UgZGltZW5zaW9uICgpIHRvIGJlIGEgbXVsdGlwbGUgb2YgAAAUZBAALAAAAEBkEAAWAAAAwGMQAEMAAABtAQAACQAAAHRmaGUvc3JjL2ludGVnZXIvZW5jcnlwdGlvbi5ycwAAeGQQAB4AAABNAAAAKwAAAHRmaGUvc3JjL2ludGVnZXIvYmlnaW50L2FsZ29yaXRobXMucnMAAACoZBAAJQAAAHQAAAAqAAAAYXNzZXJ0aW9uIGZhaWxlZDogbGhzLmxlbigpID49IHJocy5sZW4oKahkEAAlAAAAqQAAAAUAAACoZBAAJQAAAL0AAAAiAEHIysEACwEBAEHoysEAC/oGqGQQACUAAAA0AQAAEQAAAKhkEAAlAAAAOgEAABgAAACoZBAAJQAAAEIBAAAcAAAAqGQQACUAAABeAQAAEQAAAKhkEAAlAAAAYwEAABwAAAB0ZmhlL3NyYy9pbnRlZ2VyL2NsaWVudF9rZXkvbW9kLnJzAAAAAAAA/////////////////////////////////////////3+4ZRAAIgAAALMAAAAuAAAAuGUQACIAAABjAQAARQAAAGFzc2VydGlvbiBmYWlsZWQ6IG1lc3NhZ2VfbW9kdWx1cy5pc19wb3dlcl9vZl90d28oKQC4ZRAAIgAAALsBAAAJAAAAuGUQACIAAADDAQAAMwAAAHRmaGUvc3JjL2ludGVnZXIvcHVibGljX2tleS9zdGFuZGFyZC5ycwB0ZhAAJwAAAEEAAAAuAAAAYwAAAE1vZHVsdXMgc3dpdGNoIGNvbXByZXNzaW9uIGFuZCBtdWx0aSBiaXQgUEJTIGFyZSBjdXJyZW50bHkgbm90IGNvbXBhdGlibGUAAACwZhAASQAAAHRmaGUvc3JjL3Nob3J0aW50L3NlcnZlcl9rZXkvbW9kdWx1c19zd2l0Y2hlZF9jb21wcmVzc2lvbi5ycwRnEAA8AAAAawAAAA0AAAB0ZmhlL3NyYy9zaG9ydGludC9zZXJ2ZXJfa2V5L21vZC5ycwBQZxAAIwAAAJcFAAASAAAAMTI4NjQwdGZoZS9zcmMvaGlnaF9sZXZlbF9hcGkvaW50ZWdlcnMvbW9kLnJzAAAAimcQACcAAAAhAAAALgAAAIpnEAAnAAAAIQAAAAkAAAB2YXJpYW50IGluZGV4IDAgPD0gaSA8IDLUZxAAGAAAAFgAAAAIAAAABAAAADoAAABQbGFpbnRleHRDb3VudAAAWAAAAAQAAAAEAAAAJQAAAEx3ZUNpcGhlcnRleHRDb3VudEx3ZURpbWVuc2lvbkdsd2VTaXplR2x3ZURpbWVuc2lvblBvbHlub21pYWxTaXplTWVzc2FnZVgAAAAEAAAABAAAACYAAAAMAAAAEQAAABEAAACoShAAtEoQAMVKEAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL2l0ZXIucnMAQfDRwQALiTBhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvYXNzZXJ0aW9uIGZhaWxlZDogbWlkIDw9IHNlbGYubGVuKCl1NjQAYWxpZ25fb2Zmc2V0OiBhbGlnbiBpcyBub3QgYSBwb3dlci1vZi10d28AAAAwaRAAKQAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvY29yZS9zcmMvcHRyL211dF9wdHIucnMAZGkQAE8AAABjBgAADQAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvbW9kLnJzAAAAxGkQAE0AAABoDQAACQAAAGNodW5rIHNpemUgbXVzdCBiZSBub24temVybwAkahAAGwAAAGFzc2VydGlvbiBmYWlsZWQ6IGsgPD0gc2VsZi5sZW4oKQAAAMRpEABNAAAAkw0AAAkAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAAZQAAAAgAAAAEAAAACgAAAGYAAAAIAAAABAAAAAoAAACUaBAATgAAAFsHAAARAAAACnJlcXVlc3RlZCBhbGlnbm1lbnQgaXMgbGVzcyB0aGFuIHRoZSBtaW5pbXVtIHZhbGlkIGFsaWdubWVudCBmb3IgYGA6CiAtIHJlcXVlc3RlZCBhbGlnbm1lbnQ6IAogLSBtaW5pbXVtIGFsaWdubWVudDogCgAABGsQAEMAAABHaxAAGwAAAGJrEAAXAAAAeWsQAAEAAAAKYnVmZmVyIGlzIG5vdCBsYXJnZSBlbm91Z2ggdG8gYWxsb2NhdGUgYW4gYXJyYXkgb2YgdHlwZSBgYCBvZiB0aGUgcmVxdWVzdGVkIGxlbmd0aDoKIC0gcmVtYWluaW5nIGJ1ZmZlciBsZW5ndGggKGFmdGVyIGFkanVzdGluZyBmb3IgYWxpZ25tZW50KTogLAogLSByZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoOiAgKCBieXRlcyksCgAAAJxrEAA6AAAA1msQAFcAAAAtbBAAHQAAAEpsEAACAAAATGwQAAkAAAAKYnVmZmVyIGlzIG5vdCBsYXJnZSBlbm91Z2ggdG8gYWNjb21vZGF0ZSB0aGUgcmVxdWVzdGVkIGFsaWdubWVudAogLSBidWZmZXIgbGVuZ3RoOiAKIC0gcmVxdWVzdGVkIGFsaWdubWVudDogCiAtIGJ5dGUgb2Zmc2V0IGZvciBhbGlnbm1lbnQ6IIBsEABUAAAA1GwQABkAAADtbBAAHwAAAHlrEAABAAAATWlzbWF0Y2hlZCBpbnB1dCBMd2VEaW1lbnNpb24uIEx3ZUtleXN3aXRjaEtleSBpbnB1dCBMd2VEaW1lbnNpb246ICwgaW5wdXQgTHdlQ2lwaGVydGV4dCBMd2VEaW1lbnNpb24gLgAsbRAAQwAAAG9tEAAjAAAAkm0QAAEAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL2x3ZV9rZXlzd2l0Y2gucnOsbRAAMAAAAGsAAAAFAAAATWlzbWF0Y2hlZCBvdXRwdXQgTHdlRGltZW5zaW9uLiBMd2VLZXlzd2l0Y2hLZXkgb3V0cHV0IEx3ZURpbWVuc2lvbjogLCBvdXRwdXQgTHdlQ2lwaGVydGV4dCBMd2VEaW1lbnNpb24gAAAA7G0QAEUAAAAxbhAAJAAAAJJtEAABAAAArG0QADAAAABzAAAABQAAAE1pc21hdGNoZWQgQ2lwaGVydGV4dE1vZHVsdXMuIEx3ZUtleXN3aXRjaEtleSBDaXBoZXJ0ZXh0TW9kdWx1czogLCBvdXRwdXQgTHdlQ2lwaGVydGV4dCBDaXBoZXJ0ZXh0TW9kdWx1cyAAAIBuEABBAAAAwW4QACkAAACSbRAAAQAAAKxtEAAwAAAAfgAAAAUAAABUaGlzIG9wZXJhdGlvbiBjdXJyZW50bHkgb25seSBzdXBwb3J0cyBwb3dlciBvZiAyIG1vZHVsaRRvEAA4AAAArG0QADAAAACGAAAABQAAAKxtEAAwAAAAjQAAAAUAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL2x3ZV9wcm9ncmFtbWFibGVfYm9vdHN0cmFwcGluZy5ycwAAAHRvEABBAAAAFwEAAAUAAAApTWlzbWF0Y2hlZCBDaXBoZXJ0ZXh0TW9kdWx1cyBiZXR3ZWVuIGlucHV0IFNlZWRlZEx3ZUNpcGhlcnRleHQgKCkgYW5kIG91dHB1dCBMd2VDaXBoZXJ0ZXh0ICgAAADJbxAAQAAAAAlwEAAcAAAAyG8QAAEAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL3NlZWRlZF9sd2VfY2lwaGVydGV4dF9kZWNvbXByZXNzaW9uLnJzAABAcBAARgAAABQAAAAFAAAAQHAQAEYAAAAoAAAAJAAAAEBwEABGAAAAOwAAAAUAAABNaXNtYXRjaGVkIENpcGhlcnRleHRNb2R1bHVzIGJldHdlZW4gaW5wdXQgU2VlZGVkTHdlUHVibGljS2V5ICgpIGFuZCBvdXRwdXQgTHdlUHVibGljS2V5ICgAALhwEAA/AAAA93AQABsAAADIbxAAAQAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2FsZ29yaXRobXMvc2VlZGVkX2x3ZV9wdWJsaWNfa2V5X2RlY29tcHJlc3Npb24ucnMAACxxEABGAAAAEwAAAAUAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9jb21tb25zL3RyYWl0cy9jb250YWluZXIucnOEcRAAMAAAAFgAAAASAAAAhHEQADAAAABnAAAADgAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2VudGl0aWVzL2x3ZV9tdWx0aV9iaXRfYm9vdHN0cmFwX2tleS5yc9RxEAA8AAAAeAEAAA4AAADUcRAAPAAAAI0BAAAWAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZmZ0X2ltcGwvZmZ0NjQvY3J5cHRvL2Jvb3RzdHJhcC5ycwAwchAANwAAAPkAAAA1AAAAYXNzZXJ0aW9uIGZhaWxlZDogY2lwaGVydGV4dF9tb2R1bHVzLmlzX2NvbXBhdGlibGVfd2l0aF9uYXRpdmVfbW9kdWx1cygpMHIQADcAAAD9AAAACQAAADByEAA3AAAADgEAACoAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9mZnRfaW1wbC9mZnQ2NC9jcnlwdG8vZ2dzdy5ycwAA4HIQADIAAAA+AAAACQAAAOByEAAyAAAAjAAAAAkAAADgchAAMgAAAPcBAAAPAAAA4HIQADIAAABiAgAARwAAAOByEAAyAAAAYwIAADwAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9mZnRfaW1wbC9mZnQ2NC9tYXRoL2RlY29tcG9zaXRpb24ucnMAAABkcxAAOQAAACMAAAATAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZmZ0X2ltcGwvZmZ0NjQvbWF0aC9mZnQvbW9kLnJzALBzEAAzAAAAtwAAAC4AAACwcxAAMwAAAL8AAAAeAAAAsHMQADMAAACXAAAALQAAALBzEAAzAAAAoAEAABYAAACwcxAAMwAAALQBAAARAAAAsHMQADMAAAC1AQAAEQAAAEF0IGxlYXN0IG9uZSBtZXNzYWdlIGlzIHJlcXVpcmVkRHQQACAAAAB0ZmhlL3NyYy9pbnRlZ2VyL3B1YmxpY19rZXkvY29tcGFjdC5ycwAAbHQQACYAAABfAAAAHQAAAGcAAABgAAAACAAAAGgAAABpAAAAagAAAGsAAABsAAAAOAAAAAgAAABtAAAAbgAAAG8AAABwAAAAZwAAAHAAAAAIAAAAcQAAAHIAAABzAAAAdAAAAHUAAABAAAAACAAAAHYAAAB3AAAAeAAAAHkAAABnAAAAUAEAAAgAAAB6AAAAewAAAHwAAAB9AAAAfgAAALAAAAAIAAAAfwAAAIAAAACBAAAAggAAAGcAAADQAAAACAAAAIMAAACEAAAAhQAAAIYAAACHAAAAcAAAAAgAAACIAAAAiQAAAIoAAACLAAAAZwAAAFABAAAIAAAAjAAAAHsAAACNAAAAjgAAAH4AAACwAAAACAAAAI8AAACAAAAAkAAAAJEAAABnAAAA0AAAAAgAAACSAAAAhAAAAJMAAACUAAAAhwAAAHAAAAAIAAAAlQAAAIkAAACWAAAAlwAAAGcAAACQAAAACAAAAJgAAACZAAAAmgAAAJsAAACcAAAAUAAAAAgAAACdAAAAngAAAJ8AAACgAAAAZwAAAGAAAAAIAAAAoQAAAGkAAACiAAAAowAAAGwAAAA4AAAACAAAAKQAAABuAAAApQAAAKYAAABnAAAAUAAAAAgAAACnAAAAqAAAAKkAAACqAAAAqwAAADAAAAAIAAAArAAAAK0AAACuAAAArwAAAGcAAACQAAAACAAAALAAAACZAAAAsQAAALIAAACcAAAAUAAAAAgAAACzAAAAngAAALQAAAC1AAAAZwAAAFAAAAAIAAAAtgAAAKgAAAC3AAAAuAAAAKsAAAAwAAAACAAAALkAAACtAAAAugAAALsAAABnAAAAcAAAAAgAAAC8AAAAcgAAAL0AAAC+AAAAdQAAAEAAAAAIAAAAvwAAAHcAAADAAAAAwQAAAHRmaGUvc3JjL2ludGVnZXIvcHVibGljX2tleS9jb21wcmVzc2VkLnJzAAAARHcQACkAAAA+AAAALgAAAMIAAABMd2VEaW1lbnNpb27DAAAABAAAAAQAAAAlAAAAdmFyaWFudCBpbmRleCAwIDw9IGkgPCAyoHcQABgAAADDAAAACAAAAAQAAAA6AAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3N5bmMvb25jZS5yc9B3EABMAAAA0AAAABQAAAAAAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9jb3JlL3NyYy9udW0vbW9kLnJzAAAAAABhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvAAAAAAAAAGF0dGVtcHQgdG8gY2FsY3VsYXRlIHRoZSByZW1haW5kZXIgd2l0aCBhIGRpdmlzb3Igb2YgemVybwAAADB4EABLAAAAkQQAAAUAAAAweBAASwAAAKkEAAAFAAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZWNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAAMUAAAAEAAAABAAAAMYAAABNaXNtYXRjaCBiZXR3ZWVuIGVxdWl2YWxlbnQgTHdlRGltZW5zaW9uIG9mIGlucHV0IGNpcGhlcnRleHQgYW5kIG91dHB1dCBjaXBoZXJ0ZXh0LiBHb3QgIGZvciBpbnB1dCBhbmQgIGZvciBvdXRwdXQuAGR5EABYAAAAvHkQAA8AAADLeRAADAAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2FsZ29yaXRobXMvZ2x3ZV9zYW1wbGVfZXh0cmFjdGlvbi5ycwAAAPB5EAA5AAAAagAAAAUAAABNaXNtYXRjaGVkIG1vZHVsaSBiZXR3ZWVuIGlucHV0X2dsd2UgKCkgYW5kIG91dHB1dF9sd2UgKCkAAAA8ehAAJgAAAGJ6EAASAAAAdHoQAAEAAADweRAAOQAAAHAAAAAFAAAA8HkQADkAAAB9AAAAFgAAAPB5EAA5AAAAgAAAABcAAADweRAAOQAAAI4AAAA6AAAAVGhpcyBvcGVyYXRpb24gb25seSBzdXBwb3J0cyBuYXRpdmUgbW9kdWxpAADQehAAKgAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2FsZ29yaXRobXMvbHdlX2NvbXBhY3RfcHVibGljX2tleV9nZW5lcmF0aW9uLnJzBHsQAEQAAAAhAAAABQAAAE1pc21hdGNoZWQgTHdlRGltZW5zaW9uIGJldHdlZW4gaW5wdXQgTHdlU2VjcmV0S2V5ICBhbmQgb3V0cHV0IEx3ZUNvbXBhY3RQdWJsaWNLZXkgAFh7EAAzAAAAi3sQACAAAAAEexAARAAAACYAAAAFAAAABHsQAEQAAAByAAAABQAAAAR7EABEAAAAdwAAAAUAAAAsIGlucHV0OiB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL2x3ZV9rZXlzd2l0Y2hfa2V5X2dlbmVyYXRpb24ucnMsIG91dHB1dDogYXNzZXJ0aW9uIGZhaWxlZDogY2lwaGVydGV4dF9tb2R1bHVzLmlzX2NvbXBhdGlibGVfd2l0aF9uYXRpdmVfbW9kdWx1cygpVGhlIGRlc3RpbmF0aW9uIFNlZWRlZEx3ZUtleXN3aXRjaEtleSBpbnB1dCBMd2VEaW1lbnNpb24gaXMgbm90IGVxdWFsIHRvIHRoZSBpbnB1dCBMd2VTZWNyZXRLZXkgTHdlRGltZW5zaW9uLiBEZXN0aW5hdGlvbjogAAAAhnwQAHsAAADsexAACQAAAPV7EAA/AAAAAwEAAAUAAABUaGUgZGVzdGluYXRpb24gU2VlZGVkTHdlS2V5c3dpdGNoS2V5IG91dHB1dCBMd2VEaW1lbnNpb24gaXMgbm90IGVxdWFsIHRvIHRoZSBvdXRwdXQgTHdlU2VjcmV0S2V5IEx3ZURpbWVuc2lvbi4gRGVzdGluYXRpb246IAAAACR9EAB9AAAANHwQAAoAAAD1exAAPwAAAAoBAAAFAAAA9XsQAD8AAAAVAQAABQAAAPV7EAA/AAAAMQEAADIAAABsaHMgKGxlbjogKSBhbmQgcmhzIChsZW46ICkg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M2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3N5bmMvbXBtYy9tb2QucnMkhRAAUAAAAIUAAAAtAAAAdGhyZWFkIG5hbWUgbWF5IG5vdCBjb250YWluIGludGVyaW9yIG51bGwgYnl0ZXMAzgAAABAAAAAEAAAAzwAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbW9kLnJzAAAAxIUQAE0AAADcAQAAIAAAANAAAAAkAAAABAAAANEAAADSAAAAKAAAAAQAAADTAAAATnVsRXJyb3LUAAAABAAAAAQAAADVAAAA1AAAAAQAAAAEAAAA1gAAAFV0ZjhFcnJvcnZhbGlkX3VwX3RvZXJyb3JfbGVuAAAA1AAAAAQAAAAEAAAA1wAAAESGEAAAAAAAT3BlcmF0aW9uIEZhaWxlZEVycm9ya2luZAAAANQAAAAEAAAABAAAANgAAABTZW5kRXJyb3JQb2lzb25FcnJvctkAAAAMAAAABAAAANoAAADbAAAAHgAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkA3AAAAAAAAAABAAAA3QAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwBEhxAASwAAADMKAAAOAAAARXJyb3IKClN0YWNrOgoKCgoAAABJbnZhbGlkIHNpemUgOiBzaXplcyBtdXN0IGZpdCBpbiBhIHVzaXplICgwIHRvICm0hxAADQAAAMGHEAAiAAAA44cQAAEAAAD/////c3RyaW5nIGlzIG5vdCB2YWxpZCB1dGY4aW52YWxpZCB1OCB3aGlsZSBkZWNvZGluZyBib29sY2hhciBpcyBub3QgdmFsaWR0YWcgZm9yIGVudW0gaXMgbm90IHZhbGlkQmluY29kZSBkb2Vzbid0IHN1cHBvcnQgc2VyZGU6OkRlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemVfYW55dGhlIHNpemUgbGltaXQgaGFzIGJlZW4gcmVhY2hlZEJpbmNvZGUgY2FuIG9ubHkgZW5jb2RlIHNlcXVlbmNlcyBhbmQgbWFwcyB0aGF0IGhhdmUgYSBrbm93YWJsZSBzaXplIGFoZWFkIG9mIHRpbWVpbyBlcnJvcjogAA2JEAAKAAAAOiAAALSHEAAAAAAAIIkQAAIAAAAsIGV4cGVjdGVkIDAgb3IgMSwgZm91bmQgAAAAtIcQAAAAAAA0iRAAGQAAALSHEAAAAAAALCBmb3VuZCC0hxAAAAAAAGiJEAAIAAAAQmluY29kZSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBzZXJkZTo6RGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZV9hbnkgbWV0aG9kgIkQAEgAAABjYW5ub3QgYWNjZXNzIGEgVGhyZWFkIExvY2FsIFN0b3JhZ2UgdmFsdWUgZHVyaW5nIG9yIGFmdGVyIGRlc3RydWN0aW9uAADiAAAAAAAAAAEAAAAOAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwAoihAATwAAAPYAAAAaAAAARXJyb3Jvc19lcnJvcgAAAOMAAAAEAAAABAAAAOQAAABkZXNjcmlwdGlvbgDjAAAACAAAAAQAAADlAAAAaW50ZXJuYWxfY29kZQAAAOMAAAAEAAAABAAAAOYAAAB1bmtub3duX2NvZGVnZXRyYW5kb206IHRoaXMgdGFyZ2V0IGlzIG5vdCBzdXBwb3J0ZWRlcnJubzogZGlkIG5vdCByZXR1cm4gYSBwb3NpdGl2ZSB2YWx1ZVNlY1JhbmRvbUNvcHlCeXRlczogaU9TIFNlY3VyaXR5IGZyYW1ld29yayBmYWlsdXJlUnRsR2VuUmFuZG9tOiBXaW5kb3dzIHN5c3RlbSBmdW5jdGlvbiBmYWlsdXJlUkRSQU5EOiBmYWlsZWQgbXVsdGlwbGUgdGltZXM6IENQVSBpc3N1ZSBsaWtlbHlSRFJBTkQ6IGluc3RydWN0aW9uIG5vdCBzdXBwb3J0ZWRXZWIgQ3J5cHRvIEFQSSBpcyB1bmF2YWlsYWJsZUNhbGxpbmcgV2ViIEFQSSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzIGZhaWxlZHJhbmRTZWN1cmU6IFZ4V29ya3MgUk5HIG1vZHVsZSBpcyBub3QgaW5pdGlhbGl6ZWROb2RlLmpzIGNyeXB0byBDb21tb25KUyBtb2R1bGUgaXMgdW5hdmFpbGFibGVDYWxsaW5nIE5vZGUuanMgQVBJIGNyeXB0by5yYW5kb21GaWxsU3luYyBmYWlsZWROb2RlLmpzIEVTIG1vZHVsZXMgYXJlIG5vdCBkaXJlY3RseSBzdXBwb3J0ZWQsIHNlZSBodHRwczovL2RvY3MucnMvZ2V0cmFuZG9tI25vZGVqcy1lcy1tb2R1bGUtc3VwcG9ydAAAAOcAAABjcnlwdG8AACcAAAAmAAAAAAAAADIAAAAtAAAALwAAACEAAAAdAAAALQBB5JrCAAszMQAAAC0AAAAwAAAAZQAAAPCKEAAXixAAAAAAAD2LEABvixAAnIsQAMuLEADsixAACYwQAEGgm8IAC8UFNowQAGeMEACUjBAAxIwQAOgAAAByZXR1cm4gdGhpc2Nhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24AAADpAAAAAAAAAAEAAAAOAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwAYjhAATwAAAPYAAAAaAAAAVHJpZWQgdG8gc2hyaW5rIHRvIGEgbGFyZ2VyIGNhcGFjaXR5eI4QACQAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjLnJzpI4QAEwAAADPAQAACQAAAGNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkSnNWYWx1ZSgpADKPEAAIAAAAOo8QAAEAAABudWxsIHBvaW50ZXIgcGFzc2VkIHRvIHJ1c3RyZWN1cnNpdmUgdXNlIG9mIGFuIG9iamVjdCBkZXRlY3RlZCB3aGljaCB3b3VsZCBsZWFkIHRvIHVuc2FmZSBhbGlhc2luZyBpbiBydXN0AABUcmllZCB0byBzaHJpbmsgdG8gYSBsYXJnZXIgY2FwYWNpdHm4jxAAJAAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMucnPkjxAATAAAAM8BAAAJAAAA9wAAAAwAAAAEAAAA+AAAAPkAAAAeAAAA+wAAAAQAAAAEAAAA/ABBgKHCAAvWHmNvbmNyZXRlLWNzcHJuZy9zcmMvZ2VuZXJhdG9ycy9hZXNfY3RyL3N0YXRlcy5yc4CQEAAwAAAAJgAAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBzdGFydF9pbmRleCA8IGJvdW5kX2luZGV4Y29uY3JldGUtY3Nwcm5nL3NyYy9nZW5lcmF0b3JzL2Flc19jdHIvZ2VuZXJpYy5yc+uQEAAxAAAASQAAAAkAAABBZXNJbmRlePsAAAAEAAAABAAAAP0AAABCeXRlSW5kZXgAAAD7AAAABAAAAAQAAAAlAAAAVGFibGVJbmRleGFlc19pbmRleAD+AAAAEAAAAAgAAAD/AAAAYnl0ZV9pbmRleAAA+wAAAAQAAAAEAAAAAAEAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Flcy0wLjguMi9zcmMvc29mdC9maXhzbGljZTMyLnJzAKCREABfAAAAiQQAABIAAACgkRAAXwAAAIkEAAA9AAAAoJEQAF8AAAAUBQAAIgAAAKCREABfAAAAFAUAAAkAAAABAQAACAAAAAQAAAACAQAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQADAQAACAAAAAQAAAAIAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmF5b24tY29yZS0xLjEyLjEvc3JjL2xhdGNoLnJzAAAAjJIQAF0AAAALAQAAKgAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JheW9uLWNvcmUtMS4xMi4xL3NyYy9yZWdpc3RyeS5yc1RoZSBnbG9iYWwgdGhyZWFkIHBvb2wgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkLvySEABgAAAAqAAAAAoAAAD8khAAYAAAAMAAAAAWAAAA/JIQAGAAAAArAQAANgAAAAQBAAD8khAAYAAAADIDAAAvAAAA/JIQAGAAAAA4AwAAKgAAAPySEABgAAAAjwMAACYAAABUaHJlYWRQb29sQnVpbGRFcnJvcmtpbmQFAQAABAAAAAQAAAAGAQAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY3Jvc3NiZWFtLWVwb2NoLTAuOS4xNC9zcmMvaW50ZXJuYWwucnMAAAAYlBAAZQAAAIIBAAA5AAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZXRocmVhZCBuYW1lIG1heSBub3QgY29udGFpbiBpbnRlcmlvciBudWxsIGJ5dGVzAAAHAQAAQAAAAAQAAAAIAQAACQEAABAAAAAEAAAACgEAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbW9kLnJzAAAADJUQAE0AAADcAQAAIAAAAE51bEVycm9yCwEAAAQAAAAEAAAADAEAAAsBAAAEAAAABAAAANYAAABvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtlJUQACgAAAAkAAAAR2xvYmFsUG9vbEFscmVhZHlJbml0aWFsaXplZEN1cnJlbnRUaHJlYWRBbHJlYWR5SW5Qb29sSU9FcnJvcgAAAA0BAAAEAAAABAAAACIAAAAAY2Fubm90IHJlY3Vyc2l2ZWx5IGFjcXVpcmUgbXV0ZXgAAAAZlhAAIAAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy9zeXMvd2FzbS8uLi91bnN1cHBvcnRlZC9sb2Nrcy9tdXRleC5ycwAARJYQAGYAAAAUAAAACQAAAGNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24AAA4BAAAAAAAAAQAAAA4AAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzABSXEABPAAAA9gAAABoAAABhc3NlcnRpb24gZmFpbGVkOiB0LmdldCgpLmVxKCYoc2VsZiBhcyAqY29uc3QgXykpL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmF5b24tY29yZS0xLjEyLjEvc3JjL3JlZ2lzdHJ5LnJzAAAApZcQAGAAAACtAgAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IHQuZ2V0KCkuaXNfbnVsbCgpAKWXEABgAAAAwAIAAA0AAACllxAAYAAAAHUDAAAjAAAADwEAAAQAAAAEAAAAJAAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAEAEAAAgAAAAEAAAACAAAAGFzc2VydGlvbiBmYWlsZWQ6IG5fdGhyZWFkcyA8PSBUSFJFQURTX01BWC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JheW9uLWNvcmUtMS4xMi4xL3NyYy9zbGVlcC9tb2QucnMA0pgQAGEAAAA+AAAACQAAANKYEABhAAAAgwAAADQAAADSmBAAYQAAAIQAAAA8AAAA0pgQAGEAAAC8AAAAQwAAANKYEABhAAAAIgEAADQAAADSmBAAYQAAACQBAAA8AAAAT25jZSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAACUmRAAKgAAAG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1heSBub3QgYmUgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5yJkQADgAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3N5bmMvb25jZS5ycwAzmhAATAAAAJUAAAAyAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQASAQAACAAAAAQAAAAIAAAAUG9pc29uRXJyb3IvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yYXlvbi1jb3JlLTEuMTIuMS9zcmMvbGF0Y2gucnPXmhAAXQAAAPgAAAAnAAAA15oQAF0AAAD6AAAAKAAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JheW9uLWNvcmUtMS4xMi4xL3NyYy9yZWdpc3RyeS5yc1SbEABgAAAAdQMAACMAAABPbmNlIGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAAMSbEAAqAAAAb25lLXRpbWUgaW5pdGlhbGl6YXRpb24gbWF5IG5vdCBiZSBwZXJmb3JtZWQgcmVjdXJzaXZlbHn4mxAAOAAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L3N0ZC9zcmMvc3luYy9vbmNlLnJzAGOcEABMAAAAlQAAADIAAAABAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY3Jvc3NiZWFtLWVwb2NoLTAuOS4xNC9zcmMvc3luYy9saXN0LnJzAADEnBAAZgAAAOIAAAARAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY3Jvc3NiZWFtLWVwb2NoLTAuOS4xNC9zcmMvc3luYy9vbmNlX2xvY2sucnMAPJ0QAGsAAABOAAAAEwAAAAAAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL3N5bmMvYXRvbWljLnJzdGhlcmUgaXMgbm8gc3VjaCB0aGluZyBhcyBhIHJlbGVhc2UgZmFpbHVyZSBvcmRlcmluZwALnhAANAAAALydEABPAAAAMA0AAB0AAAB0aGVyZSBpcyBubyBzdWNoIHRoaW5nIGFzIGFuIGFjcXVpcmUtcmVsZWFzZSBmYWlsdXJlIG9yZGVyaW5nAAAAWJ4QAD0AAAC8nRAATwAAAC8NAAAcAAAAAAAAAHVuYWxpZ25lZCBwb2ludGVyAAAAtJ4QABEAAAAvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9jcm9zc2JlYW0tZXBvY2gtMC45LjE0L3NyYy9hdG9taWMucnMA0J4QAGMAAABxAAAABQAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9jcm9zc2JlYW0tZXBvY2gtMC45LjE0L3NyYy9pbnRlcm5hbC5ycxUBAEHkv8IAC+MCb58QAGUAAAB5AAAALAAAAG+fEABlAAAAggEAADkAAAAWAQAABAAAAAQAAAAXAQAAFgEAAAQAAAAEAAAAJQAAAGNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24AABgBAAAAAAAAAQAAAA4AAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAHygEABPAAAA9gAAABoAAABhc3NlcnRpb24gZmFpbGVkOiBtaWQgPD0gc2VsZi5sZW4oKS9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvY29yZS9zcmMvdGltZS5ycwBB0MLCAAvhIWF0dGVtcHQgdG8gZGl2aWRlIGJ5IHplcm9vdmVyZmxvdyBp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AFwAAADIAAAAEQAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2NvbmNyZXRlLWZmdC0wLjQuMS9zcmMvbGliLnJziKgQAFwAAACKAAAACgAAAIioEABcAAAAxQAAABEAAACIqBAAXAAAAMYAAAARAAAAiKgQAFwAAADHAAAAEQAAAIioEABcAAAAyAAAABEAAAAvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9jb25jcmV0ZS1mZnQtMC40LjEvc3JjL2xpYi5yczSpEABcAAAAigAAAAoAAAA0qRAAXAAAAMUAAAARAAAANKkQAFwAAADGAAAAEQAAADSpEABcAAAAxwAAABEAAAA0qRAAXAAAAMgAAAARAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY29uY3JldGUtZmZ0LTAuNC4xL3NyYy9saWIucnPgqRAAXAAAAIoAAAAKAAAA4KkQAFwAAADFAAAAEQAAAOCpEABcAAAAxgAAABEAAADgqRAAXAAAAMcAAAARAAAA4KkQAFwAAADIAAAAEQAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2NvbmNyZXRlLWZmdC0wLjQuMS9zcmMvbGliLnJzjKoQAFwAAACKAAAACgAAAIyqEABcAAAAxQAAABEAAACMqhAAXAAAAMYAAAARAAAAjKoQAFwAAADHAAAAEQAAAIyqEABcAAAAyAAAABEAAAAvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9jb25jcmV0ZS1mZnQtMC40LjEvc3JjL2xpYi5yczirEABcAAAAigAAAAoAAAA4qxAAXAAAAMUAAAARAAAAOKsQAFwAAADGAAAAEQAAADirEABcAAAAxwAAABEAAAA4qxAAXAAAAMgAAAARAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY29uY3JldGUtZmZ0LTAuNC4xL3NyYy9saWIucnPkqxAAXAAAAIoAAAAKAAAA5KsQAFwAAADFAAAAEQAAAOSrEABcAAAAxgAAABEAAADkqxAAXAAAAMcAAAARAAAA5KsQAFwAAADIAAAAEQAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2NvbmNyZXRlLWZmdC0wLjQuMS9zcmMvbGliLnJzkKwQAFwAAACKAAAACgAAAJCsEABcAAAAxQAAABEAAACQrBAAXAAAAMYAAAARAAAAkKwQAFwAAADHAAAAEQAAAJCsEABcAAAAyAAAABEAAABjYW4gbm90IGNvbnZlcnQgZmxvYXQgc2Vjb25kcyB0byBEdXJhdGlvbjogdmFsdWUgaXMgbmVnYXRpdmVjYW4gbm90IGNvbnZlcnQgZmxvYXQgc2Vjb25kcyB0byBEdXJhdGlvbjogdmFsdWUgaXMgZWl0aGVyIHRvbyBiaWcgb3IgTmFOL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9jb3JlL3NyYy90aW1lLnJzAAAAwa0QAEgAAAD6AgAAFwAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUKCmJ1ZmZlciBpcyBub3QgbGFyZ2UgZW5vdWdoIHRvIGFsbG9jYXRlIGFuIGFycmF5IG9mIHR5cGUgYGAgb2YgdGhlIHJlcXVlc3RlZCBsZW5ndGg6CiAtIHJlbWFpbmluZyBidWZmZXIgbGVuZ3RoIChhZnRlciBhZGp1c3RpbmcgZm9yIGFsaWdubWVudCk6ICwKIC0gcmVxdWVzdGVkIGFycmF5IGxlbmd0aDogICggYnl0ZXMpLAoAAABIrhAAOgAAAIKuEABXAAAA2a4QAB0AAAD2rhAAAgAAAPiuEAAJAAAACmJ1ZmZlciBpcyBub3QgbGFyZ2UgZW5vdWdoIHRvIGFjY29tb2RhdGUgdGhlIHJlcXVlc3RlZCBhbGlnbm1lbnQKIC0gYnVmZmVyIGxlbmd0aDogCiAtIHJlcXVlc3RlZCBhbGlnbm1lbnQ6IAogLSBieXRlIG9mZnNldCBmb3IgYWxpZ25tZW50OiAsrxAAVAAAAICvEAAZAAAAma8QAB8AAABHrhAAAQAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2NvbmNyZXRlLWZmdC0wLjQuMS9zcmMvb3JkZXJlZC5yc9ivEABgAAAARwAAACIAAABhc3NlcnRpb24gZmFpbGVkOiBuLmlzX3Bvd2VyX29mX3R3bygpAAAA2K8QAGAAAABqAAAABQAAANivEABgAAAAcAAAACMAAADYrxAAYAAAAHEAAAAiAAAA2K8QAGAAAABzAAAAJgAAANivEABgAAAAdwAAAB0AAADYrxAAYAAAALcAAAAKAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZdivEABgAAAAhgAAABIAAABudW1fY29tcGxleDo6Q29tcGxleDxmNjQ+AAAAJLEQAAAAAACnAQAABAAAAAQAAACoAQAAPgAAACSxEAAAAAAAPLEQAAEAAAAvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9ieXRlbXVjay0xLjE2LjAvc3JjL2ludGVybmFsLnJzAABQsRAAXgAAACAAAAADAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY29uY3JldGUtZmZ0LTAuNC4xL3NyYy9mZnRfc2ltZC5ycwAAAMCxEABhAAAALwEAAA4AQcDkwgALoiVhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvAAAAwLEQAGEAAAA7AQAADQAAAMCxEABhAAAAPAEAAA0AAADAsRAAYQAAAD0BAAANAAAAwLEQAGEAAAA+AQAADQAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2R5bi1zdGFjay0wLjkuMC9zcmMvc3RhY2tfcmVxLnJzAJyyEABfAAAAFAAAABEAAABjYXBhY2l0eSBvdmVyZmxvdwAAAAyzEAARAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYWxpZ25lZC12ZWMtMC41LjAvc3JjL3Jhdy5ycwAosxAAWwAAACUAAAAFAAAAYnl0ZSBhcnJheWJvb2xlYW4gYGCesxAACQAAAKezEAABAAAAaW50ZWdlciBgAAAAuLMQAAkAAACnsxAAAQAAAGZsb2F0aW5nIHBvaW50IGDUsxAAEAAAAKezEAABAAAAY2hhcmFjdGVyIGAA9LMQAAsAAACnsxAAAQAAAHN0cmluZyAAELQQAAcAAACUsxAACgAAAHVuaXQgdmFsdWUAACi0EAAKAAAAT3B0aW9uIHZhbHVlPLQQAAwAAABuZXd0eXBlIHN0cnVjdAAAULQQAA4AAABzZXF1ZW5jZWi0EAAIAAAAbWFwAHi0EAADAAAAZW51bYS0EAAEAAAAdW5pdCB2YXJpYW50kLQQAAwAAABuZXd0eXBlIHZhcmlhbnQApLQQAA8AAAB0dXBsZSB2YXJpYW50AAAAvLQQAA0AAABzdHJ1Y3QgdmFyaWFudAAA1LQQAA4AAAB1c2l6ZQAAAPS0EAAAAAAAVGFyZ2V0QWxpZ25tZW50R3JlYXRlckFuZElucHV0Tm90QWxpZ25lZE91dHB1dFNsaWNlV291bGRIYXZlU2xvcFNpemVNaXNtYXRjaEFsaWdubWVudE1pc21hdGNoAAAAKAAAABgAAAAMAAAAEQAAAPy0EAAktRAAPLUQAEi1EAByZWVudHJhbnQgaW5pdAAAfLUQAA4AAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL2NlbGwvb25jZS5ycwAAAJS1EABNAAAA2QAAAEIAAABvdmVyZmxvdyBpbiBEdXJhdGlvbjo6bmV3AAAA9LUQABkAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL3RpbWUucnMYthAASAAAAMoAAAAVAAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZQCyAQAADAAAAAQAAACzAQAAtAEAALUBAAB0b28gbWFueSBydW5uaW5nIHRocmVhZHMgaW4gdGhyZWFkIHNjb3BltLYQACgAAABsaWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL3Njb3BlZC5yc+S2EAAgAAAAMwAAAA0AAABBY2Nlc3NFcnJvcmxpYnJhcnkvc3RkL3NyYy90aHJlYWQvbW9kLnJzZmFpbGVkIHRvIGdlbmVyYXRlIHVuaXF1ZSB0aHJlYWQgSUQ6IGJpdHNwYWNlIGV4aGF1c3RlZAA8txAANwAAAB+3EAAdAAAAmAQAAA0AAABvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtjLcQACgAAAAkAAAAfLUQAAAAAABlbnRpdHkgbm90IGZvdW5kcGVybWlzc2lvbiBkZW5pZWRjb25uZWN0aW9uIHJlZnVzZWRjb25uZWN0aW9uIHJlc2V0aG9zdCB1bnJlYWNoYWJsZW5ldHdvcmsgdW5yZWFjaGFibGVjb25uZWN0aW9uIGFib3J0ZWRub3QgY29ubmVjdGVkYWRkcmVzcyBpbiB1c2VhZGRyZXNzIG5vdCBhdmFpbGFibGVuZXR3b3JrIGRvd25icm9rZW4gcGlwZWVudGl0eSBhbHJlYWR5IGV4aXN0c29wZXJhdGlvbiB3b3VsZCBibG9ja25vdCBhIGRpcmVjdG9yeWlzIGEgZGlyZWN0b3J5ZGlyZWN0b3J5IG5vdCBlbXB0eXJlYWQtb25seSBmaWxlc3lzdGVtIG9yIHN0b3JhZ2UgbWVkaXVtZmlsZXN5c3RlbSBsb29wIG9yIGluZGlyZWN0aW9uIGxpbWl0IChlLmcuIHN5bWxpbmsgbG9vcClzdGFsZSBuZXR3b3JrIGZpbGUgaGFuZGxlaW52YWxpZCBpbnB1dCBwYXJhbWV0ZXJpbnZhbGlkIGRhdGF0aW1lZCBvdXR3cml0ZSB6ZXJvbm8gc3RvcmFnZSBzcGFjZXNlZWsgb24gdW5zZWVrYWJsZSBmaWxlZmlsZXN5c3RlbSBxdW90YSBleGNlZWRlZGZpbGUgdG9vIGxhcmdlcmVzb3VyY2UgYnVzeWV4ZWN1dGFibGUgZmlsZSBidXN5ZGVhZGxvY2tjcm9zcy1kZXZpY2UgbGluayBvciByZW5hbWV0b28gbWFueSBsaW5rc2ludmFsaWQgZmlsZW5hbWVhcmd1bWVudCBsaXN0IHRvbyBsb25nb3BlcmF0aW9uIGludGVycnVwdGVkdW5zdXBwb3J0ZWR1bmV4cGVjdGVkIGVuZCBvZiBmaWxlb3V0IG9mIG1lbW9yeW90aGVyIGVycm9ydW5jYXRlZ29yaXplZCBlcnJvck9zY29kZQC2AQAABAAAAAQAAAC3AQAAa2luZLgBAAABAAAAAQAAALkBAABtZXNzYWdlALIBAAAMAAAABAAAALoBAABLaW5kRXJyb3IAAAC2AQAACAAAAAQAAAC7AQAAQ3VzdG9tZXJyb3IAtgEAAAQAAAAEAAAAvAEAACAob3MgZXJyb3IgKXy1EAAAAAAAMLsQAAsAAAA7uxAAAQAAAG1lbW9yeSBhbGxvY2F0aW9uIG9mICBieXRlcyBmYWlsZWQAAFS7EAAVAAAAabsQAA0AAABsaWJyYXJ5L3N0ZC9zcmMvYWxsb2MucnOIuxAAGAAAAGIBAAAJAAAAY2Fubm90IG1vZGlmeSB0aGUgcGFuaWMgaG9vayBmcm9tIGEgcGFuaWNraW5nIHRocmVhZLC7EAA0AAAAbGlicmFyeS9zdGQvc3JjL3Bhbmlja2luZy5yc+y7EAAcAAAAhwAAAAkAAADsuxAAHAAAAIQCAAAeAAAAsgEAAAwAAAAEAAAAvQEAALYBAAAIAAAABAAAAL4BAAC2AQAACAAAAAQAAAC/AQAAwAEAAMEBAAAQAAAABAAAAMIBAADDAQAAxAEAAAAAAAABAAAAxQEAAMYBAAAIAAAABAAAAMcBAADIAQAAxAEAAAAAAAABAAAAyQEAAE5vdEZvdW5kUGVybWlzc2lvbkRlbmllZENvbm5lY3Rpb25SZWZ1c2VkQ29ubmVjdGlvblJlc2V0SG9zdFVucmVhY2hhYmxlTmV0d29ya1VucmVhY2hhYmxlQ29ubmVjdGlvbkFib3J0ZWROb3RDb25uZWN0ZWRBZGRySW5Vc2VBZGRyTm90QXZhaWxhYmxlTmV0d29ya0Rvd25Ccm9rZW5QaXBlQWxyZWFkeUV4aXN0c1dvdWxkQmxvY2tOb3RBRGlyZWN0b3J5SXNBRGlyZWN0b3J5RGlyZWN0b3J5Tm90RW1wdHlSZWFkT25seUZpbGVzeXN0ZW1GaWxlc3lzdGVtTG9vcFN0YWxlTmV0d29ya0ZpbGVIYW5kbGVJbnZhbGlkSW5wdXRJbnZhbGlkRGF0YVRpbWVkT3V0V3JpdGVaZXJvU3RvcmFnZUZ1bGxOb3RTZWVrYWJsZUZpbGVzeXN0ZW1RdW90YUV4Y2VlZGVkRmlsZVRvb0xhcmdlUmVzb3VyY2VCdXN5RXhlY3V0YWJsZUZpbGVCdXN5RGVhZGxvY2tDcm9zc2VzRGV2aWNlc1Rvb01hbnlMaW5rc0ludmFsaWRGaWxlbmFtZUFyZ3VtZW50TGlzdFRvb0xvbmdJbnRlcnJ1cHRlZFVuc3VwcG9ydGVkVW5leHBlY3RlZEVvZk91dE9mTWVtb3J5T3RoZXJVbmNhdGVnb3JpemVkb3BlcmF0aW9uIHN1Y2Nlc3NmdWx0aW1lIG5vdCBpbXBsZW1lbnRlZCBvbiB0aGlzIHBsYXRmb3JtANa+EAAlAAAAbGlicmFyeS9zdGQvc3JjL3N5cy93YXNtLy4uL3Vuc3VwcG9ydGVkL3RpbWUucnMABL8QAC8AAAANAAAACQAAAGNvbmR2YXIgd2FpdCBub3Qgc3VwcG9ydGVkAABEvxAAGgAAAGxpYnJhcnkvc3RkL3NyYy9zeXMvd2FzbS8uLi91bnN1cHBvcnRlZC9sb2Nrcy9jb25kdmFyLnJzaL8QADgAAAAUAAAACQAAABAAAAARAAAAEgAAABAAAAAQAAAAEwAAABIAAAANAAAADgAAABUAAAAMAAAACwAAABUAAAAVAAAADwAAAA4AAAATAAAAJgAAADgAAAAZAAAAFwAAAAwAAAAJAAAACgAAABAAAAAXAAAAGQAAAA4AAAANAAAAFAAAAAgAAAAbAAAADgAAABAAAAAWAAAAFQAAAAsAAAAWAAAADQAAAAsAAAATAAAAyLcQANi3EADptxAA+7cQAAu4EAAbuBAALrgQAEC4EABNuBAAW7gQAHC4EAB8uBAAh7gQAJy4EACxuBAAwLgQAM64EADhuBAAB7kQAD+5EABYuRAAb7kQAHu5EACEuRAAjrkQAJ65EAC1uRAAzrkQANy5EADpuRAA/bkQAAW6EAAguhAALroQAD66EABUuhAAaboQAHS6EACKuhAAl7oQAKK6EAAIAAAAEAAAABEAAAAPAAAADwAAABIAAAARAAAADAAAAAkAAAAQ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', imports)} + +let initialized; +const initFhevm = async () => { + if (!initialized) { + try { + initialized = await __wbg_init(wasm); + } + catch (_) { + initialized = await __wbg_init(wasm()); + } + } + return initialized; +}; +const asyncInitFhevm = async () => { + try { + await initFhevm(); + } + catch (err) { + throw new Error(`Error initializing FhenixClient ${err}`); + } +}; + +const PUBLIC_KEY_LENGTH_MIN = 15000; + +/* eslint-disable @typescript-eslint/no-explicit-any */ +const _sdkStore = createStore(() => ({ + fheKeysInitialized: false, + securityZones: [0], + fheKeys: {}, + accessRequirements: { + contracts: [], + projects: [], + }, + coFheUrl: undefined, + providerInitialized: false, + provider: undefined, + chainId: undefined, + signerInitialized: false, + signer: undefined, + account: undefined, +})); +// Store getters / setters +const _store_getFheKey = (chainId, securityZone = 0) => { + if (chainId == null || securityZone == null) + return undefined; + const serialized = _sdkStore.getState().fheKeys[chainId]?.[securityZone]; + if (serialized == null) + return undefined; + return TfheCompactPublicKey.deserialize(serialized); +}; +const _store_getConnectedChainFheKey = (securityZone = 0) => { + const state = _sdkStore.getState(); + if (securityZone == null) + return undefined; + if (state.chainId == null) + return undefined; + const serialized = state.fheKeys[state.chainId]?.[securityZone]; + if (serialized == null) + return undefined; + return TfheCompactPublicKey.deserialize(serialized); +}; +const _store_setFheKey = (chainId, securityZone, fheKey) => { + if (chainId == null || securityZone == null) + return; + _sdkStore.setState(produce((state) => { + if (state.fheKeys[chainId] == null) + state.fheKeys[chainId] = {}; + state.fheKeys[chainId][securityZone] = fheKey?.serialize(); + })); +}; +const getChainIdFromProvider = async (provider) => { + var chainId = null; + try { + chainId = await provider.getChainId(); + } + catch (err) { + const network = await provider.getNetwork(); + chainId = network.chainId; + } + if (chainId == null) + throw new Error("sdk :: getChainIdFromProvider :: provider.getChainId returned a null result, ensure that your provider is connected to a network"); + return chainId; +}; +// External functionality +const _store_initialize = async (params) => { + const { provider, signer, securityZones = [0], contracts: contractRequirements = [], projects: projectRequirements = [], coFheUrl = undefined, } = params; + _sdkStore.setState({ + providerInitialized: false, + signerInitialized: false, + accessRequirements: { + contracts: contractRequirements, + projects: projectRequirements, + }, + coFheUrl, + }); + // PROVIDER + // Fetch chain Id from provider + const chainId = await getChainIdFromProvider(provider); + const chainIdChanged = chainId != null && chainId !== _sdkStore.getState().chainId; + if (chainId != null && provider != null) { + _sdkStore.setState({ providerInitialized: true, provider, chainId }); + } + // SIGNER + // Account is fetched and stored here, the `account` field in the store is used to index which permits belong to which users + // In sdk functions, `state.account != null` is validated, this is a check to ensure that a valid signer has been provided + // which is necessary to interact with permits + const account = await signer?.getAddress(); + if (account != null && signer != null) { + _sdkStore.setState({ signerInitialized: true, account, signer }); + } + else { + _sdkStore.setState({ + signerInitialized: false, + account: undefined, + signer: undefined, + }); + } + // If chainId, securityZones, or CoFhe enabled changes, update the store and update fheKeys for re-initialization + const securityZonesChanged = securityZones !== _sdkStore.getState().securityZones; + if (chainIdChanged || securityZonesChanged) { + _sdkStore.setState({ + securityZones, + fheKeysInitialized: false, + }); + } + // Fetch FHE keys (skipped if hardhat) + if (!chainIsHardhat(chainId) && !_sdkStore.getState().fheKeysInitialized) { + await Promise.all(securityZones.map((securityZone) => _store_fetchFheKey(chainId, securityZone, true))); + } + _sdkStore.setState({ fheKeysInitialized: true }); +}; +/** + * Retrieves the FHE public key from the provider. + * If the key already exists in the store it is returned, else it is fetched, stored, and returned + * @param {string} chainId - The chain to fetch the FHE key for, if no chainId provided, undefined is returned + * @param securityZone - The security zone for which to retrieve the key (default 0). + * @returns {Promise} - The retrieved public key. + */ +const _store_fetchFheKey = async (chainId, securityZone = 0, forceFetch = false) => { + const storedKey = _store_getFheKey(chainId, securityZone); + if (storedKey != null && !forceFetch) + return storedKey; + const coFheUrl = _sdkStore.getState().coFheUrl; + if (coFheUrl == null || typeof coFheUrl !== "string") { + throw new Error("Error initializing fhenixjs; coFheUrl invalid, ensure it is set in `fhenixsdk.initialize`"); + } + let publicKey = undefined; + // Fetch publicKey from CoFhe + try { + // TODO: misspelling? + const res = await fetch(`${coFheUrl}/GetNetworkPublickKey`, { + method: "POST", + body: JSON.stringify({ + SecurityZone: securityZone, + }), + }); + const data = await res.json(); + publicKey = `0x${data.securityZone}`; + } + catch (err) { + throw new Error(`Error initializing fhenixjs; fetching FHE publicKey from CoFHE failed with error ${err}`); + } + if (publicKey == null || typeof publicKey !== "string") { + throw new Error(`Error initializing fhenixjs; FHE publicKey fetched from CoFHE invalid: not a string`); + } + if (publicKey === "0x") { + throw new Error("Error initializing fhenixjs; provided chain is not FHE enabled, no FHE publicKey found"); + } + if (publicKey.length < PUBLIC_KEY_LENGTH_MIN) { + throw new Error(`Error initializing fhenixjs; got shorter than expected FHE publicKey: ${publicKey.length}. Expected length >= ${PUBLIC_KEY_LENGTH_MIN}`); + } + const buff = fromHexString(publicKey); + try { + const key = TfheCompactPublicKey.deserialize(buff); + _store_setFheKey(chainId, securityZone, key); + return key; + } + catch (err) { + throw new Error(`Error deserializing public key ${err}`); + } +}; + +/** + * Encrypts a Uint8 value using TFHE (Fast Fully Homomorphic Encryption over the Torus). + * @param {boolean} value - The Boolean value to encrypt. + * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. + * @param securityZone - The security zone to encrypt the value on. + * @returns {EncryptedBool} - The encrypted value serialized as Uint8Array. + */ +const encrypt_bool = (value, publicKey, securityZone = 0) => { + const encrypted = CompactFheBool.encrypt_with_compact_public_key(value, publicKey); + return { + data: encrypted.serialize(), + securityZone, + }; +}; +/** + * Encrypts a Uint8 value using TFHE (Fast Fully Homomorphic Encryption over the Torus). + * @param {number} value - The Uint8 value to encrypt. + * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. + * @param securityZone - The security zone to encrypt the value on. + * @returns {EncryptedUint8} - The encrypted value serialized as Uint8Array. + */ +const encrypt_uint8 = (value, publicKey, securityZone = 0) => { + const encrypted = CompactFheUint8.encrypt_with_compact_public_key(value, publicKey); + return { + data: encrypted.serialize(), + securityZone, + }; +}; +/** + * Encrypts a Uint16 value using TFHE. + * @param {number} value - The Uint16 value to encrypt. + * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. + * @param securityZone - The security zone to encrypt the value on. + * @returns {EncryptedUint16} - The encrypted value serialized as Uint8Array. + */ +const encrypt_uint16 = (value, publicKey, securityZone = 0) => { + const encrypted = CompactFheUint16.encrypt_with_compact_public_key(value, publicKey); + return { + data: encrypted.serialize(), + securityZone, + }; +}; +/** + * Encrypts a Uint32 value using TFHE. + * @param {number} value - The Uint32 value to encrypt. + * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. + * @param securityZone - The security zone to encrypt the value on. + * @returns {EncryptedUint32} - The encrypted value serialized as Uint8Array. + */ +const encrypt_uint32 = (value, publicKey, securityZone = 0) => { + const encrypted = CompactFheUint32.encrypt_with_compact_public_key(value, publicKey); + return { + data: encrypted.serialize(), + securityZone, + }; +}; +/** + * Encrypts a Uint64 value using TFHE. + * @param {number} value - The Uint64 value to encrypt. + * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. + * @param securityZone - The security zone to encrypt the value on. + * @returns {EncryptedUint64} - The encrypted value serialized as Uint8Array. + */ +const encrypt_uint64 = (value, publicKey, securityZone = 0) => { + if (typeof value === "string") { + value = toBigInt(fromHexString(value)); + } + else { + value = value; + } + const encrypted = CompactFheUint64.encrypt_with_compact_public_key(value, publicKey); + return { + data: encrypted.serialize(), + securityZone, + }; +}; +/** + * Encrypts a Uint128 value using TFHE. + * @param {bigint} value - The Uint128 value to encrypt. + * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. + * @param securityZone - The security zone to encrypt the value on. + * @returns {EncryptedUint128} - The encrypted value serialized as Uint8Array. + */ +const encrypt_uint128 = (value, publicKey, securityZone = 0) => { + if (typeof value === "string") { + value = toBigInt(fromHexString(value)); + } + else { + value = value; + } + const encrypted = CompactFheUint128.encrypt_with_compact_public_key(value, publicKey); + return { + data: encrypted.serialize(), + securityZone, + }; +}; +/** + * Encrypts a Uint256 value using TFHE. + * @param {bigint} value - The Uint256 value to encrypt. + * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. + * @param securityZone - The security zone to encrypt the value on. + * @returns {EncryptedUint256} - The encrypted value serialized as Uint8Array. + */ +const encrypt_uint256 = (value, publicKey, securityZone = 0) => { + if (typeof value === "string") { + value = toBigInt(fromHexString(value)); + } + else { + value = value; + } + const encrypted = CompactFheUint256.encrypt_with_compact_public_key(value, publicKey); + return { + data: encrypted.serialize(), + securityZone, + }; +}; +/** + * Encrypts a Address value using TFHE. + * @param {bigint} value - The Address (Uint160) value to encrypt. + * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. + * @param securityZone - The security zone to encrypt the address on. + * @returns {EncryptedAddress} - The encrypted value serialized as Uint8Array. + */ +const encrypt_address = (value, publicKey, securityZone = 0) => { + if (typeof value === "string") { + value = toBigInt(fromHexString(value)); + } + else { + value = value; + } + const encrypted = CompactFheUint160.encrypt_with_compact_public_key(value, publicKey); + return { + data: encrypted.serialize(), + securityZone, + }; +}; + +// INFO: The existing `GetFhePublicKey` function has been replaced with `InitFhevm` +// `GetFhePublicKey` didn't allow security zones to be set, and was overloaded with initializing the Fhevm +// Public key fetching has been moved to the Async and Sync FhenixClient constructors (they handle it slightly differently) +// - arch 2024-08-28 +const InitFhevm = async () => { + // `asyncInitFhevm` in `/sdk/fhe/fhe.ts` in node env (noop) + // `asyncInitFhevm` in `/sdk/fhe/fhe-browser.ts` in browser env (init wasm) + await asyncInitFhevm(); +}; + +/* eslint-disable @typescript-eslint/no-explicit-any */ +/** + * Initializes the `fhenixsdk` to enable encrypting input data, creating permits / permissions, and decrypting sealed outputs. + * Initializes `fhevm` client FHE wasm module and fetches the provided chain's FHE publicKey. + * If a valid signer is provided, a `permit/permission` is generated automatically + */ +const initialize = async (params) => { + // Initialize the fhevm + await InitFhevm().catch((err) => { + if (params.ignoreErrors) { + return undefined; + } + else { + return ResultErr(`initialize :: failed to initialize fhenixjs - is the network FHE-enabled? ${err}`); + } + }); + if (params.provider == null) + return ResultErr("initialize :: missing provider - Please provide an AbstractProvider interface"); + if (params.securityZones != null && params.securityZones.length === 0) + return ResultErr("initialize :: a list of securityZones was provided, but it is empty"); + await _store_initialize(params); + // `generatePermit` must set to `false` to early exit here + if (params.generatePermit === false) + return ResultOk(undefined); + // Return the existing active permit + const userActivePermit = getPermit(); + if (userActivePermit.success) + return userActivePermit; + // Create permit and return it + return createPermit(); +}; +/** + * Internal reusable initialization checker + */ +const _checkInitialized = (state, options) => { + if (options?.fheKeys !== false && !state.fheKeysInitialized) { + return ResultErr("fhenixsdk not initialized. Use `fhenixsdk.initialize(...)`."); + } + if (options?.coFheUrl !== false && !state.coFheUrl) + return ResultErr("fhenixsdk not initialized with a coFheUrl. Set `coFheUrl` in `fhenixsdk.initialize`."); + if (options?.provider !== false && !state.providerInitialized) + return ResultErr("fhenixsdk not initialized with valid provider. Use `fhenixsdk.initialize(...)` with a valid provider that satisfies `AbstractProvider`."); + if (options?.signer !== false && !state.signerInitialized) + return ResultErr("fhenixsdk not initialized with a valid signer. Use `fhenixsdk.initialize(...)` with a valid signer that satisfies `AbstractSigner`."); + return ResultOk(null); +}; +// Permit +/** + * Creates a new permit with options, prompts user for signature. + * Handles all `permit.type`s, and prompts for the correct signature type. + * The created PermitV2 will be inserted into the store and marked as the active permit. + * NOTE: This is a wrapper around `PermitV2.create` and `PermitV2.sign` + * + * @param {PermitV2Options} options - Partial PermitV2 fields to create the Permit with, if no options provided will be filled with the defaults: + * { type: "self", issuer: initializedUserAddress, projects: initializedProjects, contracts: initializedContracts } + * @returns {Result} - Newly created PermitV2 as a Result object + */ +const createPermit = async (options) => { + const state = _sdkStore.getState(); + const initialized = _checkInitialized(state); + if (!initialized.success) + return ResultErr(`${createPermit.name} :: ${initialized.error}`); + const optionsWithDefaults = { + type: "self", + issuer: state.account, + contracts: state.accessRequirements.contracts, + projects: state.accessRequirements.projects, + ...options, + }; + let permit; + try { + permit = await PermitV2.createAndSign(optionsWithDefaults, state.chainId, state.signer); + } + catch (e) { + return ResultErr(`${createPermit.name} :: ${e}`); + } + permitStore.setPermit(state.account, permit); + permitStore.setActivePermitHash(state.account, permit.getHash()); + return ResultOk(permit); +}; +/** + * Imports a fully formed existing permit, expected to be valid. + * Does not ask for user signature, expects to already be populated. + * Will throw an error if the imported permit is invalid, see `PermitV2.isValid`. + * The imported PermitV2 will be inserted into the store and marked as the active permit. + * + * @param {string | PermitV2Interface} imported - Permit to import as a text string or PermitV2Interface + */ +const importPermit = async (imported) => { + const state = _sdkStore.getState(); + const initialized = _checkInitialized(state); + if (!initialized.success) + return ResultErr(`${createPermit.name} :: ${initialized.error}`); + // Import validation + if (typeof imported === "string") { + try { + imported = JSON.parse(imported); + } + catch (e) { + return ResultErr(`importPermit :: json parsing failed - ${e}`); + } + } + const { success, data: parsedPermit, error: permitParsingError, } = PermitV2ParamsValidator.safeParse(imported); + if (!success) { + const errorString = Object.entries(permitParsingError.flatten().fieldErrors) + .map(([field, err]) => `- ${field}: ${err}`) + .join("\n"); + return ResultErr(`importPermit :: invalid permit data - ${errorString}`); + } + if (parsedPermit.type !== "self") { + if (parsedPermit.issuer === state.account) + parsedPermit.type = "sharing"; + else if (parsedPermit.recipient === state.account) + parsedPermit.type = "recipient"; + else { + return ResultErr(`importPermit :: invalid Permit - connected account <${state.account}> is not issuer or recipient`); + } + } + let permit; + try { + permit = await PermitV2.create(parsedPermit); + } + catch (e) { + return ResultErr(`importPermit :: ${e}`); + } + const { valid, error } = permit.isValid(); + if (!valid) { + return ResultErr(`importPermit :: newly imported permit is invalid - ${error}`); + } + permitStore.setPermit(state.account, permit); + permitStore.setActivePermitHash(state.account, permit.getHash()); + return ResultOk(permit); +}; +/** + * Selects the active permit using its hash. + * If the hash is not found in the stored permits store, throws an error. + * The matched permit will be marked as the active permit. + * + * @param {string} hash - The `PermitV2.getHash` of the target permit. + */ +const selectActivePermit = (hash) => { + const state = _sdkStore.getState(); + const initialized = _checkInitialized(state); + if (!initialized.success) + return ResultErr(`${selectActivePermit.name} :: ${initialized.error}`); + const permit = permitStore.getPermit(state.account, hash); + if (permit == null) + return ResultErr(`${selectActivePermit.name} :: Permit with hash <${hash}> not found`); + permitStore.setActivePermitHash(state.account, permit.getHash()); + return ResultOk(permit); +}; +/** + * Retrieves a stored permit based on its hash. + * If no hash is provided, the currently active permit will be retrieved. + * + * @param {string} hash - Optional `PermitV2.getHash` of the permit. + * @returns {Result} - The active permit or permit associated with `hash` as a Result object. + */ +const getPermit = (hash) => { + const state = _sdkStore.getState(); + const initialized = _checkInitialized(state); + if (!initialized.success) + return ResultErr(`${getPermit.name} :: ${initialized.error}`); + if (hash == null) { + const permit = permitStore.getActivePermit(state.account); + if (permit == null) + return ResultErr(`getPermit :: active permit not found`); + return ResultOk(permit); + } + const permit = permitStore.getPermit(state.account, hash); + if (permit == null) + return ResultErr(`getPermit :: permit with hash <${hash}> not found`); + return ResultOk(permit); +}; +/** + * Retrieves a stored permission based on the permit's hash. + * If no hash is provided, the currently active permit will be used. + * The `PermissionV2` is extracted from the permit. + * + * @param {string} hash - Optional hash of the permission to get, defaults to active permit's permission + * @returns {Result} - The active permission or permission associated with `hash`, as a result object. + */ +const getPermission = (hash) => { + const permitResult = getPermit(hash); + if (!permitResult.success) + return ResultErr(`${getPermission.name} :: ${permitResult.error}`); + return ResultOk(permitResult.data.getPermission()); +}; +/** + * Exports all stored permits. + * @returns {Result>} - All stored permits. + */ +const getAllPermits = () => { + const state = _sdkStore.getState(); + const initialized = _checkInitialized(state); + if (!initialized.success) + return ResultErr(`${getAllPermits.name} :: ${initialized.error}`); + return ResultOk(permitStore.getPermits(state.account)); +}; +async function encrypt(item) { + const state = _sdkStore.getState(); + // Only need to check `fheKeysInitialized`, signer and provider not needed for encryption + const initialized = _checkInitialized(state, { + provider: false, + signer: false, + }); + if (!initialized.success) + return ResultErr(`${encrypt.name} :: ${initialized.error}`); + // Permission + if (item === "permission") { + return getPermission(); + } + // EncryptableItem + if (isEncryptableItem(item)) { + // Early exit with mock encrypted value if chain is hardhat + // TODO: Determine how CoFHE encrypted items will be handled in hardhat + if (chainIsHardhat(state.coFheUrl)) + return ResultOk(hardhatMockEncrypt(BigInt(item.data))); + const fhePublicKey = _store_getConnectedChainFheKey(item.securityZone ?? 0); + if (fhePublicKey == null) + return ResultErr("encrypt :: fheKey for current chain not found"); + let preEncryptedItem; + // prettier-ignore + try { + switch (item.utype) { + case FheUType.bool: { + preEncryptedItem = encrypt_bool(item.data, fhePublicKey, item.securityZone); + break; + } + case FheUType.uint8: { + preEncryptedItem = encrypt_uint8(item.data, fhePublicKey, item.securityZone); + break; + } + case FheUType.uint16: { + preEncryptedItem = encrypt_uint16(item.data, fhePublicKey, item.securityZone); + break; + } + case FheUType.uint32: { + preEncryptedItem = encrypt_uint32(item.data, fhePublicKey, item.securityZone); + break; + } + case FheUType.uint64: { + preEncryptedItem = encrypt_uint64(item.data, fhePublicKey, item.securityZone); + break; + } + case FheUType.uint128: { + preEncryptedItem = encrypt_uint128(item.data, fhePublicKey, item.securityZone); + break; + } + case FheUType.uint256: { + preEncryptedItem = encrypt_uint256(item.data, fhePublicKey, item.securityZone); + break; + } + case FheUType.address: { + preEncryptedItem = encrypt_address(item.data, fhePublicKey, item.securityZone); + break; + } + } + } + catch (e) { + return ResultErr(`encrypt :: tfhe_encrypt_xxxx :: ${e}`); + } + // Send preEncryptedItem to CoFHE route `/UpdateCT`, receive `ctHash` to use as contract input + const res = (await fetch(`${state.coFheUrl}/UpdateCT`, { + method: "POST", + headers: { + "Content-Type": "application/json", // Ensure the server knows you're sending JSON + }, + body: JSON.stringify({ + UType: item.utype, + Value: toHexString$1(preEncryptedItem.data), + SecurityZone: item.securityZone, + }), + })); + const data = await res.json(); + // Transform data into final CoFHE input variable + return ResultOk({ + securityZone: item.securityZone, + hash: BigInt(`0x${data.ctHash}`), + utype: item.utype, + signature: data.signature, + }); + } + // Object | Array + if (typeof item === "object" && item !== null) { + if (Array.isArray(item)) { + // Array - recurse + const nestedItems = await Promise.all(item.map((nestedItem) => encrypt(nestedItem))); + // Any nested error break out + const nestedItemResultErr = nestedItems.find((nestedItem) => !nestedItem.success); + if (nestedItemResultErr != null) + return nestedItemResultErr; + return ResultOk(nestedItems.map((nestedItem) => nestedItem.data)); + } + else { + // Object - recurse + const nestedKeyedItems = await Promise.all(Object.entries(item).map(async ([key, value]) => ({ + key, + value: await encrypt(value), + }))); + // Any nested error break out + const nestedItemResultErr = nestedKeyedItems.find(({ value }) => !value.success); + if (nestedItemResultErr != null) + return nestedItemResultErr; + const result = {}; + nestedKeyedItems.forEach(({ key, value }) => { + result[key] = value.data; + }); + return ResultOk(result); + } + } + // Primitive + return ResultOk(item); +} +// Unseal +/** + * Unseals an encrypted message using the stored permit for a specific contract address. + * NOTE: Wrapper around `PermitV2.unseal` + * + * @param {string} ciphertext - The encrypted message to unseal. + * @param {string} account - Users address, defaults to store.account + * @param {string} hash - The hash of the permit to use for this operation, defaults to active permitV2 hash + * @returns bigint - The unsealed message. + */ +const unsealCiphertext = (ciphertext, account, hash) => { + const state = _sdkStore.getState(); + const initialized = _checkInitialized(state); + if (!initialized.success) + return ResultErr(`${getAllPermits.name} :: ${initialized.error}`); + isString(ciphertext); + const resolvedAccount = account ?? state.account; + const resolvedHash = hash ?? permitStore.getActivePermitHash(resolvedAccount); + if (resolvedAccount == null || resolvedHash == null) { + return ResultErr(`unsealCiphertext :: PermitV2 hash not provided and active PermitV2 not found`); + } + const permit = permitStore.getPermit(resolvedAccount, resolvedHash); + if (permit == null) { + return ResultErr(`unsealCiphertext :: PermitV2 with account <${account}> and hash <${hash}> not found`); + } + let unsealed; + try { + unsealed = permit.unsealCiphertext(ciphertext); + } + catch (e) { + return ResultErr(`unsealCiphertext :: ${e}`); + } + return ResultOk(unsealed); +}; +/** + * Uses the privateKey of `permit.sealingPair` to recursively unseal any contained `SealedItems`. + * If `item` is a single `SealedItem` it will be individually. + * NOTE: Only unseals typed `SealedItem`s returned from `FHE.sealoutputTyped` and the FHE bindings' `e____.sealTyped`. + * + * @param {any | any[]} item - Array, object, or item. Any nested `SealedItems` will be unsealed. + * @returns - Recursively unsealed data in the target type, SealedBool -> boolean, SealedAddress -> string, etc. + */ +function unseal(item, account, hash) { + const resolvedAccount = account ?? _sdkStore.getState().account; + const resolvedHash = hash ?? permitStore.getActivePermitHash(resolvedAccount); + if (resolvedAccount == null || resolvedHash == null) { + return ResultErr(`unseal :: PermitV2 hash not provided and active PermitV2 not found`); + } + const permit = permitStore.getPermit(resolvedAccount, resolvedHash); + if (permit == null) { + return ResultErr(`unseal :: PermitV2 with account <${account}> and hash <${hash}> not found`); + } + let unsealed; + try { + unsealed = permit.unseal(item); + } + catch (e) { + return ResultErr(`unseal :: ${e}`); + } + return ResultOk(unsealed); +} +// Export +const fhenixsdk = { + store: _sdkStore, + initialize, + createPermit, + importPermit, + selectActivePermit, + getPermit, + getPermission, + getAllPermits, + encrypt, + unsealCiphertext, + unseal, +}; + +export { Encryptable, EncryptionTypes, FheAllUTypes, FheUType, FheUintUTypes, FullyFormedPermitV2Validator, GenerateSealingKey, PermitV2, PermitV2ParamsValidator, ResultErr, ResultOk, SealingKey, SignatureTypes, createTfheKeypair, createTfhePublicKey, fhenixsdk, getAsSealedItem, getSignatureDomain, getSignatureTypesAndMessage, isEncryptableItem, isSealedAddress, isSealedBool, isSealedUint, permitStore }; +//# sourceMappingURL=cofhe.esm.js.map diff --git a/dist/cofhe.esm.js.map b/dist/cofhe.esm.js.map new file mode 100644 index 0000000..7261744 --- /dev/null +++ b/dist/cofhe.esm.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cofhe.esm.js","sources":["../lib/esm/sdk/validation.js","../lib/esm/sdk/utils.js","../node_modules/.pnpm/tweetnacl@1.0.3/node_modules/tweetnacl/nacl-fast.js","../node_modules/.pnpm/tweetnacl-util@0.15.1/node_modules/tweetnacl-util/nacl-util.js","../lib/esm/sdk/sealing.js","../lib/esm/sdk/fhe/tfhe-browser.js","../lib/esm/sdk/keygen.js","../lib/esm/types/base.js","../lib/esm/types/encryptable.js","../lib/esm/types/result.js","../lib/esm/types/sealed.js","../node_modules/.pnpm/zustand@5.0.1_immer@10.1.1/node_modules/zustand/esm/vanilla.mjs","../node_modules/.pnpm/zustand@5.0.1_immer@10.1.1/node_modules/zustand/esm/middleware.mjs","../node_modules/.pnpm/immer@10.1.1/node_modules/immer/dist/immer.mjs","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/_version.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/utils/properties.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/utils/errors.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/utils/data.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/utils/utf8.js","../node_modules/.pnpm/@noble+hashes@1.3.2/node_modules/@noble/hashes/esm/_assert.js","../node_modules/.pnpm/@noble+hashes@1.3.2/node_modules/@noble/hashes/esm/utils.js","../node_modules/.pnpm/@noble+hashes@1.3.2/node_modules/@noble/hashes/esm/_u64.js","../node_modules/.pnpm/@noble+hashes@1.3.2/node_modules/@noble/hashes/esm/sha3.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/crypto/keccak.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/constants/addresses.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/address/address.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/address/checks.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/hash/id.js","../lib/esm/sdk/permit/generate.js","../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/index.mjs","../lib/esm/sdk/permit/permit.z.js","../lib/esm/sdk/utils.hardhat.js","../lib/esm/sdk/permit/permit.js","../lib/esm/sdk/permit/store.js","../lib/esm/sdk/fhe/fhe-browser.js","../lib/esm/sdk/consts.js","../lib/esm/sdk/store.js","../lib/esm/sdk/encrypt.js","../lib/esm/sdk/init.js","../lib/esm/sdk/index.js"],"sourcesContent":["function assertIs(is, expected, value) {\n if (!is) {\n throw new Error(`Expected value which is \\`${expected}\\`, received value of type \\`${typeof value}\\`.`);\n }\n}\nexport function isString(value) {\n const is = typeof value === \"string\";\n assertIs(is, \"string\", value);\n}\nexport function isPlainObject(value) {\n // From: https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const prototype = Object.getPrototypeOf(value);\n const is = (prototype === null ||\n prototype === Object.prototype ||\n Object.getPrototypeOf(prototype) === null) &&\n !(Symbol.toStringTag in value) &&\n !(Symbol.iterator in value);\n assertIs(is, \"plain object\", value);\n return true;\n}\nexport function isBigIntOrHexString(value) {\n const is = typeof value === \"bigint\" || typeof value === \"string\";\n assertIs(is, \"bigint or hex string\", value);\n}\nexport function isNumber(value) {\n const is = typeof value === \"number\" && !Number.isNaN(value);\n assertIs(is, \"number\", value);\n}\nexport function isBigIntOrNumber(value) {\n const is = typeof value === \"bigint\";\n if (!is) {\n try {\n isNumber(value);\n }\n catch (e) {\n throw new Error(`Value ${value} is not a number or bigint: ${typeof value}`);\n }\n }\n}\n//# sourceMappingURL=validation.js.map","import { isNumber } from \"./validation.js\";\nexport const ValidateUintInRange = (value, max, min) => {\n isNumber(value);\n if (value > max || value < min) {\n throw new Error(`Value out of range: ${max} - ${min}, try a different uint type`);\n }\n};\nexport const fromHexString = (hexString) => {\n const cleanString = hexString.length % 2 === 1 ? `0${hexString}` : hexString;\n const arr = cleanString.replace(/^0x/, \"\").match(/.{1,2}/g);\n if (!arr)\n return new Uint8Array();\n return new Uint8Array(arr.map((byte) => parseInt(byte, 16)));\n};\nexport const toHexString = (bytes) => bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, \"0\"), \"\");\nexport function toBigInt(value) {\n return ethersToBigInt(value);\n}\nexport function toBeArray(value) {\n return ethersToBeArray(value);\n}\nexport function isAddress(address) {\n if (!_isAddress(address)) {\n throw new Error(`Address ${address} is not valid EVM address`);\n }\n}\nfunction _isAddress(value) {\n try {\n if (!value.startsWith(\"0x\")) {\n return false;\n }\n else if (value.length !== 42) {\n return false;\n }\n return true;\n }\n catch (error) {\n return false;\n }\n}\nconst Nibbles = \"0123456789abcdef\";\n// IEEE 754 support 53-bits of mantissa\nconst maxValue = 0x1fffffffffffff;\nconst BN_0 = BigInt(0);\n/*\n * Converts %%value%% to a BigInt. If %%value%% is a Uint8Array, it\n * is treated as Big Endian data.\n */\nfunction ethersToBigInt(value) {\n if (value instanceof Uint8Array) {\n let result = \"0x0\";\n for (const v of value) {\n result += Nibbles[v >> 4];\n result += Nibbles[v & 0x0f];\n }\n return BigInt(result);\n }\n return getBigInt(value);\n}\nfunction ethersToBeArray(_value) {\n const value = getUint(_value);\n if (value === BN_0) {\n return new Uint8Array([]);\n }\n let hex = value.toString(16);\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n const result = new Uint8Array(hex.length / 2);\n for (let i = 0; i < result.length; i++) {\n const offset = i * 2;\n result[i] = parseInt(hex.substring(offset, offset + 2), 16);\n }\n return result;\n}\n/**\n * Returns %%value%% as a bigint, validating it is valid as a bigint\n * value and that it is positive.\n */\nfunction getUint(value) {\n const result = getBigInt(value);\n assertArgument(result >= BN_0, \"unsigned value cannot be negative\");\n return result;\n}\n/**\n * Gets a BigInt from %%value%%. If it is an invalid value for\n * a BigInt, then an ArgumentError will be thrown for %%name%%.\n */\nfunction getBigInt(value) {\n switch (typeof value) {\n case \"bigint\":\n return value;\n case \"number\":\n assertArgument(Number.isInteger(value), \"underflow\");\n assertArgument(value >= -maxValue && value <= maxValue, \"overflow\");\n return BigInt(value);\n case \"string\":\n try {\n if (value === \"\") {\n throw new Error(\"empty string\");\n }\n if (value[0] === \"-\" && value[1] !== \"-\") {\n return -BigInt(value.substring(1));\n }\n return BigInt(value);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n catch (e) {\n assertArgument(false, `invalid BigNumberish string: ${e.message}`);\n }\n }\n assertArgument(false, \"invalid BigNumberish value\");\n}\nfunction assertArgument(check, message) {\n if (!check) {\n throw new Error(message);\n }\n}\nexport function toABIEncodedUint32(value) {\n // Ensure the number is a valid unsigned 32-bit integer\n if (value < 0 || value > 0xffffffff) {\n throw new RangeError(\"Number must be between 0 and 2^32 - 1.\");\n }\n // Convert the number to a hexadecimal string and pad it to 64 characters (32 bytes)\n return value.toString(16).padStart(64, \"0\");\n}\n// Uint8Array conversions\nexport const stringToUint8Array = (value) => {\n return new Uint8Array(value.split(\"\").map((c) => c.charCodeAt(0)));\n};\nexport const uint8ArrayToString = (value) => {\n return Array.from(value)\n .map((byte) => String.fromCharCode(byte))\n .join(\"\");\n};\nexport const bigintToUint8Array = (bigNum) => {\n const byteLength = 32;\n const byteArray = new Uint8Array(byteLength);\n // Create a BigInt mask for each byte\n const mask = BigInt(0xff);\n // Initialize an index to start from the end of the array\n for (let i = 0; i < byteLength; i++) {\n // Extract the last byte and assign it to the corresponding position in the array\n byteArray[byteLength - 1 - i] = Number(bigNum & mask);\n // Shift bigint right by 8 bits to process the next byte in the next iteration\n bigNum >>= BigInt(8);\n }\n return byteArray;\n};\n//# sourceMappingURL=utils.js.map","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","// Written in 2014-2016 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n(function(root, f) {\n 'use strict';\n if (typeof module !== 'undefined' && module.exports) module.exports = f();\n else if (root.nacl) root.nacl.util = f();\n else {\n root.nacl = {};\n root.nacl.util = f();\n }\n}(this, function() {\n 'use strict';\n\n var util = {};\n\n function validateBase64(s) {\n if (!(/^(?:[A-Za-z0-9+\\/]{2}[A-Za-z0-9+\\/]{2})*(?:[A-Za-z0-9+\\/]{2}==|[A-Za-z0-9+\\/]{3}=)?$/.test(s))) {\n throw new TypeError('invalid encoding');\n }\n }\n\n util.decodeUTF8 = function(s) {\n if (typeof s !== 'string') throw new TypeError('expected string');\n var i, d = unescape(encodeURIComponent(s)), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n util.encodeUTF8 = function(arr) {\n var i, s = [];\n for (i = 0; i < arr.length; i++) s.push(String.fromCharCode(arr[i]));\n return decodeURIComponent(escape(s.join('')));\n };\n\n if (typeof atob === 'undefined') {\n // Node.js\n\n if (typeof Buffer.from !== 'undefined') {\n // Node v6 and later\n util.encodeBase64 = function (arr) { // v6 and later\n return Buffer.from(arr).toString('base64');\n };\n\n util.decodeBase64 = function (s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(Buffer.from(s, 'base64'), 0));\n };\n\n } else {\n // Node earlier than v6\n util.encodeBase64 = function (arr) { // v6 and later\n return (new Buffer(arr)).toString('base64');\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(new Buffer(s, 'base64'), 0));\n };\n }\n\n } else {\n // Browsers\n\n util.encodeBase64 = function(arr) {\n var i, s = [], len = arr.length;\n for (i = 0; i < len; i++) s.push(String.fromCharCode(arr[i]));\n return btoa(s.join(''));\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n var i, d = atob(s), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n }\n\n return util;\n\n}));\n","import { fromHexString, toBeArray, toBigInt, toHexString } from \"./utils.js\";\nimport * as nacl from \"tweetnacl\";\nimport * as naclUtil from \"tweetnacl-util\";\nimport { isBigIntOrNumber, isString } from \"./validation.js\";\nconst PRIVATE_KEY_LENGTH = 64;\nconst PUBLIC_KEY_LENGTH = 64;\n/**\n * A class representing a SealingKey which provides cryptographic sealing (encryption)\n * and unsealing (decryption) capabilities.\n */\nexport class SealingKey {\n /**\n * Constructs a SealingKey instance with the given private and public keys.\n *\n * @param {string} privateKey - The private key used for decryption.\n * @param {string} publicKey - The public key used for encryption.\n * @throws Will throw an error if the provided keys lengths do not match\n * the required lengths for private and public keys.\n */\n constructor(privateKey, publicKey) {\n /**\n * Unseals (decrypts) the provided ciphertext using the instance's private key.\n *\n * @param {string | Uint8Array} ciphertext - The encrypted data to be decrypted.\n * @returns BigInt - The decrypted message as a bigint.\n * @throws Will throw an error if the decryption process fails.\n */\n this.unseal = (ciphertext) => {\n let parsedData = undefined;\n try {\n if (typeof ciphertext === \"string\") {\n parsedData = JSON.parse(ciphertext);\n }\n }\n catch {\n // ignore errors\n }\n if (!parsedData) {\n const toDecrypt = typeof ciphertext === \"string\" ? fromHexString(ciphertext) : ciphertext;\n // decode json structure that gets returned from the chain\n const jsonString = Buffer.from(toDecrypt).toString(\"utf8\");\n parsedData = JSON.parse(jsonString);\n }\n if (!parsedData) {\n throw new Error(\"Failed to parse sealed data\");\n }\n // assemble decryption parameters\n const nonce = naclUtil.decodeBase64(parsedData.nonce);\n const ephemPublicKey = naclUtil.decodeBase64(parsedData.ephemPublicKey);\n const dataToDecrypt = naclUtil.decodeBase64(parsedData.ciphertext);\n // call the nacl box function to decrypt the data\n const decryptedMessage = nacl.box.open(dataToDecrypt, nonce, ephemPublicKey, fromHexString(this.privateKey));\n if (!decryptedMessage) {\n throw new Error(\"Failed to decrypt message\");\n }\n return toBigInt(decryptedMessage);\n };\n if (privateKey.length !== PRIVATE_KEY_LENGTH) {\n throw new Error(`Private key must be of length ${PRIVATE_KEY_LENGTH}`);\n }\n if (publicKey.length !== PUBLIC_KEY_LENGTH) {\n throw new Error(`Private key must be of length ${PUBLIC_KEY_LENGTH}`);\n }\n this.privateKey = privateKey;\n this.publicKey = publicKey;\n }\n}\n/**\n * Seals (encrypts) the provided message for a receiver with the specified public key.\n *\n * @param {bigint | number} value - The message to be encrypted.\n * @param {string} publicKey - The public key of the intended recipient.\n * @returns string - The encrypted message in hexadecimal format.\n * @static\n * @throws Will throw if the provided publicKey or value do not meet defined preconditions.\n */\nSealingKey.seal = (value, publicKey) => {\n isString(publicKey);\n isBigIntOrNumber(value);\n // generate ephemeral keypair\n const ephemeralKeyPair = nacl.box.keyPair();\n const nonce = nacl.randomBytes(nacl.box.nonceLength);\n const encryptedMessage = nacl.box(toBeArray(value), nonce, fromHexString(publicKey), ephemeralKeyPair.secretKey);\n // handle encrypted data\n const output = {\n version: \"x25519-xsalsa20-poly1305\",\n nonce: naclUtil.encodeBase64(nonce),\n ephemPublicKey: naclUtil.encodeBase64(ephemeralKeyPair.publicKey),\n ciphertext: naclUtil.encodeBase64(encryptedMessage),\n };\n // mimicking encoding from the chain\n return toHexString(Buffer.from(JSON.stringify(output)));\n};\n/**\n * Asynchronously generates a new SealingKey.\n * This function uses the 'nacl' library to create a new public/private key pair for sealing purposes.\n * A sealing key is used to encrypt data such that it can only be unsealed (decrypted) by the owner of the corresponding private key.\n * @returns {Promise} - A promise that resolves to a new SealingKey object containing the hexadecimal strings of the public and private keys.\n */\nexport const GenerateSealingKey = async () => {\n const sodiumKeypair = nacl.box.keyPair();\n return new SealingKey(toHexString(sodiumKeypair.secretKey), toHexString(sodiumKeypair.publicKey));\n};\n//# sourceMappingURL=sealing.js.map","let wasm;\nconst heap = new Array(128).fill(undefined);\nheap.push(undefined, null, true, false);\nlet heap_next = heap.length;\nfunction addHeapObject(obj) {\n if (heap_next === heap.length)\n heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n heap[idx] = obj;\n return idx;\n}\nfunction getObject(idx) {\n return heap[idx];\n}\nfunction dropObject(idx) {\n if (idx < 132)\n return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\nconst cachedTextDecoder = typeof TextDecoder !== \"undefined\"\n ? new TextDecoder(\"utf-8\", { ignoreBOM: true, fatal: true })\n : {\n decode: () => {\n throw Error(\"TextDecoder not available\");\n },\n };\nif (typeof TextDecoder !== \"undefined\") {\n cachedTextDecoder.decode();\n}\nlet cachedUint8Memory0 = null;\nfunction getUint8Memory0() {\n if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) {\n cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8Memory0;\n}\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\nlet cachedBigInt64Memory0 = null;\nfunction getBigInt64Memory0() {\n if (cachedBigInt64Memory0 === null ||\n cachedBigInt64Memory0.byteLength === 0) {\n cachedBigInt64Memory0 = new BigInt64Array(wasm.memory.buffer);\n }\n return cachedBigInt64Memory0;\n}\nlet cachedInt32Memory0 = null;\nfunction getInt32Memory0() {\n if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) {\n cachedInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachedInt32Memory0;\n}\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == \"number\" || type == \"boolean\" || val == null) {\n return `${val}`;\n }\n if (type == \"string\") {\n return `\"${val}\"`;\n }\n if (type == \"symbol\") {\n const description = val.description;\n if (description == null) {\n return \"Symbol\";\n }\n else {\n return `Symbol(${description})`;\n }\n }\n if (type == \"function\") {\n const name = val.name;\n if (typeof name == \"string\" && name.length > 0) {\n return `Function(${name})`;\n }\n else {\n return \"Function\";\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = \"[\";\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for (let i = 1; i < length; i++) {\n debug += \", \" + debugString(val[i]);\n }\n debug += \"]\";\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n }\n else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == \"Object\") {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return \"Object(\" + JSON.stringify(val) + \")\";\n }\n catch (_) {\n return \"Object\";\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\nlet WASM_VECTOR_LEN = 0;\nconst cachedTextEncoder = typeof TextEncoder !== \"undefined\"\n ? new TextEncoder(\"utf-8\")\n : {\n encode: () => {\n throw Error(\"TextEncoder not available\");\n },\n };\nconst encodeString = typeof cachedTextEncoder.encodeInto === \"function\"\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n }\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length,\n };\n };\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8Memory0()\n .subarray(ptr, ptr + buf.length)\n .set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n const mem = getUint8Memory0();\n let offset = 0;\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7f)\n break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, (len = offset + arg.length * 3), 1) >>> 0;\n const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n offset += ret.written;\n }\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n/**\n */\nexport function init_panic_hook() {\n wasm.init_panic_hook();\n}\nfunction _assertClass(instance, klass) {\n if (!(instance instanceof klass)) {\n throw new Error(`expected instance of ${klass.name}`);\n }\n return instance.ptr;\n}\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);\n}\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8Memory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\nlet cachedUint32Memory0 = null;\nfunction getUint32Memory0() {\n if (cachedUint32Memory0 === null || cachedUint32Memory0.byteLength === 0) {\n cachedUint32Memory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32Memory0;\n}\nfunction passArrayJsValueToWasm0(array, malloc) {\n const ptr = malloc(array.length * 4, 4) >>> 0;\n const mem = getUint32Memory0();\n for (let i = 0; i < array.length; i++) {\n mem[ptr / 4 + i] = addHeapObject(array[i]);\n }\n WASM_VECTOR_LEN = array.length;\n return ptr;\n}\nfunction getArrayJsValueFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n const mem = getUint32Memory0();\n const slice = mem.subarray(ptr / 4, ptr / 4 + len);\n const result = [];\n for (let i = 0; i < slice.length; i++) {\n result.push(takeObject(slice[i]));\n }\n return result;\n}\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n }\n catch (e) {\n wasm.__wbindgen_exn_store(addHeapObject(e));\n }\n}\n/**\n */\nexport class CompactFheBool {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheBool.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfhebool_free(ptr);\n }\n /**\n * @param {boolean} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheBool}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfhebool_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheBool}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfhebool_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfhebool_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheBool}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfhebool_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfhebool_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheBool}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfhebool_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheBoolList {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheBoolList.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheboollist_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheboollist_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheboollist_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheBoolList}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheboollist_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheBoolList.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheBoolList}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheboollist_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheBoolList.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt128 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt128.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint128_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt128}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt128}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt128}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint128_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt128}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt128List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt128List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint128list_free(ptr);\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheInt128List}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheint128list_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt128List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt128List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint128list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt128List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt16 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt16.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint16_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt16}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint16_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt16}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint16_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt16}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint16_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt16}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt160 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt160.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint160_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt160}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt160}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint160_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt160}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint160_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt160}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt160List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt160List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint160list_free(ptr);\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheInt160List}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheint160list_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt160List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint160list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint160list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt160List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint160list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt160List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt16List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt16List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint16list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint16list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint16list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt16List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint16list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt16List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt256 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt256.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint256_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt256}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt256}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint256_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt256}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint256_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt256}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt256List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt256List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint256list_free(ptr);\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheInt256List}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheint256list_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt256List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint256list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint256list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt256List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint256list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt256List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt32 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt32.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint32_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt32}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint32_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt32}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint32_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt32}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint32_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt32}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt32List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt32List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint32list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint32list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint32list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt32List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint32list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt32List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt64 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt64.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint64_free(ptr);\n }\n /**\n * @param {bigint} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt64}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint64_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt64}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint64_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt64}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint64_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt64}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt64List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt64List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint64list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint64list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint64list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt64List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint64list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt64List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt8 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt8.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint8_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt8}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint8_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt8}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint8_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt8}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint8_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt8}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt8List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt8List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint8list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint8list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint8list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt8List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint8list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt8List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint128 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint128.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint128_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint128}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint128}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint128_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint128}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint128_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint128}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint128List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint128List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint128list_free(ptr);\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheUint128List}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheuint128list_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint128List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint128list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint128list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint128List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint128list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint128List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint16 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint16.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint16_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint16}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint16_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint16}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint16_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint16}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint16_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint16}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint160 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint160.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint160_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint160}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint160}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint160_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint160}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint160_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint160}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint160List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint160List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint160list_free(ptr);\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheUint160List}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheuint160list_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint160List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint160list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint160list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint160List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint160list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint160List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint16List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint16List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint16list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint16list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint16list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint16List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint16list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint16List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint256 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint256.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint256_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint256}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint256}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint256_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint256}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint256_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint256}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint256List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint256List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint256list_free(ptr);\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheUint256List}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheuint256list_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint256List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint256list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint256list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint256List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint256list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint256List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint32 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint32.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint32_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint32}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint32_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint32}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint32_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint32}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint32_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint32}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint32List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint32List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint32list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint32list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint32list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint32List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint32list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint32List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint64 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint64.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint64_free(ptr);\n }\n /**\n * @param {bigint} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint64}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint64_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint64}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint64_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint64}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint64_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint64}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint64List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint64List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint64list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint64list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint64list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint64List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint64list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint64List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint8 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint8.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint8_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint8}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint8_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint8}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint8_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint8}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint8_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint8}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint8List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint8List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint8list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint8list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint8list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint8List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint8list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint8List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheBool {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheBool.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfhebool_free(ptr);\n }\n /**\n * @param {boolean} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheBool}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfhebool_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheBool}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfhebool_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfhebool_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheBool}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfhebool_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfhebool_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheBool}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfhebool_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt128 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt128.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint128_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt128}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint128_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt128}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint128_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint128_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt128}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint128_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt128}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt16 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt16.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint16_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt16}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint16_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt16}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint16_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint16_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt16}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint16_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt16}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt160 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt160.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint160_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt160}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint160_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt160}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint160_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint160_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt160}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint160_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt160}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt256 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt256.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint256_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt256}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint256_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt256}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint256_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint256_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt256}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint256_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt256}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt32 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt32.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint32_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt32}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint32_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt32}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint32_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint32_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt32}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint32_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt32}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt64 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt64.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint64_free(ptr);\n }\n /**\n * @param {bigint} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt64}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint64_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt64}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint64_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint64_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt64}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint64_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt64}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt8 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt8.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint8_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt8}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint8_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt8}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint8_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint8_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt8}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint8_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt8}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint128 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint128.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint128_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint128}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint128_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint128}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint128_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint128_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint128}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint128_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint128}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint16 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint16.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint16_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint16}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint16_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint16}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint16_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint16_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint16}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint16_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint16}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint160 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint160.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint160_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint160}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint160_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint160}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint160_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint160_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint160}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint160_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint160}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint256 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint256.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint256_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint256}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint256_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint256}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint256_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint256_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint256}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint256_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint256}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint32 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint32.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint32_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint32}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint32_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint32}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint32_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint32_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint32}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint32_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint32}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint64 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint64.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint64_free(ptr);\n }\n /**\n * @param {bigint} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint64}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint64_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint64}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint64_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint64_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint64}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint64_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint64}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint8 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint8.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint8_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint8}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint8_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint8}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint8_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint8_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint8}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint8_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint8}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheBool {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheBool.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fhebool_free(ptr);\n }\n /**\n * @param {boolean} value\n * @param {TfheClientKey} client_key\n * @returns {FheBool}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fhebool_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {boolean} value\n * @param {TfhePublicKey} public_key\n * @returns {FheBool}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fhebool_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {boolean} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheBool}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fhebool_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {boolean} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheBool}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fhebool_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {boolean}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fhebool_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0 !== 0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fhebool_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheBool}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fhebool_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fhebool_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheBool}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fhebool_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt128 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt128.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint128_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt128}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint128_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt128}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint128_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt128}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint128_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt128}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {any}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint128_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint128_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt128}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint128_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt128}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt16 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt16.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint16_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt16}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint16_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt16}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint16_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt16}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint16_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt16}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint16_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {number}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint16_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint16_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt16}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint16_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt16}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt160 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt160.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint160_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt160}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint160_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt160}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint160_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt160}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint160_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt160}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {any}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint160_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint160_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt160}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint160_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt160}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt256 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt256.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint256_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt256}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint256_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt256}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint256_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt256}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint256_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt256}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {any}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint256_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint256_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt256}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint256_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt256}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt32 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt32.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint32_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt32}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint32_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt32}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint32_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt32}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint32_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt32}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint32_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {number}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint32_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint32_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt32}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint32_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt32}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt64 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt64.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint64_free(ptr);\n }\n /**\n * @param {bigint} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt64}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint64_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt64}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint64_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt64}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint64_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt64}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint64_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {bigint}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint64_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getBigInt64Memory0()[retptr / 8 + 0];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n return r0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint64_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt64}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint64_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt64}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt8 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt8.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint8_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt8}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint8_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt8}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint8_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt8}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint8_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt8}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint8_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {number}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint8_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint8_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt8}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint8_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt8}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint128 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint128.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint128_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint128}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint128_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint128}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint128_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint128}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint128_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint128}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {any}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint128_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint128_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint128}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint128_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint128}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint16 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint16.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint16_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint16}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint16_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint16}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint16_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint16}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint16_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint16}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint16_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {number}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint16_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint16_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint16}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint16_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint16}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint160 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint160.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint160_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint160}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint160_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint160}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint160_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint160}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint160_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint160}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {any}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint160_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint160_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint160}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint160_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint160}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint256 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint256.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint256_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint256}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint256_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint256}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint256_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint256}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint256_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint256}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {any}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint256_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint256_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint256}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint256_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint256}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint32 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint32.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint32_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint32}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint32_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint32}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint32_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint32}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint32_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint32}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint32_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {number}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint32_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0 >>> 0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint32_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint32}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint32_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint32}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint64 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint64.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint64_free(ptr);\n }\n /**\n * @param {bigint} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint64}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint64_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint64}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint64_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint64}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint64_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint64}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint64_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {bigint}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint64_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getBigInt64Memory0()[retptr / 8 + 0];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n return BigInt.asUintN(64, r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint64_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint64}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint64_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint64}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint8 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint8.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint8_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint8}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint8_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint8}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint8_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint8}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint8_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint8}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint8_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {number}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint8_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint8_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint8}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint8_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint8}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class TfheClientKey {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheClientKey.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfheclientkey_free(ptr);\n }\n /**\n * @param {TfheConfig} config\n * @returns {TfheClientKey}\n */\n static generate(config) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(config, TfheConfig);\n wasm.tfheclientkey_generate(retptr, config.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheClientKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheConfig} config\n * @param {any} seed\n * @returns {TfheClientKey}\n */\n static generate_with_seed(config, seed) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(config, TfheConfig);\n wasm.tfheclientkey_generate_with_seed(retptr, config.__wbg_ptr, addHeapObject(seed));\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheClientKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfheclientkey_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {TfheClientKey}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.tfheclientkey_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheClientKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class TfheCompactPublicKey {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheCompactPublicKey.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfhecompactpublickey_free(ptr);\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {TfheCompactPublicKey}\n */\n static new(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.tfhecompactpublickey_new(retptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompactPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhecompactpublickey_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {TfheCompactPublicKey}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.tfhecompactpublickey_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompactPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class TfheCompressedCompactPublicKey {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheCompressedCompactPublicKey.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfhecompressedcompactpublickey_free(ptr);\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {TfheCompressedCompactPublicKey}\n */\n static new(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.tfhecompressedcompactpublickey_new(retptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompressedCompactPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhecompressedcompactpublickey_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {TfheCompressedCompactPublicKey}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.tfhecompressedcompactpublickey_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompressedCompactPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {TfheCompactPublicKey}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhecompressedcompactpublickey_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompactPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class TfheCompressedPublicKey {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheCompressedPublicKey.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfhecompressedpublickey_free(ptr);\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {TfheCompressedPublicKey}\n */\n static new(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.tfhecompressedpublickey_new(retptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompressedPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {TfhePublicKey}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhecompressedpublickey_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfhePublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhecompressedpublickey_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {TfheCompressedPublicKey}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.tfhecompressedpublickey_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompressedPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class TfheCompressedServerKey {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheCompressedServerKey.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfhecompressedserverkey_free(ptr);\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {TfheCompressedServerKey}\n */\n static new(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.tfhecompressedserverkey_new(retptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompressedServerKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhecompressedserverkey_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {TfheCompressedServerKey}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.tfhecompressedserverkey_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompressedServerKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class TfheConfig {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheConfig.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfheconfig_free(ptr);\n }\n}\n/**\n */\nexport class TfheConfigBuilder {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheConfigBuilder.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfheconfigbuilder_free(ptr);\n }\n /**\n * @returns {TfheConfigBuilder}\n */\n static default() {\n const ret = wasm.tfheconfigbuilder_default();\n return TfheConfigBuilder.__wrap(ret);\n }\n /**\n * @returns {TfheConfigBuilder}\n */\n static default_with_small_encryption() {\n const ret = wasm.tfheconfigbuilder_default_with_small_encryption();\n return TfheConfigBuilder.__wrap(ret);\n }\n /**\n * @returns {TfheConfigBuilder}\n */\n static default_with_big_encryption() {\n const ret = wasm.tfheconfigbuilder_default();\n return TfheConfigBuilder.__wrap(ret);\n }\n /**\n * @returns {TfheConfig}\n */\n build() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.tfheconfigbuilder_build(ptr);\n return TfheConfig.__wrap(ret);\n }\n}\n/**\n */\nexport class TfhePublicKey {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfhePublicKey.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfhepublickey_free(ptr);\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {TfhePublicKey}\n */\n static new(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.tfhepublickey_new(retptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfhePublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhepublickey_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {TfhePublicKey}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.tfhepublickey_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfhePublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class tfheBrowser {\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfhe_free(ptr);\n }\n}\nasync function __wbg_load(module, imports) {\n if (typeof Response === \"function\" && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === \"function\") {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n }\n catch (e) {\n if (module.headers.get(\"Content-Type\") != \"application/wasm\") {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n }\n else {\n throw e;\n }\n }\n }\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n }\n else {\n const instance = await WebAssembly.instantiate(module, imports);\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n }\n else {\n return instance;\n }\n }\n}\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_bigint_from_u64 = function (arg0) {\n const ret = BigInt.asUintN(64, arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_shr = function (arg0, arg1) {\n const ret = getObject(arg0) >> getObject(arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_object_drop_ref = function (arg0) {\n takeObject(arg0);\n };\n imports.wbg.__wbindgen_bigint_from_i64 = function (arg0) {\n const ret = arg0;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_jsval_eq = function (arg0, arg1) {\n const ret = getObject(arg0) === getObject(arg1);\n return ret;\n };\n imports.wbg.__wbindgen_error_new = function (arg0, arg1) {\n const ret = new Error(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_bigint_from_i128 = function (arg0, arg1) {\n const ret = (arg0 << BigInt(64)) | BigInt.asUintN(64, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_bigint_from_u128 = function (arg0, arg1) {\n const ret = (BigInt.asUintN(64, arg0) << BigInt(64)) | BigInt.asUintN(64, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint16_new = function (arg0) {\n const ret = FheUint16.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint160_new = function (arg0) {\n const ret = FheUint160.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint256_new = function (arg0) {\n const ret = FheUint256.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint32_new = function (arg0) {\n const ret = FheUint32.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint128_new = function (arg0) {\n const ret = FheUint128.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint8_new = function (arg0) {\n const ret = FheUint8.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint64_new = function (arg0) {\n const ret = FheUint64.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint32_new = function (arg0) {\n const ret = FheInt32.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint64_new = function (arg0) {\n const ret = FheInt64.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fhebool_new = function (arg0) {\n const ret = FheBool.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint256_new = function (arg0) {\n const ret = FheInt256.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint160_new = function (arg0) {\n const ret = FheInt160.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint16_new = function (arg0) {\n const ret = FheInt16.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint8_new = function (arg0) {\n const ret = FheInt8.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint128_new = function (arg0) {\n const ret = FheInt128.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_boolean_get = function (arg0) {\n const v = getObject(arg0);\n const ret = typeof v === \"boolean\" ? (v ? 1 : 0) : 2;\n return ret;\n };\n imports.wbg.__wbindgen_bigint_from_str = function (arg0, arg1) {\n const ret = BigInt(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_bit_and = function (arg0, arg1) {\n const ret = getObject(arg0) & getObject(arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_number_new = function (arg0) {\n const ret = arg0;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_lt = function (arg0, arg1) {\n const ret = getObject(arg0) < getObject(arg1);\n return ret;\n };\n imports.wbg.__wbindgen_neg = function (arg0) {\n const ret = -getObject(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_shl = function (arg0, arg1) {\n const ret = getObject(arg0) << getObject(arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_add = function (arg0, arg1) {\n const ret = getObject(arg0) + getObject(arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_bit_or = function (arg0, arg1) {\n const ret = getObject(arg0) | getObject(arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_abda76e883ba8a5f = function () {\n const ret = new Error();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_stack_658279fe44541cf6 = function (arg0, arg1) {\n const ret = getObject(arg1).stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_error_f851667af71bcfc6 = function (arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n }\n finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n };\n imports.wbg.__wbg_crypto_70a96de3b6b73dac = function (arg0) {\n const ret = getObject(arg0).crypto;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_is_object = function (arg0) {\n const val = getObject(arg0);\n const ret = typeof val === \"object\" && val !== null;\n return ret;\n };\n imports.wbg.__wbg_process_dd1577445152112e = function (arg0) {\n const ret = getObject(arg0).process;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_versions_58036bec3add9e6f = function (arg0) {\n const ret = getObject(arg0).versions;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_node_6a9d28205ed5b0d8 = function (arg0) {\n const ret = getObject(arg0).node;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_is_string = function (arg0) {\n const ret = typeof getObject(arg0) === \"string\";\n return ret;\n };\n imports.wbg.__wbg_require_f05d779769764e82 = function () {\n return handleError(function () {\n const ret = module.require;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbindgen_string_new = function (arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_msCrypto_adbc770ec9eca9c7 = function (arg0) {\n const ret = getObject(arg0).msCrypto;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_randomFillSync_e950366c42764a07 = function () {\n return handleError(function (arg0, arg1) {\n getObject(arg0).randomFillSync(takeObject(arg1));\n }, arguments);\n };\n imports.wbg.__wbg_getRandomValues_3774744e221a22ad = function () {\n return handleError(function (arg0, arg1) {\n getObject(arg0).getRandomValues(getObject(arg1));\n }, arguments);\n };\n imports.wbg.__wbindgen_is_function = function (arg0) {\n const ret = typeof getObject(arg0) === \"function\";\n return ret;\n };\n imports.wbg.__wbg_newnoargs_e643855c6572a4a8 = function (arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_call_f96b398515635514 = function () {\n return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_self_b9aad7f1c618bfaf = function () {\n return handleError(function () {\n const ret = self.self;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_window_55e469842c98b086 = function () {\n return handleError(function () {\n const ret = window.window;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_globalThis_d0957e302752547e = function () {\n return handleError(function () {\n const ret = globalThis.globalThis;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_global_ae2f87312b8987fb = function () {\n return handleError(function () {\n const ret = global.global;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbindgen_is_undefined = function (arg0) {\n const ret = getObject(arg0) === undefined;\n return ret;\n };\n imports.wbg.__wbg_call_35782e9a1aa5e091 = function () {\n return handleError(function (arg0, arg1, arg2) {\n const ret = getObject(arg0).call(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_buffer_fcbfb6d88b2732e9 = function (arg0) {\n const ret = getObject(arg0).buffer;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_newwithbyteoffsetandlength_92c251989c485785 = function (arg0, arg1, arg2) {\n const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_bc5d9aad3f9ac80e = function (arg0) {\n const ret = new Uint8Array(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_set_4b3aa8445ac1e91c = function (arg0, arg1, arg2) {\n getObject(arg0).set(getObject(arg1), arg2 >>> 0);\n };\n imports.wbg.__wbg_newwithlength_89eca18f2603a999 = function (arg0) {\n const ret = new Uint8Array(arg0 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_subarray_7649d027b2b141b3 = function (arg0, arg1, arg2) {\n const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_object_clone_ref = function (arg0) {\n const ret = getObject(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_bigint_get_as_i64 = function (arg0, arg1) {\n const v = getObject(arg1);\n const ret = typeof v === \"bigint\" ? v : undefined;\n getBigInt64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? BigInt(0) : ret;\n getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);\n };\n imports.wbg.__wbindgen_debug_string = function (arg0, arg1) {\n const ret = debugString(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbindgen_throw = function (arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbindgen_memory = function () {\n const ret = wasm.memory;\n return addHeapObject(ret);\n };\n return imports;\n}\nfunction __wbg_init_memory(imports, maybe_memory) { }\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedBigInt64Memory0 = null;\n cachedInt32Memory0 = null;\n cachedUint32Memory0 = null;\n cachedUint8Memory0 = null;\n return wasm;\n}\nfunction initSync(module) {\n if (wasm !== undefined)\n return wasm;\n const imports = __wbg_get_imports();\n __wbg_init_memory(imports);\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\nasync function __wbg_init(input) {\n if (wasm !== undefined)\n return wasm;\n // FHENIX: disabling this because it fucks with frameworks that try to resolve it\n // if (typeof input === 'undefined') {\n // input = new URL('tfhe_bg.wasm', import.meta.url);\n // }\n const imports = __wbg_get_imports();\n if (typeof input === \"string\" ||\n (typeof Request === \"function\" && input instanceof Request) ||\n (typeof URL === \"function\" && input instanceof URL)) {\n input = fetch(input);\n }\n __wbg_init_memory(imports);\n const { instance, module } = await __wbg_load(await input, imports);\n return __wbg_finalize_init(instance, module);\n}\nexport { initSync };\nexport default __wbg_init;\n//# sourceMappingURL=tfhe-browser.js.map","import { TfheClientKey, TfheConfigBuilder, TfheCompactPublicKey, } from \"./fhe/tfhe\";\nexport const createTfheKeypair = () => {\n // const block_params = new ShortintParameters(\n // ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS,\n // );\n const config = TfheConfigBuilder.default()\n //..(block_params)\n .build();\n const clientKey = TfheClientKey.generate(config);\n let publicKey = TfheCompactPublicKey.new(clientKey);\n publicKey = TfheCompactPublicKey.deserialize(publicKey.serialize());\n return { clientKey, publicKey };\n};\nexport const createTfhePublicKey = () => {\n const { publicKey } = createTfheKeypair();\n return toHexString(publicKey.serialize());\n};\nexport const toHexString = (bytes) => bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, \"0\"), \"\");\n//# sourceMappingURL=keygen.js.map","/**\n * An enumeration of supported encryption types.\n * uint8, uint16, and uint32 represent the different sizes of integers that can be encrypted.\n */\nexport var EncryptionTypes;\n(function (EncryptionTypes) {\n EncryptionTypes[\"bool\"] = \"bool\";\n EncryptionTypes[\"uint8\"] = \"uint8\";\n EncryptionTypes[\"uint16\"] = \"uint16\";\n EncryptionTypes[\"uint32\"] = \"uint32\";\n EncryptionTypes[\"uint64\"] = \"uint64\";\n EncryptionTypes[\"uint128\"] = \"uint128\";\n EncryptionTypes[\"uint256\"] = \"uint256\";\n EncryptionTypes[\"address\"] = \"address\";\n})(EncryptionTypes || (EncryptionTypes = {}));\n/**\n * Mapping of encryption types to their utype integer\n */\nexport var FheUType;\n(function (FheUType) {\n FheUType[FheUType[\"bool\"] = 13] = \"bool\";\n FheUType[FheUType[\"uint8\"] = 0] = \"uint8\";\n FheUType[FheUType[\"uint16\"] = 1] = \"uint16\";\n FheUType[FheUType[\"uint32\"] = 2] = \"uint32\";\n FheUType[FheUType[\"uint64\"] = 3] = \"uint64\";\n FheUType[FheUType[\"uint128\"] = 4] = \"uint128\";\n FheUType[FheUType[\"uint256\"] = 5] = \"uint256\";\n FheUType[FheUType[\"address\"] = 12] = \"address\";\n})(FheUType || (FheUType = {}));\n/**\n * List of All FHE uint types (excludes bool and address)\n */\nexport const FheUintUTypes = [\n FheUType.uint8,\n FheUType.uint16,\n FheUType.uint32,\n FheUType.uint64,\n FheUType.uint128,\n FheUType.uint256,\n];\n/**\n * List of All FHE types (uints, bool, and address)\n */\nexport const FheAllUTypes = [\n FheUType.bool,\n FheUType.uint8,\n FheUType.uint16,\n FheUType.uint32,\n FheUType.uint64,\n FheUType.uint128,\n FheUType.uint256,\n FheUType.address,\n];\n//# sourceMappingURL=base.js.map","import { FheAllUTypes, FheUType } from \"./base\";\nexport const Encryptable = {\n bool: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.bool }),\n uint8: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint8 }),\n uint16: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint16 }),\n uint32: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint32 }),\n uint64: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint64 }),\n uint128: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint128 }),\n uint256: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint256 }),\n address: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.address }),\n};\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isEncryptableItem(value) {\n return (typeof value === \"object\" &&\n value !== null &&\n [\"string\", \"number\", \"bigint\", \"boolean\"].includes(typeof value.data) &&\n typeof value.securityZone === \"number\" &&\n FheAllUTypes.includes(value.utype));\n}\n//# sourceMappingURL=encryptable.js.map","export const ResultErr = (error) => ({\n success: false,\n data: null,\n error,\n});\nexport const ResultOk = (data) => ({\n success: true,\n data,\n error: null,\n});\n//# sourceMappingURL=result.js.map","import { FheAllUTypes, FheUintUTypes, FheUType } from \"./base\";\n// Determine if `value` is an instance of a `sealedItem` { data: string, utype: 0-5 | 12 | 13 }\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getAsSealedItem(value) {\n if (Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === \"string\" &&\n FheAllUTypes.includes(parseInt(`${value[1]}`)))\n return {\n data: value[0],\n utype: value[1],\n };\n if (typeof value === \"object\" &&\n value !== null &&\n typeof value.data === \"string\" &&\n FheAllUTypes.includes(value.utype))\n return value;\n return undefined;\n}\nexport function isSealedBool(value) {\n return parseInt(`${value.utype}`) === FheUType.bool;\n}\nexport function isSealedUint(value) {\n return FheUintUTypes.includes(parseInt(`${value.utype}`));\n}\nexport function isSealedAddress(value) {\n return parseInt(`${value.utype}`) === FheUType.address;\n}\n//# sourceMappingURL=sealed.js.map","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\n\nexport { createStore };\n","const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...a) => api.dispatch(...a), ...initial };\n};\nconst redux = reduxImpl;\n\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n const api = trackedConnections.get(name);\n if (!api) return {};\n return Object.fromEntries(\n Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n if (store === void 0) {\n return {\n type: \"untracked\",\n connection: extensionConnector.connect(options)\n };\n }\n const existingConnection = trackedConnections.get(options.name);\n if (existingConnection) {\n return { type: \"tracked\", store, ...existingConnection };\n }\n const newConnection = {\n connection: extensionConnector.connect(options),\n stores: {}\n };\n trackedConnections.set(options.name, newConnection);\n return { type: \"tracked\", store, ...newConnection };\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (e) {\n }\n if (!extensionConnector) {\n return fn(set, get, api);\n }\n const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n let isRecording = true;\n api.setState = (state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording) return r;\n const action = nameOrAction === void 0 ? { type: anonymousActionType || \"anonymous\" } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n if (store === void 0) {\n connection == null ? void 0 : connection.send(action, get());\n return r;\n }\n connection == null ? void 0 : connection.send(\n {\n ...action,\n type: `${store}/${action.type}`\n },\n {\n ...getTrackedConnectionState(options.name),\n [store]: api.getState()\n }\n );\n return r;\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n if (connectionInformation.type === \"untracked\") {\n connection == null ? void 0 : connection.init(initialState);\n } else {\n connectionInformation.stores[connectionInformation.store] = api;\n connection == null ? void 0 : connection.init(\n Object.fromEntries(\n Object.entries(connectionInformation.stores).map(([key, store2]) => [\n key,\n key === connectionInformation.store ? initialState : store2.getState()\n ])\n )\n );\n }\n if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...a) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && a[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...a);\n };\n }\n connection.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n if (store === void 0) {\n setStateFromDevtools(action.state);\n return;\n }\n if (Object.keys(action.state).length !== 1) {\n console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format.\n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n }\n const stateFromDevtools = action.state[store];\n if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n setStateFromDevtools(stateFromDevtools);\n }\n return;\n }\n if (!api.dispatchFromDevtools) return;\n if (typeof api.dispatch !== \"function\") return;\n api.dispatch(action);\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n if (store === void 0) {\n return connection == null ? void 0 : connection.init(api.getState());\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"COMMIT\":\n if (store === void 0) {\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n setStateFromDevtools(state[store]);\n connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n setStateFromDevtools(state[store]);\n }\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState) return;\n if (store === void 0) {\n setStateFromDevtools(lastComputedState);\n } else {\n setStateFromDevtools(lastComputedState[store]);\n }\n connection == null ? void 0 : connection.send(\n null,\n // FIXME no-any\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, f) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0) f(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = (selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n };\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nconst combine = (initialState, create) => (...a) => Object.assign({}, initialState, create(...a));\n\nfunction createJSONStorage(getStorage, options) {\n let storage;\n try {\n storage = getStorage();\n } catch (e) {\n return;\n }\n const persistStorage = {\n getItem: (name) => {\n var _a;\n const parse = (str2) => {\n if (str2 === null) {\n return null;\n }\n return JSON.parse(str2, options == null ? void 0 : options.reviver);\n };\n const str = (_a = storage.getItem(name)) != null ? _a : null;\n if (str instanceof Promise) {\n return str.then(parse);\n }\n return parse(str);\n },\n setItem: (name, newValue) => storage.setItem(\n name,\n JSON.stringify(newValue, options == null ? void 0 : options.replacer)\n ),\n removeItem: (name) => storage.removeItem(name)\n };\n return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst persistImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n storage: createJSONStorage(() => localStorage),\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage = options.storage;\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const setItem = () => {\n const state = options.partialize({ ...get() });\n return storage.setItem(options.name, {\n state,\n version: options.version\n });\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n void setItem();\n },\n get,\n api\n );\n api.getInitialState = () => configResult;\n let stateFromStorage;\n const hydrate = () => {\n var _a, _b;\n if (!storage) return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => {\n var _a2;\n return cb((_a2 = get()) != null ? _a2 : configResult);\n });\n const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return [\n true,\n options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n )\n ];\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return [false, deserializedStorageValue.state];\n }\n }\n return [false, void 0];\n }).then((migrationResult) => {\n var _a2;\n const [migrated, migratedState] = migrationResult;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n if (migrated) {\n return setItem();\n }\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n stateFromStorage = get();\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.storage) {\n storage = newOptions.storage;\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n if (!options.skipHydration) {\n hydrate();\n }\n return stateFromStorage || configResult;\n};\nconst persist = persistImpl;\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector };\n","// src/utils/env.ts\nvar NOTHING = Symbol.for(\"immer-nothing\");\nvar DRAFTABLE = Symbol.for(\"immer-draftable\");\nvar DRAFT_STATE = Symbol.for(\"immer-state\");\n\n// src/utils/errors.ts\nvar errors = process.env.NODE_ENV !== \"production\" ? [\n // All error codes, starting by 0:\n function(plugin) {\n return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`;\n },\n function(thing) {\n return `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`;\n },\n \"This object has been frozen and should not be mutated\",\n function(data) {\n return \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + data;\n },\n \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n \"Immer forbids circular references\",\n \"The first or second argument to `produce` must be a function\",\n \"The third argument to `produce` must be a function or undefined\",\n \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n function(thing) {\n return `'current' expects a draft, got: ${thing}`;\n },\n \"Object.defineProperty() cannot be used on an Immer draft\",\n \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n \"Immer only supports deleting array indices\",\n \"Immer only supports setting array indices and the 'length' property\",\n function(thing) {\n return `'original' expects a draft, got: ${thing}`;\n }\n // Note: if more errors are added, the errorOffset in Patches.ts should be increased\n // See Patches.ts for additional errors\n] : [];\nfunction die(error, ...args) {\n if (process.env.NODE_ENV !== \"production\") {\n const e = errors[error];\n const msg = typeof e === \"function\" ? e.apply(null, args) : e;\n throw new Error(`[Immer] ${msg}`);\n }\n throw new Error(\n `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n );\n}\n\n// src/utils/common.ts\nvar getPrototypeOf = Object.getPrototypeOf;\nfunction isDraft(value) {\n return !!value && !!value[DRAFT_STATE];\n}\nfunction isDraftable(value) {\n if (!value)\n return false;\n return isPlainObject(value) || Array.isArray(value) || !!value[DRAFTABLE] || !!value.constructor?.[DRAFTABLE] || isMap(value) || isSet(value);\n}\nvar objectCtorString = Object.prototype.constructor.toString();\nfunction isPlainObject(value) {\n if (!value || typeof value !== \"object\")\n return false;\n const proto = getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n const Ctor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n if (Ctor === Object)\n return true;\n return typeof Ctor == \"function\" && Function.toString.call(Ctor) === objectCtorString;\n}\nfunction original(value) {\n if (!isDraft(value))\n die(15, value);\n return value[DRAFT_STATE].base_;\n}\nfunction each(obj, iter) {\n if (getArchtype(obj) === 0 /* Object */) {\n Reflect.ownKeys(obj).forEach((key) => {\n iter(key, obj[key], obj);\n });\n } else {\n obj.forEach((entry, index) => iter(index, entry, obj));\n }\n}\nfunction getArchtype(thing) {\n const state = thing[DRAFT_STATE];\n return state ? state.type_ : Array.isArray(thing) ? 1 /* Array */ : isMap(thing) ? 2 /* Map */ : isSet(thing) ? 3 /* Set */ : 0 /* Object */;\n}\nfunction has(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.has(prop) : Object.prototype.hasOwnProperty.call(thing, prop);\n}\nfunction get(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.get(prop) : thing[prop];\n}\nfunction set(thing, propOrOldValue, value) {\n const t = getArchtype(thing);\n if (t === 2 /* Map */)\n thing.set(propOrOldValue, value);\n else if (t === 3 /* Set */) {\n thing.add(value);\n } else\n thing[propOrOldValue] = value;\n}\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\nfunction isMap(target) {\n return target instanceof Map;\n}\nfunction isSet(target) {\n return target instanceof Set;\n}\nfunction latest(state) {\n return state.copy_ || state.base_;\n}\nfunction shallowCopy(base, strict) {\n if (isMap(base)) {\n return new Map(base);\n }\n if (isSet(base)) {\n return new Set(base);\n }\n if (Array.isArray(base))\n return Array.prototype.slice.call(base);\n const isPlain = isPlainObject(base);\n if (strict === true || strict === \"class_only\" && !isPlain) {\n const descriptors = Object.getOwnPropertyDescriptors(base);\n delete descriptors[DRAFT_STATE];\n let keys = Reflect.ownKeys(descriptors);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const desc = descriptors[key];\n if (desc.writable === false) {\n desc.writable = true;\n desc.configurable = true;\n }\n if (desc.get || desc.set)\n descriptors[key] = {\n configurable: true,\n writable: true,\n // could live with !!desc.set as well here...\n enumerable: desc.enumerable,\n value: base[key]\n };\n }\n return Object.create(getPrototypeOf(base), descriptors);\n } else {\n const proto = getPrototypeOf(base);\n if (proto !== null && isPlain) {\n return { ...base };\n }\n const obj = Object.create(proto);\n return Object.assign(obj, base);\n }\n}\nfunction freeze(obj, deep = false) {\n if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj))\n return obj;\n if (getArchtype(obj) > 1) {\n obj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections;\n }\n Object.freeze(obj);\n if (deep)\n Object.entries(obj).forEach(([key, value]) => freeze(value, true));\n return obj;\n}\nfunction dontMutateFrozenCollections() {\n die(2);\n}\nfunction isFrozen(obj) {\n return Object.isFrozen(obj);\n}\n\n// src/utils/plugins.ts\nvar plugins = {};\nfunction getPlugin(pluginKey) {\n const plugin = plugins[pluginKey];\n if (!plugin) {\n die(0, pluginKey);\n }\n return plugin;\n}\nfunction loadPlugin(pluginKey, implementation) {\n if (!plugins[pluginKey])\n plugins[pluginKey] = implementation;\n}\n\n// src/core/scope.ts\nvar currentScope;\nfunction getCurrentScope() {\n return currentScope;\n}\nfunction createScope(parent_, immer_) {\n return {\n drafts_: [],\n parent_,\n immer_,\n // Whenever the modified draft contains a draft from another scope, we\n // need to prevent auto-freezing so the unowned draft can be finalized.\n canAutoFreeze_: true,\n unfinalizedDrafts_: 0\n };\n}\nfunction usePatchesInScope(scope, patchListener) {\n if (patchListener) {\n getPlugin(\"Patches\");\n scope.patches_ = [];\n scope.inversePatches_ = [];\n scope.patchListener_ = patchListener;\n }\n}\nfunction revokeScope(scope) {\n leaveScope(scope);\n scope.drafts_.forEach(revokeDraft);\n scope.drafts_ = null;\n}\nfunction leaveScope(scope) {\n if (scope === currentScope) {\n currentScope = scope.parent_;\n }\n}\nfunction enterScope(immer2) {\n return currentScope = createScope(currentScope, immer2);\n}\nfunction revokeDraft(draft) {\n const state = draft[DRAFT_STATE];\n if (state.type_ === 0 /* Object */ || state.type_ === 1 /* Array */)\n state.revoke_();\n else\n state.revoked_ = true;\n}\n\n// src/core/finalize.ts\nfunction processResult(result, scope) {\n scope.unfinalizedDrafts_ = scope.drafts_.length;\n const baseDraft = scope.drafts_[0];\n const isReplaced = result !== void 0 && result !== baseDraft;\n if (isReplaced) {\n if (baseDraft[DRAFT_STATE].modified_) {\n revokeScope(scope);\n die(4);\n }\n if (isDraftable(result)) {\n result = finalize(scope, result);\n if (!scope.parent_)\n maybeFreeze(scope, result);\n }\n if (scope.patches_) {\n getPlugin(\"Patches\").generateReplacementPatches_(\n baseDraft[DRAFT_STATE].base_,\n result,\n scope.patches_,\n scope.inversePatches_\n );\n }\n } else {\n result = finalize(scope, baseDraft, []);\n }\n revokeScope(scope);\n if (scope.patches_) {\n scope.patchListener_(scope.patches_, scope.inversePatches_);\n }\n return result !== NOTHING ? result : void 0;\n}\nfunction finalize(rootScope, value, path) {\n if (isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n if (!state) {\n each(\n value,\n (key, childValue) => finalizeProperty(rootScope, state, value, key, childValue, path)\n );\n return value;\n }\n if (state.scope_ !== rootScope)\n return value;\n if (!state.modified_) {\n maybeFreeze(rootScope, state.base_, true);\n return state.base_;\n }\n if (!state.finalized_) {\n state.finalized_ = true;\n state.scope_.unfinalizedDrafts_--;\n const result = state.copy_;\n let resultEach = result;\n let isSet2 = false;\n if (state.type_ === 3 /* Set */) {\n resultEach = new Set(result);\n result.clear();\n isSet2 = true;\n }\n each(\n resultEach,\n (key, childValue) => finalizeProperty(rootScope, state, result, key, childValue, path, isSet2)\n );\n maybeFreeze(rootScope, result, false);\n if (path && rootScope.patches_) {\n getPlugin(\"Patches\").generatePatches_(\n state,\n path,\n rootScope.patches_,\n rootScope.inversePatches_\n );\n }\n }\n return state.copy_;\n}\nfunction finalizeProperty(rootScope, parentState, targetObject, prop, childValue, rootPath, targetIsSet) {\n if (process.env.NODE_ENV !== \"production\" && childValue === targetObject)\n die(5);\n if (isDraft(childValue)) {\n const path = rootPath && parentState && parentState.type_ !== 3 /* Set */ && // Set objects are atomic since they have no keys.\n !has(parentState.assigned_, prop) ? rootPath.concat(prop) : void 0;\n const res = finalize(rootScope, childValue, path);\n set(targetObject, prop, res);\n if (isDraft(res)) {\n rootScope.canAutoFreeze_ = false;\n } else\n return;\n } else if (targetIsSet) {\n targetObject.add(childValue);\n }\n if (isDraftable(childValue) && !isFrozen(childValue)) {\n if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n return;\n }\n finalize(rootScope, childValue);\n if ((!parentState || !parentState.scope_.parent_) && typeof prop !== \"symbol\" && Object.prototype.propertyIsEnumerable.call(targetObject, prop))\n maybeFreeze(rootScope, childValue);\n }\n}\nfunction maybeFreeze(scope, value, deep = false) {\n if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n freeze(value, deep);\n }\n}\n\n// src/core/proxy.ts\nfunction createProxyProxy(base, parent) {\n const isArray = Array.isArray(base);\n const state = {\n type_: isArray ? 1 /* Array */ : 0 /* Object */,\n // Track which produce call this is associated with.\n scope_: parent ? parent.scope_ : getCurrentScope(),\n // True for both shallow and deep changes.\n modified_: false,\n // Used during finalization.\n finalized_: false,\n // Track which properties have been assigned (true) or deleted (false).\n assigned_: {},\n // The parent draft state.\n parent_: parent,\n // The base state.\n base_: base,\n // The base proxy.\n draft_: null,\n // set below\n // The base copy with any updated values.\n copy_: null,\n // Called by the `produce` function.\n revoke_: null,\n isManual_: false\n };\n let target = state;\n let traps = objectTraps;\n if (isArray) {\n target = [state];\n traps = arrayTraps;\n }\n const { revoke, proxy } = Proxy.revocable(target, traps);\n state.draft_ = proxy;\n state.revoke_ = revoke;\n return proxy;\n}\nvar objectTraps = {\n get(state, prop) {\n if (prop === DRAFT_STATE)\n return state;\n const source = latest(state);\n if (!has(source, prop)) {\n return readPropFromProto(state, source, prop);\n }\n const value = source[prop];\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value === peek(state.base_, prop)) {\n prepareCopy(state);\n return state.copy_[prop] = createProxy(value, state);\n }\n return value;\n },\n has(state, prop) {\n return prop in latest(state);\n },\n ownKeys(state) {\n return Reflect.ownKeys(latest(state));\n },\n set(state, prop, value) {\n const desc = getDescriptorFromProto(latest(state), prop);\n if (desc?.set) {\n desc.set.call(state.draft_, value);\n return true;\n }\n if (!state.modified_) {\n const current2 = peek(latest(state), prop);\n const currentState = current2?.[DRAFT_STATE];\n if (currentState && currentState.base_ === value) {\n state.copy_[prop] = value;\n state.assigned_[prop] = false;\n return true;\n }\n if (is(value, current2) && (value !== void 0 || has(state.base_, prop)))\n return true;\n prepareCopy(state);\n markChanged(state);\n }\n if (state.copy_[prop] === value && // special case: handle new props with value 'undefined'\n (value !== void 0 || prop in state.copy_) || // special case: NaN\n Number.isNaN(value) && Number.isNaN(state.copy_[prop]))\n return true;\n state.copy_[prop] = value;\n state.assigned_[prop] = true;\n return true;\n },\n deleteProperty(state, prop) {\n if (peek(state.base_, prop) !== void 0 || prop in state.base_) {\n state.assigned_[prop] = false;\n prepareCopy(state);\n markChanged(state);\n } else {\n delete state.assigned_[prop];\n }\n if (state.copy_) {\n delete state.copy_[prop];\n }\n return true;\n },\n // Note: We never coerce `desc.value` into an Immer draft, because we can't make\n // the same guarantee in ES5 mode.\n getOwnPropertyDescriptor(state, prop) {\n const owner = latest(state);\n const desc = Reflect.getOwnPropertyDescriptor(owner, prop);\n if (!desc)\n return desc;\n return {\n writable: true,\n configurable: state.type_ !== 1 /* Array */ || prop !== \"length\",\n enumerable: desc.enumerable,\n value: owner[prop]\n };\n },\n defineProperty() {\n die(11);\n },\n getPrototypeOf(state) {\n return getPrototypeOf(state.base_);\n },\n setPrototypeOf() {\n die(12);\n }\n};\nvar arrayTraps = {};\neach(objectTraps, (key, fn) => {\n arrayTraps[key] = function() {\n arguments[0] = arguments[0][0];\n return fn.apply(this, arguments);\n };\n});\narrayTraps.deleteProperty = function(state, prop) {\n if (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop)))\n die(13);\n return arrayTraps.set.call(this, state, prop, void 0);\n};\narrayTraps.set = function(state, prop, value) {\n if (process.env.NODE_ENV !== \"production\" && prop !== \"length\" && isNaN(parseInt(prop)))\n die(14);\n return objectTraps.set.call(this, state[0], prop, value, state[0]);\n};\nfunction peek(draft, prop) {\n const state = draft[DRAFT_STATE];\n const source = state ? latest(state) : draft;\n return source[prop];\n}\nfunction readPropFromProto(state, source, prop) {\n const desc = getDescriptorFromProto(source, prop);\n return desc ? `value` in desc ? desc.value : (\n // This is a very special case, if the prop is a getter defined by the\n // prototype, we should invoke it with the draft as context!\n desc.get?.call(state.draft_)\n ) : void 0;\n}\nfunction getDescriptorFromProto(source, prop) {\n if (!(prop in source))\n return void 0;\n let proto = getPrototypeOf(source);\n while (proto) {\n const desc = Object.getOwnPropertyDescriptor(proto, prop);\n if (desc)\n return desc;\n proto = getPrototypeOf(proto);\n }\n return void 0;\n}\nfunction markChanged(state) {\n if (!state.modified_) {\n state.modified_ = true;\n if (state.parent_) {\n markChanged(state.parent_);\n }\n }\n}\nfunction prepareCopy(state) {\n if (!state.copy_) {\n state.copy_ = shallowCopy(\n state.base_,\n state.scope_.immer_.useStrictShallowCopy_\n );\n }\n}\n\n// src/core/immerClass.ts\nvar Immer2 = class {\n constructor(config) {\n this.autoFreeze_ = true;\n this.useStrictShallowCopy_ = false;\n /**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\n this.produce = (base, recipe, patchListener) => {\n if (typeof base === \"function\" && typeof recipe !== \"function\") {\n const defaultBase = recipe;\n recipe = base;\n const self = this;\n return function curriedProduce(base2 = defaultBase, ...args) {\n return self.produce(base2, (draft) => recipe.call(this, draft, ...args));\n };\n }\n if (typeof recipe !== \"function\")\n die(6);\n if (patchListener !== void 0 && typeof patchListener !== \"function\")\n die(7);\n let result;\n if (isDraftable(base)) {\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n let hasError = true;\n try {\n result = recipe(proxy);\n hasError = false;\n } finally {\n if (hasError)\n revokeScope(scope);\n else\n leaveScope(scope);\n }\n usePatchesInScope(scope, patchListener);\n return processResult(result, scope);\n } else if (!base || typeof base !== \"object\") {\n result = recipe(base);\n if (result === void 0)\n result = base;\n if (result === NOTHING)\n result = void 0;\n if (this.autoFreeze_)\n freeze(result, true);\n if (patchListener) {\n const p = [];\n const ip = [];\n getPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip);\n patchListener(p, ip);\n }\n return result;\n } else\n die(1, base);\n };\n this.produceWithPatches = (base, recipe) => {\n if (typeof base === \"function\") {\n return (state, ...args) => this.produceWithPatches(state, (draft) => base(draft, ...args));\n }\n let patches, inversePatches;\n const result = this.produce(base, recipe, (p, ip) => {\n patches = p;\n inversePatches = ip;\n });\n return [result, patches, inversePatches];\n };\n if (typeof config?.autoFreeze === \"boolean\")\n this.setAutoFreeze(config.autoFreeze);\n if (typeof config?.useStrictShallowCopy === \"boolean\")\n this.setUseStrictShallowCopy(config.useStrictShallowCopy);\n }\n createDraft(base) {\n if (!isDraftable(base))\n die(8);\n if (isDraft(base))\n base = current(base);\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n proxy[DRAFT_STATE].isManual_ = true;\n leaveScope(scope);\n return proxy;\n }\n finishDraft(draft, patchListener) {\n const state = draft && draft[DRAFT_STATE];\n if (!state || !state.isManual_)\n die(9);\n const { scope_: scope } = state;\n usePatchesInScope(scope, patchListener);\n return processResult(void 0, scope);\n }\n /**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * By default, auto-freezing is enabled.\n */\n setAutoFreeze(value) {\n this.autoFreeze_ = value;\n }\n /**\n * Pass true to enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\n setUseStrictShallowCopy(value) {\n this.useStrictShallowCopy_ = value;\n }\n applyPatches(base, patches) {\n let i;\n for (i = patches.length - 1; i >= 0; i--) {\n const patch = patches[i];\n if (patch.path.length === 0 && patch.op === \"replace\") {\n base = patch.value;\n break;\n }\n }\n if (i > -1) {\n patches = patches.slice(i + 1);\n }\n const applyPatchesImpl = getPlugin(\"Patches\").applyPatches_;\n if (isDraft(base)) {\n return applyPatchesImpl(base, patches);\n }\n return this.produce(\n base,\n (draft) => applyPatchesImpl(draft, patches)\n );\n }\n};\nfunction createProxy(value, parent) {\n const draft = isMap(value) ? getPlugin(\"MapSet\").proxyMap_(value, parent) : isSet(value) ? getPlugin(\"MapSet\").proxySet_(value, parent) : createProxyProxy(value, parent);\n const scope = parent ? parent.scope_ : getCurrentScope();\n scope.drafts_.push(draft);\n return draft;\n}\n\n// src/core/current.ts\nfunction current(value) {\n if (!isDraft(value))\n die(10, value);\n return currentImpl(value);\n}\nfunction currentImpl(value) {\n if (!isDraftable(value) || isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n let copy;\n if (state) {\n if (!state.modified_)\n return state.base_;\n state.finalized_ = true;\n copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_);\n } else {\n copy = shallowCopy(value, true);\n }\n each(copy, (key, childValue) => {\n set(copy, key, currentImpl(childValue));\n });\n if (state) {\n state.finalized_ = false;\n }\n return copy;\n}\n\n// src/plugins/patches.ts\nfunction enablePatches() {\n const errorOffset = 16;\n if (process.env.NODE_ENV !== \"production\") {\n errors.push(\n 'Sets cannot have \"replace\" patches.',\n function(op) {\n return \"Unsupported patch operation: \" + op;\n },\n function(path) {\n return \"Cannot apply patch, path doesn't resolve: \" + path;\n },\n \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n );\n }\n const REPLACE = \"replace\";\n const ADD = \"add\";\n const REMOVE = \"remove\";\n function generatePatches_(state, basePath, patches, inversePatches) {\n switch (state.type_) {\n case 0 /* Object */:\n case 2 /* Map */:\n return generatePatchesFromAssigned(\n state,\n basePath,\n patches,\n inversePatches\n );\n case 1 /* Array */:\n return generateArrayPatches(state, basePath, patches, inversePatches);\n case 3 /* Set */:\n return generateSetPatches(\n state,\n basePath,\n patches,\n inversePatches\n );\n }\n }\n function generateArrayPatches(state, basePath, patches, inversePatches) {\n let { base_, assigned_ } = state;\n let copy_ = state.copy_;\n if (copy_.length < base_.length) {\n ;\n [base_, copy_] = [copy_, base_];\n [patches, inversePatches] = [inversePatches, patches];\n }\n for (let i = 0; i < base_.length; i++) {\n if (assigned_[i] && copy_[i] !== base_[i]) {\n const path = basePath.concat([i]);\n patches.push({\n op: REPLACE,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n inversePatches.push({\n op: REPLACE,\n path,\n value: clonePatchValueIfNeeded(base_[i])\n });\n }\n }\n for (let i = base_.length; i < copy_.length; i++) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n }\n for (let i = copy_.length - 1; base_.length <= i; --i) {\n const path = basePath.concat([i]);\n inversePatches.push({\n op: REMOVE,\n path\n });\n }\n }\n function generatePatchesFromAssigned(state, basePath, patches, inversePatches) {\n const { base_, copy_ } = state;\n each(state.assigned_, (key, assignedValue) => {\n const origValue = get(base_, key);\n const value = get(copy_, key);\n const op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD;\n if (origValue === value && op === REPLACE)\n return;\n const path = basePath.concat(key);\n patches.push(op === REMOVE ? { op, path } : { op, path, value });\n inversePatches.push(\n op === ADD ? { op: REMOVE, path } : op === REMOVE ? { op: ADD, path, value: clonePatchValueIfNeeded(origValue) } : { op: REPLACE, path, value: clonePatchValueIfNeeded(origValue) }\n );\n });\n }\n function generateSetPatches(state, basePath, patches, inversePatches) {\n let { base_, copy_ } = state;\n let i = 0;\n base_.forEach((value) => {\n if (!copy_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: REMOVE,\n path,\n value\n });\n inversePatches.unshift({\n op: ADD,\n path,\n value\n });\n }\n i++;\n });\n i = 0;\n copy_.forEach((value) => {\n if (!base_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n value\n });\n inversePatches.unshift({\n op: REMOVE,\n path,\n value\n });\n }\n i++;\n });\n }\n function generateReplacementPatches_(baseValue, replacement, patches, inversePatches) {\n patches.push({\n op: REPLACE,\n path: [],\n value: replacement === NOTHING ? void 0 : replacement\n });\n inversePatches.push({\n op: REPLACE,\n path: [],\n value: baseValue\n });\n }\n function applyPatches_(draft, patches) {\n patches.forEach((patch) => {\n const { path, op } = patch;\n let base = draft;\n for (let i = 0; i < path.length - 1; i++) {\n const parentType = getArchtype(base);\n let p = path[i];\n if (typeof p !== \"string\" && typeof p !== \"number\") {\n p = \"\" + p;\n }\n if ((parentType === 0 /* Object */ || parentType === 1 /* Array */) && (p === \"__proto__\" || p === \"constructor\"))\n die(errorOffset + 3);\n if (typeof base === \"function\" && p === \"prototype\")\n die(errorOffset + 3);\n base = get(base, p);\n if (typeof base !== \"object\")\n die(errorOffset + 2, path.join(\"/\"));\n }\n const type = getArchtype(base);\n const value = deepClonePatchValue(patch.value);\n const key = path[path.length - 1];\n switch (op) {\n case REPLACE:\n switch (type) {\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n die(errorOffset);\n default:\n return base[key] = value;\n }\n case ADD:\n switch (type) {\n case 1 /* Array */:\n return key === \"-\" ? base.push(value) : base.splice(key, 0, value);\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n return base.add(value);\n default:\n return base[key] = value;\n }\n case REMOVE:\n switch (type) {\n case 1 /* Array */:\n return base.splice(key, 1);\n case 2 /* Map */:\n return base.delete(key);\n case 3 /* Set */:\n return base.delete(patch.value);\n default:\n return delete base[key];\n }\n default:\n die(errorOffset + 1, op);\n }\n });\n return draft;\n }\n function deepClonePatchValue(obj) {\n if (!isDraftable(obj))\n return obj;\n if (Array.isArray(obj))\n return obj.map(deepClonePatchValue);\n if (isMap(obj))\n return new Map(\n Array.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)])\n );\n if (isSet(obj))\n return new Set(Array.from(obj).map(deepClonePatchValue));\n const cloned = Object.create(getPrototypeOf(obj));\n for (const key in obj)\n cloned[key] = deepClonePatchValue(obj[key]);\n if (has(obj, DRAFTABLE))\n cloned[DRAFTABLE] = obj[DRAFTABLE];\n return cloned;\n }\n function clonePatchValueIfNeeded(obj) {\n if (isDraft(obj)) {\n return deepClonePatchValue(obj);\n } else\n return obj;\n }\n loadPlugin(\"Patches\", {\n applyPatches_,\n generatePatches_,\n generateReplacementPatches_\n });\n}\n\n// src/plugins/mapset.ts\nfunction enableMapSet() {\n class DraftMap extends Map {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 2 /* Map */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n assigned_: void 0,\n base_: target,\n draft_: this,\n isManual_: false,\n revoked_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(key) {\n return latest(this[DRAFT_STATE]).has(key);\n }\n set(key, value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!latest(state).has(key) || latest(state).get(key) !== value) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_.set(key, true);\n state.copy_.set(key, value);\n state.assigned_.set(key, true);\n }\n return this;\n }\n delete(key) {\n if (!this.has(key)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareMapCopy(state);\n markChanged(state);\n if (state.base_.has(key)) {\n state.assigned_.set(key, false);\n } else {\n state.assigned_.delete(key);\n }\n state.copy_.delete(key);\n return true;\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_ = /* @__PURE__ */ new Map();\n each(state.base_, (key) => {\n state.assigned_.set(key, false);\n });\n state.copy_.clear();\n }\n }\n forEach(cb, thisArg) {\n const state = this[DRAFT_STATE];\n latest(state).forEach((_value, key, _map) => {\n cb.call(thisArg, this.get(key), key, this);\n });\n }\n get(key) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n const value = latest(state).get(key);\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value !== state.base_.get(key)) {\n return value;\n }\n const draft = createProxy(value, state);\n prepareMapCopy(state);\n state.copy_.set(key, draft);\n return draft;\n }\n keys() {\n return latest(this[DRAFT_STATE]).keys();\n }\n values() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.values(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value\n };\n }\n };\n }\n entries() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.entries(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value: [r.value, value]\n };\n }\n };\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.entries();\n }\n }\n function proxyMap_(target, parent) {\n return new DraftMap(target, parent);\n }\n function prepareMapCopy(state) {\n if (!state.copy_) {\n state.assigned_ = /* @__PURE__ */ new Map();\n state.copy_ = new Map(state.base_);\n }\n }\n class DraftSet extends Set {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 3 /* Set */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n base_: target,\n draft_: this,\n drafts_: /* @__PURE__ */ new Map(),\n revoked_: false,\n isManual_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!state.copy_) {\n return state.base_.has(value);\n }\n if (state.copy_.has(value))\n return true;\n if (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value)))\n return true;\n return false;\n }\n add(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!this.has(value)) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.add(value);\n }\n return this;\n }\n delete(value) {\n if (!this.has(value)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n markChanged(state);\n return state.copy_.delete(value) || (state.drafts_.has(value) ? state.copy_.delete(state.drafts_.get(value)) : (\n /* istanbul ignore next */\n false\n ));\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.clear();\n }\n }\n values() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.values();\n }\n entries() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.entries();\n }\n keys() {\n return this.values();\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.values();\n }\n forEach(cb, thisArg) {\n const iterator = this.values();\n let result = iterator.next();\n while (!result.done) {\n cb.call(thisArg, result.value, result.value, this);\n result = iterator.next();\n }\n }\n }\n function proxySet_(target, parent) {\n return new DraftSet(target, parent);\n }\n function prepareSetCopy(state) {\n if (!state.copy_) {\n state.copy_ = /* @__PURE__ */ new Set();\n state.base_.forEach((value) => {\n if (isDraftable(value)) {\n const draft = createProxy(value, state);\n state.drafts_.set(value, draft);\n state.copy_.add(draft);\n } else {\n state.copy_.add(value);\n }\n });\n }\n }\n function assertUnrevoked(state) {\n if (state.revoked_)\n die(3, JSON.stringify(latest(state)));\n }\n loadPlugin(\"MapSet\", { proxyMap_, proxySet_ });\n}\n\n// src/immer.ts\nvar immer = new Immer2();\nvar produce = immer.produce;\nvar produceWithPatches = immer.produceWithPatches.bind(\n immer\n);\nvar setAutoFreeze = immer.setAutoFreeze.bind(immer);\nvar setUseStrictShallowCopy = immer.setUseStrictShallowCopy.bind(immer);\nvar applyPatches = immer.applyPatches.bind(immer);\nvar createDraft = immer.createDraft.bind(immer);\nvar finishDraft = immer.finishDraft.bind(immer);\nfunction castDraft(value) {\n return value;\n}\nfunction castImmutable(value) {\n return value;\n}\nexport {\n Immer2 as Immer,\n applyPatches,\n castDraft,\n castImmutable,\n createDraft,\n current,\n enableMapSet,\n enablePatches,\n finishDraft,\n freeze,\n DRAFTABLE as immerable,\n isDraft,\n isDraftable,\n NOTHING as nothing,\n original,\n produce,\n produceWithPatches,\n setAutoFreeze,\n setUseStrictShallowCopy\n};\n//# sourceMappingURL=immer.mjs.map","/* Do NOT modify this file; see /src.ts/_admin/update-version.ts */\n/**\n * The current version of Ethers.\n */\nexport const version = \"6.13.1\";\n//# sourceMappingURL=_version.js.map","/**\n * Property helper functions.\n *\n * @_subsection api/utils:Properties [about-properties]\n */\nfunction checkType(value, type, name) {\n const types = type.split(\"|\").map(t => t.trim());\n for (let i = 0; i < types.length; i++) {\n switch (type) {\n case \"any\":\n return;\n case \"bigint\":\n case \"boolean\":\n case \"number\":\n case \"string\":\n if (typeof (value) === type) {\n return;\n }\n }\n }\n const error = new Error(`invalid value for type ${type}`);\n error.code = \"INVALID_ARGUMENT\";\n error.argument = `value.${name}`;\n error.value = value;\n throw error;\n}\n/**\n * Resolves to a new object that is a copy of %%value%%, but with all\n * values resolved.\n */\nexport async function resolveProperties(value) {\n const keys = Object.keys(value);\n const results = await Promise.all(keys.map((k) => Promise.resolve(value[k])));\n return results.reduce((accum, v, index) => {\n accum[keys[index]] = v;\n return accum;\n }, {});\n}\n/**\n * Assigns the %%values%% to %%target%% as read-only values.\n *\n * It %%types%% is specified, the values are checked.\n */\nexport function defineProperties(target, values, types) {\n for (let key in values) {\n let value = values[key];\n const type = (types ? types[key] : null);\n if (type) {\n checkType(value, type, key);\n }\n Object.defineProperty(target, key, { enumerable: true, value, writable: false });\n }\n}\n//# sourceMappingURL=properties.js.map","/**\n * All errors in ethers include properties to ensure they are both\n * human-readable (i.e. ``.message``) and machine-readable (i.e. ``.code``).\n *\n * The [[isError]] function can be used to check the error ``code`` and\n * provide a type guard for the properties present on that error interface.\n *\n * @_section: api/utils/errors:Errors [about-errors]\n */\nimport { version } from \"../_version.js\";\nimport { defineProperties } from \"./properties.js\";\nfunction stringify(value) {\n if (value == null) {\n return \"null\";\n }\n if (Array.isArray(value)) {\n return \"[ \" + (value.map(stringify)).join(\", \") + \" ]\";\n }\n if (value instanceof Uint8Array) {\n const HEX = \"0123456789abcdef\";\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n result += HEX[value[i] >> 4];\n result += HEX[value[i] & 0xf];\n }\n return result;\n }\n if (typeof (value) === \"object\" && typeof (value.toJSON) === \"function\") {\n return stringify(value.toJSON());\n }\n switch (typeof (value)) {\n case \"boolean\":\n case \"symbol\":\n return value.toString();\n case \"bigint\":\n return BigInt(value).toString();\n case \"number\":\n return (value).toString();\n case \"string\":\n return JSON.stringify(value);\n case \"object\": {\n const keys = Object.keys(value);\n keys.sort();\n return \"{ \" + keys.map((k) => `${stringify(k)}: ${stringify(value[k])}`).join(\", \") + \" }\";\n }\n }\n return `[ COULD NOT SERIALIZE ]`;\n}\n/**\n * Returns true if the %%error%% matches an error thrown by ethers\n * that matches the error %%code%%.\n *\n * In TypeScript environments, this can be used to check that %%error%%\n * matches an EthersError type, which means the expected properties will\n * be set.\n *\n * @See [ErrorCodes](api:ErrorCode)\n * @example\n * try {\n * // code....\n * } catch (e) {\n * if (isError(e, \"CALL_EXCEPTION\")) {\n * // The Type Guard has validated this object\n * console.log(e.data);\n * }\n * }\n */\nexport function isError(error, code) {\n return (error && error.code === code);\n}\n/**\n * Returns true if %%error%% is a [[CallExceptionError].\n */\nexport function isCallException(error) {\n return isError(error, \"CALL_EXCEPTION\");\n}\n/**\n * Returns a new Error configured to the format ethers emits errors, with\n * the %%message%%, [[api:ErrorCode]] %%code%% and additional properties\n * for the corresponding EthersError.\n *\n * Each error in ethers includes the version of ethers, a\n * machine-readable [[ErrorCode]], and depending on %%code%%, additional\n * required properties. The error message will also include the %%message%%,\n * ethers version, %%code%% and all additional properties, serialized.\n */\nexport function makeError(message, code, info) {\n let shortMessage = message;\n {\n const details = [];\n if (info) {\n if (\"message\" in info || \"code\" in info || \"name\" in info) {\n throw new Error(`value will overwrite populated values: ${stringify(info)}`);\n }\n for (const key in info) {\n if (key === \"shortMessage\") {\n continue;\n }\n const value = (info[key]);\n // try {\n details.push(key + \"=\" + stringify(value));\n // } catch (error: any) {\n // console.log(\"MMM\", error.message);\n // details.push(key + \"=[could not serialize object]\");\n // }\n }\n }\n details.push(`code=${code}`);\n details.push(`version=${version}`);\n if (details.length) {\n message += \" (\" + details.join(\", \") + \")\";\n }\n }\n let error;\n switch (code) {\n case \"INVALID_ARGUMENT\":\n error = new TypeError(message);\n break;\n case \"NUMERIC_FAULT\":\n case \"BUFFER_OVERRUN\":\n error = new RangeError(message);\n break;\n default:\n error = new Error(message);\n }\n defineProperties(error, { code });\n if (info) {\n Object.assign(error, info);\n }\n if (error.shortMessage == null) {\n defineProperties(error, { shortMessage });\n }\n return error;\n}\n/**\n * Throws an EthersError with %%message%%, %%code%% and additional error\n * %%info%% when %%check%% is falsish..\n *\n * @see [[api:makeError]]\n */\nexport function assert(check, message, code, info) {\n if (!check) {\n throw makeError(message, code, info);\n }\n}\n/**\n * A simple helper to simply ensuring provided arguments match expected\n * constraints, throwing if not.\n *\n * In TypeScript environments, the %%check%% has been asserted true, so\n * any further code does not need additional compile-time checks.\n */\nexport function assertArgument(check, message, name, value) {\n assert(check, message, \"INVALID_ARGUMENT\", { argument: name, value: value });\n}\nexport function assertArgumentCount(count, expectedCount, message) {\n if (message == null) {\n message = \"\";\n }\n if (message) {\n message = \": \" + message;\n }\n assert(count >= expectedCount, \"missing arguemnt\" + message, \"MISSING_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n assert(count <= expectedCount, \"too many arguments\" + message, \"UNEXPECTED_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n}\nconst _normalizeForms = [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].reduce((accum, form) => {\n try {\n // General test for normalize\n /* c8 ignore start */\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad\");\n }\n ;\n /* c8 ignore stop */\n if (form === \"NFD\") {\n const check = String.fromCharCode(0xe9).normalize(\"NFD\");\n const expected = String.fromCharCode(0x65, 0x0301);\n /* c8 ignore start */\n if (check !== expected) {\n throw new Error(\"broken\");\n }\n /* c8 ignore stop */\n }\n accum.push(form);\n }\n catch (error) { }\n return accum;\n}, []);\n/**\n * Throws if the normalization %%form%% is not supported.\n */\nexport function assertNormalize(form) {\n assert(_normalizeForms.indexOf(form) >= 0, \"platform missing String.prototype.normalize\", \"UNSUPPORTED_OPERATION\", {\n operation: \"String.prototype.normalize\", info: { form }\n });\n}\n/**\n * Many classes use file-scoped values to guard the constructor,\n * making it effectively private. This facilitates that pattern\n * by ensuring the %%givenGaurd%% matches the file-scoped %%guard%%,\n * throwing if not, indicating the %%className%% if provided.\n */\nexport function assertPrivate(givenGuard, guard, className) {\n if (className == null) {\n className = \"\";\n }\n if (givenGuard !== guard) {\n let method = className, operation = \"new\";\n if (className) {\n method += \".\";\n operation += \" \" + className;\n }\n assert(false, `private constructor; use ${method}from* methods`, \"UNSUPPORTED_OPERATION\", {\n operation\n });\n }\n}\n//# sourceMappingURL=errors.js.map","/**\n * Some data helpers.\n *\n *\n * @_subsection api/utils:Data Helpers [about-data]\n */\nimport { assert, assertArgument } from \"./errors.js\";\nfunction _getBytes(value, name, copy) {\n if (value instanceof Uint8Array) {\n if (copy) {\n return new Uint8Array(value);\n }\n return value;\n }\n if (typeof (value) === \"string\" && value.match(/^0x(?:[0-9a-f][0-9a-f])*$/i)) {\n const result = new Uint8Array((value.length - 2) / 2);\n let offset = 2;\n for (let i = 0; i < result.length; i++) {\n result[i] = parseInt(value.substring(offset, offset + 2), 16);\n offset += 2;\n }\n return result;\n }\n assertArgument(false, \"invalid BytesLike value\", name || \"value\", value);\n}\n/**\n * Get a typed Uint8Array for %%value%%. If already a Uint8Array\n * the original %%value%% is returned; if a copy is required use\n * [[getBytesCopy]].\n *\n * @see: getBytesCopy\n */\nexport function getBytes(value, name) {\n return _getBytes(value, name, false);\n}\n/**\n * Get a typed Uint8Array for %%value%%, creating a copy if necessary\n * to prevent any modifications of the returned value from being\n * reflected elsewhere.\n *\n * @see: getBytes\n */\nexport function getBytesCopy(value, name) {\n return _getBytes(value, name, true);\n}\n/**\n * Returns true if %%value%% is a valid [[HexString]].\n *\n * If %%length%% is ``true`` or a //number//, it also checks that\n * %%value%% is a valid [[DataHexString]] of %%length%% (if a //number//)\n * bytes of data (e.g. ``0x1234`` is 2 bytes).\n */\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (typeof (length) === \"number\" && value.length !== 2 + 2 * length) {\n return false;\n }\n if (length === true && (value.length % 2) !== 0) {\n return false;\n }\n return true;\n}\n/**\n * Returns true if %%value%% is a valid representation of arbitrary\n * data (i.e. a valid [[DataHexString]] or a Uint8Array).\n */\nexport function isBytesLike(value) {\n return (isHexString(value, true) || (value instanceof Uint8Array));\n}\nconst HexCharacters = \"0123456789abcdef\";\n/**\n * Returns a [[DataHexString]] representation of %%data%%.\n */\nexport function hexlify(data) {\n const bytes = getBytes(data);\n let result = \"0x\";\n for (let i = 0; i < bytes.length; i++) {\n const v = bytes[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n}\n/**\n * Returns a [[DataHexString]] by concatenating all values\n * within %%data%%.\n */\nexport function concat(datas) {\n return \"0x\" + datas.map((d) => hexlify(d).substring(2)).join(\"\");\n}\n/**\n * Returns the length of %%data%%, in bytes.\n */\nexport function dataLength(data) {\n if (isHexString(data, true)) {\n return (data.length - 2) / 2;\n }\n return getBytes(data).length;\n}\n/**\n * Returns a [[DataHexString]] by slicing %%data%% from the %%start%%\n * offset to the %%end%% offset.\n *\n * By default %%start%% is 0 and %%end%% is the length of %%data%%.\n */\nexport function dataSlice(data, start, end) {\n const bytes = getBytes(data);\n if (end != null && end > bytes.length) {\n assert(false, \"cannot slice beyond data bounds\", \"BUFFER_OVERRUN\", {\n buffer: bytes, length: bytes.length, offset: end\n });\n }\n return hexlify(bytes.slice((start == null) ? 0 : start, (end == null) ? bytes.length : end));\n}\n/**\n * Return the [[DataHexString]] result by stripping all **leading**\n ** zero bytes from %%data%%.\n */\nexport function stripZerosLeft(data) {\n let bytes = hexlify(data).substring(2);\n while (bytes.startsWith(\"00\")) {\n bytes = bytes.substring(2);\n }\n return \"0x\" + bytes;\n}\nfunction zeroPad(data, length, left) {\n const bytes = getBytes(data);\n assert(length >= bytes.length, \"padding exceeds data length\", \"BUFFER_OVERRUN\", {\n buffer: new Uint8Array(bytes),\n length: length,\n offset: length + 1\n });\n const result = new Uint8Array(length);\n result.fill(0);\n if (left) {\n result.set(bytes, length - bytes.length);\n }\n else {\n result.set(bytes, 0);\n }\n return hexlify(result);\n}\n/**\n * Return the [[DataHexString]] of %%data%% padded on the **left**\n * to %%length%% bytes.\n *\n * If %%data%% already exceeds %%length%%, a [[BufferOverrunError]] is\n * thrown.\n *\n * This pads data the same as **values** are in Solidity\n * (e.g. ``uint128``).\n */\nexport function zeroPadValue(data, length) {\n return zeroPad(data, length, true);\n}\n/**\n * Return the [[DataHexString]] of %%data%% padded on the **right**\n * to %%length%% bytes.\n *\n * If %%data%% already exceeds %%length%%, a [[BufferOverrunError]] is\n * thrown.\n *\n * This pads data the same as **bytes** are in Solidity\n * (e.g. ``bytes16``).\n */\nexport function zeroPadBytes(data, length) {\n return zeroPad(data, length, false);\n}\n//# sourceMappingURL=data.js.map","/**\n * Using strings in Ethereum (or any security-basd system) requires\n * additional care. These utilities attempt to mitigate some of the\n * safety issues as well as provide the ability to recover and analyse\n * strings.\n *\n * @_subsection api/utils:Strings and UTF-8 [about-strings]\n */\nimport { getBytes } from \"./data.js\";\nimport { assertArgument, assertNormalize } from \"./errors.js\";\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n assertArgument(false, `invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === \"BAD_PREFIX\" || reason === \"UNEXPECTED_CONTINUE\") {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) {\n break;\n }\n i++;\n }\n return i;\n }\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === \"OVERRUN\") {\n return bytes.length - offset - 1;\n }\n // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === \"OVERLONG\") {\n assertArgument(typeof (badCodepoint) === \"number\", \"invalid bad code point for replacement\", \"badCodepoint\", badCodepoint);\n output.push(badCodepoint);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n/**\n * A handful of popular, built-in UTF-8 error handling strategies.\n *\n * **``\"error\"``** - throws on ANY illegal UTF-8 sequence or\n * non-canonical (overlong) codepoints (this is the default)\n *\n * **``\"ignore\"``** - silently drops any illegal UTF-8 sequence\n * and accepts non-canonical (overlong) codepoints\n *\n * **``\"replace\"``** - replace any illegal UTF-8 sequence with the\n * UTF-8 replacement character (i.e. ``\"\\\\ufffd\"``) and accepts\n * non-canonical (overlong) codepoints\n *\n * @returns: Record<\"error\" | \"ignore\" | \"replace\", Utf8ErrorFunc>\n */\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(_bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n const bytes = getBytes(_bytes, \"bytes\");\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n }\n else {\n if ((c & 0xc0) === 0x80) {\n i += onError(\"UNEXPECTED_CONTINUE\", i - 1, bytes, result);\n }\n else {\n i += onError(\"BAD_PREFIX\", i - 1, bytes, result);\n }\n continue;\n }\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(\"OVERRUN\", i - 1, bytes, result);\n continue;\n }\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(\"MISSING_CONTINUE\", i, bytes, result);\n res = null;\n break;\n }\n ;\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(\"OUT_OF_RANGE\", i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(\"UTF16_SURROGATE\", i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(\"OVERLONG\", i - 1 - extraLength, bytes, result, res);\n continue;\n }\n result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n/**\n * Returns the UTF-8 byte representation of %%str%%.\n *\n * If %%form%% is specified, the string is normalized.\n */\nexport function toUtf8Bytes(str, form) {\n assertArgument(typeof (str) === \"string\", \"invalid string value\", \"str\", str);\n if (form != null) {\n assertNormalize(form);\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 0x80) {\n result.push(c);\n }\n else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n }\n else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n assertArgument(i < str.length && ((c2 & 0xfc00) === 0xdc00), \"invalid surrogate pair\", \"str\", str);\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n }\n else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n return new Uint8Array(result);\n}\n;\n//export \nfunction _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\n/**\n * Returns the string represented by the UTF-8 data %%bytes%%.\n *\n * When %%onError%% function is specified, it is called on UTF-8\n * errors allowing recovery using the [[Utf8ErrorFunc]] API.\n * (default: [error](Utf8ErrorFuncs))\n */\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\n/**\n * Returns the UTF-8 code-points for %%str%%.\n *\n * If %%form%% is specified, the string is normalized.\n */\nexport function toUtf8CodePoints(str, form) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","function number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nfunction bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`Expected boolean, not ${b}`);\n}\nfunction bytes(b, ...lengths) {\n if (!(b instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\nfunction hash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\nfunction exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nfunction output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nexport { number, bool, bytes, hash, exists, output };\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n//# sourceMappingURL=_assert.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated, we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\nconst u8a = (a) => a instanceof Uint8Array;\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n if (!u8a(bytes))\n throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const len = hex.length;\n if (len % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + len);\n const array = new Uint8Array(len / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!u8a(data))\n throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n const r = new Uint8Array(arrays.reduce((sum, a) => sum + a.length, 0));\n let pad = 0; // walk through each item, ensure they have proper type\n arrays.forEach((a) => {\n if (!u8a(a))\n throw new Error('Uint8Array expected');\n r.set(a, pad);\n pad += a.length;\n });\n return r;\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nconst toStr = {}.toString;\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexport function wrapConstructor(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport function wrapXOFConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { fromBig, split, toBig, shrSH, shrSL, rotrSH, rotrSL, rotrBH, rotrBL, rotr32H, rotr32L, rotlSH, rotlSL, rotlBH, rotlBL, add, add3L, add3H, add4L, add4H, add5H, add5L, };\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","import { bytes, exists, number, output } from './_assert.js';\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from './_u64.js';\nimport { Hash, u32, toBytes, wrapConstructor, wrapXOFConstructorWithOpts, } from './utils.js';\n// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.\n// It's called a sponge function.\n// Various per round constants calculations\nconst [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []];\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nconst _7n = /* @__PURE__ */ BigInt(7);\nconst _256n = /* @__PURE__ */ BigInt(256);\nconst _0x71n = /* @__PURE__ */ BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n)\n t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s, rounds = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++)\n B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\nexport class Keccak extends Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n // Can be passed from user as dkLen\n number(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n keccak() {\n keccakP(this.state32, this.rounds);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n exists(this);\n const { blockLen, state } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n exists(this, false);\n bytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= blockLen)\n this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n number(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n output(out, this);\n if (this.finished)\n throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\nconst gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\nexport const sha3_224 = /* @__PURE__ */ gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = /* @__PURE__ */ gen(0x06, 136, 256 / 8);\nexport const sha3_384 = /* @__PURE__ */ gen(0x06, 104, 384 / 8);\nexport const sha3_512 = /* @__PURE__ */ gen(0x06, 72, 512 / 8);\nexport const keccak_224 = /* @__PURE__ */ gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexport const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8);\nexport const keccak_384 = /* @__PURE__ */ gen(0x01, 104, 384 / 8);\nexport const keccak_512 = /* @__PURE__ */ gen(0x01, 72, 512 / 8);\nconst genShake = (suffix, blockLen, outputLen) => wrapXOFConstructorWithOpts((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));\nexport const shake128 = /* @__PURE__ */ genShake(0x1f, 168, 128 / 8);\nexport const shake256 = /* @__PURE__ */ genShake(0x1f, 136, 256 / 8);\n//# sourceMappingURL=sha3.js.map","/**\n * Cryptographic hashing functions\n *\n * @_subsection: api/crypto:Hash Functions [about-crypto-hashing]\n */\nimport { keccak_256 } from \"@noble/hashes/sha3\";\nimport { getBytes, hexlify } from \"../utils/index.js\";\nlet locked = false;\nconst _keccak256 = function (data) {\n return keccak_256(data);\n};\nlet __keccak256 = _keccak256;\n/**\n * Compute the cryptographic KECCAK256 hash of %%data%%.\n *\n * The %%data%% **must** be a data representation, to compute the\n * hash of UTF-8 data use the [[id]] function.\n *\n * @returns DataHexstring\n * @example:\n * keccak256(\"0x\")\n * //_result:\n *\n * keccak256(\"0x1337\")\n * //_result:\n *\n * keccak256(new Uint8Array([ 0x13, 0x37 ]))\n * //_result:\n *\n * // Strings are assumed to be DataHexString, otherwise it will\n * // throw. To hash UTF-8 data, see the note above.\n * keccak256(\"Hello World\")\n * //_error:\n */\nexport function keccak256(_data) {\n const data = getBytes(_data, \"data\");\n return hexlify(__keccak256(data));\n}\nkeccak256._ = _keccak256;\nkeccak256.lock = function () { locked = true; };\nkeccak256.register = function (func) {\n if (locked) {\n throw new TypeError(\"keccak256 is locked\");\n }\n __keccak256 = func;\n};\nObject.freeze(keccak256);\n//# sourceMappingURL=keccak.js.map","/**\n * A constant for the zero address.\n *\n * (**i.e.** ``\"0x0000000000000000000000000000000000000000\"``)\n */\nexport const ZeroAddress = \"0x0000000000000000000000000000000000000000\";\n//# sourceMappingURL=addresses.js.map","import { keccak256 } from \"../crypto/index.js\";\nimport { getBytes, assertArgument } from \"../utils/index.js\";\nconst BN_0 = BigInt(0);\nconst BN_36 = BigInt(36);\nfunction getChecksumAddress(address) {\n // if (!isHexString(address, 20)) {\n // logger.throwArgumentError(\"invalid address\", \"address\", address);\n // }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = getBytes(keccak256(expanded));\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n return \"0x\" + chars.join(\"\");\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\n// i.e. Math.floor(Math.log10(Number.MAX_SAFE_INTEGER));\nconst safeDigits = 15;\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits) {\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nconst Base36 = (function () {\n ;\n const result = {};\n for (let i = 0; i < 36; i++) {\n const key = \"0123456789abcdefghijklmnopqrstuvwxyz\"[i];\n result[key] = BigInt(i);\n }\n return result;\n})();\nfunction fromBase36(value) {\n value = value.toLowerCase();\n let result = BN_0;\n for (let i = 0; i < value.length; i++) {\n result = result * BN_36 + Base36[value[i]];\n }\n return result;\n}\n/**\n * Returns a normalized and checksumed address for %%address%%.\n * This accepts non-checksum addresses, checksum addresses and\n * [[getIcapAddress]] formats.\n *\n * The checksum in Ethereum uses the capitalization (upper-case\n * vs lower-case) of the characters within an address to encode\n * its checksum, which offers, on average, a checksum of 15-bits.\n *\n * If %%address%% contains both upper-case and lower-case, it is\n * assumed to already be a checksum address and its checksum is\n * validated, and if the address fails its expected checksum an\n * error is thrown.\n *\n * If you wish the checksum of %%address%% to be ignore, it should\n * be converted to lower-case (i.e. ``.toLowercase()``) before\n * being passed in. This should be a very rare situation though,\n * that you wish to bypass the safegaurds in place to protect\n * against an address that has been incorrectly copied from another\n * source.\n *\n * @example:\n * // Adds the checksum (via upper-casing specific letters)\n * getAddress(\"0x8ba1f109551bd432803012645ac136ddd64dba72\")\n * //_result:\n *\n * // Converts ICAP address and adds checksum\n * getAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36\");\n * //_result:\n *\n * // Throws an error if an address contains mixed case,\n * // but the checksum fails\n * getAddress(\"0x8Ba1f109551bD432803012645Ac136ddd64DBA72\")\n * //_error:\n */\nexport function getAddress(address) {\n assertArgument(typeof (address) === \"string\", \"invalid address\", \"address\", address);\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (!address.startsWith(\"0x\")) {\n address = \"0x\" + address;\n }\n const result = getChecksumAddress(address);\n // It is a checksummed address with a bad checksum\n assertArgument(!address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) || result === address, \"bad address checksum\", \"address\", address);\n return result;\n }\n // Maybe ICAP? (we only support direct mode)\n if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n // It is an ICAP address with a bad checksum\n assertArgument(address.substring(2, 4) === ibanChecksum(address), \"bad icap checksum\", \"address\", address);\n let result = fromBase36(address.substring(4)).toString(16);\n while (result.length < 40) {\n result = \"0\" + result;\n }\n return getChecksumAddress(\"0x\" + result);\n }\n assertArgument(false, \"invalid address\", \"address\", address);\n}\n/**\n * The [ICAP Address format](link-icap) format is an early checksum\n * format which attempts to be compatible with the banking\n * industry [IBAN format](link-wiki-iban) for bank accounts.\n *\n * It is no longer common or a recommended format.\n *\n * @example:\n * getIcapAddress(\"0x8ba1f109551bd432803012645ac136ddd64dba72\");\n * //_result:\n *\n * getIcapAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36\");\n * //_result:\n *\n * // Throws an error if the ICAP checksum is wrong\n * getIcapAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK37\");\n * //_error:\n */\nexport function getIcapAddress(address) {\n //let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n let base36 = BigInt(getAddress(address)).toString(36).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n//# sourceMappingURL=address.js.map","import { assert, assertArgument } from \"../utils/index.js\";\nimport { getAddress } from \"./address.js\";\n/**\n * Returns true if %%value%% is an object which implements the\n * [[Addressable]] interface.\n *\n * @example:\n * // Wallets and AbstractSigner sub-classes\n * isAddressable(Wallet.createRandom())\n * //_result:\n *\n * // Contracts\n * contract = new Contract(\"dai.tokens.ethers.eth\", [ ], provider)\n * isAddressable(contract)\n * //_result:\n */\nexport function isAddressable(value) {\n return (value && typeof (value.getAddress) === \"function\");\n}\n/**\n * Returns true if %%value%% is a valid address.\n *\n * @example:\n * // Valid address\n * isAddress(\"0x8ba1f109551bD432803012645Ac136ddd64DBA72\")\n * //_result:\n *\n * // Valid ICAP address\n * isAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36\")\n * //_result:\n *\n * // Invalid checksum\n * isAddress(\"0x8Ba1f109551bD432803012645Ac136ddd64DBa72\")\n * //_result:\n *\n * // Invalid ICAP checksum\n * isAddress(\"0x8Ba1f109551bD432803012645Ac136ddd64DBA72\")\n * //_result:\n *\n * // Not an address (an ENS name requires a provided and an\n * // asynchronous API to access)\n * isAddress(\"ricmoo.eth\")\n * //_result:\n */\nexport function isAddress(value) {\n try {\n getAddress(value);\n return true;\n }\n catch (error) { }\n return false;\n}\nasync function checkAddress(target, promise) {\n const result = await promise;\n if (result == null || result === \"0x0000000000000000000000000000000000000000\") {\n assert(typeof (target) !== \"string\", \"unconfigured name\", \"UNCONFIGURED_NAME\", { value: target });\n assertArgument(false, \"invalid AddressLike value; did not resolve to a value address\", \"target\", target);\n }\n return getAddress(result);\n}\n/**\n * Resolves to an address for the %%target%%, which may be any\n * supported address type, an [[Addressable]] or a Promise which\n * resolves to an address.\n *\n * If an ENS name is provided, but that name has not been correctly\n * configured a [[UnconfiguredNameError]] is thrown.\n *\n * @example:\n * addr = \"0x6B175474E89094C44Da98b954EedeAC495271d0F\"\n *\n * // Addresses are return synchronously\n * resolveAddress(addr, provider)\n * //_result:\n *\n * // Address promises are resolved asynchronously\n * resolveAddress(Promise.resolve(addr))\n * //_result:\n *\n * // ENS names are resolved asynchronously\n * resolveAddress(\"dai.tokens.ethers.eth\", provider)\n * //_result:\n *\n * // Addressable objects are resolved asynchronously\n * contract = new Contract(addr, [ ])\n * resolveAddress(contract, provider)\n * //_result:\n *\n * // Unconfigured ENS names reject\n * resolveAddress(\"nothing-here.ricmoo.eth\", provider)\n * //_error:\n *\n * // ENS names require a NameResolver object passed in\n * // (notice the provider was omitted)\n * resolveAddress(\"nothing-here.ricmoo.eth\")\n * //_error:\n */\nexport function resolveAddress(target, resolver) {\n if (typeof (target) === \"string\") {\n if (target.match(/^0x[0-9a-f]{40}$/i)) {\n return getAddress(target);\n }\n assert(resolver != null, \"ENS resolution requires a provider\", \"UNSUPPORTED_OPERATION\", { operation: \"resolveName\" });\n return checkAddress(target, resolver.resolveName(target));\n }\n else if (isAddressable(target)) {\n return checkAddress(target, target.getAddress());\n }\n else if (target && typeof (target.then) === \"function\") {\n return checkAddress(target, target);\n }\n assertArgument(false, \"unsupported addressable value\", \"target\", target);\n}\n//# sourceMappingURL=checks.js.map","import { keccak256 } from \"../crypto/index.js\";\nimport { toUtf8Bytes } from \"../utils/index.js\";\n/**\n * A simple hashing function which operates on UTF-8 strings to\n * compute an 32-byte identifier.\n *\n * This simply computes the [UTF-8 bytes](toUtf8Bytes) and computes\n * the [[keccak256]].\n *\n * @example:\n * id(\"hello world\")\n * //_result:\n */\nexport function id(value) {\n return keccak256(toUtf8Bytes(value));\n}\n//# sourceMappingURL=id.js.map","import { ZeroAddress } from \"ethers\";\nconst PermitV2SignatureAllFields = [\n { name: \"issuer\", type: \"address\" },\n { name: \"expiration\", type: \"uint64\" },\n { name: \"contracts\", type: \"address[]\" },\n { name: \"projects\", type: \"string[]\" },\n { name: \"recipient\", type: \"address\" },\n { name: \"validatorId\", type: \"uint256\" },\n { name: \"validatorContract\", type: \"address\" },\n { name: \"sealingKey\", type: \"bytes32\" },\n { name: \"issuerSignature\", type: \"bytes\" },\n];\nexport const SignatureTypes = {\n PermissionedV2IssuerSelf: [\n \"issuer\",\n \"expiration\",\n \"contracts\",\n \"projects\",\n \"recipient\",\n \"validatorId\",\n \"validatorContract\",\n \"sealingKey\",\n ],\n PermissionedV2IssuerShared: [\n \"issuer\",\n \"expiration\",\n \"contracts\",\n \"projects\",\n \"recipient\",\n \"validatorId\",\n \"validatorContract\",\n ],\n PermissionedV2Recipient: [\n \"sealingKey\",\n \"issuerSignature\",\n ],\n};\nexport const getSignatureTypesAndMessage = (primaryType, fields, values) => {\n const types = {\n [primaryType]: PermitV2SignatureAllFields.filter((fieldType) => fields.includes(fieldType.name)),\n };\n const message = {};\n fields.forEach((field) => {\n if (field in values) {\n message[field] = values[field];\n }\n });\n return { types, primaryType, message: message };\n};\nexport const getSignatureDomain = (chainId) => ({\n name: \"Fhenix Permission v2.0.0\",\n version: \"v2.0.0\",\n chainId: parseInt(chainId),\n verifyingContract: ZeroAddress,\n});\n//# sourceMappingURL=generate.js.map","var util;\n(function (util) {\n util.assertEqual = (val) => val;\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array\n .map((val) => (typeof val === \"string\" ? `'${val}'` : val))\n .join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nvar objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nconst ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nconst getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then &&\n typeof data.then === \"function\" &&\n data.catch &&\n typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n\nconst ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nconst quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nclass ZodError extends Error {\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n get errors() {\n return this.issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `smaller than or equal to`\n : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\n\nlet overrideErrorMap = errorMap;\nfunction setErrorMap(map) {\n overrideErrorMap = map;\n}\nfunction getErrorMap() {\n return overrideErrorMap;\n}\n\nconst makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nconst EMPTY_PATH = [];\nfunction addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n overrideMap,\n overrideMap === errorMap ? undefined : errorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nclass ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" &&\n (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nconst INVALID = Object.freeze({\n status: \"aborted\",\n});\nconst DIRTY = (value) => ({ status: \"dirty\", value });\nconst OK = (value) => ({ status: \"valid\", value });\nconst isAborted = (x) => x.status === \"aborted\";\nconst isDirty = (x) => x.status === \"dirty\";\nconst isValid = (x) => x.status === \"valid\";\nconst isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nfunction __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nvar errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message === null || message === void 0 ? void 0 : message.message;\n})(errorUtil || (errorUtil = {}));\n\nvar _ZodEnum_cache, _ZodNativeEnum_cache;\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (this._key instanceof Array) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n var _a, _b;\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message !== null && message !== void 0 ? message : ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: (_a = message !== null && message !== void 0 ? message : required_error) !== null && _a !== void 0 ? _a : ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: (_b = message !== null && message !== void 0 ? message : invalid_type_error) !== null && _b !== void 0 ? _b : ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nclass ZodType {\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n }\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n var _a;\n const ctx = {\n common: {\n issues: [],\n async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false,\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n async: true,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult)\n ? maybeAsyncResult\n : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\"\n ? refinementData(val, ctx)\n : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this, this._def);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv6Regex = /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n // let regex = `\\\\d{2}:\\\\d{2}:\\\\d{2}`;\n let regex = `([01]\\\\d|2[0-3]):[0-5]\\\\d:[0-5]\\\\d`;\n if (args.precision) {\n regex = `${regex}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n regex = `${regex}(\\\\.\\\\d+)?`;\n }\n return regex;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nfunction datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nclass ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch (_a) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n var _a, _b;\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false,\n local: (_b = options === null || options === void 0 ? void 0 : options.local) !== null && _b !== void 0 ? _b : false,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options === null || options === void 0 ? void 0 : options.position,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * @deprecated Use z.string().min(1) instead.\n * @see {@link ZodString.min}\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n var _a;\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / Math.pow(10, decCount);\n}\nclass ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" ||\n (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null, min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" ||\n ch.kind === \"int\" ||\n ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = BigInt(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n var _a;\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\nclass ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nclass ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nclass ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nclass ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nclass ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nclass ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nclass ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nclass ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nclass ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nclass ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n return (this._cached = { shape, keys });\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever &&\n this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") ;\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n var _a, _b, _c, _d;\n const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: (_d = errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // (def: Def) =>\n // (\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge(\n // merging: Incoming\n // ): //ZodObject = (merging) => {\n // ZodObject<\n // extendShape>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n util.objectKeys(mask).forEach((key) => {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nclass ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nclass ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util\n .objectKeys(a)\n .filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date &&\n bType === ZodParsedType.date &&\n +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nclass ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\nclass ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nclass ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nclass ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nclass ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nclass ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args\n .parseAsync(args, params)\n .catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args\n ? args\n : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nclass ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nclass ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nclass ZodEnum extends ZodType {\n constructor() {\n super(...arguments);\n _ZodEnum_cache.set(this, void 0);\n }\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodEnum_cache, new Set(this._def.values), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\").has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\n_ZodEnum_cache = new WeakMap();\nZodEnum.create = createZodEnum;\nclass ZodNativeEnum extends ZodType {\n constructor() {\n super(...arguments);\n _ZodNativeEnum_cache.set(this, void 0);\n }\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string &&\n ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodNativeEnum_cache, new Set(util.getValidEnumValues(this._def.values)), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\").has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\n_ZodNativeEnum_cache = new WeakMap();\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nclass ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise &&\n ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise\n ? ctx.data\n : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nclass ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return base;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((base) => {\n if (!isValid(base))\n return base;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ status: status.value, value: result }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nclass ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nclass ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nclass ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\"\n ? params.default\n : () => params.default,\n ...processCreateParams(params),\n });\n};\nclass ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nclass ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nconst BRAND = Symbol(\"zod_brand\");\nclass ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nclass ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nclass ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result)\n ? result.then((data) => freeze(data))\n : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\nfunction custom(check, params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n var _a, _b;\n if (!check(data)) {\n const p = typeof params === \"function\"\n ? params(data)\n : typeof params === \"string\"\n ? { message: params }\n : params;\n const _fatal = (_b = (_a = p.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n ctx.addIssue({ code: \"custom\", ...p2, fatal: _fatal });\n }\n });\n return ZodAny.create();\n}\nconst late = {\n object: ZodObject.lazycreate,\n};\nvar ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\nconst instanceOfType = (\n// const instanceOfType = any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nconst coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nconst NEVER = INVALID;\n\nvar z = /*#__PURE__*/Object.freeze({\n __proto__: null,\n defaultErrorMap: errorMap,\n setErrorMap: setErrorMap,\n getErrorMap: getErrorMap,\n makeIssue: makeIssue,\n EMPTY_PATH: EMPTY_PATH,\n addIssueToContext: addIssueToContext,\n ParseStatus: ParseStatus,\n INVALID: INVALID,\n DIRTY: DIRTY,\n OK: OK,\n isAborted: isAborted,\n isDirty: isDirty,\n isValid: isValid,\n isAsync: isAsync,\n get util () { return util; },\n get objectUtil () { return objectUtil; },\n ZodParsedType: ZodParsedType,\n getParsedType: getParsedType,\n ZodType: ZodType,\n datetimeRegex: datetimeRegex,\n ZodString: ZodString,\n ZodNumber: ZodNumber,\n ZodBigInt: ZodBigInt,\n ZodBoolean: ZodBoolean,\n ZodDate: ZodDate,\n ZodSymbol: ZodSymbol,\n ZodUndefined: ZodUndefined,\n ZodNull: ZodNull,\n ZodAny: ZodAny,\n ZodUnknown: ZodUnknown,\n ZodNever: ZodNever,\n ZodVoid: ZodVoid,\n ZodArray: ZodArray,\n ZodObject: ZodObject,\n ZodUnion: ZodUnion,\n ZodDiscriminatedUnion: ZodDiscriminatedUnion,\n ZodIntersection: ZodIntersection,\n ZodTuple: ZodTuple,\n ZodRecord: ZodRecord,\n ZodMap: ZodMap,\n ZodSet: ZodSet,\n ZodFunction: ZodFunction,\n ZodLazy: ZodLazy,\n ZodLiteral: ZodLiteral,\n ZodEnum: ZodEnum,\n ZodNativeEnum: ZodNativeEnum,\n ZodPromise: ZodPromise,\n ZodEffects: ZodEffects,\n ZodTransformer: ZodEffects,\n ZodOptional: ZodOptional,\n ZodNullable: ZodNullable,\n ZodDefault: ZodDefault,\n ZodCatch: ZodCatch,\n ZodNaN: ZodNaN,\n BRAND: BRAND,\n ZodBranded: ZodBranded,\n ZodPipeline: ZodPipeline,\n ZodReadonly: ZodReadonly,\n custom: custom,\n Schema: ZodType,\n ZodSchema: ZodType,\n late: late,\n get ZodFirstPartyTypeKind () { return ZodFirstPartyTypeKind; },\n coerce: coerce,\n any: anyType,\n array: arrayType,\n bigint: bigIntType,\n boolean: booleanType,\n date: dateType,\n discriminatedUnion: discriminatedUnionType,\n effect: effectsType,\n 'enum': enumType,\n 'function': functionType,\n 'instanceof': instanceOfType,\n intersection: intersectionType,\n lazy: lazyType,\n literal: literalType,\n map: mapType,\n nan: nanType,\n nativeEnum: nativeEnumType,\n never: neverType,\n 'null': nullType,\n nullable: nullableType,\n number: numberType,\n object: objectType,\n oboolean: oboolean,\n onumber: onumber,\n optional: optionalType,\n ostring: ostring,\n pipeline: pipelineType,\n preprocess: preprocessType,\n promise: promiseType,\n record: recordType,\n set: setType,\n strictObject: strictObjectType,\n string: stringType,\n symbol: symbolType,\n transformer: effectsType,\n tuple: tupleType,\n 'undefined': undefinedType,\n union: unionType,\n unknown: unknownType,\n 'void': voidType,\n NEVER: NEVER,\n ZodIssueCode: ZodIssueCode,\n quotelessJson: quotelessJson,\n ZodError: ZodError\n});\n\nexport { BRAND, DIRTY, EMPTY_PATH, INVALID, NEVER, OK, ParseStatus, ZodType as Schema, ZodAny, ZodArray, ZodBigInt, ZodBoolean, ZodBranded, ZodCatch, ZodDate, ZodDefault, ZodDiscriminatedUnion, ZodEffects, ZodEnum, ZodError, ZodFirstPartyTypeKind, ZodFunction, ZodIntersection, ZodIssueCode, ZodLazy, ZodLiteral, ZodMap, ZodNaN, ZodNativeEnum, ZodNever, ZodNull, ZodNullable, ZodNumber, ZodObject, ZodOptional, ZodParsedType, ZodPipeline, ZodPromise, ZodReadonly, ZodRecord, ZodType as ZodSchema, ZodSet, ZodString, ZodSymbol, ZodEffects as ZodTransformer, ZodTuple, ZodType, ZodUndefined, ZodUnion, ZodUnknown, ZodVoid, addIssueToContext, anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, coerce, custom, dateType as date, datetimeRegex, z as default, errorMap as defaultErrorMap, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, getErrorMap, getParsedType, instanceOfType as instanceof, intersectionType as intersection, isAborted, isAsync, isDirty, isValid, late, lazyType as lazy, literalType as literal, makeIssue, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, objectUtil, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, quotelessJson, recordType as record, setType as set, setErrorMap, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, util, voidType as void, z };\n","import { isAddress, ZeroAddress } from \"ethers\";\nimport { z } from \"zod\";\nconst SerializedSealingPair = z.object({\n privateKey: z.string(),\n publicKey: z.string(),\n});\nconst zPermitV2WithDefaults = z.object({\n name: z.string().optional().default(\"Unnamed Permit\"),\n type: z.enum([\"self\", \"sharing\", \"recipient\"]),\n issuer: z\n .string()\n .refine((val) => isAddress(val), {\n message: \"PermitV2 issuer :: invalid address\",\n })\n .refine((val) => val !== ZeroAddress, {\n message: \"PermitV2 issuer :: must not be zeroAddress\",\n }),\n expiration: z.number().optional().default(1000000000000),\n contracts: z.array(z.string()).optional().default([]),\n projects: z.array(z.string()).optional().default([]),\n recipient: z\n .string()\n .optional()\n .default(ZeroAddress)\n .refine((val) => isAddress(val), {\n message: \"PermitV2 recipient :: invalid address\",\n }),\n validatorId: z.number().optional().default(0),\n validatorContract: z\n .string()\n .optional()\n .default(ZeroAddress)\n .refine((val) => isAddress(val), {\n message: \"PermitV2 validatorContract :: invalid address\",\n }),\n sealingPair: SerializedSealingPair.optional(),\n issuerSignature: z.string().optional().default(\"0x\"),\n recipientSignature: z.string().optional().default(\"0x\"),\n});\n/**\n * Ensures that this Permit will provide access to a non-zero amount of contracts\n * by ensuring that `contracts` and `projects` aren't both empty arrays.\n */\nconst PermitV2RefineAccess = [\n (data) => {\n return data.contracts.length + data.projects.length > 0;\n },\n {\n message: \"PermitV2 access :: at least one contract or project must be accessible.\",\n path: [\"contracts\", \"projects\"],\n },\n];\n/**\n * Permits allow a hook into an optional external validator contract,\n * this check ensures that IF an external validator is applied, that both `validatorId` and `validatorContract` are populated,\n * ELSE ensures that both `validatorId` and `validatorContract` are empty\n */\nconst PermitV2RefineValidator = [\n (data) => (data.validatorId !== 0 && data.validatorContract !== ZeroAddress) ||\n (data.validatorId === 0 && data.validatorContract === ZeroAddress),\n {\n message: \"PermitV2 external validator :: validatorId and validatorContract must either both be set or both be unset.\",\n path: [\"validatorId\", \"validatorContract\"],\n },\n];\n/**\n * SuperRefinement that checks a PermitV2s signatures\n * checkRecipient - whether to validate that `recipient` is empty for permit with type , and populated for \n * checkSealingPair - only the fully formed permit requires the sealing pair, it can be optional for permitV2 create params\n * checkExistingSignatures - not optional - checks that the permit's type matches the populated signature fields\n * checkSigned - checks that the active user's signature has been signed and added. -> issuerSignature, -> recipientSignature\n */\nconst PermitV2SignaturesSuperRefinement = (options) => {\n return (data, ctx) => {\n // Check Recipient\n // If type , `PermitV2.recipient` must be zeroAddress\n // If type , `PermitV2.recipient` must not be zeroAddress\n if (options.checkRecipient) {\n if (data.type === \"self\" && data.recipient !== ZeroAddress)\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"recipient\"],\n message: `PermitV2 (type '${data.type}') recipient :: must be empty (zeroAddress)`,\n });\n if ((data.type === \"recipient\" || data.type === \"sharing\") &&\n data.recipient === ZeroAddress) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"recipient\"],\n message: `PermitV2 (type '${data.type}') recipient :: must not be empty`,\n });\n }\n }\n // Check Sealing Pair\n if (options.checkSealingPair && data.sealingPair == null)\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"sealingPair\"],\n message: `PermitV2 sealingPair :: must not be empty`,\n });\n // Check existing signatures match type (not checking this user's signature, but the other signature)\n // If type , `PermitV2.recipientSignature` must be empty\n // If type , `PermitV2.issuerSignature` must not be empty\n if ((data.type === \"self\" || data.type === \"sharing\") &&\n data.recipientSignature !== \"0x\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"recipientSignature\"],\n message: `PermitV2 (type '${data.type}') recipientSignature :: should not be populated by the issuer`,\n });\n }\n if (data.type === \"recipient\" && data.issuerSignature === \"0x\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"issuerSignature\"],\n message: `PermitV2 (type 'recipient') issuerSignature :: \\`issuer\\` must sign the PermitV2 before sharing it with \\`recipient\\``,\n });\n }\n // Check Signed\n // If type , `PermitV2.issuerSignature` must not be empty\n // If type , `PermitV2.recipientSignature` must not be empty\n if (options.checkSigned) {\n if ((data.type === \"self\" || data.type === \"sharing\") &&\n data.issuerSignature === \"0x\")\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"issuerSignature\"],\n message: `PermitV2 (type '${data.type}') issuerSignature :: must be populated with issuer's signature. Use \\`PermitV2.sign\\` or create permit with \\`PermitV2.createAndSign\\``,\n });\n if (data.type === \"recipient\" && data.recipientSignature === \"0x\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"recipientSignature\"],\n message: `PermitV2 (type 'recipient') recipientSignature :: must be populated with recipient's signature. Use \\`PermitV2.sign\\` or create permit with \\`PermitV2.createAndSign\\``,\n });\n }\n }\n return;\n };\n};\n/**\n * Validator for the params used when creating a fresh PermitV2\n * Has defaults added that will be populated in the options object\n * Signatures superRefinement checks only the recipient, sealingPair and signatures are not necessary in the Permit params\n */\nexport const PermitV2ParamsValidator = zPermitV2WithDefaults\n .refine(...PermitV2RefineAccess)\n .refine(...PermitV2RefineValidator)\n .superRefine(PermitV2SignaturesSuperRefinement({\n checkRecipient: true,\n checkSealingPair: false, // SealingPair not required when creating a fresh permit\n checkSigned: false, // Signature not required when creating a fresh permit\n}));\n/**\n * Validator for a PermitV2 that is expected to be fully formed\n * Does not allow optional values or offer defaults\n * Validates that the correct signatures are populated\n * Validates sealingPair is populated\n */\nexport const FullyFormedPermitV2Validator = zPermitV2WithDefaults\n .required()\n .refine(...PermitV2RefineAccess)\n .refine(...PermitV2RefineValidator)\n .superRefine(PermitV2SignaturesSuperRefinement({\n checkRecipient: true,\n checkSealingPair: true,\n checkSigned: true,\n}));\n//# sourceMappingURL=permit.z.js.map","import { bigintToUint8Array, stringToUint8Array } from \"./utils\";\n// HARDHAT MOCKS\n// Mock FHE operations are automatically injected on the hardhat network\n// The utility functions allow the client / sdk to interact with the mocked FHE ops\nexport const chainIsHardhat = (chainId) => {\n if (chainId == null)\n return false;\n return parseInt(chainId) === 31337;\n};\nexport const hardhatMockUnseal = (value) => {\n let result = BigInt(0);\n for (const byteArrayItem of stringToUint8Array(value)) {\n result = (result << BigInt(8)) + BigInt(byteArrayItem);\n }\n return result;\n};\nexport const hardhatMockEncrypt = (value, securityZone = 0) => ({\n data: bigintToUint8Array(BigInt(value)),\n securityZone: securityZone || 0,\n});\n//# sourceMappingURL=utils.hardhat.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { getAddress, id, keccak256, ZeroAddress } from \"ethers\";\nimport { getSignatureDomain, getSignatureTypesAndMessage, SignatureTypes, } from \"./generate\";\nimport { FullyFormedPermitV2Validator, PermitV2ParamsValidator, } from \"./permit.z\";\nimport { GenerateSealingKey, SealingKey } from \"../sealing\";\nimport { chainIsHardhat, hardhatMockUnseal } from \"../utils.hardhat\";\nimport { getAsSealedItem, isSealedBool, isSealedAddress, isSealedUint, } from \"../../types\";\nexport class PermitV2 {\n constructor(options, metadata) {\n /**\n * Chain that this permit was signed on. In part used for mock encrypt/unseal on hardhat network.\n * Should not be set manually, included in metadata as part of serialization flows.\n */\n this._signedChainId = undefined;\n this.updateName = (name) => {\n this.name = name;\n };\n /**\n * Utility to extract the public data from a permit.\n * Used in `serialize`, `getPermission`, `getHash` etc\n */\n this.getInterface = () => {\n return {\n name: this.name,\n type: this.type,\n issuer: this.issuer,\n expiration: this.expiration,\n contracts: this.contracts,\n projects: this.projects,\n recipient: this.recipient,\n validatorId: this.validatorId,\n validatorContract: this.validatorContract,\n sealingPair: this.sealingPair,\n issuerSignature: this.issuerSignature,\n recipientSignature: this.recipientSignature,\n };\n };\n /**\n * Export the necessary permit data to share a permit with another user\n */\n this.export = () => {\n const cleanedPermit = {\n name: this.name,\n type: this.type,\n issuer: this.issuer,\n expiration: this.expiration,\n };\n if (this.contracts.length > 0)\n cleanedPermit.contracts = this.contracts;\n if (this.projects.length > 0)\n cleanedPermit.projects = this.projects;\n if (this.recipient !== ZeroAddress)\n cleanedPermit.recipient = this.recipient;\n if (this.validatorId !== 0)\n cleanedPermit.validatorId = this.validatorId;\n if (this.validatorContract !== ZeroAddress)\n cleanedPermit.validatorContract = this.validatorContract;\n if (this.type === \"sharing\" && this.issuerSignature !== \"0x\")\n cleanedPermit.issuerSignature = this.issuerSignature;\n return JSON.stringify(cleanedPermit, undefined, 2);\n };\n /**\n * Returns a serializable permit instance, removing classes and methods.\n * NOTE: Does not return a stringified permit\n */\n this.serialize = () => {\n const { sealingPair, ...permit } = this.getInterface();\n return {\n ...permit,\n _signedChainId: this._signedChainId,\n sealingPair: {\n publicKey: sealingPair.publicKey,\n privateKey: sealingPair.privateKey,\n },\n };\n };\n /**\n * Extracts a contract input ready permission from this permit.\n * The permission inherits most fields from the permit, however\n * `permit.sealingPair` is removed and replaced by `permit.sealingPair.publicKey` in the `sealingKey` field.\n *\n * @permit {boolean} skipValidation - Flag to prevent running validation on the permit before returning the extracted permission. Used internally.\n * @returns {PermissionV2}\n */\n this.getPermission = (skipValidation = false) => {\n const permitData = this.getInterface();\n if (!skipValidation) {\n const validationResult = FullyFormedPermitV2Validator.safeParse(permitData);\n if (!validationResult.success) {\n throw new Error(`PermitV2 :: getPermission :: permit validation failed - ${JSON.stringify(validationResult.error, null, 2)} ${JSON.stringify(permitData, null, 2)}`);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { name, type, sealingPair, ...permit } = permitData;\n return {\n ...permit,\n sealingKey: `0x${sealingPair.publicKey}`,\n };\n };\n /**\n * Returns a stable hash depending on the core data of the permit.\n * Is used in the store as each permit's key in the permit map.\n */\n this.getHash = () => keccak256(id(JSON.stringify({\n type: this.type,\n issuer: this.issuer,\n expiration: this.expiration,\n contracts: this.contracts,\n projects: this.projects,\n recipient: this.recipient,\n validatorId: this.validatorId,\n validatorContract: this.validatorContract,\n })));\n /**\n * Returns the domain, types, primaryType, and message fields required to request the user's signature\n * Primary type is returned to allow viem clients to more easily connect\n */\n this.getSignatureParams = (chainId, primaryType) => {\n return {\n domain: getSignatureDomain(chainId),\n ...getSignatureTypesAndMessage(primaryType, SignatureTypes[primaryType], this.getPermission(true)),\n };\n };\n /**\n * Determines the required signature type.\n * Creates the EIP712 types and message.\n * Prompts the user for their signature.\n * Inserts the signature into `issuerSignature` or `recipientSignature` as necessary.\n *\n * @param {string} chainId - Used as part of the EIP712 domain, throws if undefined\n * @param {AbstractSigner} signer - Signer responsible for signing the EIP712 permit signature, throws if undefined\n */\n this.sign = async (chainId, signer) => {\n if (chainId == null)\n throw new Error(\"PermitV2 :: sign - chainId undefined, cannot sign a permit with an unknown chainId\");\n if (signer == null)\n throw new Error(\"PermitV2 :: sign - signer undefined, you must pass in a `signer` for the connected user to create a permitV2 signature\");\n let primaryType = \"PermissionedV2IssuerSelf\";\n if (this.type === \"self\")\n primaryType = \"PermissionedV2IssuerSelf\";\n if (this.type === \"sharing\")\n primaryType = \"PermissionedV2IssuerShared\";\n if (this.type === \"recipient\")\n primaryType = \"PermissionedV2Recipient\";\n const { domain, types, message } = this.getSignatureParams(chainId, primaryType);\n const signature = await signer.signTypedData(domain, types, message);\n if (this.type === \"self\" || this.type === \"sharing\") {\n this.issuerSignature = signature;\n }\n if (this.type === \"recipient\") {\n this.recipientSignature = signature;\n }\n this._signedChainId = chainId;\n };\n /**\n * Use the privateKey of `permit.sealingPair` to unseal `ciphertext` returned from the Fhenix chain.\n * Useful when not using `SealedItem` structs and need to unseal an individual ciphertext.\n */\n this.unsealCiphertext = (ciphertext) => {\n // Early exit with mock unseal if interacting with hardhat network\n if (chainIsHardhat(this._signedChainId))\n return hardhatMockUnseal(ciphertext);\n return this.sealingPair.unseal(ciphertext);\n };\n /**\n * Check if permit satisfies the requirements param.\n * Permit must satisfy either the contracts list or the projects list\n *\n * @param {{contracts?: string[], projects?: string[]}} requirements - Lists of contract and project requirements.\n * @returns {satisfies: boolean, unsatisfiedContracts, unsatisfiedProjects} - satisfied if either req list is fulfilled.\n */\n this.getSatisfies = (requirements) => {\n let contractsSatisfied = true;\n const unsatisfiedContracts = [];\n for (const contract in requirements.contracts) {\n if (!this.contracts.includes(contract)) {\n contractsSatisfied = false;\n unsatisfiedContracts.push(contract);\n }\n }\n let projectsSatisfied = true;\n const unsatisfiedProjects = [];\n for (const project in requirements.projects) {\n if (!this.projects.includes(project)) {\n projectsSatisfied = false;\n unsatisfiedProjects.push(project);\n }\n }\n if (contractsSatisfied || projectsSatisfied)\n return {\n satisfies: true,\n unsatisfiedContracts: null,\n unsatisfiedProjects: null,\n };\n return {\n satisfies: false,\n unsatisfiedContracts,\n unsatisfiedProjects,\n };\n };\n /**\n * Returns whether the active party has created their signature.\n * If `permit.type` is self or sharing, the active party is `issuer`.\n * If `permit.type` is recipient, the active party is `recipient`\n *\n * @returns {boolean}\n */\n this.isSigned = () => {\n if (this.type === \"self\" || this.type === \"sharing\") {\n return this.issuerSignature !== \"0x\";\n }\n if (this.type === \"recipient\") {\n return this.recipientSignature != \"0x\";\n }\n return false;\n };\n /**\n * Returns whether this permit has expired due to `permit.expiration`\n *\n * @returns {boolean}\n */\n this.isExpired = () => {\n return this.expiration < Math.floor(Date.now() / 1000);\n };\n /**\n * Overall validity checker of a permit, checks the signatures and expirations\n *\n * @returns {{valid: boolean, error: string}} - If `valid`, `error` is null, else `error` indicates which validity check failed\n */\n this.isValid = () => {\n if (this.isExpired())\n return { valid: false, error: \"expired\" };\n if (!this.isSigned())\n return { valid: false, error: \"not-signed\" };\n return { valid: true, error: null };\n };\n this.name = options.name;\n this.type = options.type;\n this.issuer = options.issuer;\n this.expiration = options.expiration;\n this.contracts = options.contracts;\n this.projects = options.projects;\n this.recipient = options.recipient;\n this.validatorId = options.validatorId;\n this.validatorContract = options.validatorContract;\n this.sealingPair = options.sealingPair;\n this.issuerSignature = options.issuerSignature;\n this.recipientSignature = options.recipientSignature;\n this._signedChainId = metadata?._signedChainId;\n }\n static async create(options) {\n const { success, data: parsed, error, } = PermitV2ParamsValidator.safeParse(options);\n if (!success) {\n throw new Error(\"PermitV2 :: create :: Parsing PermitV2Options failed \" +\n JSON.stringify(error, null, 2));\n }\n const sealingPair = parsed.sealingPair != null\n ? new SealingKey(parsed.sealingPair.privateKey, parsed.sealingPair.publicKey)\n : await GenerateSealingKey();\n return new PermitV2({\n ...parsed,\n sealingPair,\n });\n }\n static async createAndSign(options, chainId, signer) {\n const permit = await PermitV2.create(options);\n await permit.sign(chainId, signer);\n return permit;\n }\n unseal(item) {\n // SealedItem\n const sealedItem = getAsSealedItem(item);\n if (sealedItem != null) {\n const bn = chainIsHardhat(this._signedChainId)\n ? hardhatMockUnseal(sealedItem.data)\n : this.sealingPair.unseal(sealedItem.data);\n if (isSealedBool(sealedItem)) {\n // Return a boolean for SealedBool\n return Boolean(bn).valueOf();\n }\n if (isSealedAddress(sealedItem)) {\n // Return a string for SealedAddress\n return getAddress(`0x${bn.toString(16).slice(-40)}`);\n }\n if (isSealedUint(sealedItem)) {\n // Return a bigint for SealedUint\n return bn;\n }\n }\n // Object | Array\n if (typeof item === \"object\" && item !== null) {\n if (Array.isArray(item)) {\n // Array - recurse\n return item.map((nestedItem) => this.unseal(nestedItem));\n }\n else {\n // Object - recurse\n const result = {};\n for (const key in item) {\n result[key] = this.unseal(item[key]);\n }\n return result;\n }\n }\n // Primitive\n return item;\n }\n}\n/**\n * Creates a `PermitV2` from a serialized permit, hydrating methods and classes\n * NOTE: Does not return a stringified permit\n *\n * @param {SerializedPermitV2} - Permit structure excluding classes\n * @returns {PermitV2} - New instance of PermitV2 class\n */\nPermitV2.deserialize = ({ _signedChainId, sealingPair, ...permit }) => {\n return new PermitV2({\n ...permit,\n sealingPair: new SealingKey(sealingPair.privateKey, sealingPair.publicKey),\n }, {\n _signedChainId,\n });\n};\nPermitV2.validate = (permit) => {\n return FullyFormedPermitV2Validator.safeParse(permit);\n};\n//# sourceMappingURL=permit.js.map","import { createStore } from \"zustand/vanilla\";\nimport { persist } from \"zustand/middleware\";\nimport { produce } from \"immer\";\nimport { PermitV2 } from \"./permit\";\n// Stores generated permits for each user, a hash indicating the active permit for each user, and a list of fheKeys as a cache\n// Can be used to create reactive hooks\nexport const _permitStore = createStore()(persist(() => ({\n permits: {},\n activePermitHash: {},\n}), { name: \"fhenixjs-permits\" }));\n// Permit V2\nexport const getPermit = (account, hash) => {\n if (account == null || hash == null)\n return;\n const savedPermit = _permitStore.getState().permits[account]?.[hash];\n if (savedPermit == null)\n return;\n return PermitV2.deserialize(savedPermit);\n};\nexport const getActivePermit = (account) => {\n if (account == null)\n return;\n const activePermitHash = _permitStore.getState().activePermitHash[account];\n return getPermit(account, activePermitHash);\n};\nexport const getPermits = (account) => {\n if (account == null)\n return {};\n return Object.entries(_permitStore.getState().permits[account] ?? {}).reduce((acc, [hash, permit]) => {\n if (permit == undefined)\n return acc;\n return { ...acc, [hash]: PermitV2.deserialize(permit) };\n }, {});\n};\nexport const setPermit = (account, permitV2) => {\n _permitStore.setState(produce((state) => {\n if (state.permits[account] == null)\n state.permits[account] = {};\n state.permits[account][permitV2.getHash()] = permitV2.serialize();\n }));\n};\nexport const removePermit = (account, hash) => {\n _permitStore.setState(produce((state) => {\n state.permits[account][hash] = undefined;\n }));\n};\n// Active Permit Hash\nexport const getActivePermitHash = (account) => {\n if (account == null)\n return undefined;\n return _permitStore.getState().activePermitHash[account];\n};\nexport const setActivePermitHash = (account, hash) => {\n _permitStore.setState(produce((state) => {\n state.activePermitHash[account] = hash;\n }));\n};\nexport const removeActivePermitHash = (account) => {\n _permitStore.setState(produce((state) => {\n state.activePermitHash[account] = undefined;\n }));\n};\nexport const permitStore = {\n store: _permitStore,\n getPermit,\n getActivePermit,\n getPermits,\n setPermit,\n removePermit,\n getActivePermitHash,\n setActivePermitHash,\n removeActivePermitHash,\n};\n//# sourceMappingURL=store.js.map","import wasm from \"./tfhe_bg.wasm\";\n//@ts-expect-error imports from different wasm/js files are wonky\nimport initSDK from \"./tfhe.js\";\nlet initialized;\nconst initFhevm = async () => {\n if (!initialized) {\n try {\n initialized = await initSDK(wasm);\n }\n catch (_) {\n initialized = await initSDK(wasm());\n }\n }\n return initialized;\n};\nexport const asyncInitFhevm = async () => {\n try {\n await initFhevm();\n }\n catch (err) {\n throw new Error(`Error initializing FhenixClient ${err}`);\n }\n};\nexport { TfheCompactPublicKey } from \"./tfhe.js\";\nexport { CompactFheBool, CompactFheUint8, CompactFheUint16, CompactFheUint32, CompactFheUint64, CompactFheUint128, CompactFheUint160, CompactFheUint256, } from \"./tfhe.js\";\n//# sourceMappingURL=fhe-browser.js.map","export const MAX_UINT8 = 255;\nexport const MAX_UINT16 = 65535;\nexport const MAX_UINT32 = 4294967295;\nexport const FheOpsAddress = \"0x0000000000000000000000000000000000000080\";\nexport const PUBLIC_KEY_LENGTH_MIN = 15000;\nexport const DEFAULT_COFHE_URL = \"http://127.0.0.1:8448\";\n//# sourceMappingURL=consts.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createStore } from \"zustand/vanilla\";\nimport { produce } from \"immer\";\nimport { TfheCompactPublicKey } from \"./fhe/fhe\";\nimport { fromHexString } from \"./utils\";\nimport { chainIsHardhat } from \"./utils.hardhat\";\nimport { PUBLIC_KEY_LENGTH_MIN } from \"./consts\";\nexport const _sdkStore = createStore(() => ({\n fheKeysInitialized: false,\n securityZones: [0],\n fheKeys: {},\n accessRequirements: {\n contracts: [],\n projects: [],\n },\n coFheUrl: undefined,\n providerInitialized: false,\n provider: undefined,\n chainId: undefined,\n signerInitialized: false,\n signer: undefined,\n account: undefined,\n}));\n// Store getters / setters\nconst _store_getFheKey = (chainId, securityZone = 0) => {\n if (chainId == null || securityZone == null)\n return undefined;\n const serialized = _sdkStore.getState().fheKeys[chainId]?.[securityZone];\n if (serialized == null)\n return undefined;\n return TfheCompactPublicKey.deserialize(serialized);\n};\nexport const _store_getConnectedChainFheKey = (securityZone = 0) => {\n const state = _sdkStore.getState();\n if (securityZone == null)\n return undefined;\n if (state.chainId == null)\n return undefined;\n const serialized = state.fheKeys[state.chainId]?.[securityZone];\n if (serialized == null)\n return undefined;\n return TfheCompactPublicKey.deserialize(serialized);\n};\nexport const _store_setFheKey = (chainId, securityZone, fheKey) => {\n if (chainId == null || securityZone == null)\n return;\n _sdkStore.setState(produce((state) => {\n if (state.fheKeys[chainId] == null)\n state.fheKeys[chainId] = {};\n state.fheKeys[chainId][securityZone] = fheKey?.serialize();\n }));\n};\nconst getChainIdFromProvider = async (provider) => {\n var chainId = null;\n try {\n chainId = await provider.getChainId();\n }\n catch (err) {\n const network = await provider.getNetwork();\n chainId = network.chainId;\n }\n if (chainId == null)\n throw new Error(\"sdk :: getChainIdFromProvider :: provider.getChainId returned a null result, ensure that your provider is connected to a network\");\n return chainId;\n};\n// External functionality\nexport const _store_initialize = async (params) => {\n const { provider, signer, securityZones = [0], contracts: contractRequirements = [], projects: projectRequirements = [], coFheUrl = undefined, } = params;\n _sdkStore.setState({\n providerInitialized: false,\n signerInitialized: false,\n accessRequirements: {\n contracts: contractRequirements,\n projects: projectRequirements,\n },\n coFheUrl,\n });\n // PROVIDER\n // Fetch chain Id from provider\n const chainId = await getChainIdFromProvider(provider);\n const chainIdChanged = chainId != null && chainId !== _sdkStore.getState().chainId;\n if (chainId != null && provider != null) {\n _sdkStore.setState({ providerInitialized: true, provider, chainId });\n }\n // SIGNER\n // Account is fetched and stored here, the `account` field in the store is used to index which permits belong to which users\n // In sdk functions, `state.account != null` is validated, this is a check to ensure that a valid signer has been provided\n // which is necessary to interact with permits\n const account = await signer?.getAddress();\n if (account != null && signer != null) {\n _sdkStore.setState({ signerInitialized: true, account, signer });\n }\n else {\n _sdkStore.setState({\n signerInitialized: false,\n account: undefined,\n signer: undefined,\n });\n }\n // If chainId, securityZones, or CoFhe enabled changes, update the store and update fheKeys for re-initialization\n const securityZonesChanged = securityZones !== _sdkStore.getState().securityZones;\n if (chainIdChanged || securityZonesChanged) {\n _sdkStore.setState({\n securityZones,\n fheKeysInitialized: false,\n });\n }\n // Fetch FHE keys (skipped if hardhat)\n if (!chainIsHardhat(chainId) && !_sdkStore.getState().fheKeysInitialized) {\n await Promise.all(securityZones.map((securityZone) => _store_fetchFheKey(chainId, securityZone, true)));\n }\n _sdkStore.setState({ fheKeysInitialized: true });\n};\n/**\n * Retrieves the FHE public key from the provider.\n * If the key already exists in the store it is returned, else it is fetched, stored, and returned\n * @param {string} chainId - The chain to fetch the FHE key for, if no chainId provided, undefined is returned\n * @param securityZone - The security zone for which to retrieve the key (default 0).\n * @returns {Promise} - The retrieved public key.\n */\nexport const _store_fetchFheKey = async (chainId, securityZone = 0, forceFetch = false) => {\n const storedKey = _store_getFheKey(chainId, securityZone);\n if (storedKey != null && !forceFetch)\n return storedKey;\n const coFheUrl = _sdkStore.getState().coFheUrl;\n if (coFheUrl == null || typeof coFheUrl !== \"string\") {\n throw new Error(\"Error initializing fhenixjs; coFheUrl invalid, ensure it is set in `fhenixsdk.initialize`\");\n }\n let publicKey = undefined;\n // Fetch publicKey from CoFhe\n try {\n // TODO: misspelling?\n const res = await fetch(`${coFheUrl}/GetNetworkPublickKey`, {\n method: \"POST\",\n body: JSON.stringify({\n SecurityZone: securityZone,\n }),\n });\n const data = await res.json();\n publicKey = `0x${data.securityZone}`;\n }\n catch (err) {\n throw new Error(`Error initializing fhenixjs; fetching FHE publicKey from CoFHE failed with error ${err}`);\n }\n if (publicKey == null || typeof publicKey !== \"string\") {\n throw new Error(`Error initializing fhenixjs; FHE publicKey fetched from CoFHE invalid: not a string`);\n }\n if (publicKey === \"0x\") {\n throw new Error(\"Error initializing fhenixjs; provided chain is not FHE enabled, no FHE publicKey found\");\n }\n if (publicKey.length < PUBLIC_KEY_LENGTH_MIN) {\n throw new Error(`Error initializing fhenixjs; got shorter than expected FHE publicKey: ${publicKey.length}. Expected length >= ${PUBLIC_KEY_LENGTH_MIN}`);\n }\n const buff = fromHexString(publicKey);\n try {\n const key = TfheCompactPublicKey.deserialize(buff);\n _store_setFheKey(chainId, securityZone, key);\n return key;\n }\n catch (err) {\n throw new Error(`Error deserializing public key ${err}`);\n }\n};\n//# sourceMappingURL=store.js.map","import { CompactFheBool, CompactFheUint8, CompactFheUint16, CompactFheUint32, CompactFheUint64, CompactFheUint128, CompactFheUint160, CompactFheUint256, } from \"./fhe/fhe.js\";\nimport { EncryptionTypes, } from \"../types\";\nimport { fromHexString, toBigInt } from \"./utils.js\";\n/**\n * Encrypts a Uint8 value using TFHE (Fast Fully Homomorphic Encryption over the Torus).\n * @param {boolean} value - The Boolean value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedBool} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_bool = (value, publicKey, securityZone = 0) => {\n const encrypted = CompactFheBool.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Uint8 value using TFHE (Fast Fully Homomorphic Encryption over the Torus).\n * @param {number} value - The Uint8 value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedUint8} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_uint8 = (value, publicKey, securityZone = 0) => {\n const encrypted = CompactFheUint8.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Uint16 value using TFHE.\n * @param {number} value - The Uint16 value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedUint16} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_uint16 = (value, publicKey, securityZone = 0) => {\n const encrypted = CompactFheUint16.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Uint32 value using TFHE.\n * @param {number} value - The Uint32 value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedUint32} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_uint32 = (value, publicKey, securityZone = 0) => {\n const encrypted = CompactFheUint32.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Uint64 value using TFHE.\n * @param {number} value - The Uint64 value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedUint64} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_uint64 = (value, publicKey, securityZone = 0) => {\n if (typeof value === \"string\") {\n value = toBigInt(fromHexString(value));\n }\n else {\n value = value;\n }\n const encrypted = CompactFheUint64.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Uint128 value using TFHE.\n * @param {bigint} value - The Uint128 value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedUint128} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_uint128 = (value, publicKey, securityZone = 0) => {\n if (typeof value === \"string\") {\n value = toBigInt(fromHexString(value));\n }\n else {\n value = value;\n }\n const encrypted = CompactFheUint128.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Uint256 value using TFHE.\n * @param {bigint} value - The Uint256 value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedUint256} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_uint256 = (value, publicKey, securityZone = 0) => {\n if (typeof value === \"string\") {\n value = toBigInt(fromHexString(value));\n }\n else {\n value = value;\n }\n const encrypted = CompactFheUint256.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Address value using TFHE.\n * @param {bigint} value - The Address (Uint160) value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the address on.\n * @returns {EncryptedAddress} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_address = (value, publicKey, securityZone = 0) => {\n if (typeof value === \"string\") {\n value = toBigInt(fromHexString(value));\n }\n else {\n value = value;\n }\n const encrypted = CompactFheUint160.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a numeric value using TFHE according to the specified encryption type.\n * @param {number} value - The numeric value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param {EncryptionTypes} type - The encryption type (uint8, uint16, uint32).\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {Uint8Array} - The encrypted value serialized as Uint8Array.\n * @throws {Error} - Throws an error if an invalid type is specified.\n */\nexport const encrypt = (value, publicKey, type = EncryptionTypes.uint8, securityZone = 0) => {\n switch (type) {\n case EncryptionTypes.bool:\n return encrypt_bool(!!value, publicKey, securityZone);\n case EncryptionTypes.uint8:\n return encrypt_uint8(value, publicKey, securityZone);\n case EncryptionTypes.uint16:\n return encrypt_uint16(value, publicKey, securityZone);\n case EncryptionTypes.uint32:\n return encrypt_uint32(value, publicKey, securityZone);\n case EncryptionTypes.uint64:\n return encrypt_uint64(value.toString(16), publicKey, securityZone);\n case EncryptionTypes.uint128:\n return encrypt_uint128(value.toString(16), publicKey, securityZone);\n case EncryptionTypes.uint256:\n return encrypt_uint256(value.toString(16), publicKey, securityZone);\n case EncryptionTypes.address:\n return encrypt_address(value.toString(16), publicKey, securityZone);\n default:\n throw new Error(\"Invalid type\");\n }\n};\n//# sourceMappingURL=encrypt.js.map","import { asyncInitFhevm } from \"./fhe/fhe.js\";\n// INFO: The existing `GetFhePublicKey` function has been replaced with `InitFhevm`\n// `GetFhePublicKey` didn't allow security zones to be set, and was overloaded with initializing the Fhevm\n// Public key fetching has been moved to the Async and Sync FhenixClient constructors (they handle it slightly differently)\n// - arch 2024-08-28\nexport const InitFhevm = async () => {\n // `asyncInitFhevm` in `/sdk/fhe/fhe.ts` in node env (noop)\n // `asyncInitFhevm` in `/sdk/fhe/fhe-browser.ts` in browser env (init wasm)\n await asyncInitFhevm();\n};\n//# sourceMappingURL=init.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { toHexString } from \"./utils.js\";\nimport { chainIsHardhat, hardhatMockEncrypt } from \"./utils.hardhat.js\";\nimport { PermitV2, permitStore, PermitV2ParamsValidator } from \"./permit\";\nimport { isString } from \"./validation.js\";\nimport { _sdkStore, _store_getConnectedChainFheKey, _store_initialize, } from \"./store.js\";\nimport { encrypt_bool as tfhe_encrypt_bool, encrypt_uint8 as tfhe_encrypt_uint8, encrypt_uint16 as tfhe_encrypt_uint16, encrypt_uint32 as tfhe_encrypt_uint32, encrypt_uint64 as tfhe_encrypt_uint64, encrypt_uint128 as tfhe_encrypt_uint128, encrypt_uint256 as tfhe_encrypt_uint256, encrypt_address as tfhe_encrypt_address, } from \"./encrypt.js\";\nimport { InitFhevm } from \"./init.js\";\nimport { FheUType, isEncryptableItem, ResultErr, ResultOk, } from \"../types\";\n/**\n * Initializes the `fhenixsdk` to enable encrypting input data, creating permits / permissions, and decrypting sealed outputs.\n * Initializes `fhevm` client FHE wasm module and fetches the provided chain's FHE publicKey.\n * If a valid signer is provided, a `permit/permission` is generated automatically\n */\nconst initialize = async (params) => {\n // Initialize the fhevm\n await InitFhevm().catch((err) => {\n if (params.ignoreErrors) {\n return undefined;\n }\n else {\n return ResultErr(`initialize :: failed to initialize fhenixjs - is the network FHE-enabled? ${err}`);\n }\n });\n if (params.provider == null)\n return ResultErr(\"initialize :: missing provider - Please provide an AbstractProvider interface\");\n if (params.securityZones != null && params.securityZones.length === 0)\n return ResultErr(\"initialize :: a list of securityZones was provided, but it is empty\");\n await _store_initialize(params);\n // `generatePermit` must set to `false` to early exit here\n if (params.generatePermit === false)\n return ResultOk(undefined);\n // Return the existing active permit\n const userActivePermit = getPermit();\n if (userActivePermit.success)\n return userActivePermit;\n // Create permit and return it\n return createPermit();\n};\n/**\n * Internal reusable initialization checker\n */\nconst _checkInitialized = (state, options) => {\n if (options?.fheKeys !== false && !state.fheKeysInitialized) {\n return ResultErr(\"fhenixsdk not initialized. Use `fhenixsdk.initialize(...)`.\");\n }\n if (options?.coFheUrl !== false && !state.coFheUrl)\n return ResultErr(\"fhenixsdk not initialized with a coFheUrl. Set `coFheUrl` in `fhenixsdk.initialize`.\");\n if (options?.provider !== false && !state.providerInitialized)\n return ResultErr(\"fhenixsdk not initialized with valid provider. Use `fhenixsdk.initialize(...)` with a valid provider that satisfies `AbstractProvider`.\");\n if (options?.signer !== false && !state.signerInitialized)\n return ResultErr(\"fhenixsdk not initialized with a valid signer. Use `fhenixsdk.initialize(...)` with a valid signer that satisfies `AbstractSigner`.\");\n return ResultOk(null);\n};\n// Permit\n/**\n * Creates a new permit with options, prompts user for signature.\n * Handles all `permit.type`s, and prompts for the correct signature type.\n * The created PermitV2 will be inserted into the store and marked as the active permit.\n * NOTE: This is a wrapper around `PermitV2.create` and `PermitV2.sign`\n *\n * @param {PermitV2Options} options - Partial PermitV2 fields to create the Permit with, if no options provided will be filled with the defaults:\n * { type: \"self\", issuer: initializedUserAddress, projects: initializedProjects, contracts: initializedContracts }\n * @returns {Result} - Newly created PermitV2 as a Result object\n */\nconst createPermit = async (options) => {\n const state = _sdkStore.getState();\n const initialized = _checkInitialized(state);\n if (!initialized.success)\n return ResultErr(`${createPermit.name} :: ${initialized.error}`);\n const optionsWithDefaults = {\n type: \"self\",\n issuer: state.account,\n contracts: state.accessRequirements.contracts,\n projects: state.accessRequirements.projects,\n ...options,\n };\n let permit;\n try {\n permit = await PermitV2.createAndSign(optionsWithDefaults, state.chainId, state.signer);\n }\n catch (e) {\n return ResultErr(`${createPermit.name} :: ${e}`);\n }\n permitStore.setPermit(state.account, permit);\n permitStore.setActivePermitHash(state.account, permit.getHash());\n return ResultOk(permit);\n};\n/**\n * Imports a fully formed existing permit, expected to be valid.\n * Does not ask for user signature, expects to already be populated.\n * Will throw an error if the imported permit is invalid, see `PermitV2.isValid`.\n * The imported PermitV2 will be inserted into the store and marked as the active permit.\n *\n * @param {string | PermitV2Interface} imported - Permit to import as a text string or PermitV2Interface\n */\nconst importPermit = async (imported) => {\n const state = _sdkStore.getState();\n const initialized = _checkInitialized(state);\n if (!initialized.success)\n return ResultErr(`${createPermit.name} :: ${initialized.error}`);\n // Import validation\n if (typeof imported === \"string\") {\n try {\n imported = JSON.parse(imported);\n }\n catch (e) {\n return ResultErr(`importPermit :: json parsing failed - ${e}`);\n }\n }\n const { success, data: parsedPermit, error: permitParsingError, } = PermitV2ParamsValidator.safeParse(imported);\n if (!success) {\n const errorString = Object.entries(permitParsingError.flatten().fieldErrors)\n .map(([field, err]) => `- ${field}: ${err}`)\n .join(\"\\n\");\n return ResultErr(`importPermit :: invalid permit data - ${errorString}`);\n }\n if (parsedPermit.type !== \"self\") {\n if (parsedPermit.issuer === state.account)\n parsedPermit.type = \"sharing\";\n else if (parsedPermit.recipient === state.account)\n parsedPermit.type = \"recipient\";\n else {\n return ResultErr(`importPermit :: invalid Permit - connected account <${state.account}> is not issuer or recipient`);\n }\n }\n let permit;\n try {\n permit = await PermitV2.create(parsedPermit);\n }\n catch (e) {\n return ResultErr(`importPermit :: ${e}`);\n }\n const { valid, error } = permit.isValid();\n if (!valid) {\n return ResultErr(`importPermit :: newly imported permit is invalid - ${error}`);\n }\n permitStore.setPermit(state.account, permit);\n permitStore.setActivePermitHash(state.account, permit.getHash());\n return ResultOk(permit);\n};\n/**\n * Selects the active permit using its hash.\n * If the hash is not found in the stored permits store, throws an error.\n * The matched permit will be marked as the active permit.\n *\n * @param {string} hash - The `PermitV2.getHash` of the target permit.\n */\nconst selectActivePermit = (hash) => {\n const state = _sdkStore.getState();\n const initialized = _checkInitialized(state);\n if (!initialized.success)\n return ResultErr(`${selectActivePermit.name} :: ${initialized.error}`);\n const permit = permitStore.getPermit(state.account, hash);\n if (permit == null)\n return ResultErr(`${selectActivePermit.name} :: Permit with hash <${hash}> not found`);\n permitStore.setActivePermitHash(state.account, permit.getHash());\n return ResultOk(permit);\n};\n/**\n * Retrieves a stored permit based on its hash.\n * If no hash is provided, the currently active permit will be retrieved.\n *\n * @param {string} hash - Optional `PermitV2.getHash` of the permit.\n * @returns {Result} - The active permit or permit associated with `hash` as a Result object.\n */\nconst getPermit = (hash) => {\n const state = _sdkStore.getState();\n const initialized = _checkInitialized(state);\n if (!initialized.success)\n return ResultErr(`${getPermit.name} :: ${initialized.error}`);\n if (hash == null) {\n const permit = permitStore.getActivePermit(state.account);\n if (permit == null)\n return ResultErr(`getPermit :: active permit not found`);\n return ResultOk(permit);\n }\n const permit = permitStore.getPermit(state.account, hash);\n if (permit == null)\n return ResultErr(`getPermit :: permit with hash <${hash}> not found`);\n return ResultOk(permit);\n};\n/**\n * Retrieves a stored permission based on the permit's hash.\n * If no hash is provided, the currently active permit will be used.\n * The `PermissionV2` is extracted from the permit.\n *\n * @param {string} hash - Optional hash of the permission to get, defaults to active permit's permission\n * @returns {Result} - The active permission or permission associated with `hash`, as a result object.\n */\nconst getPermission = (hash) => {\n const permitResult = getPermit(hash);\n if (!permitResult.success)\n return ResultErr(`${getPermission.name} :: ${permitResult.error}`);\n return ResultOk(permitResult.data.getPermission());\n};\n/**\n * Exports all stored permits.\n * @returns {Result>} - All stored permits.\n */\nconst getAllPermits = () => {\n const state = _sdkStore.getState();\n const initialized = _checkInitialized(state);\n if (!initialized.success)\n return ResultErr(`${getAllPermits.name} :: ${initialized.error}`);\n return ResultOk(permitStore.getPermits(state.account));\n};\nasync function encrypt(item) {\n const state = _sdkStore.getState();\n // Only need to check `fheKeysInitialized`, signer and provider not needed for encryption\n const initialized = _checkInitialized(state, {\n provider: false,\n signer: false,\n });\n if (!initialized.success)\n return ResultErr(`${encrypt.name} :: ${initialized.error}`);\n // Permission\n if (item === \"permission\") {\n return getPermission();\n }\n // EncryptableItem\n if (isEncryptableItem(item)) {\n // Early exit with mock encrypted value if chain is hardhat\n // TODO: Determine how CoFHE encrypted items will be handled in hardhat\n if (chainIsHardhat(state.coFheUrl))\n return ResultOk(hardhatMockEncrypt(BigInt(item.data)));\n const fhePublicKey = _store_getConnectedChainFheKey(item.securityZone ?? 0);\n if (fhePublicKey == null)\n return ResultErr(\"encrypt :: fheKey for current chain not found\");\n let preEncryptedItem;\n // prettier-ignore\n try {\n switch (item.utype) {\n case FheUType.bool: {\n preEncryptedItem = tfhe_encrypt_bool(item.data, fhePublicKey, item.securityZone);\n break;\n }\n case FheUType.uint8: {\n preEncryptedItem = tfhe_encrypt_uint8(item.data, fhePublicKey, item.securityZone);\n break;\n }\n case FheUType.uint16: {\n preEncryptedItem = tfhe_encrypt_uint16(item.data, fhePublicKey, item.securityZone);\n break;\n }\n case FheUType.uint32: {\n preEncryptedItem = tfhe_encrypt_uint32(item.data, fhePublicKey, item.securityZone);\n break;\n }\n case FheUType.uint64: {\n preEncryptedItem = tfhe_encrypt_uint64(item.data, fhePublicKey, item.securityZone);\n break;\n }\n case FheUType.uint128: {\n preEncryptedItem = tfhe_encrypt_uint128(item.data, fhePublicKey, item.securityZone);\n break;\n }\n case FheUType.uint256: {\n preEncryptedItem = tfhe_encrypt_uint256(item.data, fhePublicKey, item.securityZone);\n break;\n }\n case FheUType.address: {\n preEncryptedItem = tfhe_encrypt_address(item.data, fhePublicKey, item.securityZone);\n break;\n }\n }\n }\n catch (e) {\n return ResultErr(`encrypt :: tfhe_encrypt_xxxx :: ${e}`);\n }\n // Send preEncryptedItem to CoFHE route `/UpdateCT`, receive `ctHash` to use as contract input\n const res = (await fetch(`${state.coFheUrl}/UpdateCT`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\", // Ensure the server knows you're sending JSON\n },\n body: JSON.stringify({\n UType: item.utype,\n Value: toHexString(preEncryptedItem.data),\n SecurityZone: item.securityZone,\n }),\n }));\n const data = await res.json();\n // Transform data into final CoFHE input variable\n return ResultOk({\n securityZone: item.securityZone,\n hash: BigInt(`0x${data.ctHash}`),\n utype: item.utype,\n signature: data.signature,\n });\n }\n // Object | Array\n if (typeof item === \"object\" && item !== null) {\n if (Array.isArray(item)) {\n // Array - recurse\n const nestedItems = await Promise.all(item.map((nestedItem) => encrypt(nestedItem)));\n // Any nested error break out\n const nestedItemResultErr = nestedItems.find((nestedItem) => !nestedItem.success);\n if (nestedItemResultErr != null)\n return nestedItemResultErr;\n return ResultOk(nestedItems.map((nestedItem) => nestedItem.data));\n }\n else {\n // Object - recurse\n const nestedKeyedItems = await Promise.all(Object.entries(item).map(async ([key, value]) => ({\n key,\n value: await encrypt(value),\n })));\n // Any nested error break out\n const nestedItemResultErr = nestedKeyedItems.find(({ value }) => !value.success);\n if (nestedItemResultErr != null)\n return nestedItemResultErr;\n const result = {};\n nestedKeyedItems.forEach(({ key, value }) => {\n result[key] = value.data;\n });\n return ResultOk(result);\n }\n }\n // Primitive\n return ResultOk(item);\n}\n// Unseal\n/**\n * Unseals an encrypted message using the stored permit for a specific contract address.\n * NOTE: Wrapper around `PermitV2.unseal`\n *\n * @param {string} ciphertext - The encrypted message to unseal.\n * @param {string} account - Users address, defaults to store.account\n * @param {string} hash - The hash of the permit to use for this operation, defaults to active permitV2 hash\n * @returns bigint - The unsealed message.\n */\nconst unsealCiphertext = (ciphertext, account, hash) => {\n const state = _sdkStore.getState();\n const initialized = _checkInitialized(state);\n if (!initialized.success)\n return ResultErr(`${getAllPermits.name} :: ${initialized.error}`);\n isString(ciphertext);\n const resolvedAccount = account ?? state.account;\n const resolvedHash = hash ?? permitStore.getActivePermitHash(resolvedAccount);\n if (resolvedAccount == null || resolvedHash == null) {\n return ResultErr(`unsealCiphertext :: PermitV2 hash not provided and active PermitV2 not found`);\n }\n const permit = permitStore.getPermit(resolvedAccount, resolvedHash);\n if (permit == null) {\n return ResultErr(`unsealCiphertext :: PermitV2 with account <${account}> and hash <${hash}> not found`);\n }\n let unsealed;\n try {\n unsealed = permit.unsealCiphertext(ciphertext);\n }\n catch (e) {\n return ResultErr(`unsealCiphertext :: ${e}`);\n }\n return ResultOk(unsealed);\n};\n/**\n * Uses the privateKey of `permit.sealingPair` to recursively unseal any contained `SealedItems`.\n * If `item` is a single `SealedItem` it will be individually.\n * NOTE: Only unseals typed `SealedItem`s returned from `FHE.sealoutputTyped` and the FHE bindings' `e____.sealTyped`.\n *\n * @param {any | any[]} item - Array, object, or item. Any nested `SealedItems` will be unsealed.\n * @returns - Recursively unsealed data in the target type, SealedBool -> boolean, SealedAddress -> string, etc.\n */\nfunction unseal(item, account, hash) {\n const resolvedAccount = account ?? _sdkStore.getState().account;\n const resolvedHash = hash ?? permitStore.getActivePermitHash(resolvedAccount);\n if (resolvedAccount == null || resolvedHash == null) {\n return ResultErr(`unseal :: PermitV2 hash not provided and active PermitV2 not found`);\n }\n const permit = permitStore.getPermit(resolvedAccount, resolvedHash);\n if (permit == null) {\n return ResultErr(`unseal :: PermitV2 with account <${account}> and hash <${hash}> not found`);\n }\n let unsealed;\n try {\n unsealed = permit.unseal(item);\n }\n catch (e) {\n return ResultErr(`unseal :: ${e}`);\n }\n return ResultOk(unsealed);\n}\n// Export\nexport const fhenixsdk = {\n store: _sdkStore,\n initialize,\n createPermit,\n importPermit,\n selectActivePermit,\n getPermit,\n getPermission,\n getAllPermits,\n encrypt,\n unsealCiphertext,\n unseal,\n};\n//# sourceMappingURL=index.js.map"],"names":["toHexString","BN_0","assertArgument","require","this","naclUtil.decodeBase64","nacl.box","nacl.randomBytes","naclUtil.encodeBase64","wasm","getPermit","initSDK","tfhe_encrypt_bool","tfhe_encrypt_uint8","tfhe_encrypt_uint16","tfhe_encrypt_uint32","tfhe_encrypt_uint64","tfhe_encrypt_uint128","tfhe_encrypt_uint256","tfhe_encrypt_address"],"mappings":"AAAA,SAAS,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;AACvC,IAAI,IAAI,CAAC,EAAE,EAAE;AACb,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,0BAA0B,EAAE,QAAQ,CAAC,6BAA6B,EAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAChH,KAAK;AACL,CAAC;AACM,SAAS,QAAQ,CAAC,KAAK,EAAE;AAChC,IAAI,MAAM,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC;AACzC,IAAI,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAClC,CAAC;AAoBM,SAAS,QAAQ,CAAC,KAAK,EAAE;AAChC,IAAI,MAAM,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACjE,IAAI,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAClC,CAAC;AACM,SAAS,gBAAgB,CAAC,KAAK,EAAE;AACxC,IAAI,MAAM,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC;AACzC,IAAI,IAAI,CAAC,EAAE,EAAE;AACb,QAAQ,IAAI;AACZ,YAAY,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5B,SAAS;AACT,QAAQ,OAAO,CAAC,EAAE;AAClB,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,4BAA4B,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AACzF,SAAS;AACT,KAAK;AACL;;ACnCO,MAAM,aAAa,GAAG,CAAC,SAAS,KAAK;AAC5C,IAAI,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC;AACjF,IAAI,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAChE,IAAI,IAAI,CAAC,GAAG;AACZ,QAAQ,OAAO,IAAI,UAAU,EAAE,CAAC;AAChC,IAAI,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC,CAAC;AACK,MAAMA,aAAW,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACzG,SAAS,QAAQ,CAAC,KAAK,EAAE;AAChC,IAAI,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AACM,SAAS,SAAS,CAAC,KAAK,EAAE;AACjC,IAAI,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AAoBD,MAAM,OAAO,GAAG,kBAAkB,CAAC;AACnC;AACA,MAAM,QAAQ,GAAG,gBAAgB,CAAC;AAClC,MAAMC,MAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACvB;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,IAAI,IAAI,KAAK,YAAY,UAAU,EAAE;AACrC,QAAQ,IAAI,MAAM,GAAG,KAAK,CAAC;AAC3B,QAAQ,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;AAC/B,YAAY,MAAM,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,YAAY,MAAM,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACxC,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9B,KAAK;AACL,IAAI,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AACD,SAAS,eAAe,CAAC,MAAM,EAAE;AACjC,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAClC,IAAI,IAAI,KAAK,KAAKA,MAAI,EAAE;AACxB,QAAQ,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACjC,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACxB,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,QAAQ,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7B,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACpE,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD;AACA;AACA;AACA;AACA,SAAS,OAAO,CAAC,KAAK,EAAE;AACxB,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;AACpC,IAAIC,gBAAc,CAAC,MAAM,IAAID,MAAI,EAAE,mCAAmC,CAAC,CAAC;AACxE,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD;AACA;AACA;AACA;AACA,SAAS,SAAS,CAAC,KAAK,EAAE;AAC1B,IAAI,QAAQ,OAAO,KAAK;AACxB,QAAQ,KAAK,QAAQ;AACrB,YAAY,OAAO,KAAK,CAAC;AACzB,QAAQ,KAAK,QAAQ;AACrB,YAAYC,gBAAc,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;AACjE,YAAYA,gBAAc,CAAC,KAAK,IAAI,CAAC,QAAQ,IAAI,KAAK,IAAI,QAAQ,EAAE,UAAU,CAAC,CAAC;AAChF,YAAY,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACjC,QAAQ,KAAK,QAAQ;AACrB,YAAY,IAAI;AAChB,gBAAgB,IAAI,KAAK,KAAK,EAAE,EAAE;AAClC,oBAAoB,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;AACpD,iBAAiB;AACjB,gBAAgB,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC1D,oBAAoB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,iBAAiB;AACjB,gBAAgB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACrC;AACA,aAAa;AACb,YAAY,OAAO,CAAC,EAAE;AACtB,gBAAgBA,gBAAc,CAAC,KAAK,EAAE,CAAC,6BAA6B,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnF,aAAa;AACb,KAAK;AACL,IAAIA,gBAAc,CAAC,KAAK,EAAE,4BAA4B,CAAC,CAAC;AACxD,CAAC;AACD,SAASA,gBAAc,CAAC,KAAK,EAAE,OAAO,EAAE;AACxC,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,QAAQ,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AACjC,KAAK;AACL,CAAC;AASD;AACO,MAAM,kBAAkB,GAAG,CAAC,KAAK,KAAK;AAC7C,IAAI,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC;AAMK,MAAM,kBAAkB,GAAG,CAAC,MAAM,KAAK;AAC9C,IAAI,MAAM,UAAU,GAAG,EAAE,CAAC;AAC1B,IAAI,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;AACjD;AACA,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9B;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;AACzC;AACA,QAAQ,SAAS,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAC9D;AACA,QAAQ,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7B,KAAK;AACL,IAAI,OAAO,SAAS,CAAC;AACrB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CCpJD,CAAC,SAAS,IAAI,EAAE;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,IAAI,EAAE,GAAG,SAAS,IAAI,EAAE;GACtB,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;GAChC,IAAI,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;GAC3D,OAAO,CAAC,CAAC;AACX,EAAC,CAAC;AACF;AACA;AACA,CAAA,IAAI,WAAW,GAAG,qBAAqB,EAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;AACvE;AACA,CAAA,IAAI,EAAE,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AAC5B,CAAA,IAAI,EAAE,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACvC;CACA,IAAI,GAAG,GAAG,EAAE,EAAE;AACd,KAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KACb,OAAO,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC7B,KAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5I,KAAI,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7I,KAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5I,KAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5I,KAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAC7I;CACA,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;GACxB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;AAC5B,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;AAC5B,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;GAC1B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACpB,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;AAC7B,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;AAC7B,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;GAC3B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;EACnB;AACD;CACA,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;AAC7B,GAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;GACZ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/C,GAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;EAClC;AACD;CACA,SAAS,gBAAgB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;AACxC,GAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACzB;AACD;CACA,SAAS,gBAAgB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;AACxC,GAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACzB;AACD;CACA,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAClC,GAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC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,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;GACzB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;GACE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;GACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;GACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;GACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;GACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;GACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;GACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;GACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;GACE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;GACE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;GACE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;GACE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;GACE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;GACE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;EAC3B;AACD;CACA,SAAS,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAChC,GAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,GAAG,GA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EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;A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,CAAC;AACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB;AACA;GACE,CAAC,GAAG,CAAC,CAAC;AACR,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,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","x_google_ignoreList":[2,3,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,29]} \ No newline at end of file diff --git a/dist/cofhe.esm.min.js b/dist/cofhe.esm.min.js new file mode 100644 index 0000000..d694dd7 --- /dev/null +++ b/dist/cofhe.esm.min.js @@ -0,0 +1 @@ +function assertIs(is,expected,value){if(!is){throw new Error(`Expected value which is \`${expected}\`, received value of type \`${typeof value}\`.`)}}function isString(value){const is=typeof value==="string";assertIs(is,"string",value)}function isNumber(value){const is=typeof value==="number"&&!Number.isNaN(value);assertIs(is,"number",value)}function isBigIntOrNumber(value){const is=typeof value==="bigint";if(!is){try{isNumber(value)}catch(e){throw new Error(`Value ${value} is not a number or bigint: ${typeof value}`)}}}const fromHexString=hexString=>{const cleanString=hexString.length%2===1?`0${hexString}`:hexString;const arr=cleanString.replace(/^0x/,"").match(/.{1,2}/g);if(!arr)return new Uint8Array;return new Uint8Array(arr.map(byte=>parseInt(byte,16)))};const toHexString$1=bytes=>bytes.reduce((str,byte)=>str+byte.toString(16).padStart(2,"0"),"");function toBigInt(value){return ethersToBigInt(value)}function toBeArray(value){return ethersToBeArray(value)}const Nibbles="0123456789abcdef";const maxValue=9007199254740991;const BN_0$1=BigInt(0);function ethersToBigInt(value){if(value instanceof Uint8Array){let result="0x0";for(const v of value){result+=Nibbles[v>>4];result+=Nibbles[v&15]}return BigInt(result)}return getBigInt(value)}function ethersToBeArray(_value){const value=getUint(_value);if(value===BN_0$1){return new Uint8Array([])}let hex=value.toString(16);if(hex.length%2){hex="0"+hex}const result=new Uint8Array(hex.length/2);for(let i=0;i=BN_0$1,"unsigned value cannot be negative");return result}function getBigInt(value){switch(typeof value){case"bigint":return value;case"number":assertArgument$1(Number.isInteger(value),"underflow");assertArgument$1(value>=-maxValue&&value<=maxValue,"overflow");return BigInt(value);case"string":try{if(value===""){throw new Error("empty string")}if(value[0]==="-"&&value[1]!=="-"){return-BigInt(value.substring(1))}return BigInt(value)}catch(e){assertArgument$1(false,`invalid BigNumberish string: ${e.message}`)}}assertArgument$1(false,"invalid BigNumberish value")}function assertArgument$1(check,message){if(!check){throw new Error(message)}}const stringToUint8Array=value=>{return new Uint8Array(value.split("").map(c=>c.charCodeAt(0)))};const bigintToUint8Array=bigNum=>{const byteLength=32;const byteArray=new Uint8Array(byteLength);const mask=BigInt(255);for(let i=0;i>=BigInt(8)}return byteArray};var commonjsGlobal=typeof globalThis!=="undefined"?globalThis:typeof window!=="undefined"?window:typeof global!=="undefined"?global:typeof self!=="undefined"?self:{};function getAugmentedNamespace(n){if(n.__esModule)return n;var f=n.default;if(typeof f=="function"){var a=function a(){if(this instanceof a){return Reflect.construct(f,arguments,this.constructor)}return f.apply(this,arguments)};a.prototype=f.prototype}else a={};Object.defineProperty(a,"__esModule",{value:true});Object.keys(n).forEach(function(k){var d=Object.getOwnPropertyDescriptor(n,k);Object.defineProperty(a,k,d.get?d:{enumerable:true,get:function(){return n[k]}})});return a}function commonjsRequire(path){throw new Error('Could not dynamically require "'+path+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var naclFast={exports:{}};var _nodeResolve_empty={};var _nodeResolve_empty$1=Object.freeze({__proto__:null,default:_nodeResolve_empty});var require$$0=getAugmentedNamespace(_nodeResolve_empty$1);(function(module){(function(nacl){var gf=function(init){var i,r=new Float64Array(16);if(init)for(i=0;i>24&255;x[i+1]=h>>16&255;x[i+2]=h>>8&255;x[i+3]=h&255;x[i+4]=l>>24&255;x[i+5]=l>>16&255;x[i+6]=l>>8&255;x[i+7]=l&255}function vn(x,xi,y,yi,n){var i,d=0;for(i=0;i>>8)-1}function crypto_verify_16(x,xi,y,yi){return vn(x,xi,y,yi,16)}function crypto_verify_32(x,xi,y,yi){return vn(x,xi,y,yi,32)}function core_salsa20(o,p,k,c){var j0=c[0]&255|(c[1]&255)<<8|(c[2]&255)<<16|(c[3]&255)<<24,j1=k[0]&255|(k[1]&255)<<8|(k[2]&255)<<16|(k[3]&255)<<24,j2=k[4]&255|(k[5]&255)<<8|(k[6]&255)<<16|(k[7]&255)<<24,j3=k[8]&255|(k[9]&255)<<8|(k[10]&255)<<16|(k[11]&255)<<24,j4=k[12]&255|(k[13]&255)<<8|(k[14]&255)<<16|(k[15]&255)<<24,j5=c[4]&255|(c[5]&255)<<8|(c[6]&255)<<16|(c[7]&255)<<24,j6=p[0]&255|(p[1]&255)<<8|(p[2]&255)<<16|(p[3]&255)<<24,j7=p[4]&255|(p[5]&255)<<8|(p[6]&255)<<16|(p[7]&255)<<24,j8=p[8]&255|(p[9]&255)<<8|(p[10]&255)<<16|(p[11]&255)<<24,j9=p[12]&255|(p[13]&255)<<8|(p[14]&255)<<16|(p[15]&255)<<24,j10=c[8]&255|(c[9]&255)<<8|(c[10]&255)<<16|(c[11]&255)<<24,j11=k[16]&255|(k[17]&255)<<8|(k[18]&255)<<16|(k[19]&255)<<24,j12=k[20]&255|(k[21]&255)<<8|(k[22]&255)<<16|(k[23]&255)<<24,j13=k[24]&255|(k[25]&255)<<8|(k[26]&255)<<16|(k[27]&255)<<24,j14=k[28]&255|(k[29]&255)<<8|(k[30]&255)<<16|(k[31]&255)<<24,j15=c[12]&255|(c[13]&255)<<8|(c[14]&255)<<16|(c[15]&255)<<24;var x0=j0,x1=j1,x2=j2,x3=j3,x4=j4,x5=j5,x6=j6,x7=j7,x8=j8,x9=j9,x10=j10,x11=j11,x12=j12,x13=j13,x14=j14,x15=j15,u;for(var i=0;i<20;i+=2){u=x0+x12|0;x4^=u<<7|u>>>32-7;u=x4+x0|0;x8^=u<<9|u>>>32-9;u=x8+x4|0;x12^=u<<13|u>>>32-13;u=x12+x8|0;x0^=u<<18|u>>>32-18;u=x5+x1|0;x9^=u<<7|u>>>32-7;u=x9+x5|0;x13^=u<<9|u>>>32-9;u=x13+x9|0;x1^=u<<13|u>>>32-13;u=x1+x13|0;x5^=u<<18|u>>>32-18;u=x10+x6|0;x14^=u<<7|u>>>32-7;u=x14+x10|0;x2^=u<<9|u>>>32-9;u=x2+x14|0;x6^=u<<13|u>>>32-13;u=x6+x2|0;x10^=u<<18|u>>>32-18;u=x15+x11|0;x3^=u<<7|u>>>32-7;u=x3+x15|0;x7^=u<<9|u>>>32-9;u=x7+x3|0;x11^=u<<13|u>>>32-13;u=x11+x7|0;x15^=u<<18|u>>>32-18;u=x0+x3|0;x1^=u<<7|u>>>32-7;u=x1+x0|0;x2^=u<<9|u>>>32-9;u=x2+x1|0;x3^=u<<13|u>>>32-13;u=x3+x2|0;x0^=u<<18|u>>>32-18;u=x5+x4|0;x6^=u<<7|u>>>32-7;u=x6+x5|0;x7^=u<<9|u>>>32-9;u=x7+x6|0;x4^=u<<13|u>>>32-13;u=x4+x7|0;x5^=u<<18|u>>>32-18;u=x10+x9|0;x11^=u<<7|u>>>32-7;u=x11+x10|0;x8^=u<<9|u>>>32-9;u=x8+x11|0;x9^=u<<13|u>>>32-13;u=x9+x8|0;x10^=u<<18|u>>>32-18;u=x15+x14|0;x12^=u<<7|u>>>32-7;u=x12+x15|0;x13^=u<<9|u>>>32-9;u=x13+x12|0;x14^=u<<13|u>>>32-13;u=x14+x13|0;x15^=u<<18|u>>>32-18}x0=x0+j0|0;x1=x1+j1|0;x2=x2+j2|0;x3=x3+j3|0;x4=x4+j4|0;x5=x5+j5|0;x6=x6+j6|0;x7=x7+j7|0;x8=x8+j8|0;x9=x9+j9|0;x10=x10+j10|0;x11=x11+j11|0;x12=x12+j12|0;x13=x13+j13|0;x14=x14+j14|0;x15=x15+j15|0;o[0]=x0>>>0&255;o[1]=x0>>>8&255;o[2]=x0>>>16&255;o[3]=x0>>>24&255;o[4]=x1>>>0&255;o[5]=x1>>>8&255;o[6]=x1>>>16&255;o[7]=x1>>>24&255;o[8]=x2>>>0&255;o[9]=x2>>>8&255;o[10]=x2>>>16&255;o[11]=x2>>>24&255;o[12]=x3>>>0&255;o[13]=x3>>>8&255;o[14]=x3>>>16&255;o[15]=x3>>>24&255;o[16]=x4>>>0&255;o[17]=x4>>>8&255;o[18]=x4>>>16&255;o[19]=x4>>>24&255;o[20]=x5>>>0&255;o[21]=x5>>>8&255;o[22]=x5>>>16&255;o[23]=x5>>>24&255;o[24]=x6>>>0&255;o[25]=x6>>>8&255;o[26]=x6>>>16&255;o[27]=x6>>>24&255;o[28]=x7>>>0&255;o[29]=x7>>>8&255;o[30]=x7>>>16&255;o[31]=x7>>>24&255;o[32]=x8>>>0&255;o[33]=x8>>>8&255;o[34]=x8>>>16&255;o[35]=x8>>>24&255;o[36]=x9>>>0&255;o[37]=x9>>>8&255;o[38]=x9>>>16&255;o[39]=x9>>>24&255;o[40]=x10>>>0&255;o[41]=x10>>>8&255;o[42]=x10>>>16&255;o[43]=x10>>>24&255;o[44]=x11>>>0&255;o[45]=x11>>>8&255;o[46]=x11>>>16&255;o[47]=x11>>>24&255;o[48]=x12>>>0&255;o[49]=x12>>>8&255;o[50]=x12>>>16&255;o[51]=x12>>>24&255;o[52]=x13>>>0&255;o[53]=x13>>>8&255;o[54]=x13>>>16&255;o[55]=x13>>>24&255;o[56]=x14>>>0&255;o[57]=x14>>>8&255;o[58]=x14>>>16&255;o[59]=x14>>>24&255;o[60]=x15>>>0&255;o[61]=x15>>>8&255;o[62]=x15>>>16&255;o[63]=x15>>>24&255}function core_hsalsa20(o,p,k,c){var j0=c[0]&255|(c[1]&255)<<8|(c[2]&255)<<16|(c[3]&255)<<24,j1=k[0]&255|(k[1]&255)<<8|(k[2]&255)<<16|(k[3]&255)<<24,j2=k[4]&255|(k[5]&255)<<8|(k[6]&255)<<16|(k[7]&255)<<24,j3=k[8]&255|(k[9]&255)<<8|(k[10]&255)<<16|(k[11]&255)<<24,j4=k[12]&255|(k[13]&255)<<8|(k[14]&255)<<16|(k[15]&255)<<24,j5=c[4]&255|(c[5]&255)<<8|(c[6]&255)<<16|(c[7]&255)<<24,j6=p[0]&255|(p[1]&255)<<8|(p[2]&255)<<16|(p[3]&255)<<24,j7=p[4]&255|(p[5]&255)<<8|(p[6]&255)<<16|(p[7]&255)<<24,j8=p[8]&255|(p[9]&255)<<8|(p[10]&255)<<16|(p[11]&255)<<24,j9=p[12]&255|(p[13]&255)<<8|(p[14]&255)<<16|(p[15]&255)<<24,j10=c[8]&255|(c[9]&255)<<8|(c[10]&255)<<16|(c[11]&255)<<24,j11=k[16]&255|(k[17]&255)<<8|(k[18]&255)<<16|(k[19]&255)<<24,j12=k[20]&255|(k[21]&255)<<8|(k[22]&255)<<16|(k[23]&255)<<24,j13=k[24]&255|(k[25]&255)<<8|(k[26]&255)<<16|(k[27]&255)<<24,j14=k[28]&255|(k[29]&255)<<8|(k[30]&255)<<16|(k[31]&255)<<24,j15=c[12]&255|(c[13]&255)<<8|(c[14]&255)<<16|(c[15]&255)<<24;var x0=j0,x1=j1,x2=j2,x3=j3,x4=j4,x5=j5,x6=j6,x7=j7,x8=j8,x9=j9,x10=j10,x11=j11,x12=j12,x13=j13,x14=j14,x15=j15,u;for(var i=0;i<20;i+=2){u=x0+x12|0;x4^=u<<7|u>>>32-7;u=x4+x0|0;x8^=u<<9|u>>>32-9;u=x8+x4|0;x12^=u<<13|u>>>32-13;u=x12+x8|0;x0^=u<<18|u>>>32-18;u=x5+x1|0;x9^=u<<7|u>>>32-7;u=x9+x5|0;x13^=u<<9|u>>>32-9;u=x13+x9|0;x1^=u<<13|u>>>32-13;u=x1+x13|0;x5^=u<<18|u>>>32-18;u=x10+x6|0;x14^=u<<7|u>>>32-7;u=x14+x10|0;x2^=u<<9|u>>>32-9;u=x2+x14|0;x6^=u<<13|u>>>32-13;u=x6+x2|0;x10^=u<<18|u>>>32-18;u=x15+x11|0;x3^=u<<7|u>>>32-7;u=x3+x15|0;x7^=u<<9|u>>>32-9;u=x7+x3|0;x11^=u<<13|u>>>32-13;u=x11+x7|0;x15^=u<<18|u>>>32-18;u=x0+x3|0;x1^=u<<7|u>>>32-7;u=x1+x0|0;x2^=u<<9|u>>>32-9;u=x2+x1|0;x3^=u<<13|u>>>32-13;u=x3+x2|0;x0^=u<<18|u>>>32-18;u=x5+x4|0;x6^=u<<7|u>>>32-7;u=x6+x5|0;x7^=u<<9|u>>>32-9;u=x7+x6|0;x4^=u<<13|u>>>32-13;u=x4+x7|0;x5^=u<<18|u>>>32-18;u=x10+x9|0;x11^=u<<7|u>>>32-7;u=x11+x10|0;x8^=u<<9|u>>>32-9;u=x8+x11|0;x9^=u<<13|u>>>32-13;u=x9+x8|0;x10^=u<<18|u>>>32-18;u=x15+x14|0;x12^=u<<7|u>>>32-7;u=x12+x15|0;x13^=u<<9|u>>>32-9;u=x13+x12|0;x14^=u<<13|u>>>32-13;u=x14+x13|0;x15^=u<<18|u>>>32-18}o[0]=x0>>>0&255;o[1]=x0>>>8&255;o[2]=x0>>>16&255;o[3]=x0>>>24&255;o[4]=x5>>>0&255;o[5]=x5>>>8&255;o[6]=x5>>>16&255;o[7]=x5>>>24&255;o[8]=x10>>>0&255;o[9]=x10>>>8&255;o[10]=x10>>>16&255;o[11]=x10>>>24&255;o[12]=x15>>>0&255;o[13]=x15>>>8&255;o[14]=x15>>>16&255;o[15]=x15>>>24&255;o[16]=x6>>>0&255;o[17]=x6>>>8&255;o[18]=x6>>>16&255;o[19]=x6>>>24&255;o[20]=x7>>>0&255;o[21]=x7>>>8&255;o[22]=x7>>>16&255;o[23]=x7>>>24&255;o[24]=x8>>>0&255;o[25]=x8>>>8&255;o[26]=x8>>>16&255;o[27]=x8>>>24&255;o[28]=x9>>>0&255;o[29]=x9>>>8&255;o[30]=x9>>>16&255;o[31]=x9>>>24&255}function crypto_core_salsa20(out,inp,k,c){core_salsa20(out,inp,k,c)}function crypto_core_hsalsa20(out,inp,k,c){core_hsalsa20(out,inp,k,c)}var sigma=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k){var z=new Uint8Array(16),x=new Uint8Array(64);var u,i;for(i=0;i<16;i++)z[i]=0;for(i=0;i<8;i++)z[i]=n[i];while(b>=64){crypto_core_salsa20(x,z,k,sigma);for(i=0;i<64;i++)c[cpos+i]=m[mpos+i]^x[i];u=1;for(i=8;i<16;i++){u=u+(z[i]&255)|0;z[i]=u&255;u>>>=8}b-=64;cpos+=64;mpos+=64}if(b>0){crypto_core_salsa20(x,z,k,sigma);for(i=0;i=64){crypto_core_salsa20(x,z,k,sigma);for(i=0;i<64;i++)c[cpos+i]=x[i];u=1;for(i=8;i<16;i++){u=u+(z[i]&255)|0;z[i]=u&255;u>>>=8}b-=64;cpos+=64}if(b>0){crypto_core_salsa20(x,z,k,sigma);for(i=0;i>>13|t1<<3)&8191;t2=key[4]&255|(key[5]&255)<<8;this.r[2]=(t1>>>10|t2<<6)&7939;t3=key[6]&255|(key[7]&255)<<8;this.r[3]=(t2>>>7|t3<<9)&8191;t4=key[8]&255|(key[9]&255)<<8;this.r[4]=(t3>>>4|t4<<12)&255;this.r[5]=t4>>>1&8190;t5=key[10]&255|(key[11]&255)<<8;this.r[6]=(t4>>>14|t5<<2)&8191;t6=key[12]&255|(key[13]&255)<<8;this.r[7]=(t5>>>11|t6<<5)&8065;t7=key[14]&255|(key[15]&255)<<8;this.r[8]=(t6>>>8|t7<<8)&8191;this.r[9]=t7>>>5&127;this.pad[0]=key[16]&255|(key[17]&255)<<8;this.pad[1]=key[18]&255|(key[19]&255)<<8;this.pad[2]=key[20]&255|(key[21]&255)<<8;this.pad[3]=key[22]&255|(key[23]&255)<<8;this.pad[4]=key[24]&255|(key[25]&255)<<8;this.pad[5]=key[26]&255|(key[27]&255)<<8;this.pad[6]=key[28]&255|(key[29]&255)<<8;this.pad[7]=key[30]&255|(key[31]&255)<<8};poly1305.prototype.blocks=function(m,mpos,bytes){var hibit=this.fin?0:1<<11;var t0,t1,t2,t3,t4,t5,t6,t7,c;var d0,d1,d2,d3,d4,d5,d6,d7,d8,d9;var h0=this.h[0],h1=this.h[1],h2=this.h[2],h3=this.h[3],h4=this.h[4],h5=this.h[5],h6=this.h[6],h7=this.h[7],h8=this.h[8],h9=this.h[9];var r0=this.r[0],r1=this.r[1],r2=this.r[2],r3=this.r[3],r4=this.r[4],r5=this.r[5],r6=this.r[6],r7=this.r[7],r8=this.r[8],r9=this.r[9];while(bytes>=16){t0=m[mpos+0]&255|(m[mpos+1]&255)<<8;h0+=t0&8191;t1=m[mpos+2]&255|(m[mpos+3]&255)<<8;h1+=(t0>>>13|t1<<3)&8191;t2=m[mpos+4]&255|(m[mpos+5]&255)<<8;h2+=(t1>>>10|t2<<6)&8191;t3=m[mpos+6]&255|(m[mpos+7]&255)<<8;h3+=(t2>>>7|t3<<9)&8191;t4=m[mpos+8]&255|(m[mpos+9]&255)<<8;h4+=(t3>>>4|t4<<12)&8191;h5+=t4>>>1&8191;t5=m[mpos+10]&255|(m[mpos+11]&255)<<8;h6+=(t4>>>14|t5<<2)&8191;t6=m[mpos+12]&255|(m[mpos+13]&255)<<8;h7+=(t5>>>11|t6<<5)&8191;t7=m[mpos+14]&255|(m[mpos+15]&255)<<8;h8+=(t6>>>8|t7<<8)&8191;h9+=t7>>>5|hibit;c=0;d0=c;d0+=h0*r0;d0+=h1*(5*r9);d0+=h2*(5*r8);d0+=h3*(5*r7);d0+=h4*(5*r6);c=d0>>>13;d0&=8191;d0+=h5*(5*r5);d0+=h6*(5*r4);d0+=h7*(5*r3);d0+=h8*(5*r2);d0+=h9*(5*r1);c+=d0>>>13;d0&=8191;d1=c;d1+=h0*r1;d1+=h1*r0;d1+=h2*(5*r9);d1+=h3*(5*r8);d1+=h4*(5*r7);c=d1>>>13;d1&=8191;d1+=h5*(5*r6);d1+=h6*(5*r5);d1+=h7*(5*r4);d1+=h8*(5*r3);d1+=h9*(5*r2);c+=d1>>>13;d1&=8191;d2=c;d2+=h0*r2;d2+=h1*r1;d2+=h2*r0;d2+=h3*(5*r9);d2+=h4*(5*r8);c=d2>>>13;d2&=8191;d2+=h5*(5*r7);d2+=h6*(5*r6);d2+=h7*(5*r5);d2+=h8*(5*r4);d2+=h9*(5*r3);c+=d2>>>13;d2&=8191;d3=c;d3+=h0*r3;d3+=h1*r2;d3+=h2*r1;d3+=h3*r0;d3+=h4*(5*r9);c=d3>>>13;d3&=8191;d3+=h5*(5*r8);d3+=h6*(5*r7);d3+=h7*(5*r6);d3+=h8*(5*r5);d3+=h9*(5*r4);c+=d3>>>13;d3&=8191;d4=c;d4+=h0*r4;d4+=h1*r3;d4+=h2*r2;d4+=h3*r1;d4+=h4*r0;c=d4>>>13;d4&=8191;d4+=h5*(5*r9);d4+=h6*(5*r8);d4+=h7*(5*r7);d4+=h8*(5*r6);d4+=h9*(5*r5);c+=d4>>>13;d4&=8191;d5=c;d5+=h0*r5;d5+=h1*r4;d5+=h2*r3;d5+=h3*r2;d5+=h4*r1;c=d5>>>13;d5&=8191;d5+=h5*r0;d5+=h6*(5*r9);d5+=h7*(5*r8);d5+=h8*(5*r7);d5+=h9*(5*r6);c+=d5>>>13;d5&=8191;d6=c;d6+=h0*r6;d6+=h1*r5;d6+=h2*r4;d6+=h3*r3;d6+=h4*r2;c=d6>>>13;d6&=8191;d6+=h5*r1;d6+=h6*r0;d6+=h7*(5*r9);d6+=h8*(5*r8);d6+=h9*(5*r7);c+=d6>>>13;d6&=8191;d7=c;d7+=h0*r7;d7+=h1*r6;d7+=h2*r5;d7+=h3*r4;d7+=h4*r3;c=d7>>>13;d7&=8191;d7+=h5*r2;d7+=h6*r1;d7+=h7*r0;d7+=h8*(5*r9);d7+=h9*(5*r8);c+=d7>>>13;d7&=8191;d8=c;d8+=h0*r8;d8+=h1*r7;d8+=h2*r6;d8+=h3*r5;d8+=h4*r4;c=d8>>>13;d8&=8191;d8+=h5*r3;d8+=h6*r2;d8+=h7*r1;d8+=h8*r0;d8+=h9*(5*r9);c+=d8>>>13;d8&=8191;d9=c;d9+=h0*r9;d9+=h1*r8;d9+=h2*r7;d9+=h3*r6;d9+=h4*r5;c=d9>>>13;d9&=8191;d9+=h5*r4;d9+=h6*r3;d9+=h7*r2;d9+=h8*r1;d9+=h9*r0;c+=d9>>>13;d9&=8191;c=(c<<2)+c|0;c=c+d0|0;d0=c&8191;c=c>>>13;d1+=c;h0=d0;h1=d1;h2=d2;h3=d3;h4=d4;h5=d5;h6=d6;h7=d7;h8=d8;h9=d9;mpos+=16;bytes-=16}this.h[0]=h0;this.h[1]=h1;this.h[2]=h2;this.h[3]=h3;this.h[4]=h4;this.h[5]=h5;this.h[6]=h6;this.h[7]=h7;this.h[8]=h8;this.h[9]=h9};poly1305.prototype.finish=function(mac,macpos){var g=new Uint16Array(10);var c,mask,f,i;if(this.leftover){i=this.leftover;this.buffer[i++]=1;for(;i<16;i++)this.buffer[i]=0;this.fin=1;this.blocks(this.buffer,0,16)}c=this.h[1]>>>13;this.h[1]&=8191;for(i=2;i<10;i++){this.h[i]+=c;c=this.h[i]>>>13;this.h[i]&=8191}this.h[0]+=c*5;c=this.h[0]>>>13;this.h[0]&=8191;this.h[1]+=c;c=this.h[1]>>>13;this.h[1]&=8191;this.h[2]+=c;g[0]=this.h[0]+5;c=g[0]>>>13;g[0]&=8191;for(i=1;i<10;i++){g[i]=this.h[i]+c;c=g[i]>>>13;g[i]&=8191}g[9]-=1<<13;mask=(c^1)-1;for(i=0;i<10;i++)g[i]&=mask;mask=~mask;for(i=0;i<10;i++)this.h[i]=this.h[i]&mask|g[i];this.h[0]=(this.h[0]|this.h[1]<<13)&65535;this.h[1]=(this.h[1]>>>3|this.h[2]<<10)&65535;this.h[2]=(this.h[2]>>>6|this.h[3]<<7)&65535;this.h[3]=(this.h[3]>>>9|this.h[4]<<4)&65535;this.h[4]=(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14)&65535;this.h[5]=(this.h[6]>>>2|this.h[7]<<11)&65535;this.h[6]=(this.h[7]>>>5|this.h[8]<<8)&65535;this.h[7]=(this.h[8]>>>8|this.h[9]<<5)&65535;f=this.h[0]+this.pad[0];this.h[0]=f&65535;for(i=1;i<8;i++){f=(this.h[i]+this.pad[i]|0)+(f>>>16)|0;this.h[i]=f&65535}mac[macpos+0]=this.h[0]>>>0&255;mac[macpos+1]=this.h[0]>>>8&255;mac[macpos+2]=this.h[1]>>>0&255;mac[macpos+3]=this.h[1]>>>8&255;mac[macpos+4]=this.h[2]>>>0&255;mac[macpos+5]=this.h[2]>>>8&255;mac[macpos+6]=this.h[3]>>>0&255;mac[macpos+7]=this.h[3]>>>8&255;mac[macpos+8]=this.h[4]>>>0&255;mac[macpos+9]=this.h[4]>>>8&255;mac[macpos+10]=this.h[5]>>>0&255;mac[macpos+11]=this.h[5]>>>8&255;mac[macpos+12]=this.h[6]>>>0&255;mac[macpos+13]=this.h[6]>>>8&255;mac[macpos+14]=this.h[7]>>>0&255;mac[macpos+15]=this.h[7]>>>8&255};poly1305.prototype.update=function(m,mpos,bytes){var i,want;if(this.leftover){want=16-this.leftover;if(want>bytes)want=bytes;for(i=0;i=16){want=bytes-bytes%16;this.blocks(m,mpos,want);mpos+=want;bytes-=want}if(bytes){for(i=0;i>16&1);m[i-1]&=65535}m[15]=t[15]-32767-(m[14]>>16&1);b=m[15]>>16&1;m[14]&=65535;sel25519(t,m,1-b)}for(i=0;i<16;i++){o[2*i]=t[i]&255;o[2*i+1]=t[i]>>8}}function neq25519(a,b){var c=new Uint8Array(32),d=new Uint8Array(32);pack25519(c,a);pack25519(d,b);return crypto_verify_32(c,0,d,0)}function par25519(a){var d=new Uint8Array(32);pack25519(d,a);return d[0]&1}function unpack25519(o,n){var i;for(i=0;i<16;i++)o[i]=n[2*i]+(n[2*i+1]<<8);o[15]&=32767}function A(o,a,b){for(var i=0;i<16;i++)o[i]=a[i]+b[i]}function Z(o,a,b){for(var i=0;i<16;i++)o[i]=a[i]-b[i]}function M(o,a,b){var v,c,t0=0,t1=0,t2=0,t3=0,t4=0,t5=0,t6=0,t7=0,t8=0,t9=0,t10=0,t11=0,t12=0,t13=0,t14=0,t15=0,t16=0,t17=0,t18=0,t19=0,t20=0,t21=0,t22=0,t23=0,t24=0,t25=0,t26=0,t27=0,t28=0,t29=0,t30=0,b0=b[0],b1=b[1],b2=b[2],b3=b[3],b4=b[4],b5=b[5],b6=b[6],b7=b[7],b8=b[8],b9=b[9],b10=b[10],b11=b[11],b12=b[12],b13=b[13],b14=b[14],b15=b[15];v=a[0];t0+=v*b0;t1+=v*b1;t2+=v*b2;t3+=v*b3;t4+=v*b4;t5+=v*b5;t6+=v*b6;t7+=v*b7;t8+=v*b8;t9+=v*b9;t10+=v*b10;t11+=v*b11;t12+=v*b12;t13+=v*b13;t14+=v*b14;t15+=v*b15;v=a[1];t1+=v*b0;t2+=v*b1;t3+=v*b2;t4+=v*b3;t5+=v*b4;t6+=v*b5;t7+=v*b6;t8+=v*b7;t9+=v*b8;t10+=v*b9;t11+=v*b10;t12+=v*b11;t13+=v*b12;t14+=v*b13;t15+=v*b14;t16+=v*b15;v=a[2];t2+=v*b0;t3+=v*b1;t4+=v*b2;t5+=v*b3;t6+=v*b4;t7+=v*b5;t8+=v*b6;t9+=v*b7;t10+=v*b8;t11+=v*b9;t12+=v*b10;t13+=v*b11;t14+=v*b12;t15+=v*b13;t16+=v*b14;t17+=v*b15;v=a[3];t3+=v*b0;t4+=v*b1;t5+=v*b2;t6+=v*b3;t7+=v*b4;t8+=v*b5;t9+=v*b6;t10+=v*b7;t11+=v*b8;t12+=v*b9;t13+=v*b10;t14+=v*b11;t15+=v*b12;t16+=v*b13;t17+=v*b14;t18+=v*b15;v=a[4];t4+=v*b0;t5+=v*b1;t6+=v*b2;t7+=v*b3;t8+=v*b4;t9+=v*b5;t10+=v*b6;t11+=v*b7;t12+=v*b8;t13+=v*b9;t14+=v*b10;t15+=v*b11;t16+=v*b12;t17+=v*b13;t18+=v*b14;t19+=v*b15;v=a[5];t5+=v*b0;t6+=v*b1;t7+=v*b2;t8+=v*b3;t9+=v*b4;t10+=v*b5;t11+=v*b6;t12+=v*b7;t13+=v*b8;t14+=v*b9;t15+=v*b10;t16+=v*b11;t17+=v*b12;t18+=v*b13;t19+=v*b14;t20+=v*b15;v=a[6];t6+=v*b0;t7+=v*b1;t8+=v*b2;t9+=v*b3;t10+=v*b4;t11+=v*b5;t12+=v*b6;t13+=v*b7;t14+=v*b8;t15+=v*b9;t16+=v*b10;t17+=v*b11;t18+=v*b12;t19+=v*b13;t20+=v*b14;t21+=v*b15;v=a[7];t7+=v*b0;t8+=v*b1;t9+=v*b2;t10+=v*b3;t11+=v*b4;t12+=v*b5;t13+=v*b6;t14+=v*b7;t15+=v*b8;t16+=v*b9;t17+=v*b10;t18+=v*b11;t19+=v*b12;t20+=v*b13;t21+=v*b14;t22+=v*b15;v=a[8];t8+=v*b0;t9+=v*b1;t10+=v*b2;t11+=v*b3;t12+=v*b4;t13+=v*b5;t14+=v*b6;t15+=v*b7;t16+=v*b8;t17+=v*b9;t18+=v*b10;t19+=v*b11;t20+=v*b12;t21+=v*b13;t22+=v*b14;t23+=v*b15;v=a[9];t9+=v*b0;t10+=v*b1;t11+=v*b2;t12+=v*b3;t13+=v*b4;t14+=v*b5;t15+=v*b6;t16+=v*b7;t17+=v*b8;t18+=v*b9;t19+=v*b10;t20+=v*b11;t21+=v*b12;t22+=v*b13;t23+=v*b14;t24+=v*b15;v=a[10];t10+=v*b0;t11+=v*b1;t12+=v*b2;t13+=v*b3;t14+=v*b4;t15+=v*b5;t16+=v*b6;t17+=v*b7;t18+=v*b8;t19+=v*b9;t20+=v*b10;t21+=v*b11;t22+=v*b12;t23+=v*b13;t24+=v*b14;t25+=v*b15;v=a[11];t11+=v*b0;t12+=v*b1;t13+=v*b2;t14+=v*b3;t15+=v*b4;t16+=v*b5;t17+=v*b6;t18+=v*b7;t19+=v*b8;t20+=v*b9;t21+=v*b10;t22+=v*b11;t23+=v*b12;t24+=v*b13;t25+=v*b14;t26+=v*b15;v=a[12];t12+=v*b0;t13+=v*b1;t14+=v*b2;t15+=v*b3;t16+=v*b4;t17+=v*b5;t18+=v*b6;t19+=v*b7;t20+=v*b8;t21+=v*b9;t22+=v*b10;t23+=v*b11;t24+=v*b12;t25+=v*b13;t26+=v*b14;t27+=v*b15;v=a[13];t13+=v*b0;t14+=v*b1;t15+=v*b2;t16+=v*b3;t17+=v*b4;t18+=v*b5;t19+=v*b6;t20+=v*b7;t21+=v*b8;t22+=v*b9;t23+=v*b10;t24+=v*b11;t25+=v*b12;t26+=v*b13;t27+=v*b14;t28+=v*b15;v=a[14];t14+=v*b0;t15+=v*b1;t16+=v*b2;t17+=v*b3;t18+=v*b4;t19+=v*b5;t20+=v*b6;t21+=v*b7;t22+=v*b8;t23+=v*b9;t24+=v*b10;t25+=v*b11;t26+=v*b12;t27+=v*b13;t28+=v*b14;t29+=v*b15;v=a[15];t15+=v*b0;t16+=v*b1;t17+=v*b2;t18+=v*b3;t19+=v*b4;t20+=v*b5;t21+=v*b6;t22+=v*b7;t23+=v*b8;t24+=v*b9;t25+=v*b10;t26+=v*b11;t27+=v*b12;t28+=v*b13;t29+=v*b14;t30+=v*b15;t0+=38*t16;t1+=38*t17;t2+=38*t18;t3+=38*t19;t4+=38*t20;t5+=38*t21;t6+=38*t22;t7+=38*t23;t8+=38*t24;t9+=38*t25;t10+=38*t26;t11+=38*t27;t12+=38*t28;t13+=38*t29;t14+=38*t30;c=1;v=t0+c+65535;c=Math.floor(v/65536);t0=v-c*65536;v=t1+c+65535;c=Math.floor(v/65536);t1=v-c*65536;v=t2+c+65535;c=Math.floor(v/65536);t2=v-c*65536;v=t3+c+65535;c=Math.floor(v/65536);t3=v-c*65536;v=t4+c+65535;c=Math.floor(v/65536);t4=v-c*65536;v=t5+c+65535;c=Math.floor(v/65536);t5=v-c*65536;v=t6+c+65535;c=Math.floor(v/65536);t6=v-c*65536;v=t7+c+65535;c=Math.floor(v/65536);t7=v-c*65536;v=t8+c+65535;c=Math.floor(v/65536);t8=v-c*65536;v=t9+c+65535;c=Math.floor(v/65536);t9=v-c*65536;v=t10+c+65535;c=Math.floor(v/65536);t10=v-c*65536;v=t11+c+65535;c=Math.floor(v/65536);t11=v-c*65536;v=t12+c+65535;c=Math.floor(v/65536);t12=v-c*65536;v=t13+c+65535;c=Math.floor(v/65536);t13=v-c*65536;v=t14+c+65535;c=Math.floor(v/65536);t14=v-c*65536;v=t15+c+65535;c=Math.floor(v/65536);t15=v-c*65536;t0+=c-1+37*(c-1);c=1;v=t0+c+65535;c=Math.floor(v/65536);t0=v-c*65536;v=t1+c+65535;c=Math.floor(v/65536);t1=v-c*65536;v=t2+c+65535;c=Math.floor(v/65536);t2=v-c*65536;v=t3+c+65535;c=Math.floor(v/65536);t3=v-c*65536;v=t4+c+65535;c=Math.floor(v/65536);t4=v-c*65536;v=t5+c+65535;c=Math.floor(v/65536);t5=v-c*65536;v=t6+c+65535;c=Math.floor(v/65536);t6=v-c*65536;v=t7+c+65535;c=Math.floor(v/65536);t7=v-c*65536;v=t8+c+65535;c=Math.floor(v/65536);t8=v-c*65536;v=t9+c+65535;c=Math.floor(v/65536);t9=v-c*65536;v=t10+c+65535;c=Math.floor(v/65536);t10=v-c*65536;v=t11+c+65535;c=Math.floor(v/65536);t11=v-c*65536;v=t12+c+65535;c=Math.floor(v/65536);t12=v-c*65536;v=t13+c+65535;c=Math.floor(v/65536);t13=v-c*65536;v=t14+c+65535;c=Math.floor(v/65536);t14=v-c*65536;v=t15+c+65535;c=Math.floor(v/65536);t15=v-c*65536;t0+=c-1+37*(c-1);o[0]=t0;o[1]=t1;o[2]=t2;o[3]=t3;o[4]=t4;o[5]=t5;o[6]=t6;o[7]=t7;o[8]=t8;o[9]=t9;o[10]=t10;o[11]=t11;o[12]=t12;o[13]=t13;o[14]=t14;o[15]=t15}function S(o,a){M(o,a,a)}function inv25519(o,i){var c=gf();var a;for(a=0;a<16;a++)c[a]=i[a];for(a=253;a>=0;a--){S(c,c);if(a!==2&&a!==4)M(c,c,i)}for(a=0;a<16;a++)o[a]=c[a]}function pow2523(o,i){var c=gf();var a;for(a=0;a<16;a++)c[a]=i[a];for(a=250;a>=0;a--){S(c,c);if(a!==1)M(c,c,i)}for(a=0;a<16;a++)o[a]=c[a]}function crypto_scalarmult(q,n,p){var z=new Uint8Array(32);var x=new Float64Array(80),r,i;var a=gf(),b=gf(),c=gf(),d=gf(),e=gf(),f=gf();for(i=0;i<31;i++)z[i]=n[i];z[31]=n[31]&127|64;z[0]&=248;unpack25519(x,p);for(i=0;i<16;i++){b[i]=x[i];d[i]=a[i]=c[i]=0}a[0]=d[0]=1;for(i=254;i>=0;--i){r=z[i>>>3]>>>(i&7)&1;sel25519(a,b,r);sel25519(c,d,r);A(e,a,c);Z(a,a,c);A(c,b,d);Z(b,b,d);S(d,e);S(f,a);M(a,c,a);M(c,b,e);A(e,a,c);Z(a,a,c);S(b,a);Z(c,d,f);M(a,c,_121665);A(a,a,d);M(c,c,a);M(a,d,f);M(d,b,x);S(b,e);sel25519(a,b,r);sel25519(c,d,r)}for(i=0;i<16;i++){x[i+16]=a[i];x[i+32]=c[i];x[i+48]=b[i];x[i+64]=d[i]}var x32=x.subarray(32);var x16=x.subarray(16);inv25519(x32,x32);M(x16,x16,x32);pack25519(q,x16);return 0}function crypto_scalarmult_base(q,n){return crypto_scalarmult(q,n,_9)}function crypto_box_keypair(y,x){randombytes(x,32);return crypto_scalarmult_base(y,x)}function crypto_box_beforenm(k,y,x){var s=new Uint8Array(32);crypto_scalarmult(s,x,y);return crypto_core_hsalsa20(k,_0,s,sigma)}var crypto_box_afternm=crypto_secretbox;var crypto_box_open_afternm=crypto_secretbox_open;function crypto_box(c,m,d,n,y,x){var k=new Uint8Array(32);crypto_box_beforenm(k,y,x);return crypto_box_afternm(c,m,d,n,k)}function crypto_box_open(m,c,d,n,y,x){var k=new Uint8Array(32);crypto_box_beforenm(k,y,x);return crypto_box_open_afternm(m,c,d,n,k)}var K=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function crypto_hashblocks_hl(hh,hl,m,n){var wh=new Int32Array(16),wl=new Int32Array(16),bh0,bh1,bh2,bh3,bh4,bh5,bh6,bh7,bl0,bl1,bl2,bl3,bl4,bl5,bl6,bl7,th,tl,i,j,h,l,a,b,c,d;var ah0=hh[0],ah1=hh[1],ah2=hh[2],ah3=hh[3],ah4=hh[4],ah5=hh[5],ah6=hh[6],ah7=hh[7],al0=hl[0],al1=hl[1],al2=hl[2],al3=hl[3],al4=hl[4],al5=hl[5],al6=hl[6],al7=hl[7];var pos=0;while(n>=128){for(i=0;i<16;i++){j=8*i+pos;wh[i]=m[j+0]<<24|m[j+1]<<16|m[j+2]<<8|m[j+3];wl[i]=m[j+4]<<24|m[j+5]<<16|m[j+6]<<8|m[j+7]}for(i=0;i<80;i++){bh0=ah0;bh1=ah1;bh2=ah2;bh3=ah3;bh4=ah4;bh5=ah5;bh6=ah6;bh7=ah7;bl0=al0;bl1=al1;bl2=al2;bl3=al3;bl4=al4;bl5=al5;bl6=al6;bl7=al7;h=ah7;l=al7;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=(ah4>>>14|al4<<32-14)^(ah4>>>18|al4<<32-18)^(al4>>>41-32|ah4<<32-(41-32));l=(al4>>>14|ah4<<32-14)^(al4>>>18|ah4<<32-18)^(ah4>>>41-32|al4<<32-(41-32));a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;h=ah4&ah5^~ah4&ah6;l=al4&al5^~al4&al6;a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;h=K[i*2];l=K[i*2+1];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;h=wh[i%16];l=wl[i%16];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;th=c&65535|d<<16;tl=a&65535|b<<16;h=th;l=tl;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=(ah0>>>28|al0<<32-28)^(al0>>>34-32|ah0<<32-(34-32))^(al0>>>39-32|ah0<<32-(39-32));l=(al0>>>28|ah0<<32-28)^(ah0>>>34-32|al0<<32-(34-32))^(ah0>>>39-32|al0<<32-(39-32));a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;h=ah0&ah1^ah0&ah2^ah1&ah2;l=al0&al1^al0&al2^al1&al2;a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;bh7=c&65535|d<<16;bl7=a&65535|b<<16;h=bh3;l=bl3;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=th;l=tl;a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;bh3=c&65535|d<<16;bl3=a&65535|b<<16;ah1=bh0;ah2=bh1;ah3=bh2;ah4=bh3;ah5=bh4;ah6=bh5;ah7=bh6;ah0=bh7;al1=bl0;al2=bl1;al3=bl2;al4=bl3;al5=bl4;al6=bl5;al7=bl6;al0=bl7;if(i%16===15){for(j=0;j<16;j++){h=wh[j];l=wl[j];a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=wh[(j+9)%16];l=wl[(j+9)%16];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;th=wh[(j+1)%16];tl=wl[(j+1)%16];h=(th>>>1|tl<<32-1)^(th>>>8|tl<<32-8)^th>>>7;l=(tl>>>1|th<<32-1)^(tl>>>8|th<<32-8)^(tl>>>7|th<<32-7);a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;th=wh[(j+14)%16];tl=wl[(j+14)%16];h=(th>>>19|tl<<32-19)^(tl>>>61-32|th<<32-(61-32))^th>>>6;l=(tl>>>19|th<<32-19)^(th>>>61-32|tl<<32-(61-32))^(tl>>>6|th<<32-6);a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;wh[j]=c&65535|d<<16;wl[j]=a&65535|b<<16}}}h=ah0;l=al0;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[0];l=hl[0];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[0]=ah0=c&65535|d<<16;hl[0]=al0=a&65535|b<<16;h=ah1;l=al1;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[1];l=hl[1];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[1]=ah1=c&65535|d<<16;hl[1]=al1=a&65535|b<<16;h=ah2;l=al2;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[2];l=hl[2];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[2]=ah2=c&65535|d<<16;hl[2]=al2=a&65535|b<<16;h=ah3;l=al3;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[3];l=hl[3];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[3]=ah3=c&65535|d<<16;hl[3]=al3=a&65535|b<<16;h=ah4;l=al4;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[4];l=hl[4];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[4]=ah4=c&65535|d<<16;hl[4]=al4=a&65535|b<<16;h=ah5;l=al5;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[5];l=hl[5];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[5]=ah5=c&65535|d<<16;hl[5]=al5=a&65535|b<<16;h=ah6;l=al6;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[6];l=hl[6];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[6]=ah6=c&65535|d<<16;hl[6]=al6=a&65535|b<<16;h=ah7;l=al7;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[7];l=hl[7];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[7]=ah7=c&65535|d<<16;hl[7]=al7=a&65535|b<<16;pos+=128;n-=128}return n}function crypto_hash(out,m,n){var hh=new Int32Array(8),hl=new Int32Array(8),x=new Uint8Array(256),i,b=n;hh[0]=1779033703;hh[1]=3144134277;hh[2]=1013904242;hh[3]=2773480762;hh[4]=1359893119;hh[5]=2600822924;hh[6]=528734635;hh[7]=1541459225;hl[0]=4089235720;hl[1]=2227873595;hl[2]=4271175723;hl[3]=1595750129;hl[4]=2917565137;hl[5]=725511199;hl[6]=4215389547;hl[7]=327033209;crypto_hashblocks_hl(hh,hl,m,n);n%=128;for(i=0;i=0;--i){b=s[i/8|0]>>(i&7)&1;cswap(p,q,b);add(q,p);add(p,p);cswap(p,q,b)}}function scalarbase(p,s){var q=[gf(),gf(),gf(),gf()];set25519(q[0],X);set25519(q[1],Y);set25519(q[2],gf1);M(q[3],X,Y);scalarmult(p,q,s)}function crypto_sign_keypair(pk,sk,seeded){var d=new Uint8Array(64);var p=[gf(),gf(),gf(),gf()];var i;if(!seeded)randombytes(sk,32);crypto_hash(d,sk,32);d[0]&=248;d[31]&=127;d[31]|=64;scalarbase(p,d);pack(pk,p);for(i=0;i<32;i++)sk[i+32]=pk[i];return 0}var L=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function modL(r,x){var carry,i,j,k;for(i=63;i>=32;--i){carry=0;for(j=i-32,k=i-12;j>4)*L[j];carry=x[j]>>8;x[j]&=255}for(j=0;j<32;j++)x[j]-=carry*L[j];for(i=0;i<32;i++){x[i+1]+=x[i]>>8;r[i]=x[i]&255}}function reduce(r){var x=new Float64Array(64),i;for(i=0;i<64;i++)x[i]=r[i];for(i=0;i<64;i++)r[i]=0;modL(r,x)}function crypto_sign(sm,m,n,sk){var d=new Uint8Array(64),h=new Uint8Array(64),r=new Uint8Array(64);var i,j,x=new Float64Array(64);var p=[gf(),gf(),gf(),gf()];crypto_hash(d,sk,32);d[0]&=248;d[31]&=127;d[31]|=64;var smlen=n+64;for(i=0;i>7)Z(r[0],gf0,r[0]);M(r[3],r[0],r[1]);return 0}function crypto_sign_open(m,sm,n,pk){var i;var t=new Uint8Array(32),h=new Uint8Array(64);var p=[gf(),gf(),gf(),gf()],q=[gf(),gf(),gf(),gf()];if(n<64)return-1;if(unpackneg(q,pk))return-1;for(i=0;i=0};nacl.sign.keyPair=function(){var pk=new Uint8Array(crypto_sign_PUBLICKEYBYTES);var sk=new Uint8Array(crypto_sign_SECRETKEYBYTES);crypto_sign_keypair(pk,sk);return{publicKey:pk,secretKey:sk}};nacl.sign.keyPair.fromSecretKey=function(secretKey){checkArrayTypes(secretKey);if(secretKey.length!==crypto_sign_SECRETKEYBYTES)throw new Error("bad secret key size");var pk=new Uint8Array(crypto_sign_PUBLICKEYBYTES);for(var i=0;i{let parsedData=undefined;try{if(typeof ciphertext==="string"){parsedData=JSON.parse(ciphertext)}}catch{}if(!parsedData){const toDecrypt=typeof ciphertext==="string"?fromHexString(ciphertext):ciphertext;const jsonString=Buffer.from(toDecrypt).toString("utf8");parsedData=JSON.parse(jsonString)}if(!parsedData){throw new Error("Failed to parse sealed data")}const nonce=naclUtilExports.decodeBase64(parsedData.nonce);const ephemPublicKey=naclUtilExports.decodeBase64(parsedData.ephemPublicKey);const dataToDecrypt=naclUtilExports.decodeBase64(parsedData.ciphertext);const decryptedMessage=naclFastExports.box.open(dataToDecrypt,nonce,ephemPublicKey,fromHexString(this.privateKey));if(!decryptedMessage){throw new Error("Failed to decrypt message")}return toBigInt(decryptedMessage)};if(privateKey.length!==PRIVATE_KEY_LENGTH){throw new Error(`Private key must be of length ${PRIVATE_KEY_LENGTH}`)}if(publicKey.length!==PUBLIC_KEY_LENGTH){throw new Error(`Private key must be of length ${PUBLIC_KEY_LENGTH}`)}this.privateKey=privateKey;this.publicKey=publicKey}}SealingKey.seal=(value,publicKey)=>{isString(publicKey);isBigIntOrNumber(value);const ephemeralKeyPair=naclFastExports.box.keyPair();const nonce=naclFastExports.randomBytes(naclFastExports.box.nonceLength);const encryptedMessage=naclFastExports.box(toBeArray(value),nonce,fromHexString(publicKey),ephemeralKeyPair.secretKey);const output={version:"x25519-xsalsa20-poly1305",nonce:naclUtilExports.encodeBase64(nonce),ephemPublicKey:naclUtilExports.encodeBase64(ephemeralKeyPair.publicKey),ciphertext:naclUtilExports.encodeBase64(encryptedMessage)};return toHexString$1(Buffer.from(JSON.stringify(output)))};const GenerateSealingKey=async()=>{const sodiumKeypair=naclFastExports.box.keyPair();return new SealingKey(toHexString$1(sodiumKeypair.secretKey),toHexString$1(sodiumKeypair.publicKey))};let wasm$1;const heap=new Array(128).fill(undefined);heap.push(undefined,null,true,false);let heap_next=heap.length;function addHeapObject(obj){if(heap_next===heap.length)heap.push(heap.length+1);const idx=heap_next;heap_next=heap[idx];heap[idx]=obj;return idx}function getObject(idx){return heap[idx]}function dropObject(idx){if(idx<132)return;heap[idx]=heap_next;heap_next=idx}function takeObject(idx){const ret=getObject(idx);dropObject(idx);return ret}const cachedTextDecoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-8",{ignoreBOM:true,fatal:true}):{decode:()=>{throw Error("TextDecoder not available")}};if(typeof TextDecoder!=="undefined"){cachedTextDecoder.decode()}let cachedUint8Memory0=null;function getUint8Memory0(){if(cachedUint8Memory0===null||cachedUint8Memory0.byteLength===0){cachedUint8Memory0=new Uint8Array(wasm$1.memory.buffer)}return cachedUint8Memory0}function getStringFromWasm0(ptr,len){ptr=ptr>>>0;return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr,ptr+len))}function isLikeNone(x){return x===undefined||x===null}let cachedBigInt64Memory0=null;function getBigInt64Memory0(){if(cachedBigInt64Memory0===null||cachedBigInt64Memory0.byteLength===0){cachedBigInt64Memory0=new BigInt64Array(wasm$1.memory.buffer)}return cachedBigInt64Memory0}let cachedInt32Memory0=null;function getInt32Memory0(){if(cachedInt32Memory0===null||cachedInt32Memory0.byteLength===0){cachedInt32Memory0=new Int32Array(wasm$1.memory.buffer)}return cachedInt32Memory0}function debugString(val){const type=typeof val;if(type=="number"||type=="boolean"||val==null){return`${val}`}if(type=="string"){return`"${val}"`}if(type=="symbol"){const description=val.description;if(description==null){return"Symbol"}else{return`Symbol(${description})`}}if(type=="function"){const name=val.name;if(typeof name=="string"&&name.length>0){return`Function(${name})`}else{return"Function"}}if(Array.isArray(val)){const length=val.length;let debug="[";if(length>0){debug+=debugString(val[0])}for(let i=1;i1){className=builtInMatches[1]}else{return toString.call(val)}if(className=="Object"){try{return"Object("+JSON.stringify(val)+")"}catch(_){return"Object"}}if(val instanceof Error){return`${val.name}: ${val.message}\n${val.stack}`}return className}let WASM_VECTOR_LEN=0;const cachedTextEncoder=typeof TextEncoder!=="undefined"?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}};const encodeString=typeof cachedTextEncoder.encodeInto==="function"?function(arg,view){return cachedTextEncoder.encodeInto(arg,view)}:function(arg,view){const buf=cachedTextEncoder.encode(arg);view.set(buf);return{read:arg.length,written:buf.length}};function passStringToWasm0(arg,malloc,realloc){if(realloc===undefined){const buf=cachedTextEncoder.encode(arg);const ptr=malloc(buf.length,1)>>>0;getUint8Memory0().subarray(ptr,ptr+buf.length).set(buf);WASM_VECTOR_LEN=buf.length;return ptr}let len=arg.length;let ptr=malloc(len,1)>>>0;const mem=getUint8Memory0();let offset=0;for(;offset127)break;mem[ptr+offset]=code}if(offset!==len){if(offset!==0){arg=arg.slice(offset)}ptr=realloc(ptr,len,len=offset+arg.length*3,1)>>>0;const view=getUint8Memory0().subarray(ptr+offset,ptr+len);const ret=encodeString(arg,view);offset+=ret.written}WASM_VECTOR_LEN=offset;return ptr}function _assertClass(instance,klass){if(!(instance instanceof klass)){throw new Error(`expected instance of ${klass.name}`)}return instance.ptr}function getArrayU8FromWasm0(ptr,len){ptr=ptr>>>0;return getUint8Memory0().subarray(ptr/1,ptr/1+len)}function passArray8ToWasm0(arg,malloc){const ptr=malloc(arg.length*1,1)>>>0;getUint8Memory0().set(arg,ptr/1);WASM_VECTOR_LEN=arg.length;return ptr}function handleError(f,args){try{return f.apply(this,args)}catch(e){wasm$1.__wbindgen_exn_store(addHeapObject(e))}}class CompactFheBool{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheBool.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_compactfhebool_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm$1.compactfhebool_encrypt_with_compact_public_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheBool.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfhebool_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfhebool_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfhebool_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheBool.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfhebool_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfhebool_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheBool.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint128{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint128.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_compactfheuint128_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm$1.compactfheuint128_encrypt_with_compact_public_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint128_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint128_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint128_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint128_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint16{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint16.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_compactfheuint16_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm$1.compactfheuint16_encrypt_with_compact_public_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint16_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint16_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint16_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint16_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint160{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint160.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_compactfheuint160_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm$1.compactfheuint160_encrypt_with_compact_public_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint160_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint160_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint160_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint160_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint256{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint256.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_compactfheuint256_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm$1.compactfheuint256_encrypt_with_compact_public_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint256_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint256_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint256_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint256_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint32{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint32.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_compactfheuint32_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm$1.compactfheuint32_encrypt_with_compact_public_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint32_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint32_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint32_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint32_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint64{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint64.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_compactfheuint64_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm$1.compactfheuint64_encrypt_with_compact_public_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint64_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint64_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint64_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint64_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint8{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint8.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_compactfheuint8_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm$1.compactfheuint8_encrypt_with_compact_public_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint8_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint8_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint8_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint8_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheBool{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheBool.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fhebool_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fhebool_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fhebool_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fhebool_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fhebool_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fhebool_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0!==0}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fhebool_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fhebool_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fhebool_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fhebool_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheInt128{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt128.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheint128_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint128_encrypt_with_client_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheint128_encrypt_with_public_key(retptr,addHeapObject(value),public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheint128_encrypt_with_compressed_public_key(retptr,addHeapObject(value),compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheint128_encrypt_with_compact_public_key(retptr,addHeapObject(value),compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint128_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return takeObject(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint128_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint128_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint128_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint128_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheInt16{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt16.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheint16_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint16_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheint16_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheint16_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheint16_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint16_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint16_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint16_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint16_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint16_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheInt160{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt160.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheint160_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint160_encrypt_with_client_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheint160_encrypt_with_public_key(retptr,addHeapObject(value),public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheint160_encrypt_with_compressed_public_key(retptr,addHeapObject(value),compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheint160_encrypt_with_compact_public_key(retptr,addHeapObject(value),compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint160_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return takeObject(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint160_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint160_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint160_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint160_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheInt256{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt256.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheint256_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint256_encrypt_with_client_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheint256_encrypt_with_public_key(retptr,addHeapObject(value),public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheint256_encrypt_with_compressed_public_key(retptr,addHeapObject(value),compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheint256_encrypt_with_compact_public_key(retptr,addHeapObject(value),compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint256_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return takeObject(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint256_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint256_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint256_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint256_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheInt32{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt32.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheint32_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint32_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheint32_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheint32_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheint32_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint32_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint32_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint32_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint32_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint32_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheInt64{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt64.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheint64_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint64_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheint64_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheint64_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheint64_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint64_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getBigInt64Memory0()[retptr/8+0];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}return r0}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint64_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint64_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint64_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint64_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheInt8{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt8.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheint8_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint8_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheint8_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheint8_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheint8_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint8_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint8_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint8_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint8_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint8_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheUint128{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint128.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheuint128_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint128_encrypt_with_client_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheuint128_encrypt_with_public_key(retptr,addHeapObject(value),public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheuint128_encrypt_with_compressed_public_key(retptr,addHeapObject(value),compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheuint128_encrypt_with_compact_public_key(retptr,addHeapObject(value),compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint128_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return takeObject(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint128_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint128_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint128_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint128_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheUint16{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint16.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheuint16_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint16_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheuint16_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheuint16_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheuint16_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint16_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint16_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint16_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint16_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint16_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheUint160{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint160.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheuint160_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint160_encrypt_with_client_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheuint160_encrypt_with_public_key(retptr,addHeapObject(value),public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheuint160_encrypt_with_compressed_public_key(retptr,addHeapObject(value),compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheuint160_encrypt_with_compact_public_key(retptr,addHeapObject(value),compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint160_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return takeObject(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint160_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint160_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint160_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint160_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheUint256{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint256.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheuint256_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint256_encrypt_with_client_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheuint256_encrypt_with_public_key(retptr,addHeapObject(value),public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheuint256_encrypt_with_compressed_public_key(retptr,addHeapObject(value),compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheuint256_encrypt_with_compact_public_key(retptr,addHeapObject(value),compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint256_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return takeObject(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint256_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint256_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint256_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint256_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheUint32{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint32.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheuint32_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint32_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheuint32_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheuint32_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheuint32_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint32_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0>>>0}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint32_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint32_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint32_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint32_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheUint64{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint64.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheuint64_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint64_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheuint64_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheuint64_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheuint64_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint64_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getBigInt64Memory0()[retptr/8+0];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}return BigInt.asUintN(64,r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint64_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint64_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint64_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint64_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheUint8{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint8.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheuint8_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint8_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheuint8_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheuint8_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheuint8_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint8_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint8_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint8_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint8_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint8_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class TfheClientKey{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(TfheClientKey.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_tfheclientkey_free(ptr)}static generate(config){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(config,TfheConfig);wasm$1.tfheclientkey_generate(retptr,config.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheClientKey.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static generate_with_seed(config,seed){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(config,TfheConfig);wasm$1.tfheclientkey_generate_with_seed(retptr,config.__wbg_ptr,addHeapObject(seed));var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheClientKey.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.tfheclientkey_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.tfheclientkey_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheClientKey.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class TfheCompactPublicKey{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(TfheCompactPublicKey.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_tfhecompactpublickey_free(ptr)}static new(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.tfhecompactpublickey_new(retptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheCompactPublicKey.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.tfhecompactpublickey_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.tfhecompactpublickey_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheCompactPublicKey.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class TfheCompressedPublicKey{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(TfheCompressedPublicKey.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_tfhecompressedpublickey_free(ptr)}static new(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.tfhecompressedpublickey_new(retptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheCompressedPublicKey.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decompress(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.tfhecompressedpublickey_decompress(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfhePublicKey.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.tfhecompressedpublickey_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.tfhecompressedpublickey_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheCompressedPublicKey.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class TfheConfig{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(TfheConfig.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_tfheconfig_free(ptr)}}class TfheConfigBuilder{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(TfheConfigBuilder.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_tfheconfigbuilder_free(ptr)}static default(){const ret=wasm$1.tfheconfigbuilder_default();return TfheConfigBuilder.__wrap(ret)}static default_with_small_encryption(){const ret=wasm$1.tfheconfigbuilder_default_with_small_encryption();return TfheConfigBuilder.__wrap(ret)}static default_with_big_encryption(){const ret=wasm$1.tfheconfigbuilder_default();return TfheConfigBuilder.__wrap(ret)}build(){const ptr=this.__destroy_into_raw();const ret=wasm$1.tfheconfigbuilder_build(ptr);return TfheConfig.__wrap(ret)}}class TfhePublicKey{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(TfhePublicKey.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_tfhepublickey_free(ptr)}static new(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.tfhepublickey_new(retptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfhePublicKey.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.tfhepublickey_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.tfhepublickey_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfhePublicKey.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}async function __wbg_load(module,imports){if(typeof Response==="function"&&module instanceof Response){if(typeof WebAssembly.instantiateStreaming==="function"){try{return await WebAssembly.instantiateStreaming(module,imports)}catch(e){if(module.headers.get("Content-Type")!="application/wasm"){console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",e)}else{throw e}}}const bytes=await module.arrayBuffer();return await WebAssembly.instantiate(bytes,imports)}else{const instance=await WebAssembly.instantiate(module,imports);if(instance instanceof WebAssembly.Instance){return{instance:instance,module:module}}else{return instance}}}function __wbg_get_imports(){const imports={};imports.wbg={};imports.wbg.__wbindgen_bigint_from_u64=function(arg0){const ret=BigInt.asUintN(64,arg0);return addHeapObject(ret)};imports.wbg.__wbindgen_shr=function(arg0,arg1){const ret=getObject(arg0)>>getObject(arg1);return addHeapObject(ret)};imports.wbg.__wbindgen_object_drop_ref=function(arg0){takeObject(arg0)};imports.wbg.__wbindgen_bigint_from_i64=function(arg0){const ret=arg0;return addHeapObject(ret)};imports.wbg.__wbindgen_jsval_eq=function(arg0,arg1){const ret=getObject(arg0)===getObject(arg1);return ret};imports.wbg.__wbindgen_error_new=function(arg0,arg1){const ret=new Error(getStringFromWasm0(arg0,arg1));return addHeapObject(ret)};imports.wbg.__wbindgen_bigint_from_i128=function(arg0,arg1){const ret=arg0<>>0,arg2>>>0);return addHeapObject(ret)};imports.wbg.__wbg_new_bc5d9aad3f9ac80e=function(arg0){const ret=new Uint8Array(getObject(arg0));return addHeapObject(ret)};imports.wbg.__wbg_set_4b3aa8445ac1e91c=function(arg0,arg1,arg2){getObject(arg0).set(getObject(arg1),arg2>>>0)};imports.wbg.__wbg_newwithlength_89eca18f2603a999=function(arg0){const ret=new Uint8Array(arg0>>>0);return addHeapObject(ret)};imports.wbg.__wbg_subarray_7649d027b2b141b3=function(arg0,arg1,arg2){const ret=getObject(arg0).subarray(arg1>>>0,arg2>>>0);return addHeapObject(ret)};imports.wbg.__wbindgen_object_clone_ref=function(arg0){const ret=getObject(arg0);return addHeapObject(ret)};imports.wbg.__wbindgen_bigint_get_as_i64=function(arg0,arg1){const v=getObject(arg1);const ret=typeof v==="bigint"?v:undefined;getBigInt64Memory0()[arg0/8+1]=isLikeNone(ret)?BigInt(0):ret;getInt32Memory0()[arg0/4+0]=!isLikeNone(ret)};imports.wbg.__wbindgen_debug_string=function(arg0,arg1){const ret=debugString(getObject(arg1));const ptr1=passStringToWasm0(ret,wasm$1.__wbindgen_malloc,wasm$1.__wbindgen_realloc);const len1=WASM_VECTOR_LEN;getInt32Memory0()[arg0/4+1]=len1;getInt32Memory0()[arg0/4+0]=ptr1};imports.wbg.__wbindgen_throw=function(arg0,arg1){throw new Error(getStringFromWasm0(arg0,arg1))};imports.wbg.__wbindgen_memory=function(){const ret=wasm$1.memory;return addHeapObject(ret)};return imports}function __wbg_finalize_init(instance,module){wasm$1=instance.exports;__wbg_init.__wbindgen_wasm_module=module;cachedBigInt64Memory0=null;cachedInt32Memory0=null;cachedUint8Memory0=null;return wasm$1}async function __wbg_init(input){if(wasm$1!==undefined)return wasm$1;const imports=__wbg_get_imports();if(typeof input==="string"||typeof Request==="function"&&input instanceof Request||typeof URL==="function"&&input instanceof URL){input=fetch(input)}const{instance,module}=await __wbg_load(await input,imports);return __wbg_finalize_init(instance,module)}const createTfheKeypair=()=>{const config=TfheConfigBuilder.default().build();const clientKey=TfheClientKey.generate(config);let publicKey=TfheCompactPublicKey.new(clientKey);publicKey=TfheCompactPublicKey.deserialize(publicKey.serialize());return{clientKey:clientKey,publicKey:publicKey}};const createTfhePublicKey=()=>{const{publicKey}=createTfheKeypair();return toHexString(publicKey.serialize())};const toHexString=bytes=>bytes.reduce((str,byte)=>str+byte.toString(16).padStart(2,"0"),"");var EncryptionTypes;(function(EncryptionTypes){EncryptionTypes["bool"]="bool";EncryptionTypes["uint8"]="uint8";EncryptionTypes["uint16"]="uint16";EncryptionTypes["uint32"]="uint32";EncryptionTypes["uint64"]="uint64";EncryptionTypes["uint128"]="uint128";EncryptionTypes["uint256"]="uint256";EncryptionTypes["address"]="address"})(EncryptionTypes||(EncryptionTypes={}));var FheUType;(function(FheUType){FheUType[FheUType["bool"]=13]="bool";FheUType[FheUType["uint8"]=0]="uint8";FheUType[FheUType["uint16"]=1]="uint16";FheUType[FheUType["uint32"]=2]="uint32";FheUType[FheUType["uint64"]=3]="uint64";FheUType[FheUType["uint128"]=4]="uint128";FheUType[FheUType["uint256"]=5]="uint256";FheUType[FheUType["address"]=12]="address"})(FheUType||(FheUType={}));const FheUintUTypes=[FheUType.uint8,FheUType.uint16,FheUType.uint32,FheUType.uint64,FheUType.uint128,FheUType.uint256];const FheAllUTypes=[FheUType.bool,FheUType.uint8,FheUType.uint16,FheUType.uint32,FheUType.uint64,FheUType.uint128,FheUType.uint256,FheUType.address];const Encryptable={bool:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:FheUType.bool}),uint8:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:FheUType.uint8}),uint16:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:FheUType.uint16}),uint32:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:FheUType.uint32}),uint64:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:FheUType.uint64}),uint128:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:FheUType.uint128}),uint256:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:FheUType.uint256}),address:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:FheUType.address})};function isEncryptableItem(value){return typeof value==="object"&&value!==null&&["string","number","bigint","boolean"].includes(typeof value.data)&&typeof value.securityZone==="number"&&FheAllUTypes.includes(value.utype)}const ResultErr=error=>({success:false,data:null,error:error});const ResultOk=data=>({success:true,data:data,error:null});function getAsSealedItem(value){if(Array.isArray(value)&&value.length===2&&typeof value[0]==="string"&&FheAllUTypes.includes(parseInt(`${value[1]}`)))return{data:value[0],utype:value[1]};if(typeof value==="object"&&value!==null&&typeof value.data==="string"&&FheAllUTypes.includes(value.utype))return value;return undefined}function isSealedBool(value){return parseInt(`${value.utype}`)===FheUType.bool}function isSealedUint(value){return FheUintUTypes.includes(parseInt(`${value.utype}`))}function isSealedAddress(value){return parseInt(`${value.utype}`)===FheUType.address}const createStoreImpl=createState=>{let state;const listeners=new Set;const setState=(partial,replace)=>{const nextState=typeof partial==="function"?partial(state):partial;if(!Object.is(nextState,state)){const previousState=state;state=(replace!=null?replace:typeof nextState!=="object"||nextState===null)?nextState:Object.assign({},state,nextState);listeners.forEach(listener=>listener(state,previousState))}};const getState=()=>state;const getInitialState=()=>initialState;const subscribe=listener=>{listeners.add(listener);return()=>listeners.delete(listener)};const api={setState:setState,getState:getState,getInitialState:getInitialState,subscribe:subscribe};const initialState=state=createState(setState,getState,api);return api};const createStore=createState=>createState?createStoreImpl(createState):createStoreImpl;function createJSONStorage(getStorage,options){let storage;try{storage=getStorage()}catch(e){return}const persistStorage={getItem:name=>{var _a;const parse=str2=>{if(str2===null){return null}return JSON.parse(str2,void 0)};const str=(_a=storage.getItem(name))!=null?_a:null;if(str instanceof Promise){return str.then(parse)}return parse(str)},setItem:(name,newValue)=>storage.setItem(name,JSON.stringify(newValue,void 0)),removeItem:name=>storage.removeItem(name)};return persistStorage}const toThenable=fn=>input=>{try{const result=fn(input);if(result instanceof Promise){return result}return{then(onFulfilled){return toThenable(onFulfilled)(result)},catch(_onRejected){return this}}}catch(e){return{then(_onFulfilled){return this},catch(onRejected){return toThenable(onRejected)(e)}}}};const persistImpl=(config,baseOptions)=>(set,get,api)=>{let options={storage:createJSONStorage(()=>localStorage),partialize:state=>state,version:0,merge:(persistedState,currentState)=>({...currentState,...persistedState}),...baseOptions};let hasHydrated=false;const hydrationListeners=new Set;const finishHydrationListeners=new Set;let storage=options.storage;if(!storage){return config((...args)=>{console.warn(`[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`);set(...args)},get,api)}const setItem=()=>{const state=options.partialize({...get()});return storage.setItem(options.name,{state:state,version:options.version})};const savedSetState=api.setState;api.setState=(state,replace)=>{savedSetState(state,replace);void setItem()};const configResult=config((...args)=>{set(...args);void setItem()},get,api);api.getInitialState=()=>configResult;let stateFromStorage;const hydrate=()=>{var _a,_b;if(!storage)return;hasHydrated=false;hydrationListeners.forEach(cb=>{var _a2;return cb((_a2=get())!=null?_a2:configResult)});const postRehydrationCallback=((_b=options.onRehydrateStorage)==null?void 0:_b.call(options,(_a=get())!=null?_a:configResult))||void 0;return toThenable(storage.getItem.bind(storage))(options.name).then(deserializedStorageValue=>{if(deserializedStorageValue){if(typeof deserializedStorageValue.version==="number"&&deserializedStorageValue.version!==options.version){if(options.migrate){return[true,options.migrate(deserializedStorageValue.state,deserializedStorageValue.version)]}console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`)}else{return[false,deserializedStorageValue.state]}}return[false,void 0]}).then(migrationResult=>{var _a2;const[migrated,migratedState]=migrationResult;stateFromStorage=options.merge(migratedState,(_a2=get())!=null?_a2:configResult);set(stateFromStorage,true);if(migrated){return setItem()}}).then(()=>{postRehydrationCallback==null?void 0:postRehydrationCallback(stateFromStorage,void 0);stateFromStorage=get();hasHydrated=true;finishHydrationListeners.forEach(cb=>cb(stateFromStorage))}).catch(e=>{postRehydrationCallback==null?void 0:postRehydrationCallback(void 0,e)})};api.persist={setOptions:newOptions=>{options={...options,...newOptions};if(newOptions.storage){storage=newOptions.storage}},clearStorage:()=>{storage==null?void 0:storage.removeItem(options.name)},getOptions:()=>options,rehydrate:()=>hydrate(),hasHydrated:()=>hasHydrated,onHydrate:cb=>{hydrationListeners.add(cb);return()=>{hydrationListeners.delete(cb)}},onFinishHydration:cb=>{finishHydrationListeners.add(cb);return()=>{finishHydrationListeners.delete(cb)}}};if(!options.skipHydration){hydrate()}return stateFromStorage||configResult};const persist=persistImpl;var NOTHING=Symbol.for("immer-nothing");var DRAFTABLE=Symbol.for("immer-draftable");var DRAFT_STATE=Symbol.for("immer-state");var errors=process.env.NODE_ENV!=="production"?[function(plugin){return`The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \`enable${plugin}()\` when initializing your application.`},function(thing){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`},"This object has been frozen and should not be mutated",function(data){return"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? "+data},"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.","Immer forbids circular references","The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(thing){return`'current' expects a draft, got: ${thing}`},"Object.defineProperty() cannot be used on an Immer draft","Object.setPrototypeOf() cannot be used on an Immer draft","Immer only supports deleting array indices","Immer only supports setting array indices and the 'length' property",function(thing){return`'original' expects a draft, got: ${thing}`}]:[];function die(error,...args){if(process.env.NODE_ENV!=="production"){const e=errors[error];const msg=typeof e==="function"?e.apply(null,args):e;throw new Error(`[Immer] ${msg}`)}throw new Error(`[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`)}var getPrototypeOf=Object.getPrototypeOf;function isDraft(value){return!!value&&!!value[DRAFT_STATE]}function isDraftable(value){if(!value)return false;return isPlainObject(value)||Array.isArray(value)||!!value[DRAFTABLE]||!!value.constructor?.[DRAFTABLE]||isMap(value)||isSet(value)}var objectCtorString=Object.prototype.constructor.toString();function isPlainObject(value){if(!value||typeof value!=="object")return false;const proto=getPrototypeOf(value);if(proto===null){return true}const Ctor=Object.hasOwnProperty.call(proto,"constructor")&&proto.constructor;if(Ctor===Object)return true;return typeof Ctor=="function"&&Function.toString.call(Ctor)===objectCtorString}function each(obj,iter){if(getArchtype(obj)===0){Reflect.ownKeys(obj).forEach(key=>{iter(key,obj[key],obj)})}else{obj.forEach((entry,index)=>iter(index,entry,obj))}}function getArchtype(thing){const state=thing[DRAFT_STATE];return state?state.type_:Array.isArray(thing)?1:isMap(thing)?2:isSet(thing)?3:0}function has(thing,prop){return getArchtype(thing)===2?thing.has(prop):Object.prototype.hasOwnProperty.call(thing,prop)}function set(thing,propOrOldValue,value){const t=getArchtype(thing);if(t===2)thing.set(propOrOldValue,value);else if(t===3){thing.add(value)}else thing[propOrOldValue]=value}function is(x,y){if(x===y){return x!==0||1/x===1/y}else{return x!==x&&y!==y}}function isMap(target){return target instanceof Map}function isSet(target){return target instanceof Set}function latest(state){return state.copy_||state.base_}function shallowCopy(base,strict){if(isMap(base)){return new Map(base)}if(isSet(base)){return new Set(base)}if(Array.isArray(base))return Array.prototype.slice.call(base);const isPlain=isPlainObject(base);if(strict===true||strict==="class_only"&&!isPlain){const descriptors=Object.getOwnPropertyDescriptors(base);delete descriptors[DRAFT_STATE];let keys=Reflect.ownKeys(descriptors);for(let i=0;i1){obj.set=obj.add=obj.clear=obj.delete=dontMutateFrozenCollections}Object.freeze(obj);if(deep)Object.entries(obj).forEach(([key,value])=>freeze(value,true));return obj}function dontMutateFrozenCollections(){die(2)}function isFrozen(obj){return Object.isFrozen(obj)}var plugins={};function getPlugin(pluginKey){const plugin=plugins[pluginKey];if(!plugin){die(0,pluginKey)}return plugin}var currentScope;function getCurrentScope(){return currentScope}function createScope(parent_,immer_){return{drafts_:[],parent_:parent_,immer_:immer_,canAutoFreeze_:true,unfinalizedDrafts_:0}}function usePatchesInScope(scope,patchListener){if(patchListener){getPlugin("Patches");scope.patches_=[];scope.inversePatches_=[];scope.patchListener_=patchListener}}function revokeScope(scope){leaveScope(scope);scope.drafts_.forEach(revokeDraft);scope.drafts_=null}function leaveScope(scope){if(scope===currentScope){currentScope=scope.parent_}}function enterScope(immer2){return currentScope=createScope(currentScope,immer2)}function revokeDraft(draft){const state=draft[DRAFT_STATE];if(state.type_===0||state.type_===1)state.revoke_();else state.revoked_=true}function processResult(result,scope){scope.unfinalizedDrafts_=scope.drafts_.length;const baseDraft=scope.drafts_[0];const isReplaced=result!==void 0&&result!==baseDraft;if(isReplaced){if(baseDraft[DRAFT_STATE].modified_){revokeScope(scope);die(4)}if(isDraftable(result)){result=finalize(scope,result);if(!scope.parent_)maybeFreeze(scope,result)}if(scope.patches_){getPlugin("Patches").generateReplacementPatches_(baseDraft[DRAFT_STATE].base_,result,scope.patches_,scope.inversePatches_)}}else{result=finalize(scope,baseDraft,[])}revokeScope(scope);if(scope.patches_){scope.patchListener_(scope.patches_,scope.inversePatches_)}return result!==NOTHING?result:void 0}function finalize(rootScope,value,path){if(isFrozen(value))return value;const state=value[DRAFT_STATE];if(!state){each(value,(key,childValue)=>finalizeProperty(rootScope,state,value,key,childValue,path));return value}if(state.scope_!==rootScope)return value;if(!state.modified_){maybeFreeze(rootScope,state.base_,true);return state.base_}if(!state.finalized_){state.finalized_=true;state.scope_.unfinalizedDrafts_--;const result=state.copy_;let resultEach=result;let isSet2=false;if(state.type_===3){resultEach=new Set(result);result.clear();isSet2=true}each(resultEach,(key,childValue)=>finalizeProperty(rootScope,state,result,key,childValue,path,isSet2));maybeFreeze(rootScope,result,false);if(path&&rootScope.patches_){getPlugin("Patches").generatePatches_(state,path,rootScope.patches_,rootScope.inversePatches_)}}return state.copy_}function finalizeProperty(rootScope,parentState,targetObject,prop,childValue,rootPath,targetIsSet){if(process.env.NODE_ENV!=="production"&&childValue===targetObject)die(5);if(isDraft(childValue)){const path=rootPath&&parentState&&parentState.type_!==3&&!has(parentState.assigned_,prop)?rootPath.concat(prop):void 0;const res=finalize(rootScope,childValue,path);set(targetObject,prop,res);if(isDraft(res)){rootScope.canAutoFreeze_=false}else return}else if(targetIsSet){targetObject.add(childValue)}if(isDraftable(childValue)&&!isFrozen(childValue)){if(!rootScope.immer_.autoFreeze_&&rootScope.unfinalizedDrafts_<1){return}finalize(rootScope,childValue);if((!parentState||!parentState.scope_.parent_)&&typeof prop!=="symbol"&&Object.prototype.propertyIsEnumerable.call(targetObject,prop))maybeFreeze(rootScope,childValue)}}function maybeFreeze(scope,value,deep=false){if(!scope.parent_&&scope.immer_.autoFreeze_&&scope.canAutoFreeze_){freeze(value,deep)}}function createProxyProxy(base,parent){const isArray=Array.isArray(base);const state={type_:isArray?1:0,scope_:parent?parent.scope_:getCurrentScope(),modified_:false,finalized_:false,assigned_:{},parent_:parent,base_:base,draft_:null,copy_:null,revoke_:null,isManual_:false};let target=state;let traps=objectTraps;if(isArray){target=[state];traps=arrayTraps}const{revoke,proxy}=Proxy.revocable(target,traps);state.draft_=proxy;state.revoke_=revoke;return proxy}var objectTraps={get(state,prop){if(prop===DRAFT_STATE)return state;const source=latest(state);if(!has(source,prop)){return readPropFromProto(state,source,prop)}const value=source[prop];if(state.finalized_||!isDraftable(value)){return value}if(value===peek(state.base_,prop)){prepareCopy(state);return state.copy_[prop]=createProxy(value,state)}return value},has(state,prop){return prop in latest(state)},ownKeys(state){return Reflect.ownKeys(latest(state))},set(state,prop,value){const desc=getDescriptorFromProto(latest(state),prop);if(desc?.set){desc.set.call(state.draft_,value);return true}if(!state.modified_){const current2=peek(latest(state),prop);const currentState=current2?.[DRAFT_STATE];if(currentState&¤tState.base_===value){state.copy_[prop]=value;state.assigned_[prop]=false;return true}if(is(value,current2)&&(value!==void 0||has(state.base_,prop)))return true;prepareCopy(state);markChanged(state)}if(state.copy_[prop]===value&&(value!==void 0||prop in state.copy_)||Number.isNaN(value)&&Number.isNaN(state.copy_[prop]))return true;state.copy_[prop]=value;state.assigned_[prop]=true;return true},deleteProperty(state,prop){if(peek(state.base_,prop)!==void 0||prop in state.base_){state.assigned_[prop]=false;prepareCopy(state);markChanged(state)}else{delete state.assigned_[prop]}if(state.copy_){delete state.copy_[prop]}return true},getOwnPropertyDescriptor(state,prop){const owner=latest(state);const desc=Reflect.getOwnPropertyDescriptor(owner,prop);if(!desc)return desc;return{writable:true,configurable:state.type_!==1||prop!=="length",enumerable:desc.enumerable,value:owner[prop]}},defineProperty(){die(11)},getPrototypeOf(state){return getPrototypeOf(state.base_)},setPrototypeOf(){die(12)}};var arrayTraps={};each(objectTraps,(key,fn)=>{arrayTraps[key]=function(){arguments[0]=arguments[0][0];return fn.apply(this,arguments)}});arrayTraps.deleteProperty=function(state,prop){if(process.env.NODE_ENV!=="production"&&isNaN(parseInt(prop)))die(13);return arrayTraps.set.call(this,state,prop,void 0)};arrayTraps.set=function(state,prop,value){if(process.env.NODE_ENV!=="production"&&prop!=="length"&&isNaN(parseInt(prop)))die(14);return objectTraps.set.call(this,state[0],prop,value,state[0])};function peek(draft,prop){const state=draft[DRAFT_STATE];const source=state?latest(state):draft;return source[prop]}function readPropFromProto(state,source,prop){const desc=getDescriptorFromProto(source,prop);return desc?`value`in desc?desc.value:desc.get?.call(state.draft_):void 0}function getDescriptorFromProto(source,prop){if(!(prop in source))return void 0;let proto=getPrototypeOf(source);while(proto){const desc=Object.getOwnPropertyDescriptor(proto,prop);if(desc)return desc;proto=getPrototypeOf(proto)}return void 0}function markChanged(state){if(!state.modified_){state.modified_=true;if(state.parent_){markChanged(state.parent_)}}}function prepareCopy(state){if(!state.copy_){state.copy_=shallowCopy(state.base_,state.scope_.immer_.useStrictShallowCopy_)}}var Immer2=class{constructor(config){this.autoFreeze_=true;this.useStrictShallowCopy_=false;this.produce=(base,recipe,patchListener)=>{if(typeof base==="function"&&typeof recipe!=="function"){const defaultBase=recipe;recipe=base;const self=this;return function curriedProduce(base2=defaultBase,...args){return self.produce(base2,draft=>recipe.call(this,draft,...args))}}if(typeof recipe!=="function")die(6);if(patchListener!==void 0&&typeof patchListener!=="function")die(7);let result;if(isDraftable(base)){const scope=enterScope(this);const proxy=createProxy(base,void 0);let hasError=true;try{result=recipe(proxy);hasError=false}finally{if(hasError)revokeScope(scope);else leaveScope(scope)}usePatchesInScope(scope,patchListener);return processResult(result,scope)}else if(!base||typeof base!=="object"){result=recipe(base);if(result===void 0)result=base;if(result===NOTHING)result=void 0;if(this.autoFreeze_)freeze(result,true);if(patchListener){const p=[];const ip=[];getPlugin("Patches").generateReplacementPatches_(base,result,p,ip);patchListener(p,ip)}return result}else die(1,base)};this.produceWithPatches=(base,recipe)=>{if(typeof base==="function"){return(state,...args)=>this.produceWithPatches(state,draft=>base(draft,...args))}let patches,inversePatches;const result=this.produce(base,recipe,(p,ip)=>{patches=p;inversePatches=ip});return[result,patches,inversePatches]};if(typeof config?.autoFreeze==="boolean")this.setAutoFreeze(config.autoFreeze);if(typeof config?.useStrictShallowCopy==="boolean")this.setUseStrictShallowCopy(config.useStrictShallowCopy)}createDraft(base){if(!isDraftable(base))die(8);if(isDraft(base))base=current(base);const scope=enterScope(this);const proxy=createProxy(base,void 0);proxy[DRAFT_STATE].isManual_=true;leaveScope(scope);return proxy}finishDraft(draft,patchListener){const state=draft&&draft[DRAFT_STATE];if(!state||!state.isManual_)die(9);const{scope_:scope}=state;usePatchesInScope(scope,patchListener);return processResult(void 0,scope)}setAutoFreeze(value){this.autoFreeze_=value}setUseStrictShallowCopy(value){this.useStrictShallowCopy_=value}applyPatches(base,patches){let i;for(i=patches.length-1;i>=0;i--){const patch=patches[i];if(patch.path.length===0&&patch.op==="replace"){base=patch.value;break}}if(i>-1){patches=patches.slice(i+1)}const applyPatchesImpl=getPlugin("Patches").applyPatches_;if(isDraft(base)){return applyPatchesImpl(base,patches)}return this.produce(base,draft=>applyPatchesImpl(draft,patches))}};function createProxy(value,parent){const draft=isMap(value)?getPlugin("MapSet").proxyMap_(value,parent):isSet(value)?getPlugin("MapSet").proxySet_(value,parent):createProxyProxy(value,parent);const scope=parent?parent.scope_:getCurrentScope();scope.drafts_.push(draft);return draft}function current(value){if(!isDraft(value))die(10,value);return currentImpl(value)}function currentImpl(value){if(!isDraftable(value)||isFrozen(value))return value;const state=value[DRAFT_STATE];let copy;if(state){if(!state.modified_)return state.base_;state.finalized_=true;copy=shallowCopy(value,state.scope_.immer_.useStrictShallowCopy_)}else{copy=shallowCopy(value,true)}each(copy,(key,childValue)=>{set(copy,key,currentImpl(childValue))});if(state){state.finalized_=false}return copy}var immer=new Immer2;var produce=immer.produce;immer.produceWithPatches.bind(immer);immer.setAutoFreeze.bind(immer);immer.setUseStrictShallowCopy.bind(immer);immer.applyPatches.bind(immer);immer.createDraft.bind(immer);immer.finishDraft.bind(immer);const version="6.13.1";function defineProperties(target,values,types){for(let key in values){let value=values[key];Object.defineProperty(target,key,{enumerable:true,value:value,writable:false})}}function stringify(value){if(value==null){return"null"}if(Array.isArray(value)){return"[ "+value.map(stringify).join(", ")+" ]"}if(value instanceof Uint8Array){const HEX="0123456789abcdef";let result="0x";for(let i=0;i>4];result+=HEX[value[i]&15]}return result}if(typeof value==="object"&&typeof value.toJSON==="function"){return stringify(value.toJSON())}switch(typeof value){case"boolean":case"symbol":return value.toString();case"bigint":return BigInt(value).toString();case"number":return value.toString();case"string":return JSON.stringify(value);case"object":{const keys=Object.keys(value);keys.sort();return"{ "+keys.map(k=>`${stringify(k)}: ${stringify(value[k])}`).join(", ")+" }"}}return`[ COULD NOT SERIALIZE ]`}function makeError(message,code,info){let shortMessage=message;{const details=[];if(info){if("message"in info||"code"in info||"name"in info){throw new Error(`value will overwrite populated values: ${stringify(info)}`)}for(const key in info){if(key==="shortMessage"){continue}const value=info[key];details.push(key+"="+stringify(value))}}details.push(`code=${code}`);details.push(`version=${version}`);if(details.length){message+=" ("+details.join(", ")+")"}}let error;switch(code){case"INVALID_ARGUMENT":error=new TypeError(message);break;case"NUMERIC_FAULT":case"BUFFER_OVERRUN":error=new RangeError(message);break;default:error=new Error(message)}defineProperties(error,{code:code});if(info){Object.assign(error,info)}if(error.shortMessage==null){defineProperties(error,{shortMessage:shortMessage})}return error}function assert(check,message,code,info){if(!check){throw makeError(message,code,info)}}function assertArgument(check,message,name,value){assert(check,message,"INVALID_ARGUMENT",{argument:name,value:value})}["NFD","NFC","NFKD","NFKC"].reduce((accum,form)=>{try{if("test".normalize(form)!=="test"){throw new Error("bad")}if(form==="NFD"){const check=String.fromCharCode(233).normalize("NFD");const expected=String.fromCharCode(101,769);if(check!==expected){throw new Error("broken")}}accum.push(form)}catch(error){}return accum},[]);function _getBytes(value,name,copy){if(value instanceof Uint8Array){return value}if(typeof value==="string"&&value.match(/^0x(?:[0-9a-f][0-9a-f])*$/i)){const result=new Uint8Array((value.length-2)/2);let offset=2;for(let i=0;i>4]+HexCharacters[v&15]}return result}function toUtf8Bytes(str,form){assertArgument(typeof str==="string","invalid string value","str",str);let result=[];for(let i=0;i>6|192);result.push(c&63|128)}else if((c&64512)==55296){i++;const c2=str.charCodeAt(i);assertArgument(i>18|240);result.push(pair>>12&63|128);result.push(pair>>6&63|128);result.push(pair&63|128)}else{result.push(c>>12|224);result.push(c>>6&63|128);result.push(c&63|128)}}return new Uint8Array(result)}function number(n){if(!Number.isSafeInteger(n)||n<0)throw new Error(`Wrong positive integer: ${n}`)}function bytes(b,...lengths){if(!(b instanceof Uint8Array))throw new Error("Expected Uint8Array");if(lengths.length>0&&!lengths.includes(b.length))throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`)}function exists(instance,checkFinished=true){if(instance.destroyed)throw new Error("Hash instance has been destroyed");if(checkFinished&&instance.finished)throw new Error("Hash#digest() has already been called")}function output(out,instance){bytes(out);const min=instance.outputLen;if(out.lengtha instanceof Uint8Array;const u32=arr=>new Uint32Array(arr.buffer,arr.byteOffset,Math.floor(arr.byteLength/4));const isLE=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!isLE)throw new Error("Non little-endian hardware is not supported");function utf8ToBytes(str){if(typeof str!=="string")throw new Error(`utf8ToBytes expected string, got ${typeof str}`);return new Uint8Array((new TextEncoder).encode(str))}function toBytes(data){if(typeof data==="string")data=utf8ToBytes(data);if(!u8a(data))throw new Error(`expected Uint8Array, got ${typeof data}`);return data}class Hash{clone(){return this._cloneInto()}}function wrapConstructor(hashCons){const hashC=msg=>hashCons().update(toBytes(msg)).digest();const tmp=hashCons();hashC.outputLen=tmp.outputLen;hashC.blockLen=tmp.blockLen;hashC.create=()=>hashCons();return hashC}const U32_MASK64=BigInt(2**32-1);const _32n=BigInt(32);function fromBig(n,le=false){if(le)return{h:Number(n&U32_MASK64),l:Number(n>>_32n&U32_MASK64)};return{h:Number(n>>_32n&U32_MASK64)|0,l:Number(n&U32_MASK64)|0}}function split(lst,le=false){let Ah=new Uint32Array(lst.length);let Al=new Uint32Array(lst.length);for(let i=0;ih<>>32-s;const rotlSL=(h,l,s)=>l<>>32-s;const rotlBH=(h,l,s)=>l<>>64-s;const rotlBL=(h,l,s)=>h<>>64-s;const[SHA3_PI,SHA3_ROTL,_SHA3_IOTA]=[[],[],[]];const _0n=BigInt(0);const _1n=BigInt(1);const _2n=BigInt(2);const _7n=BigInt(7);const _256n=BigInt(256);const _0x71n=BigInt(113);for(let round=0,R=_1n,x=1,y=0;round<24;round++){[x,y]=[y,(2*x+3*y)%5];SHA3_PI.push(2*(5*y+x));SHA3_ROTL.push((round+1)*(round+2)/2%64);let t=_0n;for(let j=0;j<7;j++){R=(R<<_1n^(R>>_7n)*_0x71n)%_256n;if(R&_2n)t^=_1n<<(_1n<s>32?rotlBH(h,l,s):rotlSH(h,l,s);const rotlL=(h,l,s)=>s>32?rotlBL(h,l,s):rotlSL(h,l,s);function keccakP(s,rounds=24){const B=new Uint32Array(5*2);for(let round=24-rounds;round<24;round++){for(let x=0;x<10;x++)B[x]=s[x]^s[x+10]^s[x+20]^s[x+30]^s[x+40];for(let x=0;x<10;x+=2){const idx1=(x+8)%10;const idx0=(x+2)%10;const B0=B[idx0];const B1=B[idx0+1];const Th=rotlH(B0,B1,1)^B[idx1];const Tl=rotlL(B0,B1,1)^B[idx1+1];for(let y=0;y<50;y+=10){s[x+y]^=Th;s[x+y+1]^=Tl}}let curH=s[2];let curL=s[3];for(let t=0;t<24;t++){const shift=SHA3_ROTL[t];const Th=rotlH(curH,curL,shift);const Tl=rotlL(curH,curL,shift);const PI=SHA3_PI[t];curH=s[PI];curL=s[PI+1];s[PI]=Th;s[PI+1]=Tl}for(let y=0;y<50;y+=10){for(let x=0;x<10;x++)B[x]=s[y+x];for(let x=0;x<10;x++)s[y+x]^=~B[(x+2)%10]&B[(x+4)%10]}s[0]^=SHA3_IOTA_H[round];s[1]^=SHA3_IOTA_L[round]}B.fill(0)}class Keccak extends Hash{constructor(blockLen,suffix,outputLen,enableXOF=false,rounds=24){super();this.blockLen=blockLen;this.suffix=suffix;this.outputLen=outputLen;this.enableXOF=enableXOF;this.rounds=rounds;this.pos=0;this.posOut=0;this.finished=false;this.destroyed=false;number(outputLen);if(0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200);this.state32=u32(this.state)}keccak(){keccakP(this.state32,this.rounds);this.posOut=0;this.pos=0}update(data){exists(this);const{blockLen,state}=this;data=toBytes(data);const len=data.length;for(let pos=0;pos=blockLen)this.keccak();const take=Math.min(blockLen-this.posOut,len-pos);out.set(bufferOut.subarray(this.posOut,this.posOut+take),pos);this.posOut+=take;pos+=take}return out}xofInto(out){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(out)}xof(bytes){number(bytes);return this.xofInto(new Uint8Array(bytes))}digestInto(out){output(out,this);if(this.finished)throw new Error("digest() was already called");this.writeInto(out);this.destroy();return out}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=true;this.state.fill(0)}_cloneInto(to){const{blockLen,suffix,outputLen,rounds,enableXOF}=this;to||(to=new Keccak(blockLen,suffix,outputLen,enableXOF,rounds));to.state32.set(this.state32);to.pos=this.pos;to.posOut=this.posOut;to.finished=this.finished;to.rounds=rounds;to.suffix=suffix;to.outputLen=outputLen;to.enableXOF=enableXOF;to.destroyed=this.destroyed;return to}}const gen=(suffix,blockLen,outputLen)=>wrapConstructor(()=>new Keccak(blockLen,suffix,outputLen));const keccak_256=gen(1,136,256/8);let locked=false;const _keccak256=function(data){return keccak_256(data)};let __keccak256=_keccak256;function keccak256(_data){const data=getBytes(_data,"data");return hexlify(__keccak256(data))}keccak256._=_keccak256;keccak256.lock=function(){locked=true};keccak256.register=function(func){if(locked){throw new TypeError("keccak256 is locked")}__keccak256=func};Object.freeze(keccak256);const ZeroAddress="0x0000000000000000000000000000000000000000";const BN_0=BigInt(0);const BN_36=BigInt(36);function getChecksumAddress(address){address=address.toLowerCase();const chars=address.substring(2).split("");const expanded=new Uint8Array(40);for(let i=0;i<40;i++){expanded[i]=chars[i].charCodeAt(0)}const hashed=getBytes(keccak256(expanded));for(let i=0;i<40;i+=2){if(hashed[i>>1]>>4>=8){chars[i]=chars[i].toUpperCase()}if((hashed[i>>1]&15)>=8){chars[i+1]=chars[i+1].toUpperCase()}}return"0x"+chars.join("")}const ibanLookup={};for(let i=0;i<10;i++){ibanLookup[String(i)]=String(i)}for(let i=0;i<26;i++){ibanLookup[String.fromCharCode(65+i)]=String(10+i)}const safeDigits=15;function ibanChecksum(address){address=address.toUpperCase();address=address.substring(4)+address.substring(0,2)+"00";let expanded=address.split("").map(c=>{return ibanLookup[c]}).join("");while(expanded.length>=safeDigits){let block=expanded.substring(0,safeDigits);expanded=parseInt(block,10)%97+expanded.substring(block.length)}let checksum=String(98-parseInt(expanded,10)%97);while(checksum.length<2){checksum="0"+checksum}return checksum}const Base36=function(){const result={};for(let i=0;i<36;i++){const key="0123456789abcdefghijklmnopqrstuvwxyz"[i];result[key]=BigInt(i)}return result}();function fromBase36(value){value=value.toLowerCase();let result=BN_0;for(let i=0;i{const types={[primaryType]:PermitV2SignatureAllFields.filter(fieldType=>fields.includes(fieldType.name))};const message={};fields.forEach(field=>{if(field in values){message[field]=values[field]}});return{types:types,primaryType:primaryType,message:message}};const getSignatureDomain=chainId=>({name:"Fhenix Permission v2.0.0",version:"v2.0.0",chainId:parseInt(chainId),verifyingContract:ZeroAddress});var util;(function(util){util.assertEqual=val=>val;function assertIs(_arg){}util.assertIs=assertIs;function assertNever(_x){throw new Error}util.assertNever=assertNever;util.arrayToEnum=items=>{const obj={};for(const item of items){obj[item]=item}return obj};util.getValidEnumValues=obj=>{const validKeys=util.objectKeys(obj).filter(k=>typeof obj[obj[k]]!=="number");const filtered={};for(const k of validKeys){filtered[k]=obj[k]}return util.objectValues(filtered)};util.objectValues=obj=>{return util.objectKeys(obj).map(function(e){return obj[e]})};util.objectKeys=typeof Object.keys==="function"?obj=>Object.keys(obj):object=>{const keys=[];for(const key in object){if(Object.prototype.hasOwnProperty.call(object,key)){keys.push(key)}}return keys};util.find=(arr,checker)=>{for(const item of arr){if(checker(item))return item}return undefined};util.isInteger=typeof Number.isInteger==="function"?val=>Number.isInteger(val):val=>typeof val==="number"&&isFinite(val)&&Math.floor(val)===val;function joinValues(array,separator=" | "){return array.map(val=>typeof val==="string"?`'${val}'`:val).join(separator)}util.joinValues=joinValues;util.jsonStringifyReplacer=(_,value)=>{if(typeof value==="bigint"){return value.toString()}return value}})(util||(util={}));var objectUtil;(function(objectUtil){objectUtil.mergeShapes=(first,second)=>{return{...first,...second}}})(objectUtil||(objectUtil={}));const ZodParsedType=util.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]);const getParsedType=data=>{const t=typeof data;switch(t){case"undefined":return ZodParsedType.undefined;case"string":return ZodParsedType.string;case"number":return isNaN(data)?ZodParsedType.nan:ZodParsedType.number;case"boolean":return ZodParsedType.boolean;case"function":return ZodParsedType.function;case"bigint":return ZodParsedType.bigint;case"symbol":return ZodParsedType.symbol;case"object":if(Array.isArray(data)){return ZodParsedType.array}if(data===null){return ZodParsedType.null}if(data.then&&typeof data.then==="function"&&data.catch&&typeof data.catch==="function"){return ZodParsedType.promise}if(typeof Map!=="undefined"&&data instanceof Map){return ZodParsedType.map}if(typeof Set!=="undefined"&&data instanceof Set){return ZodParsedType.set}if(typeof Date!=="undefined"&&data instanceof Date){return ZodParsedType.date}return ZodParsedType.object;default:return ZodParsedType.unknown}};const ZodIssueCode=util.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);const quotelessJson=obj=>{const json=JSON.stringify(obj,null,2);return json.replace(/"([^"]+)":/g,"$1:")};class ZodError extends Error{constructor(issues){super();this.issues=[];this.addIssue=sub=>{this.issues=[...this.issues,sub]};this.addIssues=(subs=[])=>{this.issues=[...this.issues,...subs]};const actualProto=new.target.prototype;if(Object.setPrototypeOf){Object.setPrototypeOf(this,actualProto)}else{this.__proto__=actualProto}this.name="ZodError";this.issues=issues}get errors(){return this.issues}format(_mapper){const mapper=_mapper||function(issue){return issue.message};const fieldErrors={_errors:[]};const processError=error=>{for(const issue of error.issues){if(issue.code==="invalid_union"){issue.unionErrors.map(processError)}else if(issue.code==="invalid_return_type"){processError(issue.returnTypeError)}else if(issue.code==="invalid_arguments"){processError(issue.argumentsError)}else if(issue.path.length===0){fieldErrors._errors.push(mapper(issue))}else{let curr=fieldErrors;let i=0;while(iissue.message){const fieldErrors={};const formErrors=[];for(const sub of this.issues){if(sub.path.length>0){fieldErrors[sub.path[0]]=fieldErrors[sub.path[0]]||[];fieldErrors[sub.path[0]].push(mapper(sub))}else{formErrors.push(mapper(sub))}}return{formErrors:formErrors,fieldErrors:fieldErrors}}get formErrors(){return this.flatten()}}ZodError.create=issues=>{const error=new ZodError(issues);return error};const errorMap=(issue,_ctx)=>{let message;switch(issue.code){case ZodIssueCode.invalid_type:if(issue.received===ZodParsedType.undefined){message="Required"}else{message=`Expected ${issue.expected}, received ${issue.received}`}break;case ZodIssueCode.invalid_literal:message=`Invalid literal value, expected ${JSON.stringify(issue.expected,util.jsonStringifyReplacer)}`;break;case ZodIssueCode.unrecognized_keys:message=`Unrecognized key(s) in object: ${util.joinValues(issue.keys,", ")}`;break;case ZodIssueCode.invalid_union:message=`Invalid input`;break;case ZodIssueCode.invalid_union_discriminator:message=`Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;break;case ZodIssueCode.invalid_enum_value:message=`Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;break;case ZodIssueCode.invalid_arguments:message=`Invalid function arguments`;break;case ZodIssueCode.invalid_return_type:message=`Invalid function return type`;break;case ZodIssueCode.invalid_date:message=`Invalid date`;break;case ZodIssueCode.invalid_string:if(typeof issue.validation==="object"){if("includes"in issue.validation){message=`Invalid input: must include "${issue.validation.includes}"`;if(typeof issue.validation.position==="number"){message=`${message} at one or more positions greater than or equal to ${issue.validation.position}`}}else if("startsWith"in issue.validation){message=`Invalid input: must start with "${issue.validation.startsWith}"`}else if("endsWith"in issue.validation){message=`Invalid input: must end with "${issue.validation.endsWith}"`}else{util.assertNever(issue.validation)}}else if(issue.validation!=="regex"){message=`Invalid ${issue.validation}`}else{message="Invalid"}break;case ZodIssueCode.too_small:if(issue.type==="array")message=`Array must contain ${issue.exact?"exactly":issue.inclusive?`at least`:`more than`} ${issue.minimum} element(s)`;else if(issue.type==="string")message=`String must contain ${issue.exact?"exactly":issue.inclusive?`at least`:`over`} ${issue.minimum} character(s)`;else if(issue.type==="number")message=`Number must be ${issue.exact?`exactly equal to `:issue.inclusive?`greater than or equal to `:`greater than `}${issue.minimum}`;else if(issue.type==="date")message=`Date must be ${issue.exact?`exactly equal to `:issue.inclusive?`greater than or equal to `:`greater than `}${new Date(Number(issue.minimum))}`;else message="Invalid input";break;case ZodIssueCode.too_big:if(issue.type==="array")message=`Array must contain ${issue.exact?`exactly`:issue.inclusive?`at most`:`less than`} ${issue.maximum} element(s)`;else if(issue.type==="string")message=`String must contain ${issue.exact?`exactly`:issue.inclusive?`at most`:`under`} ${issue.maximum} character(s)`;else if(issue.type==="number")message=`Number must be ${issue.exact?`exactly`:issue.inclusive?`less than or equal to`:`less than`} ${issue.maximum}`;else if(issue.type==="bigint")message=`BigInt must be ${issue.exact?`exactly`:issue.inclusive?`less than or equal to`:`less than`} ${issue.maximum}`;else if(issue.type==="date")message=`Date must be ${issue.exact?`exactly`:issue.inclusive?`smaller than or equal to`:`smaller than`} ${new Date(Number(issue.maximum))}`;else message="Invalid input";break;case ZodIssueCode.custom:message=`Invalid input`;break;case ZodIssueCode.invalid_intersection_types:message=`Intersection results could not be merged`;break;case ZodIssueCode.not_multiple_of:message=`Number must be a multiple of ${issue.multipleOf}`;break;case ZodIssueCode.not_finite:message="Number must be finite";break;default:message=_ctx.defaultError;util.assertNever(issue)}return{message:message}};let overrideErrorMap=errorMap;function setErrorMap(map){overrideErrorMap=map}function getErrorMap(){return overrideErrorMap}const makeIssue=params=>{const{data,path,errorMaps,issueData}=params;const fullPath=[...path,...issueData.path||[]];const fullIssue={...issueData,path:fullPath};if(issueData.message!==undefined){return{...issueData,path:fullPath,message:issueData.message}}let errorMessage="";const maps=errorMaps.filter(m=>!!m).slice().reverse();for(const map of maps){errorMessage=map(fullIssue,{data:data,defaultError:errorMessage}).message}return{...issueData,path:fullPath,message:errorMessage}};const EMPTY_PATH=[];function addIssueToContext(ctx,issueData){const overrideMap=getErrorMap();const issue=makeIssue({issueData:issueData,data:ctx.data,path:ctx.path,errorMaps:[ctx.common.contextualErrorMap,ctx.schemaErrorMap,overrideMap,overrideMap===errorMap?undefined:errorMap].filter(x=>!!x)});ctx.common.issues.push(issue)}class ParseStatus{constructor(){this.value="valid"}dirty(){if(this.value==="valid")this.value="dirty"}abort(){if(this.value!=="aborted")this.value="aborted"}static mergeArray(status,results){const arrayValue=[];for(const s of results){if(s.status==="aborted")return INVALID;if(s.status==="dirty")status.dirty();arrayValue.push(s.value)}return{status:status.value,value:arrayValue}}static async mergeObjectAsync(status,pairs){const syncPairs=[];for(const pair of pairs){const key=await pair.key;const value=await pair.value;syncPairs.push({key:key,value:value})}return ParseStatus.mergeObjectSync(status,syncPairs)}static mergeObjectSync(status,pairs){const finalObject={};for(const pair of pairs){const{key,value}=pair;if(key.status==="aborted")return INVALID;if(value.status==="aborted")return INVALID;if(key.status==="dirty")status.dirty();if(value.status==="dirty")status.dirty();if(key.value!=="__proto__"&&(typeof value.value!=="undefined"||pair.alwaysSet)){finalObject[key.value]=value.value}}return{status:status.value,value:finalObject}}}const INVALID=Object.freeze({status:"aborted"});const DIRTY=value=>({status:"dirty",value:value});const OK=value=>({status:"valid",value:value});const isAborted=x=>x.status==="aborted";const isDirty=x=>x.status==="dirty";const isValid=x=>x.status==="valid";const isAsync=x=>typeof Promise!=="undefined"&&x instanceof Promise;function __classPrivateFieldGet(receiver,state,kind,f){if(typeof state==="function"?receiver!==state||!f:!state.has(receiver))throw new TypeError("Cannot read private member from an object whose class did not declare it");return state.get(receiver)}function __classPrivateFieldSet(receiver,state,value,kind,f){if(typeof state==="function"?receiver!==state||!f:!state.has(receiver))throw new TypeError("Cannot write private member to an object whose class did not declare it");return state.set(receiver,value),value}typeof SuppressedError==="function"?SuppressedError:function(error,suppressed,message){var e=new Error(message);return e.name="SuppressedError",e.error=error,e.suppressed=suppressed,e};var errorUtil;(function(errorUtil){errorUtil.errToObj=message=>typeof message==="string"?{message:message}:message||{};errorUtil.toString=message=>typeof message==="string"?message:message===null||message===void 0?void 0:message.message})(errorUtil||(errorUtil={}));var _ZodEnum_cache,_ZodNativeEnum_cache;class ParseInputLazyPath{constructor(parent,value,path,key){this._cachedPath=[];this.parent=parent;this.data=value;this._path=path;this._key=key}get path(){if(!this._cachedPath.length){if(this._key instanceof Array){this._cachedPath.push(...this._path,...this._key)}else{this._cachedPath.push(...this._path,this._key)}}return this._cachedPath}}const handleResult=(ctx,result)=>{if(isValid(result)){return{success:true,data:result.value}}else{if(!ctx.common.issues.length){throw new Error("Validation failed but no issues detected.")}return{success:false,get error(){if(this._error)return this._error;const error=new ZodError(ctx.common.issues);this._error=error;return this._error}}}};function processCreateParams(params){if(!params)return{};const{errorMap,invalid_type_error,required_error,description}=params;if(errorMap&&(invalid_type_error||required_error)){throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`)}if(errorMap)return{errorMap:errorMap,description:description};const customMap=(iss,ctx)=>{var _a,_b;const{message}=params;if(iss.code==="invalid_enum_value"){return{message:message!==null&&message!==void 0?message:ctx.defaultError}}if(typeof ctx.data==="undefined"){return{message:(_a=message!==null&&message!==void 0?message:required_error)!==null&&_a!==void 0?_a:ctx.defaultError}}if(iss.code!=="invalid_type")return{message:ctx.defaultError};return{message:(_b=message!==null&&message!==void 0?message:invalid_type_error)!==null&&_b!==void 0?_b:ctx.defaultError}};return{errorMap:customMap,description:description}}class ZodType{constructor(def){this.spa=this.safeParseAsync;this._def=def;this.parse=this.parse.bind(this);this.safeParse=this.safeParse.bind(this);this.parseAsync=this.parseAsync.bind(this);this.safeParseAsync=this.safeParseAsync.bind(this);this.spa=this.spa.bind(this);this.refine=this.refine.bind(this);this.refinement=this.refinement.bind(this);this.superRefine=this.superRefine.bind(this);this.optional=this.optional.bind(this);this.nullable=this.nullable.bind(this);this.nullish=this.nullish.bind(this);this.array=this.array.bind(this);this.promise=this.promise.bind(this);this.or=this.or.bind(this);this.and=this.and.bind(this);this.transform=this.transform.bind(this);this.brand=this.brand.bind(this);this.default=this.default.bind(this);this.catch=this.catch.bind(this);this.describe=this.describe.bind(this);this.pipe=this.pipe.bind(this);this.readonly=this.readonly.bind(this);this.isNullable=this.isNullable.bind(this);this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(input){return getParsedType(input.data)}_getOrReturnCtx(input,ctx){return ctx||{common:input.parent.common,data:input.data,parsedType:getParsedType(input.data),schemaErrorMap:this._def.errorMap,path:input.path,parent:input.parent}}_processInputParams(input){return{status:new ParseStatus,ctx:{common:input.parent.common,data:input.data,parsedType:getParsedType(input.data),schemaErrorMap:this._def.errorMap,path:input.path,parent:input.parent}}}_parseSync(input){const result=this._parse(input);if(isAsync(result)){throw new Error("Synchronous parse encountered promise.")}return result}_parseAsync(input){const result=this._parse(input);return Promise.resolve(result)}parse(data,params){const result=this.safeParse(data,params);if(result.success)return result.data;throw result.error}safeParse(data,params){var _a;const ctx={common:{issues:[],async:(_a=params===null||params===void 0?void 0:params.async)!==null&&_a!==void 0?_a:false,contextualErrorMap:params===null||params===void 0?void 0:params.errorMap},path:(params===null||params===void 0?void 0:params.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:data,parsedType:getParsedType(data)};const result=this._parseSync({data:data,path:ctx.path,parent:ctx});return handleResult(ctx,result)}async parseAsync(data,params){const result=await this.safeParseAsync(data,params);if(result.success)return result.data;throw result.error}async safeParseAsync(data,params){const ctx={common:{issues:[],contextualErrorMap:params===null||params===void 0?void 0:params.errorMap,async:true},path:(params===null||params===void 0?void 0:params.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:data,parsedType:getParsedType(data)};const maybeAsyncResult=this._parse({data:data,path:ctx.path,parent:ctx});const result=await(isAsync(maybeAsyncResult)?maybeAsyncResult:Promise.resolve(maybeAsyncResult));return handleResult(ctx,result)}refine(check,message){const getIssueProperties=val=>{if(typeof message==="string"||typeof message==="undefined"){return{message:message}}else if(typeof message==="function"){return message(val)}else{return message}};return this._refinement((val,ctx)=>{const result=check(val);const setError=()=>ctx.addIssue({code:ZodIssueCode.custom,...getIssueProperties(val)});if(typeof Promise!=="undefined"&&result instanceof Promise){return result.then(data=>{if(!data){setError();return false}else{return true}})}if(!result){setError();return false}else{return true}})}refinement(check,refinementData){return this._refinement((val,ctx)=>{if(!check(val)){ctx.addIssue(typeof refinementData==="function"?refinementData(val,ctx):refinementData);return false}else{return true}})}_refinement(refinement){return new ZodEffects({schema:this,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:{type:"refinement",refinement:refinement}})}superRefine(refinement){return this._refinement(refinement)}optional(){return ZodOptional.create(this,this._def)}nullable(){return ZodNullable.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return ZodArray.create(this,this._def)}promise(){return ZodPromise.create(this,this._def)}or(option){return ZodUnion.create([this,option],this._def)}and(incoming){return ZodIntersection.create(this,incoming,this._def)}transform(transform){return new ZodEffects({...processCreateParams(this._def),schema:this,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:{type:"transform",transform:transform}})}default(def){const defaultValueFunc=typeof def==="function"?def:()=>def;return new ZodDefault({...processCreateParams(this._def),innerType:this,defaultValue:defaultValueFunc,typeName:ZodFirstPartyTypeKind.ZodDefault})}brand(){return new ZodBranded({typeName:ZodFirstPartyTypeKind.ZodBranded,type:this,...processCreateParams(this._def)})}catch(def){const catchValueFunc=typeof def==="function"?def:()=>def;return new ZodCatch({...processCreateParams(this._def),innerType:this,catchValue:catchValueFunc,typeName:ZodFirstPartyTypeKind.ZodCatch})}describe(description){const This=this.constructor;return new This({...this._def,description:description})}pipe(target){return ZodPipeline.create(this,target)}readonly(){return ZodReadonly.create(this)}isOptional(){return this.safeParse(undefined).success}isNullable(){return this.safeParse(null).success}}const cuidRegex=/^c[^\s-]{8,}$/i;const cuid2Regex=/^[0-9a-z]+$/;const ulidRegex=/^[0-9A-HJKMNP-TV-Z]{26}$/;const uuidRegex=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i;const nanoidRegex=/^[a-z0-9_-]{21}$/i;const durationRegex=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/;const emailRegex=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i;const _emojiRegex=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;let emojiRegex;const ipv4Regex=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;const ipv6Regex=/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;const base64Regex=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;const dateRegexSource=`((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`;const dateRegex=new RegExp(`^${dateRegexSource}$`);function timeRegexSource(args){let regex=`([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d`;if(args.precision){regex=`${regex}\\.\\d{${args.precision}}`}else if(args.precision==null){regex=`${regex}(\\.\\d+)?`}return regex}function timeRegex(args){return new RegExp(`^${timeRegexSource(args)}$`)}function datetimeRegex(args){let regex=`${dateRegexSource}T${timeRegexSource(args)}`;const opts=[];opts.push(args.local?`Z?`:`Z`);if(args.offset)opts.push(`([+-]\\d{2}:?\\d{2})`);regex=`${regex}(${opts.join("|")})`;return new RegExp(`^${regex}$`)}function isValidIP(ip,version){if((version==="v4"||!version)&&ipv4Regex.test(ip)){return true}if((version==="v6"||!version)&&ipv6Regex.test(ip)){return true}return false}class ZodString extends ZodType{_parse(input){if(this._def.coerce){input.data=String(input.data)}const parsedType=this._getType(input);if(parsedType!==ZodParsedType.string){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.string,received:ctx.parsedType});return INVALID}const status=new ParseStatus;let ctx=undefined;for(const check of this._def.checks){if(check.kind==="min"){if(input.data.lengthcheck.value){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:check.value,type:"string",inclusive:true,exact:false,message:check.message});status.dirty()}}else if(check.kind==="length"){const tooBig=input.data.length>check.value;const tooSmall=input.data.lengthregex.test(data),{validation:validation,code:ZodIssueCode.invalid_string,...errorUtil.errToObj(message)})}_addCheck(check){return new ZodString({...this._def,checks:[...this._def.checks,check]})}email(message){return this._addCheck({kind:"email",...errorUtil.errToObj(message)})}url(message){return this._addCheck({kind:"url",...errorUtil.errToObj(message)})}emoji(message){return this._addCheck({kind:"emoji",...errorUtil.errToObj(message)})}uuid(message){return this._addCheck({kind:"uuid",...errorUtil.errToObj(message)})}nanoid(message){return this._addCheck({kind:"nanoid",...errorUtil.errToObj(message)})}cuid(message){return this._addCheck({kind:"cuid",...errorUtil.errToObj(message)})}cuid2(message){return this._addCheck({kind:"cuid2",...errorUtil.errToObj(message)})}ulid(message){return this._addCheck({kind:"ulid",...errorUtil.errToObj(message)})}base64(message){return this._addCheck({kind:"base64",...errorUtil.errToObj(message)})}ip(options){return this._addCheck({kind:"ip",...errorUtil.errToObj(options)})}datetime(options){var _a,_b;if(typeof options==="string"){return this._addCheck({kind:"datetime",precision:null,offset:false,local:false,message:options})}return this._addCheck({kind:"datetime",precision:typeof(options===null||options===void 0?void 0:options.precision)==="undefined"?null:options===null||options===void 0?void 0:options.precision,offset:(_a=options===null||options===void 0?void 0:options.offset)!==null&&_a!==void 0?_a:false,local:(_b=options===null||options===void 0?void 0:options.local)!==null&&_b!==void 0?_b:false,...errorUtil.errToObj(options===null||options===void 0?void 0:options.message)})}date(message){return this._addCheck({kind:"date",message:message})}time(options){if(typeof options==="string"){return this._addCheck({kind:"time",precision:null,message:options})}return this._addCheck({kind:"time",precision:typeof(options===null||options===void 0?void 0:options.precision)==="undefined"?null:options===null||options===void 0?void 0:options.precision,...errorUtil.errToObj(options===null||options===void 0?void 0:options.message)})}duration(message){return this._addCheck({kind:"duration",...errorUtil.errToObj(message)})}regex(regex,message){return this._addCheck({kind:"regex",regex:regex,...errorUtil.errToObj(message)})}includes(value,options){return this._addCheck({kind:"includes",value:value,position:options===null||options===void 0?void 0:options.position,...errorUtil.errToObj(options===null||options===void 0?void 0:options.message)})}startsWith(value,message){return this._addCheck({kind:"startsWith",value:value,...errorUtil.errToObj(message)})}endsWith(value,message){return this._addCheck({kind:"endsWith",value:value,...errorUtil.errToObj(message)})}min(minLength,message){return this._addCheck({kind:"min",value:minLength,...errorUtil.errToObj(message)})}max(maxLength,message){return this._addCheck({kind:"max",value:maxLength,...errorUtil.errToObj(message)})}length(len,message){return this._addCheck({kind:"length",value:len,...errorUtil.errToObj(message)})}nonempty(message){return this.min(1,errorUtil.errToObj(message))}trim(){return new ZodString({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new ZodString({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new ZodString({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(ch=>ch.kind==="datetime")}get isDate(){return!!this._def.checks.find(ch=>ch.kind==="date")}get isTime(){return!!this._def.checks.find(ch=>ch.kind==="time")}get isDuration(){return!!this._def.checks.find(ch=>ch.kind==="duration")}get isEmail(){return!!this._def.checks.find(ch=>ch.kind==="email")}get isURL(){return!!this._def.checks.find(ch=>ch.kind==="url")}get isEmoji(){return!!this._def.checks.find(ch=>ch.kind==="emoji")}get isUUID(){return!!this._def.checks.find(ch=>ch.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(ch=>ch.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(ch=>ch.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(ch=>ch.kind==="cuid2")}get isULID(){return!!this._def.checks.find(ch=>ch.kind==="ulid")}get isIP(){return!!this._def.checks.find(ch=>ch.kind==="ip")}get isBase64(){return!!this._def.checks.find(ch=>ch.kind==="base64")}get minLength(){let min=null;for(const ch of this._def.checks){if(ch.kind==="min"){if(min===null||ch.value>min)min=ch.value}}return min}get maxLength(){let max=null;for(const ch of this._def.checks){if(ch.kind==="max"){if(max===null||ch.value{var _a;return new ZodString({checks:[],typeName:ZodFirstPartyTypeKind.ZodString,coerce:(_a=params===null||params===void 0?void 0:params.coerce)!==null&&_a!==void 0?_a:false,...processCreateParams(params)})};function floatSafeRemainder(val,step){const valDecCount=(val.toString().split(".")[1]||"").length;const stepDecCount=(step.toString().split(".")[1]||"").length;const decCount=valDecCount>stepDecCount?valDecCount:stepDecCount;const valInt=parseInt(val.toFixed(decCount).replace(".",""));const stepInt=parseInt(step.toFixed(decCount).replace(".",""));return valInt%stepInt/Math.pow(10,decCount)}class ZodNumber extends ZodType{constructor(){super(...arguments);this.min=this.gte;this.max=this.lte;this.step=this.multipleOf}_parse(input){if(this._def.coerce){input.data=Number(input.data)}const parsedType=this._getType(input);if(parsedType!==ZodParsedType.number){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.number,received:ctx.parsedType});return INVALID}let ctx=undefined;const status=new ParseStatus;for(const check of this._def.checks){if(check.kind==="int"){if(!util.isInteger(input.data)){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:"integer",received:"float",message:check.message});status.dirty()}}else if(check.kind==="min"){const tooSmall=check.inclusive?input.datacheck.value:input.data>=check.value;if(tooBig){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:check.value,type:"number",inclusive:check.inclusive,exact:false,message:check.message});status.dirty()}}else if(check.kind==="multipleOf"){if(floatSafeRemainder(input.data,check.value)!==0){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.not_multiple_of,multipleOf:check.value,message:check.message});status.dirty()}}else if(check.kind==="finite"){if(!Number.isFinite(input.data)){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.not_finite,message:check.message});status.dirty()}}else{util.assertNever(check)}}return{status:status.value,value:input.data}}gte(value,message){return this.setLimit("min",value,true,errorUtil.toString(message))}gt(value,message){return this.setLimit("min",value,false,errorUtil.toString(message))}lte(value,message){return this.setLimit("max",value,true,errorUtil.toString(message))}lt(value,message){return this.setLimit("max",value,false,errorUtil.toString(message))}setLimit(kind,value,inclusive,message){return new ZodNumber({...this._def,checks:[...this._def.checks,{kind:kind,value:value,inclusive:inclusive,message:errorUtil.toString(message)}]})}_addCheck(check){return new ZodNumber({...this._def,checks:[...this._def.checks,check]})}int(message){return this._addCheck({kind:"int",message:errorUtil.toString(message)})}positive(message){return this._addCheck({kind:"min",value:0,inclusive:false,message:errorUtil.toString(message)})}negative(message){return this._addCheck({kind:"max",value:0,inclusive:false,message:errorUtil.toString(message)})}nonpositive(message){return this._addCheck({kind:"max",value:0,inclusive:true,message:errorUtil.toString(message)})}nonnegative(message){return this._addCheck({kind:"min",value:0,inclusive:true,message:errorUtil.toString(message)})}multipleOf(value,message){return this._addCheck({kind:"multipleOf",value:value,message:errorUtil.toString(message)})}finite(message){return this._addCheck({kind:"finite",message:errorUtil.toString(message)})}safe(message){return this._addCheck({kind:"min",inclusive:true,value:Number.MIN_SAFE_INTEGER,message:errorUtil.toString(message)})._addCheck({kind:"max",inclusive:true,value:Number.MAX_SAFE_INTEGER,message:errorUtil.toString(message)})}get minValue(){let min=null;for(const ch of this._def.checks){if(ch.kind==="min"){if(min===null||ch.value>min)min=ch.value}}return min}get maxValue(){let max=null;for(const ch of this._def.checks){if(ch.kind==="max"){if(max===null||ch.valuech.kind==="int"||ch.kind==="multipleOf"&&util.isInteger(ch.value))}get isFinite(){let max=null,min=null;for(const ch of this._def.checks){if(ch.kind==="finite"||ch.kind==="int"||ch.kind==="multipleOf"){return true}else if(ch.kind==="min"){if(min===null||ch.value>min)min=ch.value}else if(ch.kind==="max"){if(max===null||ch.value{return new ZodNumber({checks:[],typeName:ZodFirstPartyTypeKind.ZodNumber,coerce:(params===null||params===void 0?void 0:params.coerce)||false,...processCreateParams(params)})};class ZodBigInt extends ZodType{constructor(){super(...arguments);this.min=this.gte;this.max=this.lte}_parse(input){if(this._def.coerce){input.data=BigInt(input.data)}const parsedType=this._getType(input);if(parsedType!==ZodParsedType.bigint){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.bigint,received:ctx.parsedType});return INVALID}let ctx=undefined;const status=new ParseStatus;for(const check of this._def.checks){if(check.kind==="min"){const tooSmall=check.inclusive?input.datacheck.value:input.data>=check.value;if(tooBig){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.too_big,type:"bigint",maximum:check.value,inclusive:check.inclusive,message:check.message});status.dirty()}}else if(check.kind==="multipleOf"){if(input.data%check.value!==BigInt(0)){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.not_multiple_of,multipleOf:check.value,message:check.message});status.dirty()}}else{util.assertNever(check)}}return{status:status.value,value:input.data}}gte(value,message){return this.setLimit("min",value,true,errorUtil.toString(message))}gt(value,message){return this.setLimit("min",value,false,errorUtil.toString(message))}lte(value,message){return this.setLimit("max",value,true,errorUtil.toString(message))}lt(value,message){return this.setLimit("max",value,false,errorUtil.toString(message))}setLimit(kind,value,inclusive,message){return new ZodBigInt({...this._def,checks:[...this._def.checks,{kind:kind,value:value,inclusive:inclusive,message:errorUtil.toString(message)}]})}_addCheck(check){return new ZodBigInt({...this._def,checks:[...this._def.checks,check]})}positive(message){return this._addCheck({kind:"min",value:BigInt(0),inclusive:false,message:errorUtil.toString(message)})}negative(message){return this._addCheck({kind:"max",value:BigInt(0),inclusive:false,message:errorUtil.toString(message)})}nonpositive(message){return this._addCheck({kind:"max",value:BigInt(0),inclusive:true,message:errorUtil.toString(message)})}nonnegative(message){return this._addCheck({kind:"min",value:BigInt(0),inclusive:true,message:errorUtil.toString(message)})}multipleOf(value,message){return this._addCheck({kind:"multipleOf",value:value,message:errorUtil.toString(message)})}get minValue(){let min=null;for(const ch of this._def.checks){if(ch.kind==="min"){if(min===null||ch.value>min)min=ch.value}}return min}get maxValue(){let max=null;for(const ch of this._def.checks){if(ch.kind==="max"){if(max===null||ch.value{var _a;return new ZodBigInt({checks:[],typeName:ZodFirstPartyTypeKind.ZodBigInt,coerce:(_a=params===null||params===void 0?void 0:params.coerce)!==null&&_a!==void 0?_a:false,...processCreateParams(params)})};class ZodBoolean extends ZodType{_parse(input){if(this._def.coerce){input.data=Boolean(input.data)}const parsedType=this._getType(input);if(parsedType!==ZodParsedType.boolean){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.boolean,received:ctx.parsedType});return INVALID}return OK(input.data)}}ZodBoolean.create=params=>{return new ZodBoolean({typeName:ZodFirstPartyTypeKind.ZodBoolean,coerce:(params===null||params===void 0?void 0:params.coerce)||false,...processCreateParams(params)})};class ZodDate extends ZodType{_parse(input){if(this._def.coerce){input.data=new Date(input.data)}const parsedType=this._getType(input);if(parsedType!==ZodParsedType.date){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.date,received:ctx.parsedType});return INVALID}if(isNaN(input.data.getTime())){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_date});return INVALID}const status=new ParseStatus;let ctx=undefined;for(const check of this._def.checks){if(check.kind==="min"){if(input.data.getTime()check.value){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.too_big,message:check.message,inclusive:true,exact:false,maximum:check.value,type:"date"});status.dirty()}}else{util.assertNever(check)}}return{status:status.value,value:new Date(input.data.getTime())}}_addCheck(check){return new ZodDate({...this._def,checks:[...this._def.checks,check]})}min(minDate,message){return this._addCheck({kind:"min",value:minDate.getTime(),message:errorUtil.toString(message)})}max(maxDate,message){return this._addCheck({kind:"max",value:maxDate.getTime(),message:errorUtil.toString(message)})}get minDate(){let min=null;for(const ch of this._def.checks){if(ch.kind==="min"){if(min===null||ch.value>min)min=ch.value}}return min!=null?new Date(min):null}get maxDate(){let max=null;for(const ch of this._def.checks){if(ch.kind==="max"){if(max===null||ch.value{return new ZodDate({checks:[],coerce:(params===null||params===void 0?void 0:params.coerce)||false,typeName:ZodFirstPartyTypeKind.ZodDate,...processCreateParams(params)})};class ZodSymbol extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType!==ZodParsedType.symbol){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.symbol,received:ctx.parsedType});return INVALID}return OK(input.data)}}ZodSymbol.create=params=>{return new ZodSymbol({typeName:ZodFirstPartyTypeKind.ZodSymbol,...processCreateParams(params)})};class ZodUndefined extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType!==ZodParsedType.undefined){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.undefined,received:ctx.parsedType});return INVALID}return OK(input.data)}}ZodUndefined.create=params=>{return new ZodUndefined({typeName:ZodFirstPartyTypeKind.ZodUndefined,...processCreateParams(params)})};class ZodNull extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType!==ZodParsedType.null){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.null,received:ctx.parsedType});return INVALID}return OK(input.data)}}ZodNull.create=params=>{return new ZodNull({typeName:ZodFirstPartyTypeKind.ZodNull,...processCreateParams(params)})};class ZodAny extends ZodType{constructor(){super(...arguments);this._any=true}_parse(input){return OK(input.data)}}ZodAny.create=params=>{return new ZodAny({typeName:ZodFirstPartyTypeKind.ZodAny,...processCreateParams(params)})};class ZodUnknown extends ZodType{constructor(){super(...arguments);this._unknown=true}_parse(input){return OK(input.data)}}ZodUnknown.create=params=>{return new ZodUnknown({typeName:ZodFirstPartyTypeKind.ZodUnknown,...processCreateParams(params)})};class ZodNever extends ZodType{_parse(input){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.never,received:ctx.parsedType});return INVALID}}ZodNever.create=params=>{return new ZodNever({typeName:ZodFirstPartyTypeKind.ZodNever,...processCreateParams(params)})};class ZodVoid extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType!==ZodParsedType.undefined){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.void,received:ctx.parsedType});return INVALID}return OK(input.data)}}ZodVoid.create=params=>{return new ZodVoid({typeName:ZodFirstPartyTypeKind.ZodVoid,...processCreateParams(params)})};class ZodArray extends ZodType{_parse(input){const{ctx,status}=this._processInputParams(input);const def=this._def;if(ctx.parsedType!==ZodParsedType.array){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.array,received:ctx.parsedType});return INVALID}if(def.exactLength!==null){const tooBig=ctx.data.length>def.exactLength.value;const tooSmall=ctx.data.lengthdef.maxLength.value){addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:def.maxLength.value,type:"array",inclusive:true,exact:false,message:def.maxLength.message});status.dirty()}}if(ctx.common.async){return Promise.all([...ctx.data].map((item,i)=>{return def.type._parseAsync(new ParseInputLazyPath(ctx,item,ctx.path,i))})).then(result=>{return ParseStatus.mergeArray(status,result)})}const result=[...ctx.data].map((item,i)=>{return def.type._parseSync(new ParseInputLazyPath(ctx,item,ctx.path,i))});return ParseStatus.mergeArray(status,result)}get element(){return this._def.type}min(minLength,message){return new ZodArray({...this._def,minLength:{value:minLength,message:errorUtil.toString(message)}})}max(maxLength,message){return new ZodArray({...this._def,maxLength:{value:maxLength,message:errorUtil.toString(message)}})}length(len,message){return new ZodArray({...this._def,exactLength:{value:len,message:errorUtil.toString(message)}})}nonempty(message){return this.min(1,message)}}ZodArray.create=(schema,params)=>{return new ZodArray({type:schema,minLength:null,maxLength:null,exactLength:null,typeName:ZodFirstPartyTypeKind.ZodArray,...processCreateParams(params)})};function deepPartialify(schema){if(schema instanceof ZodObject){const newShape={};for(const key in schema.shape){const fieldSchema=schema.shape[key];newShape[key]=ZodOptional.create(deepPartialify(fieldSchema))}return new ZodObject({...schema._def,shape:()=>newShape})}else if(schema instanceof ZodArray){return new ZodArray({...schema._def,type:deepPartialify(schema.element)})}else if(schema instanceof ZodOptional){return ZodOptional.create(deepPartialify(schema.unwrap()))}else if(schema instanceof ZodNullable){return ZodNullable.create(deepPartialify(schema.unwrap()))}else if(schema instanceof ZodTuple){return ZodTuple.create(schema.items.map(item=>deepPartialify(item)))}else{return schema}}class ZodObject extends ZodType{constructor(){super(...arguments);this._cached=null;this.nonstrict=this.passthrough;this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const shape=this._def.shape();const keys=util.objectKeys(shape);return this._cached={shape:shape,keys:keys}}_parse(input){const parsedType=this._getType(input);if(parsedType!==ZodParsedType.object){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:ctx.parsedType});return INVALID}const{status,ctx}=this._processInputParams(input);const{shape,keys:shapeKeys}=this._getCached();const extraKeys=[];if(!(this._def.catchall instanceof ZodNever&&this._def.unknownKeys==="strip")){for(const key in ctx.data){if(!shapeKeys.includes(key)){extraKeys.push(key)}}}const pairs=[];for(const key of shapeKeys){const keyValidator=shape[key];const value=ctx.data[key];pairs.push({key:{status:"valid",value:key},value:keyValidator._parse(new ParseInputLazyPath(ctx,value,ctx.path,key)),alwaysSet:key in ctx.data})}if(this._def.catchall instanceof ZodNever){const unknownKeys=this._def.unknownKeys;if(unknownKeys==="passthrough"){for(const key of extraKeys){pairs.push({key:{status:"valid",value:key},value:{status:"valid",value:ctx.data[key]}})}}else if(unknownKeys==="strict"){if(extraKeys.length>0){addIssueToContext(ctx,{code:ZodIssueCode.unrecognized_keys,keys:extraKeys});status.dirty()}}else if(unknownKeys==="strip");else{throw new Error(`Internal ZodObject error: invalid unknownKeys value.`)}}else{const catchall=this._def.catchall;for(const key of extraKeys){const value=ctx.data[key];pairs.push({key:{status:"valid",value:key},value:catchall._parse(new ParseInputLazyPath(ctx,value,ctx.path,key)),alwaysSet:key in ctx.data})}}if(ctx.common.async){return Promise.resolve().then(async()=>{const syncPairs=[];for(const pair of pairs){const key=await pair.key;const value=await pair.value;syncPairs.push({key:key,value:value,alwaysSet:pair.alwaysSet})}return syncPairs}).then(syncPairs=>{return ParseStatus.mergeObjectSync(status,syncPairs)})}else{return ParseStatus.mergeObjectSync(status,pairs)}}get shape(){return this._def.shape()}strict(message){errorUtil.errToObj;return new ZodObject({...this._def,unknownKeys:"strict",...message!==undefined?{errorMap:(issue,ctx)=>{var _a,_b,_c,_d;const defaultError=(_c=(_b=(_a=this._def).errorMap)===null||_b===void 0?void 0:_b.call(_a,issue,ctx).message)!==null&&_c!==void 0?_c:ctx.defaultError;if(issue.code==="unrecognized_keys")return{message:(_d=errorUtil.errToObj(message).message)!==null&&_d!==void 0?_d:defaultError};return{message:defaultError}}}:{}})}strip(){return new ZodObject({...this._def,unknownKeys:"strip"})}passthrough(){return new ZodObject({...this._def,unknownKeys:"passthrough"})}extend(augmentation){return new ZodObject({...this._def,shape:()=>({...this._def.shape(),...augmentation})})}merge(merging){const merged=new ZodObject({unknownKeys:merging._def.unknownKeys,catchall:merging._def.catchall,shape:()=>({...this._def.shape(),...merging._def.shape()}),typeName:ZodFirstPartyTypeKind.ZodObject});return merged}setKey(key,schema){return this.augment({[key]:schema})}catchall(index){return new ZodObject({...this._def,catchall:index})}pick(mask){const shape={};util.objectKeys(mask).forEach(key=>{if(mask[key]&&this.shape[key]){shape[key]=this.shape[key]}});return new ZodObject({...this._def,shape:()=>shape})}omit(mask){const shape={};util.objectKeys(this.shape).forEach(key=>{if(!mask[key]){shape[key]=this.shape[key]}});return new ZodObject({...this._def,shape:()=>shape})}deepPartial(){return deepPartialify(this)}partial(mask){const newShape={};util.objectKeys(this.shape).forEach(key=>{const fieldSchema=this.shape[key];if(mask&&!mask[key]){newShape[key]=fieldSchema}else{newShape[key]=fieldSchema.optional()}});return new ZodObject({...this._def,shape:()=>newShape})}required(mask){const newShape={};util.objectKeys(this.shape).forEach(key=>{if(mask&&!mask[key]){newShape[key]=this.shape[key]}else{const fieldSchema=this.shape[key];let newField=fieldSchema;while(newField instanceof ZodOptional){newField=newField._def.innerType}newShape[key]=newField}});return new ZodObject({...this._def,shape:()=>newShape})}keyof(){return createZodEnum(util.objectKeys(this.shape))}}ZodObject.create=(shape,params)=>{return new ZodObject({shape:()=>shape,unknownKeys:"strip",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(params)})};ZodObject.strictCreate=(shape,params)=>{return new ZodObject({shape:()=>shape,unknownKeys:"strict",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(params)})};ZodObject.lazycreate=(shape,params)=>{return new ZodObject({shape:shape,unknownKeys:"strip",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(params)})};class ZodUnion extends ZodType{_parse(input){const{ctx}=this._processInputParams(input);const options=this._def.options;function handleResults(results){for(const result of results){if(result.result.status==="valid"){return result.result}}for(const result of results){if(result.result.status==="dirty"){ctx.common.issues.push(...result.ctx.common.issues);return result.result}}const unionErrors=results.map(result=>new ZodError(result.ctx.common.issues));addIssueToContext(ctx,{code:ZodIssueCode.invalid_union,unionErrors:unionErrors});return INVALID}if(ctx.common.async){return Promise.all(options.map(async option=>{const childCtx={...ctx,common:{...ctx.common,issues:[]},parent:null};return{result:await option._parseAsync({data:ctx.data,path:ctx.path,parent:childCtx}),ctx:childCtx}})).then(handleResults)}else{let dirty=undefined;const issues=[];for(const option of options){const childCtx={...ctx,common:{...ctx.common,issues:[]},parent:null};const result=option._parseSync({data:ctx.data,path:ctx.path,parent:childCtx});if(result.status==="valid"){return result}else if(result.status==="dirty"&&!dirty){dirty={result:result,ctx:childCtx}}if(childCtx.common.issues.length){issues.push(childCtx.common.issues)}}if(dirty){ctx.common.issues.push(...dirty.ctx.common.issues);return dirty.result}const unionErrors=issues.map(issues=>new ZodError(issues));addIssueToContext(ctx,{code:ZodIssueCode.invalid_union,unionErrors:unionErrors});return INVALID}}get options(){return this._def.options}}ZodUnion.create=(types,params)=>{return new ZodUnion({options:types,typeName:ZodFirstPartyTypeKind.ZodUnion,...processCreateParams(params)})};const getDiscriminator=type=>{if(type instanceof ZodLazy){return getDiscriminator(type.schema)}else if(type instanceof ZodEffects){return getDiscriminator(type.innerType())}else if(type instanceof ZodLiteral){return[type.value]}else if(type instanceof ZodEnum){return type.options}else if(type instanceof ZodNativeEnum){return util.objectValues(type.enum)}else if(type instanceof ZodDefault){return getDiscriminator(type._def.innerType)}else if(type instanceof ZodUndefined){return[undefined]}else if(type instanceof ZodNull){return[null]}else if(type instanceof ZodOptional){return[undefined,...getDiscriminator(type.unwrap())]}else if(type instanceof ZodNullable){return[null,...getDiscriminator(type.unwrap())]}else if(type instanceof ZodBranded){return getDiscriminator(type.unwrap())}else if(type instanceof ZodReadonly){return getDiscriminator(type.unwrap())}else if(type instanceof ZodCatch){return getDiscriminator(type._def.innerType)}else{return[]}};class ZodDiscriminatedUnion extends ZodType{_parse(input){const{ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.object){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:ctx.parsedType});return INVALID}const discriminator=this.discriminator;const discriminatorValue=ctx.data[discriminator];const option=this.optionsMap.get(discriminatorValue);if(!option){addIssueToContext(ctx,{code:ZodIssueCode.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[discriminator]});return INVALID}if(ctx.common.async){return option._parseAsync({data:ctx.data,path:ctx.path,parent:ctx})}else{return option._parseSync({data:ctx.data,path:ctx.path,parent:ctx})}}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(discriminator,options,params){const optionsMap=new Map;for(const type of options){const discriminatorValues=getDiscriminator(type.shape[discriminator]);if(!discriminatorValues.length){throw new Error(`A discriminator value for key \`${discriminator}\` could not be extracted from all schema options`)}for(const value of discriminatorValues){if(optionsMap.has(value)){throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`)}optionsMap.set(value,type)}}return new ZodDiscriminatedUnion({typeName:ZodFirstPartyTypeKind.ZodDiscriminatedUnion,discriminator:discriminator,options:options,optionsMap:optionsMap,...processCreateParams(params)})}}function mergeValues(a,b){const aType=getParsedType(a);const bType=getParsedType(b);if(a===b){return{valid:true,data:a}}else if(aType===ZodParsedType.object&&bType===ZodParsedType.object){const bKeys=util.objectKeys(b);const sharedKeys=util.objectKeys(a).filter(key=>bKeys.indexOf(key)!==-1);const newObj={...a,...b};for(const key of sharedKeys){const sharedValue=mergeValues(a[key],b[key]);if(!sharedValue.valid){return{valid:false}}newObj[key]=sharedValue.data}return{valid:true,data:newObj}}else if(aType===ZodParsedType.array&&bType===ZodParsedType.array){if(a.length!==b.length){return{valid:false}}const newArray=[];for(let index=0;index{if(isAborted(parsedLeft)||isAborted(parsedRight)){return INVALID}const merged=mergeValues(parsedLeft.value,parsedRight.value);if(!merged.valid){addIssueToContext(ctx,{code:ZodIssueCode.invalid_intersection_types});return INVALID}if(isDirty(parsedLeft)||isDirty(parsedRight)){status.dirty()}return{status:status.value,value:merged.data}};if(ctx.common.async){return Promise.all([this._def.left._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}),this._def.right._parseAsync({data:ctx.data,path:ctx.path,parent:ctx})]).then(([left,right])=>handleParsed(left,right))}else{return handleParsed(this._def.left._parseSync({data:ctx.data,path:ctx.path,parent:ctx}),this._def.right._parseSync({data:ctx.data,path:ctx.path,parent:ctx}))}}}ZodIntersection.create=(left,right,params)=>{return new ZodIntersection({left:left,right:right,typeName:ZodFirstPartyTypeKind.ZodIntersection,...processCreateParams(params)})};class ZodTuple extends ZodType{_parse(input){const{status,ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.array){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.array,received:ctx.parsedType});return INVALID}if(ctx.data.lengththis._def.items.length){addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:this._def.items.length,inclusive:true,exact:false,type:"array"});status.dirty()}const items=[...ctx.data].map((item,itemIndex)=>{const schema=this._def.items[itemIndex]||this._def.rest;if(!schema)return null;return schema._parse(new ParseInputLazyPath(ctx,item,ctx.path,itemIndex))}).filter(x=>!!x);if(ctx.common.async){return Promise.all(items).then(results=>{return ParseStatus.mergeArray(status,results)})}else{return ParseStatus.mergeArray(status,items)}}get items(){return this._def.items}rest(rest){return new ZodTuple({...this._def,rest:rest})}}ZodTuple.create=(schemas,params)=>{if(!Array.isArray(schemas)){throw new Error("You must pass an array of schemas to z.tuple([ ... ])")}return new ZodTuple({items:schemas,typeName:ZodFirstPartyTypeKind.ZodTuple,rest:null,...processCreateParams(params)})};class ZodRecord extends ZodType{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(input){const{status,ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.object){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:ctx.parsedType});return INVALID}const pairs=[];const keyType=this._def.keyType;const valueType=this._def.valueType;for(const key in ctx.data){pairs.push({key:keyType._parse(new ParseInputLazyPath(ctx,key,ctx.path,key)),value:valueType._parse(new ParseInputLazyPath(ctx,ctx.data[key],ctx.path,key)),alwaysSet:key in ctx.data})}if(ctx.common.async){return ParseStatus.mergeObjectAsync(status,pairs)}else{return ParseStatus.mergeObjectSync(status,pairs)}}get element(){return this._def.valueType}static create(first,second,third){if(second instanceof ZodType){return new ZodRecord({keyType:first,valueType:second,typeName:ZodFirstPartyTypeKind.ZodRecord,...processCreateParams(third)})}return new ZodRecord({keyType:ZodString.create(),valueType:first,typeName:ZodFirstPartyTypeKind.ZodRecord,...processCreateParams(second)})}}class ZodMap extends ZodType{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(input){const{status,ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.map){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.map,received:ctx.parsedType});return INVALID}const keyType=this._def.keyType;const valueType=this._def.valueType;const pairs=[...ctx.data.entries()].map(([key,value],index)=>{return{key:keyType._parse(new ParseInputLazyPath(ctx,key,ctx.path,[index,"key"])),value:valueType._parse(new ParseInputLazyPath(ctx,value,ctx.path,[index,"value"]))}});if(ctx.common.async){const finalMap=new Map;return Promise.resolve().then(async()=>{for(const pair of pairs){const key=await pair.key;const value=await pair.value;if(key.status==="aborted"||value.status==="aborted"){return INVALID}if(key.status==="dirty"||value.status==="dirty"){status.dirty()}finalMap.set(key.value,value.value)}return{status:status.value,value:finalMap}})}else{const finalMap=new Map;for(const pair of pairs){const key=pair.key;const value=pair.value;if(key.status==="aborted"||value.status==="aborted"){return INVALID}if(key.status==="dirty"||value.status==="dirty"){status.dirty()}finalMap.set(key.value,value.value)}return{status:status.value,value:finalMap}}}}ZodMap.create=(keyType,valueType,params)=>{return new ZodMap({valueType:valueType,keyType:keyType,typeName:ZodFirstPartyTypeKind.ZodMap,...processCreateParams(params)})};class ZodSet extends ZodType{_parse(input){const{status,ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.set){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.set,received:ctx.parsedType});return INVALID}const def=this._def;if(def.minSize!==null){if(ctx.data.sizedef.maxSize.value){addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:def.maxSize.value,type:"set",inclusive:true,exact:false,message:def.maxSize.message});status.dirty()}}const valueType=this._def.valueType;function finalizeSet(elements){const parsedSet=new Set;for(const element of elements){if(element.status==="aborted")return INVALID;if(element.status==="dirty")status.dirty();parsedSet.add(element.value)}return{status:status.value,value:parsedSet}}const elements=[...ctx.data.values()].map((item,i)=>valueType._parse(new ParseInputLazyPath(ctx,item,ctx.path,i)));if(ctx.common.async){return Promise.all(elements).then(elements=>finalizeSet(elements))}else{return finalizeSet(elements)}}min(minSize,message){return new ZodSet({...this._def,minSize:{value:minSize,message:errorUtil.toString(message)}})}max(maxSize,message){return new ZodSet({...this._def,maxSize:{value:maxSize,message:errorUtil.toString(message)}})}size(size,message){return this.min(size,message).max(size,message)}nonempty(message){return this.min(1,message)}}ZodSet.create=(valueType,params)=>{return new ZodSet({valueType:valueType,minSize:null,maxSize:null,typeName:ZodFirstPartyTypeKind.ZodSet,...processCreateParams(params)})};class ZodFunction extends ZodType{constructor(){super(...arguments);this.validate=this.implement}_parse(input){const{ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.function){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.function,received:ctx.parsedType});return INVALID}function makeArgsIssue(args,error){return makeIssue({data:args,path:ctx.path,errorMaps:[ctx.common.contextualErrorMap,ctx.schemaErrorMap,getErrorMap(),errorMap].filter(x=>!!x),issueData:{code:ZodIssueCode.invalid_arguments,argumentsError:error}})}function makeReturnsIssue(returns,error){return makeIssue({data:returns,path:ctx.path,errorMaps:[ctx.common.contextualErrorMap,ctx.schemaErrorMap,getErrorMap(),errorMap].filter(x=>!!x),issueData:{code:ZodIssueCode.invalid_return_type,returnTypeError:error}})}const params={errorMap:ctx.common.contextualErrorMap};const fn=ctx.data;if(this._def.returns instanceof ZodPromise){const me=this;return OK(async function(...args){const error=new ZodError([]);const parsedArgs=await me._def.args.parseAsync(args,params).catch(e=>{error.addIssue(makeArgsIssue(args,e));throw error});const result=await Reflect.apply(fn,this,parsedArgs);const parsedReturns=await me._def.returns._def.type.parseAsync(result,params).catch(e=>{error.addIssue(makeReturnsIssue(result,e));throw error});return parsedReturns})}else{const me=this;return OK(function(...args){const parsedArgs=me._def.args.safeParse(args,params);if(!parsedArgs.success){throw new ZodError([makeArgsIssue(args,parsedArgs.error)])}const result=Reflect.apply(fn,this,parsedArgs.data);const parsedReturns=me._def.returns.safeParse(result,params);if(!parsedReturns.success){throw new ZodError([makeReturnsIssue(result,parsedReturns.error)])}return parsedReturns.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...items){return new ZodFunction({...this._def,args:ZodTuple.create(items).rest(ZodUnknown.create())})}returns(returnType){return new ZodFunction({...this._def,returns:returnType})}implement(func){const validatedFunc=this.parse(func);return validatedFunc}strictImplement(func){const validatedFunc=this.parse(func);return validatedFunc}static create(args,returns,params){return new ZodFunction({args:args?args:ZodTuple.create([]).rest(ZodUnknown.create()),returns:returns||ZodUnknown.create(),typeName:ZodFirstPartyTypeKind.ZodFunction,...processCreateParams(params)})}}class ZodLazy extends ZodType{get schema(){return this._def.getter()}_parse(input){const{ctx}=this._processInputParams(input);const lazySchema=this._def.getter();return lazySchema._parse({data:ctx.data,path:ctx.path,parent:ctx})}}ZodLazy.create=(getter,params)=>{return new ZodLazy({getter:getter,typeName:ZodFirstPartyTypeKind.ZodLazy,...processCreateParams(params)})};class ZodLiteral extends ZodType{_parse(input){if(input.data!==this._def.value){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{received:ctx.data,code:ZodIssueCode.invalid_literal,expected:this._def.value});return INVALID}return{status:"valid",value:input.data}}get value(){return this._def.value}}ZodLiteral.create=(value,params)=>{return new ZodLiteral({value:value,typeName:ZodFirstPartyTypeKind.ZodLiteral,...processCreateParams(params)})};function createZodEnum(values,params){return new ZodEnum({values:values,typeName:ZodFirstPartyTypeKind.ZodEnum,...processCreateParams(params)})}class ZodEnum extends ZodType{constructor(){super(...arguments);_ZodEnum_cache.set(this,void 0)}_parse(input){if(typeof input.data!=="string"){const ctx=this._getOrReturnCtx(input);const expectedValues=this._def.values;addIssueToContext(ctx,{expected:util.joinValues(expectedValues),received:ctx.parsedType,code:ZodIssueCode.invalid_type});return INVALID}if(!__classPrivateFieldGet(this,_ZodEnum_cache)){__classPrivateFieldSet(this,_ZodEnum_cache,new Set(this._def.values))}if(!__classPrivateFieldGet(this,_ZodEnum_cache).has(input.data)){const ctx=this._getOrReturnCtx(input);const expectedValues=this._def.values;addIssueToContext(ctx,{received:ctx.data,code:ZodIssueCode.invalid_enum_value,options:expectedValues});return INVALID}return OK(input.data)}get options(){return this._def.values}get enum(){const enumValues={};for(const val of this._def.values){enumValues[val]=val}return enumValues}get Values(){const enumValues={};for(const val of this._def.values){enumValues[val]=val}return enumValues}get Enum(){const enumValues={};for(const val of this._def.values){enumValues[val]=val}return enumValues}extract(values,newDef=this._def){return ZodEnum.create(values,{...this._def,...newDef})}exclude(values,newDef=this._def){return ZodEnum.create(this.options.filter(opt=>!values.includes(opt)),{...this._def,...newDef})}}_ZodEnum_cache=new WeakMap;ZodEnum.create=createZodEnum;class ZodNativeEnum extends ZodType{constructor(){super(...arguments);_ZodNativeEnum_cache.set(this,void 0)}_parse(input){const nativeEnumValues=util.getValidEnumValues(this._def.values);const ctx=this._getOrReturnCtx(input);if(ctx.parsedType!==ZodParsedType.string&&ctx.parsedType!==ZodParsedType.number){const expectedValues=util.objectValues(nativeEnumValues);addIssueToContext(ctx,{expected:util.joinValues(expectedValues),received:ctx.parsedType,code:ZodIssueCode.invalid_type});return INVALID}if(!__classPrivateFieldGet(this,_ZodNativeEnum_cache)){__classPrivateFieldSet(this,_ZodNativeEnum_cache,new Set(util.getValidEnumValues(this._def.values)))}if(!__classPrivateFieldGet(this,_ZodNativeEnum_cache).has(input.data)){const expectedValues=util.objectValues(nativeEnumValues);addIssueToContext(ctx,{received:ctx.data,code:ZodIssueCode.invalid_enum_value,options:expectedValues});return INVALID}return OK(input.data)}get enum(){return this._def.values}}_ZodNativeEnum_cache=new WeakMap;ZodNativeEnum.create=(values,params)=>{return new ZodNativeEnum({values:values,typeName:ZodFirstPartyTypeKind.ZodNativeEnum,...processCreateParams(params)})};class ZodPromise extends ZodType{unwrap(){return this._def.type}_parse(input){const{ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.promise&&ctx.common.async===false){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.promise,received:ctx.parsedType});return INVALID}const promisified=ctx.parsedType===ZodParsedType.promise?ctx.data:Promise.resolve(ctx.data);return OK(promisified.then(data=>{return this._def.type.parseAsync(data,{path:ctx.path,errorMap:ctx.common.contextualErrorMap})}))}}ZodPromise.create=(schema,params)=>{return new ZodPromise({type:schema,typeName:ZodFirstPartyTypeKind.ZodPromise,...processCreateParams(params)})};class ZodEffects extends ZodType{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===ZodFirstPartyTypeKind.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(input){const{status,ctx}=this._processInputParams(input);const effect=this._def.effect||null;const checkCtx={addIssue:arg=>{addIssueToContext(ctx,arg);if(arg.fatal){status.abort()}else{status.dirty()}},get path(){return ctx.path}};checkCtx.addIssue=checkCtx.addIssue.bind(checkCtx);if(effect.type==="preprocess"){const processed=effect.transform(ctx.data,checkCtx);if(ctx.common.async){return Promise.resolve(processed).then(async processed=>{if(status.value==="aborted")return INVALID;const result=await this._def.schema._parseAsync({data:processed,path:ctx.path,parent:ctx});if(result.status==="aborted")return INVALID;if(result.status==="dirty")return DIRTY(result.value);if(status.value==="dirty")return DIRTY(result.value);return result})}else{if(status.value==="aborted")return INVALID;const result=this._def.schema._parseSync({data:processed,path:ctx.path,parent:ctx});if(result.status==="aborted")return INVALID;if(result.status==="dirty")return DIRTY(result.value);if(status.value==="dirty")return DIRTY(result.value);return result}}if(effect.type==="refinement"){const executeRefinement=acc=>{const result=effect.refinement(acc,checkCtx);if(ctx.common.async){return Promise.resolve(result)}if(result instanceof Promise){throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.")}return acc};if(ctx.common.async===false){const inner=this._def.schema._parseSync({data:ctx.data,path:ctx.path,parent:ctx});if(inner.status==="aborted")return INVALID;if(inner.status==="dirty")status.dirty();executeRefinement(inner.value);return{status:status.value,value:inner.value}}else{return this._def.schema._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}).then(inner=>{if(inner.status==="aborted")return INVALID;if(inner.status==="dirty")status.dirty();return executeRefinement(inner.value).then(()=>{return{status:status.value,value:inner.value}})})}}if(effect.type==="transform"){if(ctx.common.async===false){const base=this._def.schema._parseSync({data:ctx.data,path:ctx.path,parent:ctx});if(!isValid(base))return base;const result=effect.transform(base.value,checkCtx);if(result instanceof Promise){throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`)}return{status:status.value,value:result}}else{return this._def.schema._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}).then(base=>{if(!isValid(base))return base;return Promise.resolve(effect.transform(base.value,checkCtx)).then(result=>({status:status.value,value:result}))})}}util.assertNever(effect)}}ZodEffects.create=(schema,effect,params)=>{return new ZodEffects({schema:schema,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:effect,...processCreateParams(params)})};ZodEffects.createWithPreprocess=(preprocess,schema,params)=>{return new ZodEffects({schema:schema,effect:{type:"preprocess",transform:preprocess},typeName:ZodFirstPartyTypeKind.ZodEffects,...processCreateParams(params)})};class ZodOptional extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType===ZodParsedType.undefined){return OK(undefined)}return this._def.innerType._parse(input)}unwrap(){return this._def.innerType}}ZodOptional.create=(type,params)=>{return new ZodOptional({innerType:type,typeName:ZodFirstPartyTypeKind.ZodOptional,...processCreateParams(params)})};class ZodNullable extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType===ZodParsedType.null){return OK(null)}return this._def.innerType._parse(input)}unwrap(){return this._def.innerType}}ZodNullable.create=(type,params)=>{return new ZodNullable({innerType:type,typeName:ZodFirstPartyTypeKind.ZodNullable,...processCreateParams(params)})};class ZodDefault extends ZodType{_parse(input){const{ctx}=this._processInputParams(input);let data=ctx.data;if(ctx.parsedType===ZodParsedType.undefined){data=this._def.defaultValue()}return this._def.innerType._parse({data:data,path:ctx.path,parent:ctx})}removeDefault(){return this._def.innerType}}ZodDefault.create=(type,params)=>{return new ZodDefault({innerType:type,typeName:ZodFirstPartyTypeKind.ZodDefault,defaultValue:typeof params.default==="function"?params.default:()=>params.default,...processCreateParams(params)})};class ZodCatch extends ZodType{_parse(input){const{ctx}=this._processInputParams(input);const newCtx={...ctx,common:{...ctx.common,issues:[]}};const result=this._def.innerType._parse({data:newCtx.data,path:newCtx.path,parent:{...newCtx}});if(isAsync(result)){return result.then(result=>{return{status:"valid",value:result.status==="valid"?result.value:this._def.catchValue({get error(){return new ZodError(newCtx.common.issues)},input:newCtx.data})}})}else{return{status:"valid",value:result.status==="valid"?result.value:this._def.catchValue({get error(){return new ZodError(newCtx.common.issues)},input:newCtx.data})}}}removeCatch(){return this._def.innerType}}ZodCatch.create=(type,params)=>{return new ZodCatch({innerType:type,typeName:ZodFirstPartyTypeKind.ZodCatch,catchValue:typeof params.catch==="function"?params.catch:()=>params.catch,...processCreateParams(params)})};class ZodNaN extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType!==ZodParsedType.nan){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.nan,received:ctx.parsedType});return INVALID}return{status:"valid",value:input.data}}}ZodNaN.create=params=>{return new ZodNaN({typeName:ZodFirstPartyTypeKind.ZodNaN,...processCreateParams(params)})};const BRAND=Symbol("zod_brand");class ZodBranded extends ZodType{_parse(input){const{ctx}=this._processInputParams(input);const data=ctx.data;return this._def.type._parse({data:data,path:ctx.path,parent:ctx})}unwrap(){return this._def.type}}class ZodPipeline extends ZodType{_parse(input){const{status,ctx}=this._processInputParams(input);if(ctx.common.async){const handleAsync=async()=>{const inResult=await this._def.in._parseAsync({data:ctx.data,path:ctx.path,parent:ctx});if(inResult.status==="aborted")return INVALID;if(inResult.status==="dirty"){status.dirty();return DIRTY(inResult.value)}else{return this._def.out._parseAsync({data:inResult.value,path:ctx.path,parent:ctx})}};return handleAsync()}else{const inResult=this._def.in._parseSync({data:ctx.data,path:ctx.path,parent:ctx});if(inResult.status==="aborted")return INVALID;if(inResult.status==="dirty"){status.dirty();return{status:"dirty",value:inResult.value}}else{return this._def.out._parseSync({data:inResult.value,path:ctx.path,parent:ctx})}}}static create(a,b){return new ZodPipeline({in:a,out:b,typeName:ZodFirstPartyTypeKind.ZodPipeline})}}class ZodReadonly extends ZodType{_parse(input){const result=this._def.innerType._parse(input);const freeze=data=>{if(isValid(data)){data.value=Object.freeze(data.value)}return data};return isAsync(result)?result.then(data=>freeze(data)):freeze(result)}unwrap(){return this._def.innerType}}ZodReadonly.create=(type,params)=>{return new ZodReadonly({innerType:type,typeName:ZodFirstPartyTypeKind.ZodReadonly,...processCreateParams(params)})};function custom(check,params={},fatal){if(check)return ZodAny.create().superRefine((data,ctx)=>{var _a,_b;if(!check(data)){const p=typeof params==="function"?params(data):typeof params==="string"?{message:params}:params;const _fatal=(_b=(_a=p.fatal)!==null&&_a!==void 0?_a:fatal)!==null&&_b!==void 0?_b:true;const p2=typeof p==="string"?{message:p}:p;ctx.addIssue({code:"custom",...p2,fatal:_fatal})}});return ZodAny.create()}const late={object:ZodObject.lazycreate};var ZodFirstPartyTypeKind;(function(ZodFirstPartyTypeKind){ZodFirstPartyTypeKind["ZodString"]="ZodString";ZodFirstPartyTypeKind["ZodNumber"]="ZodNumber";ZodFirstPartyTypeKind["ZodNaN"]="ZodNaN";ZodFirstPartyTypeKind["ZodBigInt"]="ZodBigInt";ZodFirstPartyTypeKind["ZodBoolean"]="ZodBoolean";ZodFirstPartyTypeKind["ZodDate"]="ZodDate";ZodFirstPartyTypeKind["ZodSymbol"]="ZodSymbol";ZodFirstPartyTypeKind["ZodUndefined"]="ZodUndefined";ZodFirstPartyTypeKind["ZodNull"]="ZodNull";ZodFirstPartyTypeKind["ZodAny"]="ZodAny";ZodFirstPartyTypeKind["ZodUnknown"]="ZodUnknown";ZodFirstPartyTypeKind["ZodNever"]="ZodNever";ZodFirstPartyTypeKind["ZodVoid"]="ZodVoid";ZodFirstPartyTypeKind["ZodArray"]="ZodArray";ZodFirstPartyTypeKind["ZodObject"]="ZodObject";ZodFirstPartyTypeKind["ZodUnion"]="ZodUnion";ZodFirstPartyTypeKind["ZodDiscriminatedUnion"]="ZodDiscriminatedUnion";ZodFirstPartyTypeKind["ZodIntersection"]="ZodIntersection";ZodFirstPartyTypeKind["ZodTuple"]="ZodTuple";ZodFirstPartyTypeKind["ZodRecord"]="ZodRecord";ZodFirstPartyTypeKind["ZodMap"]="ZodMap";ZodFirstPartyTypeKind["ZodSet"]="ZodSet";ZodFirstPartyTypeKind["ZodFunction"]="ZodFunction";ZodFirstPartyTypeKind["ZodLazy"]="ZodLazy";ZodFirstPartyTypeKind["ZodLiteral"]="ZodLiteral";ZodFirstPartyTypeKind["ZodEnum"]="ZodEnum";ZodFirstPartyTypeKind["ZodEffects"]="ZodEffects";ZodFirstPartyTypeKind["ZodNativeEnum"]="ZodNativeEnum";ZodFirstPartyTypeKind["ZodOptional"]="ZodOptional";ZodFirstPartyTypeKind["ZodNullable"]="ZodNullable";ZodFirstPartyTypeKind["ZodDefault"]="ZodDefault";ZodFirstPartyTypeKind["ZodCatch"]="ZodCatch";ZodFirstPartyTypeKind["ZodPromise"]="ZodPromise";ZodFirstPartyTypeKind["ZodBranded"]="ZodBranded";ZodFirstPartyTypeKind["ZodPipeline"]="ZodPipeline";ZodFirstPartyTypeKind["ZodReadonly"]="ZodReadonly"})(ZodFirstPartyTypeKind||(ZodFirstPartyTypeKind={}));const instanceOfType=(cls,params={message:`Input not instance of ${cls.name}`})=>custom(data=>data instanceof cls,params);const stringType=ZodString.create;const numberType=ZodNumber.create;const nanType=ZodNaN.create;const bigIntType=ZodBigInt.create;const booleanType=ZodBoolean.create;const dateType=ZodDate.create;const symbolType=ZodSymbol.create;const undefinedType=ZodUndefined.create;const nullType=ZodNull.create;const anyType=ZodAny.create;const unknownType=ZodUnknown.create;const neverType=ZodNever.create;const voidType=ZodVoid.create;const arrayType=ZodArray.create;const objectType=ZodObject.create;const strictObjectType=ZodObject.strictCreate;const unionType=ZodUnion.create;const discriminatedUnionType=ZodDiscriminatedUnion.create;const intersectionType=ZodIntersection.create;const tupleType=ZodTuple.create;const recordType=ZodRecord.create;const mapType=ZodMap.create;const setType=ZodSet.create;const functionType=ZodFunction.create;const lazyType=ZodLazy.create;const literalType=ZodLiteral.create;const enumType=ZodEnum.create;const nativeEnumType=ZodNativeEnum.create;const promiseType=ZodPromise.create;const effectsType=ZodEffects.create;const optionalType=ZodOptional.create;const nullableType=ZodNullable.create;const preprocessType=ZodEffects.createWithPreprocess;const pipelineType=ZodPipeline.create;const ostring=()=>stringType().optional();const onumber=()=>numberType().optional();const oboolean=()=>booleanType().optional();const coerce={string:arg=>ZodString.create({...arg,coerce:true}),number:arg=>ZodNumber.create({...arg,coerce:true}),boolean:arg=>ZodBoolean.create({...arg,coerce:true}),bigint:arg=>ZodBigInt.create({...arg,coerce:true}),date:arg=>ZodDate.create({...arg,coerce:true})};const NEVER=INVALID;var z=Object.freeze({__proto__:null,defaultErrorMap:errorMap,setErrorMap:setErrorMap,getErrorMap:getErrorMap,makeIssue:makeIssue,EMPTY_PATH:EMPTY_PATH,addIssueToContext:addIssueToContext,ParseStatus:ParseStatus,INVALID:INVALID,DIRTY:DIRTY,OK:OK,isAborted:isAborted,isDirty:isDirty,isValid:isValid,isAsync:isAsync,get util(){return util},get objectUtil(){return objectUtil},ZodParsedType:ZodParsedType,getParsedType:getParsedType,ZodType:ZodType,datetimeRegex:datetimeRegex,ZodString:ZodString,ZodNumber:ZodNumber,ZodBigInt:ZodBigInt,ZodBoolean:ZodBoolean,ZodDate:ZodDate,ZodSymbol:ZodSymbol,ZodUndefined:ZodUndefined,ZodNull:ZodNull,ZodAny:ZodAny,ZodUnknown:ZodUnknown,ZodNever:ZodNever,ZodVoid:ZodVoid,ZodArray:ZodArray,ZodObject:ZodObject,ZodUnion:ZodUnion,ZodDiscriminatedUnion:ZodDiscriminatedUnion,ZodIntersection:ZodIntersection,ZodTuple:ZodTuple,ZodRecord:ZodRecord,ZodMap:ZodMap,ZodSet:ZodSet,ZodFunction:ZodFunction,ZodLazy:ZodLazy,ZodLiteral:ZodLiteral,ZodEnum:ZodEnum,ZodNativeEnum:ZodNativeEnum,ZodPromise:ZodPromise,ZodEffects:ZodEffects,ZodTransformer:ZodEffects,ZodOptional:ZodOptional,ZodNullable:ZodNullable,ZodDefault:ZodDefault,ZodCatch:ZodCatch,ZodNaN:ZodNaN,BRAND:BRAND,ZodBranded:ZodBranded,ZodPipeline:ZodPipeline,ZodReadonly:ZodReadonly,custom:custom,Schema:ZodType,ZodSchema:ZodType,late:late,get ZodFirstPartyTypeKind(){return ZodFirstPartyTypeKind},coerce:coerce,any:anyType,array:arrayType,bigint:bigIntType,boolean:booleanType,date:dateType,discriminatedUnion:discriminatedUnionType,effect:effectsType,enum:enumType,function:functionType,instanceof:instanceOfType,intersection:intersectionType,lazy:lazyType,literal:literalType,map:mapType,nan:nanType,nativeEnum:nativeEnumType,never:neverType,null:nullType,nullable:nullableType,number:numberType,object:objectType,oboolean:oboolean,onumber:onumber,optional:optionalType,ostring:ostring,pipeline:pipelineType,preprocess:preprocessType,promise:promiseType,record:recordType,set:setType,strictObject:strictObjectType,string:stringType,symbol:symbolType,transformer:effectsType,tuple:tupleType,undefined:undefinedType,union:unionType,unknown:unknownType,void:voidType,NEVER:NEVER,ZodIssueCode:ZodIssueCode,quotelessJson:quotelessJson,ZodError:ZodError});const SerializedSealingPair=z.object({privateKey:z.string(),publicKey:z.string()});const zPermitV2WithDefaults=z.object({name:z.string().optional().default("Unnamed Permit"),type:z.enum(["self","sharing","recipient"]),issuer:z.string().refine(val=>isAddress(val),{message:"PermitV2 issuer :: invalid address"}).refine(val=>val!==ZeroAddress,{message:"PermitV2 issuer :: must not be zeroAddress"}),expiration:z.number().optional().default(1e12),contracts:z.array(z.string()).optional().default([]),projects:z.array(z.string()).optional().default([]),recipient:z.string().optional().default(ZeroAddress).refine(val=>isAddress(val),{message:"PermitV2 recipient :: invalid address"}),validatorId:z.number().optional().default(0),validatorContract:z.string().optional().default(ZeroAddress).refine(val=>isAddress(val),{message:"PermitV2 validatorContract :: invalid address"}),sealingPair:SerializedSealingPair.optional(),issuerSignature:z.string().optional().default("0x"),recipientSignature:z.string().optional().default("0x")});const PermitV2RefineAccess=[data=>{return data.contracts.length+data.projects.length>0},{message:"PermitV2 access :: at least one contract or project must be accessible.",path:["contracts","projects"]}];const PermitV2RefineValidator=[data=>data.validatorId!==0&&data.validatorContract!==ZeroAddress||data.validatorId===0&&data.validatorContract===ZeroAddress,{message:"PermitV2 external validator :: validatorId and validatorContract must either both be set or both be unset.",path:["validatorId","validatorContract"]}];const PermitV2SignaturesSuperRefinement=options=>{return(data,ctx)=>{if(options.checkRecipient){if(data.type==="self"&&data.recipient!==ZeroAddress)ctx.addIssue({code:z.ZodIssueCode.custom,path:["recipient"],message:`PermitV2 (type '${data.type}') recipient :: must be empty (zeroAddress)`});if((data.type==="recipient"||data.type==="sharing")&&data.recipient===ZeroAddress){ctx.addIssue({code:z.ZodIssueCode.custom,path:["recipient"],message:`PermitV2 (type '${data.type}') recipient :: must not be empty`})}}if(options.checkSealingPair&&data.sealingPair==null)ctx.addIssue({code:z.ZodIssueCode.custom,path:["sealingPair"],message:`PermitV2 sealingPair :: must not be empty`});if((data.type==="self"||data.type==="sharing")&&data.recipientSignature!=="0x"){ctx.addIssue({code:z.ZodIssueCode.custom,path:["recipientSignature"],message:`PermitV2 (type '${data.type}') recipientSignature :: should not be populated by the issuer`})}if(data.type==="recipient"&&data.issuerSignature==="0x"){ctx.addIssue({code:z.ZodIssueCode.custom,path:["issuerSignature"],message:`PermitV2 (type 'recipient') issuerSignature :: \`issuer\` must sign the PermitV2 before sharing it with \`recipient\``})}if(options.checkSigned){if((data.type==="self"||data.type==="sharing")&&data.issuerSignature==="0x")ctx.addIssue({code:z.ZodIssueCode.custom,path:["issuerSignature"],message:`PermitV2 (type '${data.type}') issuerSignature :: must be populated with issuer's signature. Use \`PermitV2.sign\` or create permit with \`PermitV2.createAndSign\``});if(data.type==="recipient"&&data.recipientSignature==="0x"){ctx.addIssue({code:z.ZodIssueCode.custom,path:["recipientSignature"],message:`PermitV2 (type 'recipient') recipientSignature :: must be populated with recipient's signature. Use \`PermitV2.sign\` or create permit with \`PermitV2.createAndSign\``})}}return}};const PermitV2ParamsValidator=zPermitV2WithDefaults.refine(...PermitV2RefineAccess).refine(...PermitV2RefineValidator).superRefine(PermitV2SignaturesSuperRefinement({checkRecipient:true,checkSealingPair:false,checkSigned:false}));const FullyFormedPermitV2Validator=zPermitV2WithDefaults.required().refine(...PermitV2RefineAccess).refine(...PermitV2RefineValidator).superRefine(PermitV2SignaturesSuperRefinement({checkRecipient:true,checkSealingPair:true,checkSigned:true}));const chainIsHardhat=chainId=>{if(chainId==null)return false;return parseInt(chainId)===31337};const hardhatMockUnseal=value=>{let result=BigInt(0);for(const byteArrayItem of stringToUint8Array(value)){result=(result<({data:bigintToUint8Array(BigInt(value)),securityZone:securityZone||0});class PermitV2{constructor(options,metadata){this._signedChainId=undefined;this.updateName=name=>{this.name=name};this.getInterface=()=>{return{name:this.name,type:this.type,issuer:this.issuer,expiration:this.expiration,contracts:this.contracts,projects:this.projects,recipient:this.recipient,validatorId:this.validatorId,validatorContract:this.validatorContract,sealingPair:this.sealingPair,issuerSignature:this.issuerSignature,recipientSignature:this.recipientSignature}};this.export=()=>{const cleanedPermit={name:this.name,type:this.type,issuer:this.issuer,expiration:this.expiration};if(this.contracts.length>0)cleanedPermit.contracts=this.contracts;if(this.projects.length>0)cleanedPermit.projects=this.projects;if(this.recipient!==ZeroAddress)cleanedPermit.recipient=this.recipient;if(this.validatorId!==0)cleanedPermit.validatorId=this.validatorId;if(this.validatorContract!==ZeroAddress)cleanedPermit.validatorContract=this.validatorContract;if(this.type==="sharing"&&this.issuerSignature!=="0x")cleanedPermit.issuerSignature=this.issuerSignature;return JSON.stringify(cleanedPermit,undefined,2)};this.serialize=()=>{const{sealingPair,...permit}=this.getInterface();return{...permit,_signedChainId:this._signedChainId,sealingPair:{publicKey:sealingPair.publicKey,privateKey:sealingPair.privateKey}}};this.getPermission=(skipValidation=false)=>{const permitData=this.getInterface();if(!skipValidation){const validationResult=FullyFormedPermitV2Validator.safeParse(permitData);if(!validationResult.success){throw new Error(`PermitV2 :: getPermission :: permit validation failed - ${JSON.stringify(validationResult.error,null,2)} ${JSON.stringify(permitData,null,2)}`)}}const{name,type,sealingPair,...permit}=permitData;return{...permit,sealingKey:`0x${sealingPair.publicKey}`}};this.getHash=()=>keccak256(id(JSON.stringify({type:this.type,issuer:this.issuer,expiration:this.expiration,contracts:this.contracts,projects:this.projects,recipient:this.recipient,validatorId:this.validatorId,validatorContract:this.validatorContract})));this.getSignatureParams=(chainId,primaryType)=>{return{domain:getSignatureDomain(chainId),...getSignatureTypesAndMessage(primaryType,SignatureTypes[primaryType],this.getPermission(true))}};this.sign=async(chainId,signer)=>{if(chainId==null)throw new Error("PermitV2 :: sign - chainId undefined, cannot sign a permit with an unknown chainId");if(signer==null)throw new Error("PermitV2 :: sign - signer undefined, you must pass in a `signer` for the connected user to create a permitV2 signature");let primaryType="PermissionedV2IssuerSelf";if(this.type==="self")primaryType="PermissionedV2IssuerSelf";if(this.type==="sharing")primaryType="PermissionedV2IssuerShared";if(this.type==="recipient")primaryType="PermissionedV2Recipient";const{domain,types,message}=this.getSignatureParams(chainId,primaryType);const signature=await signer.signTypedData(domain,types,message);if(this.type==="self"||this.type==="sharing"){this.issuerSignature=signature}if(this.type==="recipient"){this.recipientSignature=signature}this._signedChainId=chainId};this.unsealCiphertext=ciphertext=>{if(chainIsHardhat(this._signedChainId))return hardhatMockUnseal(ciphertext);return this.sealingPair.unseal(ciphertext)};this.getSatisfies=requirements=>{let contractsSatisfied=true;const unsatisfiedContracts=[];for(const contract in requirements.contracts){if(!this.contracts.includes(contract)){contractsSatisfied=false;unsatisfiedContracts.push(contract)}}let projectsSatisfied=true;const unsatisfiedProjects=[];for(const project in requirements.projects){if(!this.projects.includes(project)){projectsSatisfied=false;unsatisfiedProjects.push(project)}}if(contractsSatisfied||projectsSatisfied)return{satisfies:true,unsatisfiedContracts:null,unsatisfiedProjects:null};return{satisfies:false,unsatisfiedContracts:unsatisfiedContracts,unsatisfiedProjects:unsatisfiedProjects}};this.isSigned=()=>{if(this.type==="self"||this.type==="sharing"){return this.issuerSignature!=="0x"}if(this.type==="recipient"){return this.recipientSignature!="0x"}return false};this.isExpired=()=>{return this.expiration{if(this.isExpired())return{valid:false,error:"expired"};if(!this.isSigned())return{valid:false,error:"not-signed"};return{valid:true,error:null}};this.name=options.name;this.type=options.type;this.issuer=options.issuer;this.expiration=options.expiration;this.contracts=options.contracts;this.projects=options.projects;this.recipient=options.recipient;this.validatorId=options.validatorId;this.validatorContract=options.validatorContract;this.sealingPair=options.sealingPair;this.issuerSignature=options.issuerSignature;this.recipientSignature=options.recipientSignature;this._signedChainId=metadata?._signedChainId}static async create(options){const{success,data:parsed,error}=PermitV2ParamsValidator.safeParse(options);if(!success){throw new Error("PermitV2 :: create :: Parsing PermitV2Options failed "+JSON.stringify(error,null,2))}const sealingPair=parsed.sealingPair!=null?new SealingKey(parsed.sealingPair.privateKey,parsed.sealingPair.publicKey):await GenerateSealingKey();return new PermitV2({...parsed,sealingPair:sealingPair})}static async createAndSign(options,chainId,signer){const permit=await PermitV2.create(options);await permit.sign(chainId,signer);return permit}unseal(item){const sealedItem=getAsSealedItem(item);if(sealedItem!=null){const bn=chainIsHardhat(this._signedChainId)?hardhatMockUnseal(sealedItem.data):this.sealingPair.unseal(sealedItem.data);if(isSealedBool(sealedItem)){return Boolean(bn).valueOf()}if(isSealedAddress(sealedItem)){return getAddress(`0x${bn.toString(16).slice(-40)}`)}if(isSealedUint(sealedItem)){return bn}}if(typeof item==="object"&&item!==null){if(Array.isArray(item)){return item.map(nestedItem=>this.unseal(nestedItem))}else{const result={};for(const key in item){result[key]=this.unseal(item[key])}return result}}return item}}PermitV2.deserialize=({_signedChainId,sealingPair,...permit})=>{return new PermitV2({...permit,sealingPair:new SealingKey(sealingPair.privateKey,sealingPair.publicKey)},{_signedChainId:_signedChainId})};PermitV2.validate=permit=>{return FullyFormedPermitV2Validator.safeParse(permit)};const _permitStore=createStore()(persist(()=>({permits:{},activePermitHash:{}}),{name:"fhenixjs-permits"}));const getPermit$1=(account,hash)=>{if(account==null||hash==null)return;const savedPermit=_permitStore.getState().permits[account]?.[hash];if(savedPermit==null)return;return PermitV2.deserialize(savedPermit)};const getActivePermit=account=>{if(account==null)return;const activePermitHash=_permitStore.getState().activePermitHash[account];return getPermit$1(account,activePermitHash)};const getPermits=account=>{if(account==null)return{};return Object.entries(_permitStore.getState().permits[account]??{}).reduce((acc,[hash,permit])=>{if(permit==undefined)return acc;return{...acc,[hash]:PermitV2.deserialize(permit)}},{})};const setPermit=(account,permitV2)=>{_permitStore.setState(produce(state=>{if(state.permits[account]==null)state.permits[account]={};state.permits[account][permitV2.getHash()]=permitV2.serialize()}))};const removePermit=(account,hash)=>{_permitStore.setState(produce(state=>{state.permits[account][hash]=undefined}))};const getActivePermitHash=account=>{if(account==null)return undefined;return _permitStore.getState().activePermitHash[account]};const setActivePermitHash=(account,hash)=>{_permitStore.setState(produce(state=>{state.activePermitHash[account]=hash}))};const removeActivePermitHash=account=>{_permitStore.setState(produce(state=>{state.activePermitHash[account]=undefined}))};const permitStore={store:_permitStore,getPermit:getPermit$1,getActivePermit:getActivePermit,getPermits:getPermits,setPermit:setPermit,removePermit:removePermit,getActivePermitHash:getActivePermitHash,setActivePermitHash:setActivePermitHash,removeActivePermitHash:removeActivePermitHash};function _loadWasmModule(sync,filepath,src,imports){function _instantiateOrCompile(source,imports,stream){var instantiateFunc=WebAssembly.instantiate;var compileFunc=WebAssembly.compile;if(imports){return instantiateFunc(source,imports)}else{return compileFunc(source)}}var buf=null;var isNode=typeof process!=="undefined"&&process.versions!=null&&process.versions.node!=null;if(isNode){buf=Buffer.from(src,"base64")}else{var raw=globalThis.atob(src);var rawLength=raw.length;buf=new Uint8Array(new ArrayBuffer(rawLength));for(var i=0;i{if(!initialized){try{initialized=await __wbg_init(wasm)}catch(_){initialized=await __wbg_init(wasm())}}return initialized};const asyncInitFhevm=async()=>{try{await initFhevm()}catch(err){throw new Error(`Error initializing FhenixClient ${err}`)}};const PUBLIC_KEY_LENGTH_MIN=15e3;const _sdkStore=createStore(()=>({fheKeysInitialized:false,securityZones:[0],fheKeys:{},accessRequirements:{contracts:[],projects:[]},coFheUrl:undefined,providerInitialized:false,provider:undefined,chainId:undefined,signerInitialized:false,signer:undefined,account:undefined}));const _store_getFheKey=(chainId,securityZone=0)=>{if(chainId==null||securityZone==null)return undefined;const serialized=_sdkStore.getState().fheKeys[chainId]?.[securityZone];if(serialized==null)return undefined;return TfheCompactPublicKey.deserialize(serialized)};const _store_getConnectedChainFheKey=(securityZone=0)=>{const state=_sdkStore.getState();if(securityZone==null)return undefined;if(state.chainId==null)return undefined;const serialized=state.fheKeys[state.chainId]?.[securityZone];if(serialized==null)return undefined;return TfheCompactPublicKey.deserialize(serialized)};const _store_setFheKey=(chainId,securityZone,fheKey)=>{if(chainId==null||securityZone==null)return;_sdkStore.setState(produce(state=>{if(state.fheKeys[chainId]==null)state.fheKeys[chainId]={};state.fheKeys[chainId][securityZone]=fheKey?.serialize()}))};const getChainIdFromProvider=async provider=>{var chainId=null;try{chainId=await provider.getChainId()}catch(err){const network=await provider.getNetwork();chainId=network.chainId}if(chainId==null)throw new Error("sdk :: getChainIdFromProvider :: provider.getChainId returned a null result, ensure that your provider is connected to a network");return chainId};const _store_initialize=async params=>{const{provider,signer,securityZones=[0],contracts:contractRequirements=[],projects:projectRequirements=[],coFheUrl=undefined}=params;_sdkStore.setState({providerInitialized:false,signerInitialized:false,accessRequirements:{contracts:contractRequirements,projects:projectRequirements},coFheUrl:coFheUrl});const chainId=await getChainIdFromProvider(provider);const chainIdChanged=chainId!=null&&chainId!==_sdkStore.getState().chainId;if(chainId!=null&&provider!=null){_sdkStore.setState({providerInitialized:true,provider:provider,chainId:chainId})}const account=await signer?.getAddress();if(account!=null&&signer!=null){_sdkStore.setState({signerInitialized:true,account:account,signer:signer})}else{_sdkStore.setState({signerInitialized:false,account:undefined,signer:undefined})}const securityZonesChanged=securityZones!==_sdkStore.getState().securityZones;if(chainIdChanged||securityZonesChanged){_sdkStore.setState({securityZones:securityZones,fheKeysInitialized:false})}if(!chainIsHardhat(chainId)&&!_sdkStore.getState().fheKeysInitialized){await Promise.all(securityZones.map(securityZone=>_store_fetchFheKey(chainId,securityZone,true)))}_sdkStore.setState({fheKeysInitialized:true})};const _store_fetchFheKey=async(chainId,securityZone=0,forceFetch=false)=>{const storedKey=_store_getFheKey(chainId,securityZone);if(storedKey!=null&&!forceFetch)return storedKey;const coFheUrl=_sdkStore.getState().coFheUrl;if(coFheUrl==null||typeof coFheUrl!=="string"){throw new Error("Error initializing fhenixjs; coFheUrl invalid, ensure it is set in `fhenixsdk.initialize`")}let publicKey=undefined;try{const res=await fetch(`${coFheUrl}/GetNetworkPublickKey`,{method:"POST",body:JSON.stringify({SecurityZone:securityZone})});const data=await res.json();publicKey=`0x${data.securityZone}`}catch(err){throw new Error(`Error initializing fhenixjs; fetching FHE publicKey from CoFHE failed with error ${err}`)}if(publicKey==null||typeof publicKey!=="string"){throw new Error(`Error initializing fhenixjs; FHE publicKey fetched from CoFHE invalid: not a string`)}if(publicKey==="0x"){throw new Error("Error initializing fhenixjs; provided chain is not FHE enabled, no FHE publicKey found")}if(publicKey.length= ${PUBLIC_KEY_LENGTH_MIN}`)}const buff=fromHexString(publicKey);try{const key=TfheCompactPublicKey.deserialize(buff);_store_setFheKey(chainId,securityZone,key);return key}catch(err){throw new Error(`Error deserializing public key ${err}`)}};const encrypt_bool=(value,publicKey,securityZone=0)=>{const encrypted=CompactFheBool.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_uint8=(value,publicKey,securityZone=0)=>{const encrypted=CompactFheUint8.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_uint16=(value,publicKey,securityZone=0)=>{const encrypted=CompactFheUint16.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_uint32=(value,publicKey,securityZone=0)=>{const encrypted=CompactFheUint32.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_uint64=(value,publicKey,securityZone=0)=>{if(typeof value==="string"){value=toBigInt(fromHexString(value))}else{value=value}const encrypted=CompactFheUint64.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_uint128=(value,publicKey,securityZone=0)=>{if(typeof value==="string"){value=toBigInt(fromHexString(value))}else{value=value}const encrypted=CompactFheUint128.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_uint256=(value,publicKey,securityZone=0)=>{if(typeof value==="string"){value=toBigInt(fromHexString(value))}else{value=value}const encrypted=CompactFheUint256.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_address=(value,publicKey,securityZone=0)=>{if(typeof value==="string"){value=toBigInt(fromHexString(value))}else{value=value}const encrypted=CompactFheUint160.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const InitFhevm=async()=>{await asyncInitFhevm()};const initialize=async params=>{await InitFhevm().catch(err=>{if(params.ignoreErrors){return undefined}else{return ResultErr(`initialize :: failed to initialize fhenixjs - is the network FHE-enabled? ${err}`)}});if(params.provider==null)return ResultErr("initialize :: missing provider - Please provide an AbstractProvider interface");if(params.securityZones!=null&¶ms.securityZones.length===0)return ResultErr("initialize :: a list of securityZones was provided, but it is empty");await _store_initialize(params);if(params.generatePermit===false)return ResultOk(undefined);const userActivePermit=getPermit();if(userActivePermit.success)return userActivePermit;return createPermit()};const _checkInitialized=(state,options)=>{if(options?.fheKeys!==false&&!state.fheKeysInitialized){return ResultErr("fhenixsdk not initialized. Use `fhenixsdk.initialize(...)`.")}if(options?.coFheUrl!==false&&!state.coFheUrl)return ResultErr("fhenixsdk not initialized with a coFheUrl. Set `coFheUrl` in `fhenixsdk.initialize`.");if(options?.provider!==false&&!state.providerInitialized)return ResultErr("fhenixsdk not initialized with valid provider. Use `fhenixsdk.initialize(...)` with a valid provider that satisfies `AbstractProvider`.");if(options?.signer!==false&&!state.signerInitialized)return ResultErr("fhenixsdk not initialized with a valid signer. Use `fhenixsdk.initialize(...)` with a valid signer that satisfies `AbstractSigner`.");return ResultOk(null)};const createPermit=async options=>{const state=_sdkStore.getState();const initialized=_checkInitialized(state);if(!initialized.success)return ResultErr(`${createPermit.name} :: ${initialized.error}`);const optionsWithDefaults={type:"self",issuer:state.account,contracts:state.accessRequirements.contracts,projects:state.accessRequirements.projects,...options};let permit;try{permit=await PermitV2.createAndSign(optionsWithDefaults,state.chainId,state.signer)}catch(e){return ResultErr(`${createPermit.name} :: ${e}`)}permitStore.setPermit(state.account,permit);permitStore.setActivePermitHash(state.account,permit.getHash());return ResultOk(permit)};const importPermit=async imported=>{const state=_sdkStore.getState();const initialized=_checkInitialized(state);if(!initialized.success)return ResultErr(`${createPermit.name} :: ${initialized.error}`);if(typeof imported==="string"){try{imported=JSON.parse(imported)}catch(e){return ResultErr(`importPermit :: json parsing failed - ${e}`)}}const{success,data:parsedPermit,error:permitParsingError}=PermitV2ParamsValidator.safeParse(imported);if(!success){const errorString=Object.entries(permitParsingError.flatten().fieldErrors).map(([field,err])=>`- ${field}: ${err}`).join("\n");return ResultErr(`importPermit :: invalid permit data - ${errorString}`)}if(parsedPermit.type!=="self"){if(parsedPermit.issuer===state.account)parsedPermit.type="sharing";else if(parsedPermit.recipient===state.account)parsedPermit.type="recipient";else{return ResultErr(`importPermit :: invalid Permit - connected account <${state.account}> is not issuer or recipient`)}}let permit;try{permit=await PermitV2.create(parsedPermit)}catch(e){return ResultErr(`importPermit :: ${e}`)}const{valid,error}=permit.isValid();if(!valid){return ResultErr(`importPermit :: newly imported permit is invalid - ${error}`)}permitStore.setPermit(state.account,permit);permitStore.setActivePermitHash(state.account,permit.getHash());return ResultOk(permit)};const selectActivePermit=hash=>{const state=_sdkStore.getState();const initialized=_checkInitialized(state);if(!initialized.success)return ResultErr(`${selectActivePermit.name} :: ${initialized.error}`);const permit=permitStore.getPermit(state.account,hash);if(permit==null)return ResultErr(`${selectActivePermit.name} :: Permit with hash <${hash}> not found`);permitStore.setActivePermitHash(state.account,permit.getHash());return ResultOk(permit)};const getPermit=hash=>{const state=_sdkStore.getState();const initialized=_checkInitialized(state);if(!initialized.success)return ResultErr(`${getPermit.name} :: ${initialized.error}`);if(hash==null){const permit=permitStore.getActivePermit(state.account);if(permit==null)return ResultErr(`getPermit :: active permit not found`);return ResultOk(permit)}const permit=permitStore.getPermit(state.account,hash);if(permit==null)return ResultErr(`getPermit :: permit with hash <${hash}> not found`);return ResultOk(permit)};const getPermission=hash=>{const permitResult=getPermit(hash);if(!permitResult.success)return ResultErr(`${getPermission.name} :: ${permitResult.error}`);return ResultOk(permitResult.data.getPermission())};const getAllPermits=()=>{const state=_sdkStore.getState();const initialized=_checkInitialized(state);if(!initialized.success)return ResultErr(`${getAllPermits.name} :: ${initialized.error}`);return ResultOk(permitStore.getPermits(state.account))};async function encrypt(item){const state=_sdkStore.getState();const initialized=_checkInitialized(state,{provider:false,signer:false});if(!initialized.success)return ResultErr(`${encrypt.name} :: ${initialized.error}`);if(item==="permission"){return getPermission()}if(isEncryptableItem(item)){if(chainIsHardhat(state.coFheUrl))return ResultOk(hardhatMockEncrypt(BigInt(item.data)));const fhePublicKey=_store_getConnectedChainFheKey(item.securityZone??0);if(fhePublicKey==null)return ResultErr("encrypt :: fheKey for current chain not found");let preEncryptedItem;try{switch(item.utype){case FheUType.bool:{preEncryptedItem=encrypt_bool(item.data,fhePublicKey,item.securityZone);break}case FheUType.uint8:{preEncryptedItem=encrypt_uint8(item.data,fhePublicKey,item.securityZone);break}case FheUType.uint16:{preEncryptedItem=encrypt_uint16(item.data,fhePublicKey,item.securityZone);break}case FheUType.uint32:{preEncryptedItem=encrypt_uint32(item.data,fhePublicKey,item.securityZone);break}case FheUType.uint64:{preEncryptedItem=encrypt_uint64(item.data,fhePublicKey,item.securityZone);break}case FheUType.uint128:{preEncryptedItem=encrypt_uint128(item.data,fhePublicKey,item.securityZone);break}case FheUType.uint256:{preEncryptedItem=encrypt_uint256(item.data,fhePublicKey,item.securityZone);break}case FheUType.address:{preEncryptedItem=encrypt_address(item.data,fhePublicKey,item.securityZone);break}}}catch(e){return ResultErr(`encrypt :: tfhe_encrypt_xxxx :: ${e}`)}const res=await fetch(`${state.coFheUrl}/UpdateCT`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({UType:item.utype,Value:toHexString$1(preEncryptedItem.data),SecurityZone:item.securityZone})});const data=await res.json();return ResultOk({securityZone:item.securityZone,hash:BigInt(`0x${data.ctHash}`),utype:item.utype,signature:data.signature})}if(typeof item==="object"&&item!==null){if(Array.isArray(item)){const nestedItems=await Promise.all(item.map(nestedItem=>encrypt(nestedItem)));const nestedItemResultErr=nestedItems.find(nestedItem=>!nestedItem.success);if(nestedItemResultErr!=null)return nestedItemResultErr;return ResultOk(nestedItems.map(nestedItem=>nestedItem.data))}else{const nestedKeyedItems=await Promise.all(Object.entries(item).map(async([key,value])=>({key:key,value:await encrypt(value)})));const nestedItemResultErr=nestedKeyedItems.find(({value})=>!value.success);if(nestedItemResultErr!=null)return nestedItemResultErr;const result={};nestedKeyedItems.forEach(({key,value})=>{result[key]=value.data});return ResultOk(result)}}return ResultOk(item)}const unsealCiphertext=(ciphertext,account,hash)=>{const state=_sdkStore.getState();const initialized=_checkInitialized(state);if(!initialized.success)return ResultErr(`${getAllPermits.name} :: ${initialized.error}`);isString(ciphertext);const resolvedAccount=account??state.account;const resolvedHash=hash??permitStore.getActivePermitHash(resolvedAccount);if(resolvedAccount==null||resolvedHash==null){return ResultErr(`unsealCiphertext :: PermitV2 hash not provided and active PermitV2 not found`)}const permit=permitStore.getPermit(resolvedAccount,resolvedHash);if(permit==null){return ResultErr(`unsealCiphertext :: PermitV2 with account <${account}> and hash <${hash}> not found`)}let unsealed;try{unsealed=permit.unsealCiphertext(ciphertext)}catch(e){return ResultErr(`unsealCiphertext :: ${e}`)}return ResultOk(unsealed)};function unseal(item,account,hash){const resolvedAccount=account??_sdkStore.getState().account;const resolvedHash=hash??permitStore.getActivePermitHash(resolvedAccount);if(resolvedAccount==null||resolvedHash==null){return ResultErr(`unseal :: PermitV2 hash not provided and active PermitV2 not found`)}const permit=permitStore.getPermit(resolvedAccount,resolvedHash);if(permit==null){return ResultErr(`unseal :: PermitV2 with account <${account}> and hash <${hash}> not found`)}let unsealed;try{unsealed=permit.unseal(item)}catch(e){return ResultErr(`unseal :: ${e}`)}return ResultOk(unsealed)}const fhenixsdk={store:_sdkStore,initialize:initialize,createPermit:createPermit,importPermit:importPermit,selectActivePermit:selectActivePermit,getPermit:getPermit,getPermission:getPermission,getAllPermits:getAllPermits,encrypt:encrypt,unsealCiphertext:unsealCiphertext,unseal:unseal};export{Encryptable,EncryptionTypes,FheAllUTypes,FheUType,FheUintUTypes,FullyFormedPermitV2Validator,GenerateSealingKey,PermitV2,PermitV2ParamsValidator,ResultErr,ResultOk,SealingKey,SignatureTypes,createTfheKeypair,createTfhePublicKey,fhenixsdk,getAsSealedItem,getSignatureDomain,getSignatureTypesAndMessage,isEncryptableItem,isSealedAddress,isSealedBool,isSealedUint,permitStore}; \ No newline at end of file diff --git a/dist/fhenix.umd.js b/dist/cofhe.umd.js similarity index 69% rename from dist/fhenix.umd.js rename to dist/cofhe.umd.js index f5d363e..0443492 100644 --- a/dist/fhenix.umd.js +++ b/dist/cofhe.umd.js @@ -1,16435 +1,15716 @@ const __$G = (typeof globalThis !== 'undefined' ? globalThis: typeof window !== 'undefined' ? window: typeof global !== 'undefined' ? global: typeof self !== 'undefined' ? self: {}); (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.fhenixjs = {})); + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.cofhejs = {})); })(this, (function (exports) { 'use strict'; - function _loadWasmModule (sync, filepath, src, imports) { - function _instantiateOrCompile(source, imports, stream) { - var instantiateFunc = WebAssembly.instantiate; - var compileFunc = WebAssembly.compile; + function assertIs(is, expected, value) { + if (!is) { + throw new Error(`Expected value which is \`${expected}\`, received value of type \`${typeof value}\`.`); + } + } + function isString(value) { + const is = typeof value === "string"; + assertIs(is, "string", value); + } + function isNumber(value) { + const is = typeof value === "number" && !Number.isNaN(value); + assertIs(is, "number", value); + } + function isBigIntOrNumber(value) { + const is = typeof value === "bigint"; + if (!is) { + try { + isNumber(value); + } + catch (e) { + throw new Error(`Value ${value} is not a number or bigint: ${typeof value}`); + } + } + } - if (imports) { - return instantiateFunc(source, imports) - } else { - return compileFunc(source) - } + const fromHexString = (hexString) => { + const cleanString = hexString.length % 2 === 1 ? `0${hexString}` : hexString; + const arr = cleanString.replace(/^0x/, "").match(/.{1,2}/g); + if (!arr) + return new Uint8Array(); + return new Uint8Array(arr.map((byte) => parseInt(byte, 16))); + }; + const toHexString$1 = (bytes) => bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, "0"), ""); + function toBigInt(value) { + return ethersToBigInt(value); + } + function toBeArray(value) { + return ethersToBeArray(value); + } + const Nibbles = "0123456789abcdef"; + // IEEE 754 support 53-bits of mantissa + const maxValue = 0x1fffffffffffff; + const BN_0$1 = BigInt(0); + /* + * Converts %%value%% to a BigInt. If %%value%% is a Uint8Array, it + * is treated as Big Endian data. + */ + function ethersToBigInt(value) { + if (value instanceof Uint8Array) { + let result = "0x0"; + for (const v of value) { + result += Nibbles[v >> 4]; + result += Nibbles[v & 0x0f]; + } + return BigInt(result); + } + return getBigInt(value); + } + function ethersToBeArray(_value) { + const value = getUint(_value); + if (value === BN_0$1) { + return new Uint8Array([]); + } + let hex = value.toString(16); + if (hex.length % 2) { + hex = "0" + hex; + } + const result = new Uint8Array(hex.length / 2); + for (let i = 0; i < result.length; i++) { + const offset = i * 2; + result[i] = parseInt(hex.substring(offset, offset + 2), 16); + } + return result; + } + /** + * Returns %%value%% as a bigint, validating it is valid as a bigint + * value and that it is positive. + */ + function getUint(value) { + const result = getBigInt(value); + assertArgument$1(result >= BN_0$1, "unsigned value cannot be negative"); + return result; + } + /** + * Gets a BigInt from %%value%%. If it is an invalid value for + * a BigInt, then an ArgumentError will be thrown for %%name%%. + */ + function getBigInt(value) { + switch (typeof value) { + case "bigint": + return value; + case "number": + assertArgument$1(Number.isInteger(value), "underflow"); + assertArgument$1(value >= -maxValue && value <= maxValue, "overflow"); + return BigInt(value); + case "string": + try { + if (value === "") { + throw new Error("empty string"); + } + if (value[0] === "-" && value[1] !== "-") { + return -BigInt(value.substring(1)); + } + return BigInt(value); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } + catch (e) { + assertArgument$1(false, `invalid BigNumberish string: ${e.message}`); + } + } + assertArgument$1(false, "invalid BigNumberish value"); + } + function assertArgument$1(check, message) { + if (!check) { + throw new Error(message); + } + } + // Uint8Array conversions + const stringToUint8Array = (value) => { + return new Uint8Array(value.split("").map((c) => c.charCodeAt(0))); + }; + const bigintToUint8Array = (bigNum) => { + const byteLength = 32; + const byteArray = new Uint8Array(byteLength); + // Create a BigInt mask for each byte + const mask = BigInt(0xff); + // Initialize an index to start from the end of the array + for (let i = 0; i < byteLength; i++) { + // Extract the last byte and assign it to the corresponding position in the array + byteArray[byteLength - 1 - i] = Number(bigNum & mask); + // Shift bigint right by 8 bits to process the next byte in the next iteration + bigNum >>= BigInt(8); + } + return byteArray; + }; + + var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + + function getAugmentedNamespace(n) { + if (n.__esModule) return n; + var f = n.default; + if (typeof f == "function") { + var a = function a () { + if (this instanceof a) { + return Reflect.construct(f, arguments, this.constructor); + } + return f.apply(this, arguments); + }; + a.prototype = f.prototype; + } else a = {}; + Object.defineProperty(a, '__esModule', {value: true}); + Object.keys(n).forEach(function (k) { + var d = Object.getOwnPropertyDescriptor(n, k); + Object.defineProperty(a, k, d.get ? d : { + enumerable: true, + get: function () { + return n[k]; + } + }); + }); + return a; } - - var buf = null; - var isNode = typeof process !== 'undefined' && process.versions != null && process.versions.node != null; - if (isNode) { - - buf = Buffer.from(src, 'base64'); + function commonjsRequire(path) { + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.'); + } + + var naclFast = {exports: {}}; + + var _nodeResolve_empty = {}; + + var _nodeResolve_empty$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + default: _nodeResolve_empty + }); + + var require$$0 = /*@__PURE__*/getAugmentedNamespace(_nodeResolve_empty$1); + + (function (module) { + (function(nacl) { + + // Ported in 2014 by Dmitry Chestnykh and Devi Mandiri. + // Public domain. + // + // Implementation derived from TweetNaCl version 20140427. + // See for details: http://tweetnacl.cr.yp.to/ + + var gf = function(init) { + var i, r = new Float64Array(16); + if (init) for (i = 0; i < init.length; i++) r[i] = init[i]; + return r; + }; + + // Pluggable, initialized in high-level API below. + var randombytes = function(/* x, n */) { throw new Error('no PRNG'); }; + + var _0 = new Uint8Array(16); + var _9 = new Uint8Array(32); _9[0] = 9; + + var gf0 = gf(), + gf1 = gf([1]), + _121665 = gf([0xdb41, 1]), + D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]), + D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]), + X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]), + Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]), + I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]); + + function ts64(x, i, h, l) { + x[i] = (h >> 24) & 0xff; + x[i+1] = (h >> 16) & 0xff; + x[i+2] = (h >> 8) & 0xff; + x[i+3] = h & 0xff; + x[i+4] = (l >> 24) & 0xff; + x[i+5] = (l >> 16) & 0xff; + x[i+6] = (l >> 8) & 0xff; + x[i+7] = l & 0xff; + } + + function vn(x, xi, y, yi, n) { + var i,d = 0; + for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i]; + return (1 & ((d - 1) >>> 8)) - 1; + } + + function crypto_verify_16(x, xi, y, yi) { + return vn(x,xi,y,yi,16); + } + + function crypto_verify_32(x, xi, y, yi) { + return vn(x,xi,y,yi,32); + } + + function core_salsa20(o, p, k, c) { + var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, + j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, + j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, + j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, + j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, + j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, + j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, + j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, + j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, + j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, + j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, + j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, + j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, + j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, + j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, + j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; + + var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, + x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, + x15 = j15, u; + + for (var i = 0; i < 20; i += 2) { + u = x0 + x12 | 0; + x4 ^= u<<7 | u>>>(32-7); + u = x4 + x0 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x4 | 0; + x12 ^= u<<13 | u>>>(32-13); + u = x12 + x8 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x1 | 0; + x9 ^= u<<7 | u>>>(32-7); + u = x9 + x5 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x9 | 0; + x1 ^= u<<13 | u>>>(32-13); + u = x1 + x13 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x6 | 0; + x14 ^= u<<7 | u>>>(32-7); + u = x14 + x10 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x14 | 0; + x6 ^= u<<13 | u>>>(32-13); + u = x6 + x2 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x11 | 0; + x3 ^= u<<7 | u>>>(32-7); + u = x3 + x15 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x3 | 0; + x11 ^= u<<13 | u>>>(32-13); + u = x11 + x7 | 0; + x15 ^= u<<18 | u>>>(32-18); + + u = x0 + x3 | 0; + x1 ^= u<<7 | u>>>(32-7); + u = x1 + x0 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x1 | 0; + x3 ^= u<<13 | u>>>(32-13); + u = x3 + x2 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x4 | 0; + x6 ^= u<<7 | u>>>(32-7); + u = x6 + x5 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x6 | 0; + x4 ^= u<<13 | u>>>(32-13); + u = x4 + x7 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x9 | 0; + x11 ^= u<<7 | u>>>(32-7); + u = x11 + x10 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x11 | 0; + x9 ^= u<<13 | u>>>(32-13); + u = x9 + x8 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x14 | 0; + x12 ^= u<<7 | u>>>(32-7); + u = x12 + x15 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x12 | 0; + x14 ^= u<<13 | u>>>(32-13); + u = x14 + x13 | 0; + x15 ^= u<<18 | u>>>(32-18); + } + x0 = x0 + j0 | 0; + x1 = x1 + j1 | 0; + x2 = x2 + j2 | 0; + x3 = x3 + j3 | 0; + x4 = x4 + j4 | 0; + x5 = x5 + j5 | 0; + x6 = x6 + j6 | 0; + x7 = x7 + j7 | 0; + x8 = x8 + j8 | 0; + x9 = x9 + j9 | 0; + x10 = x10 + j10 | 0; + x11 = x11 + j11 | 0; + x12 = x12 + j12 | 0; + x13 = x13 + j13 | 0; + x14 = x14 + j14 | 0; + x15 = x15 + j15 | 0; + + o[ 0] = x0 >>> 0 & 0xff; + o[ 1] = x0 >>> 8 & 0xff; + o[ 2] = x0 >>> 16 & 0xff; + o[ 3] = x0 >>> 24 & 0xff; + + o[ 4] = x1 >>> 0 & 0xff; + o[ 5] = x1 >>> 8 & 0xff; + o[ 6] = x1 >>> 16 & 0xff; + o[ 7] = x1 >>> 24 & 0xff; + + o[ 8] = x2 >>> 0 & 0xff; + o[ 9] = x2 >>> 8 & 0xff; + o[10] = x2 >>> 16 & 0xff; + o[11] = x2 >>> 24 & 0xff; + + o[12] = x3 >>> 0 & 0xff; + o[13] = x3 >>> 8 & 0xff; + o[14] = x3 >>> 16 & 0xff; + o[15] = x3 >>> 24 & 0xff; + + o[16] = x4 >>> 0 & 0xff; + o[17] = x4 >>> 8 & 0xff; + o[18] = x4 >>> 16 & 0xff; + o[19] = x4 >>> 24 & 0xff; + + o[20] = x5 >>> 0 & 0xff; + o[21] = x5 >>> 8 & 0xff; + o[22] = x5 >>> 16 & 0xff; + o[23] = x5 >>> 24 & 0xff; + + o[24] = x6 >>> 0 & 0xff; + o[25] = x6 >>> 8 & 0xff; + o[26] = x6 >>> 16 & 0xff; + o[27] = x6 >>> 24 & 0xff; + + o[28] = x7 >>> 0 & 0xff; + o[29] = x7 >>> 8 & 0xff; + o[30] = x7 >>> 16 & 0xff; + o[31] = x7 >>> 24 & 0xff; + + o[32] = x8 >>> 0 & 0xff; + o[33] = x8 >>> 8 & 0xff; + o[34] = x8 >>> 16 & 0xff; + o[35] = x8 >>> 24 & 0xff; + + o[36] = x9 >>> 0 & 0xff; + o[37] = x9 >>> 8 & 0xff; + o[38] = x9 >>> 16 & 0xff; + o[39] = x9 >>> 24 & 0xff; + + o[40] = x10 >>> 0 & 0xff; + o[41] = x10 >>> 8 & 0xff; + o[42] = x10 >>> 16 & 0xff; + o[43] = x10 >>> 24 & 0xff; + + o[44] = x11 >>> 0 & 0xff; + o[45] = x11 >>> 8 & 0xff; + o[46] = x11 >>> 16 & 0xff; + o[47] = x11 >>> 24 & 0xff; + + o[48] = x12 >>> 0 & 0xff; + o[49] = x12 >>> 8 & 0xff; + o[50] = x12 >>> 16 & 0xff; + o[51] = x12 >>> 24 & 0xff; + + o[52] = x13 >>> 0 & 0xff; + o[53] = x13 >>> 8 & 0xff; + o[54] = x13 >>> 16 & 0xff; + o[55] = x13 >>> 24 & 0xff; + + o[56] = x14 >>> 0 & 0xff; + o[57] = x14 >>> 8 & 0xff; + o[58] = x14 >>> 16 & 0xff; + o[59] = x14 >>> 24 & 0xff; + + o[60] = x15 >>> 0 & 0xff; + o[61] = x15 >>> 8 & 0xff; + o[62] = x15 >>> 16 & 0xff; + o[63] = x15 >>> 24 & 0xff; + } + + function core_hsalsa20(o,p,k,c) { + var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, + j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, + j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, + j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, + j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, + j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, + j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, + j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, + j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, + j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, + j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, + j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, + j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, + j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, + j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, + j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; + + var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, + x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, + x15 = j15, u; + + for (var i = 0; i < 20; i += 2) { + u = x0 + x12 | 0; + x4 ^= u<<7 | u>>>(32-7); + u = x4 + x0 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x4 | 0; + x12 ^= u<<13 | u>>>(32-13); + u = x12 + x8 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x1 | 0; + x9 ^= u<<7 | u>>>(32-7); + u = x9 + x5 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x9 | 0; + x1 ^= u<<13 | u>>>(32-13); + u = x1 + x13 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x6 | 0; + x14 ^= u<<7 | u>>>(32-7); + u = x14 + x10 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x14 | 0; + x6 ^= u<<13 | u>>>(32-13); + u = x6 + x2 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x11 | 0; + x3 ^= u<<7 | u>>>(32-7); + u = x3 + x15 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x3 | 0; + x11 ^= u<<13 | u>>>(32-13); + u = x11 + x7 | 0; + x15 ^= u<<18 | u>>>(32-18); + + u = x0 + x3 | 0; + x1 ^= u<<7 | u>>>(32-7); + u = x1 + x0 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x1 | 0; + x3 ^= u<<13 | u>>>(32-13); + u = x3 + x2 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x4 | 0; + x6 ^= u<<7 | u>>>(32-7); + u = x6 + x5 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x6 | 0; + x4 ^= u<<13 | u>>>(32-13); + u = x4 + x7 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x9 | 0; + x11 ^= u<<7 | u>>>(32-7); + u = x11 + x10 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x11 | 0; + x9 ^= u<<13 | u>>>(32-13); + u = x9 + x8 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x14 | 0; + x12 ^= u<<7 | u>>>(32-7); + u = x12 + x15 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x12 | 0; + x14 ^= u<<13 | u>>>(32-13); + u = x14 + x13 | 0; + x15 ^= u<<18 | u>>>(32-18); + } + + o[ 0] = x0 >>> 0 & 0xff; + o[ 1] = x0 >>> 8 & 0xff; + o[ 2] = x0 >>> 16 & 0xff; + o[ 3] = x0 >>> 24 & 0xff; + + o[ 4] = x5 >>> 0 & 0xff; + o[ 5] = x5 >>> 8 & 0xff; + o[ 6] = x5 >>> 16 & 0xff; + o[ 7] = x5 >>> 24 & 0xff; + + o[ 8] = x10 >>> 0 & 0xff; + o[ 9] = x10 >>> 8 & 0xff; + o[10] = x10 >>> 16 & 0xff; + o[11] = x10 >>> 24 & 0xff; + + o[12] = x15 >>> 0 & 0xff; + o[13] = x15 >>> 8 & 0xff; + o[14] = x15 >>> 16 & 0xff; + o[15] = x15 >>> 24 & 0xff; + + o[16] = x6 >>> 0 & 0xff; + o[17] = x6 >>> 8 & 0xff; + o[18] = x6 >>> 16 & 0xff; + o[19] = x6 >>> 24 & 0xff; + + o[20] = x7 >>> 0 & 0xff; + o[21] = x7 >>> 8 & 0xff; + o[22] = x7 >>> 16 & 0xff; + o[23] = x7 >>> 24 & 0xff; + + o[24] = x8 >>> 0 & 0xff; + o[25] = x8 >>> 8 & 0xff; + o[26] = x8 >>> 16 & 0xff; + o[27] = x8 >>> 24 & 0xff; + + o[28] = x9 >>> 0 & 0xff; + o[29] = x9 >>> 8 & 0xff; + o[30] = x9 >>> 16 & 0xff; + o[31] = x9 >>> 24 & 0xff; + } + + function crypto_core_salsa20(out,inp,k,c) { + core_salsa20(out,inp,k,c); + } + + function crypto_core_hsalsa20(out,inp,k,c) { + core_hsalsa20(out,inp,k,c); + } + + var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]); + // "expand 32-byte k" + + function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) { + var z = new Uint8Array(16), x = new Uint8Array(64); + var u, i; + for (i = 0; i < 16; i++) z[i] = 0; + for (i = 0; i < 8; i++) z[i] = n[i]; + while (b >= 64) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i]; + u = 1; + for (i = 8; i < 16; i++) { + u = u + (z[i] & 0xff) | 0; + z[i] = u & 0xff; + u >>>= 8; + } + b -= 64; + cpos += 64; + mpos += 64; + } + if (b > 0) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i]; + } + return 0; + } + + function crypto_stream_salsa20(c,cpos,b,n,k) { + var z = new Uint8Array(16), x = new Uint8Array(64); + var u, i; + for (i = 0; i < 16; i++) z[i] = 0; + for (i = 0; i < 8; i++) z[i] = n[i]; + while (b >= 64) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < 64; i++) c[cpos+i] = x[i]; + u = 1; + for (i = 8; i < 16; i++) { + u = u + (z[i] & 0xff) | 0; + z[i] = u & 0xff; + u >>>= 8; + } + b -= 64; + cpos += 64; + } + if (b > 0) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < b; i++) c[cpos+i] = x[i]; + } + return 0; + } + + function crypto_stream(c,cpos,d,n,k) { + var s = new Uint8Array(32); + crypto_core_hsalsa20(s,n,k,sigma); + var sn = new Uint8Array(8); + for (var i = 0; i < 8; i++) sn[i] = n[i+16]; + return crypto_stream_salsa20(c,cpos,d,sn,s); + } + + function crypto_stream_xor(c,cpos,m,mpos,d,n,k) { + var s = new Uint8Array(32); + crypto_core_hsalsa20(s,n,k,sigma); + var sn = new Uint8Array(8); + for (var i = 0; i < 8; i++) sn[i] = n[i+16]; + return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s); + } + + /* + * Port of Andrew Moon's Poly1305-donna-16. Public domain. + * https://github.com/floodyberry/poly1305-donna + */ + + var poly1305 = function(key) { + this.buffer = new Uint8Array(16); + this.r = new Uint16Array(10); + this.h = new Uint16Array(10); + this.pad = new Uint16Array(8); + this.leftover = 0; + this.fin = 0; + + var t0, t1, t2, t3, t4, t5, t6, t7; + + t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff; + t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff; + t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03; + t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff; + t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff; + this.r[5] = ((t4 >>> 1)) & 0x1ffe; + t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff; + t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81; + t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff; + this.r[9] = ((t7 >>> 5)) & 0x007f; + + this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8; + this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8; + this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8; + this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8; + this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8; + this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8; + this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8; + this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8; + }; + + poly1305.prototype.blocks = function(m, mpos, bytes) { + var hibit = this.fin ? 0 : (1 << 11); + var t0, t1, t2, t3, t4, t5, t6, t7, c; + var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9; + + var h0 = this.h[0], + h1 = this.h[1], + h2 = this.h[2], + h3 = this.h[3], + h4 = this.h[4], + h5 = this.h[5], + h6 = this.h[6], + h7 = this.h[7], + h8 = this.h[8], + h9 = this.h[9]; + + var r0 = this.r[0], + r1 = this.r[1], + r2 = this.r[2], + r3 = this.r[3], + r4 = this.r[4], + r5 = this.r[5], + r6 = this.r[6], + r7 = this.r[7], + r8 = this.r[8], + r9 = this.r[9]; + + while (bytes >= 16) { + t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff; + t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff; + t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff; + t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff; + t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff; + h5 += ((t4 >>> 1)) & 0x1fff; + t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff; + t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff; + t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff; + h9 += ((t7 >>> 5)) | hibit; + + c = 0; + + d0 = c; + d0 += h0 * r0; + d0 += h1 * (5 * r9); + d0 += h2 * (5 * r8); + d0 += h3 * (5 * r7); + d0 += h4 * (5 * r6); + c = (d0 >>> 13); d0 &= 0x1fff; + d0 += h5 * (5 * r5); + d0 += h6 * (5 * r4); + d0 += h7 * (5 * r3); + d0 += h8 * (5 * r2); + d0 += h9 * (5 * r1); + c += (d0 >>> 13); d0 &= 0x1fff; + + d1 = c; + d1 += h0 * r1; + d1 += h1 * r0; + d1 += h2 * (5 * r9); + d1 += h3 * (5 * r8); + d1 += h4 * (5 * r7); + c = (d1 >>> 13); d1 &= 0x1fff; + d1 += h5 * (5 * r6); + d1 += h6 * (5 * r5); + d1 += h7 * (5 * r4); + d1 += h8 * (5 * r3); + d1 += h9 * (5 * r2); + c += (d1 >>> 13); d1 &= 0x1fff; + + d2 = c; + d2 += h0 * r2; + d2 += h1 * r1; + d2 += h2 * r0; + d2 += h3 * (5 * r9); + d2 += h4 * (5 * r8); + c = (d2 >>> 13); d2 &= 0x1fff; + d2 += h5 * (5 * r7); + d2 += h6 * (5 * r6); + d2 += h7 * (5 * r5); + d2 += h8 * (5 * r4); + d2 += h9 * (5 * r3); + c += (d2 >>> 13); d2 &= 0x1fff; + + d3 = c; + d3 += h0 * r3; + d3 += h1 * r2; + d3 += h2 * r1; + d3 += h3 * r0; + d3 += h4 * (5 * r9); + c = (d3 >>> 13); d3 &= 0x1fff; + d3 += h5 * (5 * r8); + d3 += h6 * (5 * r7); + d3 += h7 * (5 * r6); + d3 += h8 * (5 * r5); + d3 += h9 * (5 * r4); + c += (d3 >>> 13); d3 &= 0x1fff; + + d4 = c; + d4 += h0 * r4; + d4 += h1 * r3; + d4 += h2 * r2; + d4 += h3 * r1; + d4 += h4 * r0; + c = (d4 >>> 13); d4 &= 0x1fff; + d4 += h5 * (5 * r9); + d4 += h6 * (5 * r8); + d4 += h7 * (5 * r7); + d4 += h8 * (5 * r6); + d4 += h9 * (5 * r5); + c += (d4 >>> 13); d4 &= 0x1fff; + + d5 = c; + d5 += h0 * r5; + d5 += h1 * r4; + d5 += h2 * r3; + d5 += h3 * r2; + d5 += h4 * r1; + c = (d5 >>> 13); d5 &= 0x1fff; + d5 += h5 * r0; + d5 += h6 * (5 * r9); + d5 += h7 * (5 * r8); + d5 += h8 * (5 * r7); + d5 += h9 * (5 * r6); + c += (d5 >>> 13); d5 &= 0x1fff; + + d6 = c; + d6 += h0 * r6; + d6 += h1 * r5; + d6 += h2 * r4; + d6 += h3 * r3; + d6 += h4 * r2; + c = (d6 >>> 13); d6 &= 0x1fff; + d6 += h5 * r1; + d6 += h6 * r0; + d6 += h7 * (5 * r9); + d6 += h8 * (5 * r8); + d6 += h9 * (5 * r7); + c += (d6 >>> 13); d6 &= 0x1fff; + + d7 = c; + d7 += h0 * r7; + d7 += h1 * r6; + d7 += h2 * r5; + d7 += h3 * r4; + d7 += h4 * r3; + c = (d7 >>> 13); d7 &= 0x1fff; + d7 += h5 * r2; + d7 += h6 * r1; + d7 += h7 * r0; + d7 += h8 * (5 * r9); + d7 += h9 * (5 * r8); + c += (d7 >>> 13); d7 &= 0x1fff; + + d8 = c; + d8 += h0 * r8; + d8 += h1 * r7; + d8 += h2 * r6; + d8 += h3 * r5; + d8 += h4 * r4; + c = (d8 >>> 13); d8 &= 0x1fff; + d8 += h5 * r3; + d8 += h6 * r2; + d8 += h7 * r1; + d8 += h8 * r0; + d8 += h9 * (5 * r9); + c += (d8 >>> 13); d8 &= 0x1fff; + + d9 = c; + d9 += h0 * r9; + d9 += h1 * r8; + d9 += h2 * r7; + d9 += h3 * r6; + d9 += h4 * r5; + c = (d9 >>> 13); d9 &= 0x1fff; + d9 += h5 * r4; + d9 += h6 * r3; + d9 += h7 * r2; + d9 += h8 * r1; + d9 += h9 * r0; + c += (d9 >>> 13); d9 &= 0x1fff; + + c = (((c << 2) + c)) | 0; + c = (c + d0) | 0; + d0 = c & 0x1fff; + c = (c >>> 13); + d1 += c; + + h0 = d0; + h1 = d1; + h2 = d2; + h3 = d3; + h4 = d4; + h5 = d5; + h6 = d6; + h7 = d7; + h8 = d8; + h9 = d9; + + mpos += 16; + bytes -= 16; + } + this.h[0] = h0; + this.h[1] = h1; + this.h[2] = h2; + this.h[3] = h3; + this.h[4] = h4; + this.h[5] = h5; + this.h[6] = h6; + this.h[7] = h7; + this.h[8] = h8; + this.h[9] = h9; + }; + + poly1305.prototype.finish = function(mac, macpos) { + var g = new Uint16Array(10); + var c, mask, f, i; + + if (this.leftover) { + i = this.leftover; + this.buffer[i++] = 1; + for (; i < 16; i++) this.buffer[i] = 0; + this.fin = 1; + this.blocks(this.buffer, 0, 16); + } + + c = this.h[1] >>> 13; + this.h[1] &= 0x1fff; + for (i = 2; i < 10; i++) { + this.h[i] += c; + c = this.h[i] >>> 13; + this.h[i] &= 0x1fff; + } + this.h[0] += (c * 5); + c = this.h[0] >>> 13; + this.h[0] &= 0x1fff; + this.h[1] += c; + c = this.h[1] >>> 13; + this.h[1] &= 0x1fff; + this.h[2] += c; + + g[0] = this.h[0] + 5; + c = g[0] >>> 13; + g[0] &= 0x1fff; + for (i = 1; i < 10; i++) { + g[i] = this.h[i] + c; + c = g[i] >>> 13; + g[i] &= 0x1fff; + } + g[9] -= (1 << 13); + + mask = (c ^ 1) - 1; + for (i = 0; i < 10; i++) g[i] &= mask; + mask = ~mask; + for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i]; + + this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff; + this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff; + this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff; + this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff; + this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff; + this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff; + this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff; + this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff; + + f = this.h[0] + this.pad[0]; + this.h[0] = f & 0xffff; + for (i = 1; i < 8; i++) { + f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0; + this.h[i] = f & 0xffff; + } + + mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff; + mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff; + mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff; + mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff; + mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff; + mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff; + mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff; + mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff; + mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff; + mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff; + mac[macpos+10] = (this.h[5] >>> 0) & 0xff; + mac[macpos+11] = (this.h[5] >>> 8) & 0xff; + mac[macpos+12] = (this.h[6] >>> 0) & 0xff; + mac[macpos+13] = (this.h[6] >>> 8) & 0xff; + mac[macpos+14] = (this.h[7] >>> 0) & 0xff; + mac[macpos+15] = (this.h[7] >>> 8) & 0xff; + }; + + poly1305.prototype.update = function(m, mpos, bytes) { + var i, want; + + if (this.leftover) { + want = (16 - this.leftover); + if (want > bytes) + want = bytes; + for (i = 0; i < want; i++) + this.buffer[this.leftover + i] = m[mpos+i]; + bytes -= want; + mpos += want; + this.leftover += want; + if (this.leftover < 16) + return; + this.blocks(this.buffer, 0, 16); + this.leftover = 0; + } + + if (bytes >= 16) { + want = bytes - (bytes % 16); + this.blocks(m, mpos, want); + mpos += want; + bytes -= want; + } + + if (bytes) { + for (i = 0; i < bytes; i++) + this.buffer[this.leftover + i] = m[mpos+i]; + this.leftover += bytes; + } + }; + + function crypto_onetimeauth(out, outpos, m, mpos, n, k) { + var s = new poly1305(k); + s.update(m, mpos, n); + s.finish(out, outpos); + return 0; + } + + function crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) { + var x = new Uint8Array(16); + crypto_onetimeauth(x,0,m,mpos,n,k); + return crypto_verify_16(h,hpos,x,0); + } + + function crypto_secretbox(c,m,d,n,k) { + var i; + if (d < 32) return -1; + crypto_stream_xor(c,0,m,0,d,n,k); + crypto_onetimeauth(c, 16, c, 32, d - 32, c); + for (i = 0; i < 16; i++) c[i] = 0; + return 0; + } + + function crypto_secretbox_open(m,c,d,n,k) { + var i; + var x = new Uint8Array(32); + if (d < 32) return -1; + crypto_stream(x,0,32,n,k); + if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1; + crypto_stream_xor(m,0,c,0,d,n,k); + for (i = 0; i < 32; i++) m[i] = 0; + return 0; + } + + function set25519(r, a) { + var i; + for (i = 0; i < 16; i++) r[i] = a[i]|0; + } + + function car25519(o) { + var i, v, c = 1; + for (i = 0; i < 16; i++) { + v = o[i] + c + 65535; + c = Math.floor(v / 65536); + o[i] = v - c * 65536; + } + o[0] += c-1 + 37 * (c-1); + } + + function sel25519(p, q, b) { + var t, c = ~(b-1); + for (var i = 0; i < 16; i++) { + t = c & (p[i] ^ q[i]); + p[i] ^= t; + q[i] ^= t; + } + } + + function pack25519(o, n) { + var i, j, b; + var m = gf(), t = gf(); + for (i = 0; i < 16; i++) t[i] = n[i]; + car25519(t); + car25519(t); + car25519(t); + for (j = 0; j < 2; j++) { + m[0] = t[0] - 0xffed; + for (i = 1; i < 15; i++) { + m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1); + m[i-1] &= 0xffff; + } + m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1); + b = (m[15]>>16) & 1; + m[14] &= 0xffff; + sel25519(t, m, 1-b); + } + for (i = 0; i < 16; i++) { + o[2*i] = t[i] & 0xff; + o[2*i+1] = t[i]>>8; + } + } + + function neq25519(a, b) { + var c = new Uint8Array(32), d = new Uint8Array(32); + pack25519(c, a); + pack25519(d, b); + return crypto_verify_32(c, 0, d, 0); + } + + function par25519(a) { + var d = new Uint8Array(32); + pack25519(d, a); + return d[0] & 1; + } + + function unpack25519(o, n) { + var i; + for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8); + o[15] &= 0x7fff; + } + + function A(o, a, b) { + for (var i = 0; i < 16; i++) o[i] = a[i] + b[i]; + } + + function Z(o, a, b) { + for (var i = 0; i < 16; i++) o[i] = a[i] - b[i]; + } + + function M(o, a, b) { + var v, c, + t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, + t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, + t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, + t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, + b0 = b[0], + b1 = b[1], + b2 = b[2], + b3 = b[3], + b4 = b[4], + b5 = b[5], + b6 = b[6], + b7 = b[7], + b8 = b[8], + b9 = b[9], + b10 = b[10], + b11 = b[11], + b12 = b[12], + b13 = b[13], + b14 = b[14], + b15 = b[15]; + + v = a[0]; + t0 += v * b0; + t1 += v * b1; + t2 += v * b2; + t3 += v * b3; + t4 += v * b4; + t5 += v * b5; + t6 += v * b6; + t7 += v * b7; + t8 += v * b8; + t9 += v * b9; + t10 += v * b10; + t11 += v * b11; + t12 += v * b12; + t13 += v * b13; + t14 += v * b14; + t15 += v * b15; + v = a[1]; + t1 += v * b0; + t2 += v * b1; + t3 += v * b2; + t4 += v * b3; + t5 += v * b4; + t6 += v * b5; + t7 += v * b6; + t8 += v * b7; + t9 += v * b8; + t10 += v * b9; + t11 += v * b10; + t12 += v * b11; + t13 += v * b12; + t14 += v * b13; + t15 += v * b14; + t16 += v * b15; + v = a[2]; + t2 += v * b0; + t3 += v * b1; + t4 += v * b2; + t5 += v * b3; + t6 += v * b4; + t7 += v * b5; + t8 += v * b6; + t9 += v * b7; + t10 += v * b8; + t11 += v * b9; + t12 += v * b10; + t13 += v * b11; + t14 += v * b12; + t15 += v * b13; + t16 += v * b14; + t17 += v * b15; + v = a[3]; + t3 += v * b0; + t4 += v * b1; + t5 += v * b2; + t6 += v * b3; + t7 += v * b4; + t8 += v * b5; + t9 += v * b6; + t10 += v * b7; + t11 += v * b8; + t12 += v * b9; + t13 += v * b10; + t14 += v * b11; + t15 += v * b12; + t16 += v * b13; + t17 += v * b14; + t18 += v * b15; + v = a[4]; + t4 += v * b0; + t5 += v * b1; + t6 += v * b2; + t7 += v * b3; + t8 += v * b4; + t9 += v * b5; + t10 += v * b6; + t11 += v * b7; + t12 += v * b8; + t13 += v * b9; + t14 += v * b10; + t15 += v * b11; + t16 += v * b12; + t17 += v * b13; + t18 += v * b14; + t19 += v * b15; + v = a[5]; + t5 += v * b0; + t6 += v * b1; + t7 += v * b2; + t8 += v * b3; + t9 += v * b4; + t10 += v * b5; + t11 += v * b6; + t12 += v * b7; + t13 += v * b8; + t14 += v * b9; + t15 += v * b10; + t16 += v * b11; + t17 += v * b12; + t18 += v * b13; + t19 += v * b14; + t20 += v * b15; + v = a[6]; + t6 += v * b0; + t7 += v * b1; + t8 += v * b2; + t9 += v * b3; + t10 += v * b4; + t11 += v * b5; + t12 += v * b6; + t13 += v * b7; + t14 += v * b8; + t15 += v * b9; + t16 += v * b10; + t17 += v * b11; + t18 += v * b12; + t19 += v * b13; + t20 += v * b14; + t21 += v * b15; + v = a[7]; + t7 += v * b0; + t8 += v * b1; + t9 += v * b2; + t10 += v * b3; + t11 += v * b4; + t12 += v * b5; + t13 += v * b6; + t14 += v * b7; + t15 += v * b8; + t16 += v * b9; + t17 += v * b10; + t18 += v * b11; + t19 += v * b12; + t20 += v * b13; + t21 += v * b14; + t22 += v * b15; + v = a[8]; + t8 += v * b0; + t9 += v * b1; + t10 += v * b2; + t11 += v * b3; + t12 += v * b4; + t13 += v * b5; + t14 += v * b6; + t15 += v * b7; + t16 += v * b8; + t17 += v * b9; + t18 += v * b10; + t19 += v * b11; + t20 += v * b12; + t21 += v * b13; + t22 += v * b14; + t23 += v * b15; + v = a[9]; + t9 += v * b0; + t10 += v * b1; + t11 += v * b2; + t12 += v * b3; + t13 += v * b4; + t14 += v * b5; + t15 += v * b6; + t16 += v * b7; + t17 += v * b8; + t18 += v * b9; + t19 += v * b10; + t20 += v * b11; + t21 += v * b12; + t22 += v * b13; + t23 += v * b14; + t24 += v * b15; + v = a[10]; + t10 += v * b0; + t11 += v * b1; + t12 += v * b2; + t13 += v * b3; + t14 += v * b4; + t15 += v * b5; + t16 += v * b6; + t17 += v * b7; + t18 += v * b8; + t19 += v * b9; + t20 += v * b10; + t21 += v * b11; + t22 += v * b12; + t23 += v * b13; + t24 += v * b14; + t25 += v * b15; + v = a[11]; + t11 += v * b0; + t12 += v * b1; + t13 += v * b2; + t14 += v * b3; + t15 += v * b4; + t16 += v * b5; + t17 += v * b6; + t18 += v * b7; + t19 += v * b8; + t20 += v * b9; + t21 += v * b10; + t22 += v * b11; + t23 += v * b12; + t24 += v * b13; + t25 += v * b14; + t26 += v * b15; + v = a[12]; + t12 += v * b0; + t13 += v * b1; + t14 += v * b2; + t15 += v * b3; + t16 += v * b4; + t17 += v * b5; + t18 += v * b6; + t19 += v * b7; + t20 += v * b8; + t21 += v * b9; + t22 += v * b10; + t23 += v * b11; + t24 += v * b12; + t25 += v * b13; + t26 += v * b14; + t27 += v * b15; + v = a[13]; + t13 += v * b0; + t14 += v * b1; + t15 += v * b2; + t16 += v * b3; + t17 += v * b4; + t18 += v * b5; + t19 += v * b6; + t20 += v * b7; + t21 += v * b8; + t22 += v * b9; + t23 += v * b10; + t24 += v * b11; + t25 += v * b12; + t26 += v * b13; + t27 += v * b14; + t28 += v * b15; + v = a[14]; + t14 += v * b0; + t15 += v * b1; + t16 += v * b2; + t17 += v * b3; + t18 += v * b4; + t19 += v * b5; + t20 += v * b6; + t21 += v * b7; + t22 += v * b8; + t23 += v * b9; + t24 += v * b10; + t25 += v * b11; + t26 += v * b12; + t27 += v * b13; + t28 += v * b14; + t29 += v * b15; + v = a[15]; + t15 += v * b0; + t16 += v * b1; + t17 += v * b2; + t18 += v * b3; + t19 += v * b4; + t20 += v * b5; + t21 += v * b6; + t22 += v * b7; + t23 += v * b8; + t24 += v * b9; + t25 += v * b10; + t26 += v * b11; + t27 += v * b12; + t28 += v * b13; + t29 += v * b14; + t30 += v * b15; + + t0 += 38 * t16; + t1 += 38 * t17; + t2 += 38 * t18; + t3 += 38 * t19; + t4 += 38 * t20; + t5 += 38 * t21; + t6 += 38 * t22; + t7 += 38 * t23; + t8 += 38 * t24; + t9 += 38 * t25; + t10 += 38 * t26; + t11 += 38 * t27; + t12 += 38 * t28; + t13 += 38 * t29; + t14 += 38 * t30; + // t15 left as is + + // first car + c = 1; + v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; + v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; + v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; + v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; + v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; + v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; + v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; + v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; + v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; + v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; + v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; + v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; + v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; + v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; + v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; + v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; + t0 += c-1 + 37 * (c-1); + + // second car + c = 1; + v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; + v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; + v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; + v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; + v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; + v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; + v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; + v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; + v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; + v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; + v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; + v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; + v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; + v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; + v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; + v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; + t0 += c-1 + 37 * (c-1); + + o[ 0] = t0; + o[ 1] = t1; + o[ 2] = t2; + o[ 3] = t3; + o[ 4] = t4; + o[ 5] = t5; + o[ 6] = t6; + o[ 7] = t7; + o[ 8] = t8; + o[ 9] = t9; + o[10] = t10; + o[11] = t11; + o[12] = t12; + o[13] = t13; + o[14] = t14; + o[15] = t15; + } + + function S(o, a) { + M(o, a, a); + } + + function inv25519(o, i) { + var c = gf(); + var a; + for (a = 0; a < 16; a++) c[a] = i[a]; + for (a = 253; a >= 0; a--) { + S(c, c); + if(a !== 2 && a !== 4) M(c, c, i); + } + for (a = 0; a < 16; a++) o[a] = c[a]; + } + + function pow2523(o, i) { + var c = gf(); + var a; + for (a = 0; a < 16; a++) c[a] = i[a]; + for (a = 250; a >= 0; a--) { + S(c, c); + if(a !== 1) M(c, c, i); + } + for (a = 0; a < 16; a++) o[a] = c[a]; + } + + function crypto_scalarmult(q, n, p) { + var z = new Uint8Array(32); + var x = new Float64Array(80), r, i; + var a = gf(), b = gf(), c = gf(), + d = gf(), e = gf(), f = gf(); + for (i = 0; i < 31; i++) z[i] = n[i]; + z[31]=(n[31]&127)|64; + z[0]&=248; + unpack25519(x,p); + for (i = 0; i < 16; i++) { + b[i]=x[i]; + d[i]=a[i]=c[i]=0; + } + a[0]=d[0]=1; + for (i=254; i>=0; --i) { + r=(z[i>>>3]>>>(i&7))&1; + sel25519(a,b,r); + sel25519(c,d,r); + A(e,a,c); + Z(a,a,c); + A(c,b,d); + Z(b,b,d); + S(d,e); + S(f,a); + M(a,c,a); + M(c,b,e); + A(e,a,c); + Z(a,a,c); + S(b,a); + Z(c,d,f); + M(a,c,_121665); + A(a,a,d); + M(c,c,a); + M(a,d,f); + M(d,b,x); + S(b,e); + sel25519(a,b,r); + sel25519(c,d,r); + } + for (i = 0; i < 16; i++) { + x[i+16]=a[i]; + x[i+32]=c[i]; + x[i+48]=b[i]; + x[i+64]=d[i]; + } + var x32 = x.subarray(32); + var x16 = x.subarray(16); + inv25519(x32,x32); + M(x16,x16,x32); + pack25519(q,x16); + return 0; + } + + function crypto_scalarmult_base(q, n) { + return crypto_scalarmult(q, n, _9); + } + + function crypto_box_keypair(y, x) { + randombytes(x, 32); + return crypto_scalarmult_base(y, x); + } + + function crypto_box_beforenm(k, y, x) { + var s = new Uint8Array(32); + crypto_scalarmult(s, x, y); + return crypto_core_hsalsa20(k, _0, s, sigma); + } + + var crypto_box_afternm = crypto_secretbox; + var crypto_box_open_afternm = crypto_secretbox_open; + + function crypto_box(c, m, d, n, y, x) { + var k = new Uint8Array(32); + crypto_box_beforenm(k, y, x); + return crypto_box_afternm(c, m, d, n, k); + } + + function crypto_box_open(m, c, d, n, y, x) { + var k = new Uint8Array(32); + crypto_box_beforenm(k, y, x); + return crypto_box_open_afternm(m, c, d, n, k); + } + + var K = [ + 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, + 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, + 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, + 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, + 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, + 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, + 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, + 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, + 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, + 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, + 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, + 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, + 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, + 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, + 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, + 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, + 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, + 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, + 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, + 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, + 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, + 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, + 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, + 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, + 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, + 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, + 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, + 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, + 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, + 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, + 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, + 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, + 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, + 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, + 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, + 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, + 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, + 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, + 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, + 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 + ]; + + function crypto_hashblocks_hl(hh, hl, m, n) { + var wh = new Int32Array(16), wl = new Int32Array(16), + bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, + bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, + th, tl, i, j, h, l, a, b, c, d; + + var ah0 = hh[0], + ah1 = hh[1], + ah2 = hh[2], + ah3 = hh[3], + ah4 = hh[4], + ah5 = hh[5], + ah6 = hh[6], + ah7 = hh[7], + + al0 = hl[0], + al1 = hl[1], + al2 = hl[2], + al3 = hl[3], + al4 = hl[4], + al5 = hl[5], + al6 = hl[6], + al7 = hl[7]; + + var pos = 0; + while (n >= 128) { + for (i = 0; i < 16; i++) { + j = 8 * i + pos; + wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3]; + wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7]; + } + for (i = 0; i < 80; i++) { + bh0 = ah0; + bh1 = ah1; + bh2 = ah2; + bh3 = ah3; + bh4 = ah4; + bh5 = ah5; + bh6 = ah6; + bh7 = ah7; + + bl0 = al0; + bl1 = al1; + bl2 = al2; + bl3 = al3; + bl4 = al4; + bl5 = al5; + bl6 = al6; + bl7 = al7; + + // add + h = ah7; + l = al7; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + // Sigma1 + h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32)))); + l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32)))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // Ch + h = (ah4 & ah5) ^ (~ah4 & ah6); + l = (al4 & al5) ^ (~al4 & al6); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // K + h = K[i*2]; + l = K[i*2+1]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // w + h = wh[i%16]; + l = wl[i%16]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + th = c & 0xffff | d << 16; + tl = a & 0xffff | b << 16; + + // add + h = th; + l = tl; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + // Sigma0 + h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32)))); + l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32)))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // Maj + h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2); + l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + bh7 = (c & 0xffff) | (d << 16); + bl7 = (a & 0xffff) | (b << 16); + + // add + h = bh3; + l = bl3; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = th; + l = tl; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + bh3 = (c & 0xffff) | (d << 16); + bl3 = (a & 0xffff) | (b << 16); + + ah1 = bh0; + ah2 = bh1; + ah3 = bh2; + ah4 = bh3; + ah5 = bh4; + ah6 = bh5; + ah7 = bh6; + ah0 = bh7; + + al1 = bl0; + al2 = bl1; + al3 = bl2; + al4 = bl3; + al5 = bl4; + al6 = bl5; + al7 = bl6; + al0 = bl7; + + if (i%16 === 15) { + for (j = 0; j < 16; j++) { + // add + h = wh[j]; + l = wl[j]; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = wh[(j+9)%16]; + l = wl[(j+9)%16]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // sigma0 + th = wh[(j+1)%16]; + tl = wl[(j+1)%16]; + h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7); + l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // sigma1 + th = wh[(j+14)%16]; + tl = wl[(j+14)%16]; + h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6); + l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + wh[j] = (c & 0xffff) | (d << 16); + wl[j] = (a & 0xffff) | (b << 16); + } + } + } + + // add + h = ah0; + l = al0; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[0]; + l = hl[0]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[0] = ah0 = (c & 0xffff) | (d << 16); + hl[0] = al0 = (a & 0xffff) | (b << 16); + + h = ah1; + l = al1; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; - } else { - - var raw = globalThis.atob(src); - var rawLength = raw.length; - buf = new Uint8Array(new ArrayBuffer(rawLength)); - for(var i = 0; i < rawLength; i++) { - buf[i] = raw.charCodeAt(i); - } + h = hh[1]; + l = hl[1]; - } + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; - { - return _instantiateOrCompile(buf, imports) + hh[1] = ah1 = (c & 0xffff) | (d << 16); + hl[1] = al1 = (a & 0xffff) | (b << 16); + + h = ah2; + l = al2; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[2]; + l = hl[2]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[2] = ah2 = (c & 0xffff) | (d << 16); + hl[2] = al2 = (a & 0xffff) | (b << 16); + + h = ah3; + l = al3; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[3]; + l = hl[3]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[3] = ah3 = (c & 0xffff) | (d << 16); + hl[3] = al3 = (a & 0xffff) | (b << 16); + + h = ah4; + l = al4; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[4]; + l = hl[4]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[4] = ah4 = (c & 0xffff) | (d << 16); + hl[4] = al4 = (a & 0xffff) | (b << 16); + + h = ah5; + l = al5; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[5]; + l = hl[5]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[5] = ah5 = (c & 0xffff) | (d << 16); + hl[5] = al5 = (a & 0xffff) | (b << 16); + + h = ah6; + l = al6; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[6]; + l = hl[6]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[6] = ah6 = (c & 0xffff) | (d << 16); + hl[6] = al6 = (a & 0xffff) | (b << 16); + + h = ah7; + l = al7; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[7]; + l = hl[7]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[7] = ah7 = (c & 0xffff) | (d << 16); + hl[7] = al7 = (a & 0xffff) | (b << 16); + + pos += 128; + n -= 128; + } + + return n; + } + + function crypto_hash(out, m, n) { + var hh = new Int32Array(8), + hl = new Int32Array(8), + x = new Uint8Array(256), + i, b = n; + + hh[0] = 0x6a09e667; + hh[1] = 0xbb67ae85; + hh[2] = 0x3c6ef372; + hh[3] = 0xa54ff53a; + hh[4] = 0x510e527f; + hh[5] = 0x9b05688c; + hh[6] = 0x1f83d9ab; + hh[7] = 0x5be0cd19; + + hl[0] = 0xf3bcc908; + hl[1] = 0x84caa73b; + hl[2] = 0xfe94f82b; + hl[3] = 0x5f1d36f1; + hl[4] = 0xade682d1; + hl[5] = 0x2b3e6c1f; + hl[6] = 0xfb41bd6b; + hl[7] = 0x137e2179; + + crypto_hashblocks_hl(hh, hl, m, n); + n %= 128; + + for (i = 0; i < n; i++) x[i] = m[b-n+i]; + x[n] = 128; + + n = 256-128*(n<112?1:0); + x[n-9] = 0; + ts64(x, n-8, (b / 0x20000000) | 0, b << 3); + crypto_hashblocks_hl(hh, hl, x, n); + + for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]); + + return 0; + } + + function add(p, q) { + var a = gf(), b = gf(), c = gf(), + d = gf(), e = gf(), f = gf(), + g = gf(), h = gf(), t = gf(); + + Z(a, p[1], p[0]); + Z(t, q[1], q[0]); + M(a, a, t); + A(b, p[0], p[1]); + A(t, q[0], q[1]); + M(b, b, t); + M(c, p[3], q[3]); + M(c, c, D2); + M(d, p[2], q[2]); + A(d, d, d); + Z(e, b, a); + Z(f, d, c); + A(g, d, c); + A(h, b, a); + + M(p[0], e, f); + M(p[1], h, g); + M(p[2], g, f); + M(p[3], e, h); + } + + function cswap(p, q, b) { + var i; + for (i = 0; i < 4; i++) { + sel25519(p[i], q[i], b); + } + } + + function pack(r, p) { + var tx = gf(), ty = gf(), zi = gf(); + inv25519(zi, p[2]); + M(tx, p[0], zi); + M(ty, p[1], zi); + pack25519(r, ty); + r[31] ^= par25519(tx) << 7; + } + + function scalarmult(p, q, s) { + var b, i; + set25519(p[0], gf0); + set25519(p[1], gf1); + set25519(p[2], gf1); + set25519(p[3], gf0); + for (i = 255; i >= 0; --i) { + b = (s[(i/8)|0] >> (i&7)) & 1; + cswap(p, q, b); + add(q, p); + add(p, p); + cswap(p, q, b); + } + } + + function scalarbase(p, s) { + var q = [gf(), gf(), gf(), gf()]; + set25519(q[0], X); + set25519(q[1], Y); + set25519(q[2], gf1); + M(q[3], X, Y); + scalarmult(p, q, s); + } + + function crypto_sign_keypair(pk, sk, seeded) { + var d = new Uint8Array(64); + var p = [gf(), gf(), gf(), gf()]; + var i; + + if (!seeded) randombytes(sk, 32); + crypto_hash(d, sk, 32); + d[0] &= 248; + d[31] &= 127; + d[31] |= 64; + + scalarbase(p, d); + pack(pk, p); + + for (i = 0; i < 32; i++) sk[i+32] = pk[i]; + return 0; + } + + var L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]); + + function modL(r, x) { + var carry, i, j, k; + for (i = 63; i >= 32; --i) { + carry = 0; + for (j = i - 32, k = i - 12; j < k; ++j) { + x[j] += carry - 16 * x[i] * L[j - (i - 32)]; + carry = Math.floor((x[j] + 128) / 256); + x[j] -= carry * 256; + } + x[j] += carry; + x[i] = 0; + } + carry = 0; + for (j = 0; j < 32; j++) { + x[j] += carry - (x[31] >> 4) * L[j]; + carry = x[j] >> 8; + x[j] &= 255; + } + for (j = 0; j < 32; j++) x[j] -= carry * L[j]; + for (i = 0; i < 32; i++) { + x[i+1] += x[i] >> 8; + r[i] = x[i] & 255; + } + } + + function reduce(r) { + var x = new Float64Array(64), i; + for (i = 0; i < 64; i++) x[i] = r[i]; + for (i = 0; i < 64; i++) r[i] = 0; + modL(r, x); + } + + // Note: difference from C - smlen returned, not passed as argument. + function crypto_sign(sm, m, n, sk) { + var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64); + var i, j, x = new Float64Array(64); + var p = [gf(), gf(), gf(), gf()]; + + crypto_hash(d, sk, 32); + d[0] &= 248; + d[31] &= 127; + d[31] |= 64; + + var smlen = n + 64; + for (i = 0; i < n; i++) sm[64 + i] = m[i]; + for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i]; + + crypto_hash(r, sm.subarray(32), n+32); + reduce(r); + scalarbase(p, r); + pack(sm, p); + + for (i = 32; i < 64; i++) sm[i] = sk[i]; + crypto_hash(h, sm, n + 64); + reduce(h); + + for (i = 0; i < 64; i++) x[i] = 0; + for (i = 0; i < 32; i++) x[i] = r[i]; + for (i = 0; i < 32; i++) { + for (j = 0; j < 32; j++) { + x[i+j] += h[i] * d[j]; + } + } + + modL(sm.subarray(32), x); + return smlen; + } + + function unpackneg(r, p) { + var t = gf(), chk = gf(), num = gf(), + den = gf(), den2 = gf(), den4 = gf(), + den6 = gf(); + + set25519(r[2], gf1); + unpack25519(r[1], p); + S(num, r[1]); + M(den, num, D); + Z(num, num, r[2]); + A(den, r[2], den); + + S(den2, den); + S(den4, den2); + M(den6, den4, den2); + M(t, den6, num); + M(t, t, den); + + pow2523(t, t); + M(t, t, num); + M(t, t, den); + M(t, t, den); + M(r[0], t, den); + + S(chk, r[0]); + M(chk, chk, den); + if (neq25519(chk, num)) M(r[0], r[0], I); + + S(chk, r[0]); + M(chk, chk, den); + if (neq25519(chk, num)) return -1; + + if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]); + + M(r[3], r[0], r[1]); + return 0; + } + + function crypto_sign_open(m, sm, n, pk) { + var i; + var t = new Uint8Array(32), h = new Uint8Array(64); + var p = [gf(), gf(), gf(), gf()], + q = [gf(), gf(), gf(), gf()]; + + if (n < 64) return -1; + + if (unpackneg(q, pk)) return -1; + + for (i = 0; i < n; i++) m[i] = sm[i]; + for (i = 0; i < 32; i++) m[i+32] = pk[i]; + crypto_hash(h, m, n); + reduce(h); + scalarmult(p, q, h); + + scalarbase(q, sm.subarray(32)); + add(p, q); + pack(t, p); + + n -= 64; + if (crypto_verify_32(sm, 0, t, 0)) { + for (i = 0; i < n; i++) m[i] = 0; + return -1; + } + + for (i = 0; i < n; i++) m[i] = sm[i + 64]; + return n; + } + + var crypto_secretbox_KEYBYTES = 32, + crypto_secretbox_NONCEBYTES = 24, + crypto_secretbox_ZEROBYTES = 32, + crypto_secretbox_BOXZEROBYTES = 16, + crypto_scalarmult_BYTES = 32, + crypto_scalarmult_SCALARBYTES = 32, + crypto_box_PUBLICKEYBYTES = 32, + crypto_box_SECRETKEYBYTES = 32, + crypto_box_BEFORENMBYTES = 32, + crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES, + crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES, + crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES, + crypto_sign_BYTES = 64, + crypto_sign_PUBLICKEYBYTES = 32, + crypto_sign_SECRETKEYBYTES = 64, + crypto_sign_SEEDBYTES = 32, + crypto_hash_BYTES = 64; + + nacl.lowlevel = { + crypto_core_hsalsa20: crypto_core_hsalsa20, + crypto_stream_xor: crypto_stream_xor, + crypto_stream: crypto_stream, + crypto_stream_salsa20_xor: crypto_stream_salsa20_xor, + crypto_stream_salsa20: crypto_stream_salsa20, + crypto_onetimeauth: crypto_onetimeauth, + crypto_onetimeauth_verify: crypto_onetimeauth_verify, + crypto_verify_16: crypto_verify_16, + crypto_verify_32: crypto_verify_32, + crypto_secretbox: crypto_secretbox, + crypto_secretbox_open: crypto_secretbox_open, + crypto_scalarmult: crypto_scalarmult, + crypto_scalarmult_base: crypto_scalarmult_base, + crypto_box_beforenm: crypto_box_beforenm, + crypto_box_afternm: crypto_box_afternm, + crypto_box: crypto_box, + crypto_box_open: crypto_box_open, + crypto_box_keypair: crypto_box_keypair, + crypto_hash: crypto_hash, + crypto_sign: crypto_sign, + crypto_sign_keypair: crypto_sign_keypair, + crypto_sign_open: crypto_sign_open, + + crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES, + crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES, + crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES, + crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES, + crypto_scalarmult_BYTES: crypto_scalarmult_BYTES, + crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES, + crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES, + crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES, + crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES, + crypto_box_NONCEBYTES: crypto_box_NONCEBYTES, + crypto_box_ZEROBYTES: crypto_box_ZEROBYTES, + crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES, + crypto_sign_BYTES: crypto_sign_BYTES, + crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES, + crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES, + crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES, + crypto_hash_BYTES: crypto_hash_BYTES, + + gf: gf, + D: D, + L: L, + pack25519: pack25519, + unpack25519: unpack25519, + M: M, + A: A, + S: S, + Z: Z, + pow2523: pow2523, + add: add, + set25519: set25519, + modL: modL, + scalarmult: scalarmult, + scalarbase: scalarbase, + }; + + /* High-level API */ + + function checkLengths(k, n) { + if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size'); + if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size'); + } + + function checkBoxLengths(pk, sk) { + if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size'); + if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size'); + } + + function checkArrayTypes() { + for (var i = 0; i < arguments.length; i++) { + if (!(arguments[i] instanceof Uint8Array)) + throw new TypeError('unexpected type, use Uint8Array'); + } + } + + function cleanup(arr) { + for (var i = 0; i < arr.length; i++) arr[i] = 0; + } + + nacl.randomBytes = function(n) { + var b = new Uint8Array(n); + randombytes(b, n); + return b; + }; + + nacl.secretbox = function(msg, nonce, key) { + checkArrayTypes(msg, nonce, key); + checkLengths(key, nonce); + var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length); + var c = new Uint8Array(m.length); + for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i]; + crypto_secretbox(c, m, m.length, nonce, key); + return c.subarray(crypto_secretbox_BOXZEROBYTES); + }; + + nacl.secretbox.open = function(box, nonce, key) { + checkArrayTypes(box, nonce, key); + checkLengths(key, nonce); + var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length); + var m = new Uint8Array(c.length); + for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i]; + if (c.length < 32) return null; + if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null; + return m.subarray(crypto_secretbox_ZEROBYTES); + }; + + nacl.secretbox.keyLength = crypto_secretbox_KEYBYTES; + nacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES; + nacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES; + + nacl.scalarMult = function(n, p) { + checkArrayTypes(n, p); + if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); + if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size'); + var q = new Uint8Array(crypto_scalarmult_BYTES); + crypto_scalarmult(q, n, p); + return q; + }; + + nacl.scalarMult.base = function(n) { + checkArrayTypes(n); + if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); + var q = new Uint8Array(crypto_scalarmult_BYTES); + crypto_scalarmult_base(q, n); + return q; + }; + + nacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES; + nacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES; + + nacl.box = function(msg, nonce, publicKey, secretKey) { + var k = nacl.box.before(publicKey, secretKey); + return nacl.secretbox(msg, nonce, k); + }; + + nacl.box.before = function(publicKey, secretKey) { + checkArrayTypes(publicKey, secretKey); + checkBoxLengths(publicKey, secretKey); + var k = new Uint8Array(crypto_box_BEFORENMBYTES); + crypto_box_beforenm(k, publicKey, secretKey); + return k; + }; + + nacl.box.after = nacl.secretbox; + + nacl.box.open = function(msg, nonce, publicKey, secretKey) { + var k = nacl.box.before(publicKey, secretKey); + return nacl.secretbox.open(msg, nonce, k); + }; + + nacl.box.open.after = nacl.secretbox.open; + + nacl.box.keyPair = function() { + var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); + var sk = new Uint8Array(crypto_box_SECRETKEYBYTES); + crypto_box_keypair(pk, sk); + return {publicKey: pk, secretKey: sk}; + }; + + nacl.box.keyPair.fromSecretKey = function(secretKey) { + checkArrayTypes(secretKey); + if (secretKey.length !== crypto_box_SECRETKEYBYTES) + throw new Error('bad secret key size'); + var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); + crypto_scalarmult_base(pk, secretKey); + return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; + }; + + nacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES; + nacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES; + nacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES; + nacl.box.nonceLength = crypto_box_NONCEBYTES; + nacl.box.overheadLength = nacl.secretbox.overheadLength; + + nacl.sign = function(msg, secretKey) { + checkArrayTypes(msg, secretKey); + if (secretKey.length !== crypto_sign_SECRETKEYBYTES) + throw new Error('bad secret key size'); + var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length); + crypto_sign(signedMsg, msg, msg.length, secretKey); + return signedMsg; + }; + + nacl.sign.open = function(signedMsg, publicKey) { + checkArrayTypes(signedMsg, publicKey); + if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) + throw new Error('bad public key size'); + var tmp = new Uint8Array(signedMsg.length); + var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey); + if (mlen < 0) return null; + var m = new Uint8Array(mlen); + for (var i = 0; i < m.length; i++) m[i] = tmp[i]; + return m; + }; + + nacl.sign.detached = function(msg, secretKey) { + var signedMsg = nacl.sign(msg, secretKey); + var sig = new Uint8Array(crypto_sign_BYTES); + for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i]; + return sig; + }; + + nacl.sign.detached.verify = function(msg, sig, publicKey) { + checkArrayTypes(msg, sig, publicKey); + if (sig.length !== crypto_sign_BYTES) + throw new Error('bad signature size'); + if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) + throw new Error('bad public key size'); + var sm = new Uint8Array(crypto_sign_BYTES + msg.length); + var m = new Uint8Array(crypto_sign_BYTES + msg.length); + var i; + for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i]; + for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i]; + return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0); + }; + + nacl.sign.keyPair = function() { + var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); + var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); + crypto_sign_keypair(pk, sk); + return {publicKey: pk, secretKey: sk}; + }; + + nacl.sign.keyPair.fromSecretKey = function(secretKey) { + checkArrayTypes(secretKey); + if (secretKey.length !== crypto_sign_SECRETKEYBYTES) + throw new Error('bad secret key size'); + var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); + for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i]; + return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; + }; + + nacl.sign.keyPair.fromSeed = function(seed) { + checkArrayTypes(seed); + if (seed.length !== crypto_sign_SEEDBYTES) + throw new Error('bad seed size'); + var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); + var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); + for (var i = 0; i < 32; i++) sk[i] = seed[i]; + crypto_sign_keypair(pk, sk, true); + return {publicKey: pk, secretKey: sk}; + }; + + nacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES; + nacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES; + nacl.sign.seedLength = crypto_sign_SEEDBYTES; + nacl.sign.signatureLength = crypto_sign_BYTES; + + nacl.hash = function(msg) { + checkArrayTypes(msg); + var h = new Uint8Array(crypto_hash_BYTES); + crypto_hash(h, msg, msg.length); + return h; + }; + + nacl.hash.hashLength = crypto_hash_BYTES; + + nacl.verify = function(x, y) { + checkArrayTypes(x, y); + // Zero length arguments are considered not equal. + if (x.length === 0 || y.length === 0) return false; + if (x.length !== y.length) return false; + return (vn(x, 0, y, 0, x.length) === 0) ? true : false; + }; + + nacl.setPRNG = function(fn) { + randombytes = fn; + }; + + (function() { + // Initialize PRNG if environment provides CSPRNG. + // If not, methods calling randombytes will throw. + var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null; + if (crypto && crypto.getRandomValues) { + // Browsers. + var QUOTA = 65536; + nacl.setPRNG(function(x, n) { + var i, v = new Uint8Array(n); + for (i = 0; i < n; i += QUOTA) { + crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA))); + } + for (i = 0; i < n; i++) x[i] = v[i]; + cleanup(v); + }); + } else if (typeof commonjsRequire !== 'undefined') { + // Node.js. + crypto = require$$0; + if (crypto && crypto.randomBytes) { + nacl.setPRNG(function(x, n) { + var i, v = crypto.randomBytes(n); + for (i = 0; i < n; i++) x[i] = v[i]; + cleanup(v); + }); + } + } + })(); + + })(module.exports ? module.exports : (self.nacl = self.nacl || {})); + } (naclFast)); + + var naclFastExports = naclFast.exports; + + var naclUtil = {exports: {}}; + + (function (module) { + // Written in 2014-2016 by Dmitry Chestnykh and Devi Mandiri. + // Public domain. + (function(root, f) { + if (module.exports) module.exports = f(); + else if (root.nacl) root.nacl.util = f(); + else { + root.nacl = {}; + root.nacl.util = f(); + } + }(commonjsGlobal, function() { + + var util = {}; + + function validateBase64(s) { + if (!(/^(?:[A-Za-z0-9+\/]{2}[A-Za-z0-9+\/]{2})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/.test(s))) { + throw new TypeError('invalid encoding'); + } + } + + util.decodeUTF8 = function(s) { + if (typeof s !== 'string') throw new TypeError('expected string'); + var i, d = unescape(encodeURIComponent(s)), b = new Uint8Array(d.length); + for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i); + return b; + }; + + util.encodeUTF8 = function(arr) { + var i, s = []; + for (i = 0; i < arr.length; i++) s.push(String.fromCharCode(arr[i])); + return decodeURIComponent(escape(s.join(''))); + }; + + if (typeof atob === 'undefined') { + // Node.js + + if (typeof Buffer.from !== 'undefined') { + // Node v6 and later + util.encodeBase64 = function (arr) { // v6 and later + return Buffer.from(arr).toString('base64'); + }; + + util.decodeBase64 = function (s) { + validateBase64(s); + return new Uint8Array(Array.prototype.slice.call(Buffer.from(s, 'base64'), 0)); + }; + + } else { + // Node earlier than v6 + util.encodeBase64 = function (arr) { // v6 and later + return (new Buffer(arr)).toString('base64'); + }; + + util.decodeBase64 = function(s) { + validateBase64(s); + return new Uint8Array(Array.prototype.slice.call(new Buffer(s, 'base64'), 0)); + }; + } + + } else { + // Browsers + + util.encodeBase64 = function(arr) { + var i, s = [], len = arr.length; + for (i = 0; i < len; i++) s.push(String.fromCharCode(arr[i])); + return btoa(s.join('')); + }; + + util.decodeBase64 = function(s) { + validateBase64(s); + var i, d = atob(s), b = new Uint8Array(d.length); + for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i); + return b; + }; + + } + + return util; + + })); + } (naclUtil)); + + var naclUtilExports = naclUtil.exports; + + const PRIVATE_KEY_LENGTH = 64; + const PUBLIC_KEY_LENGTH = 64; + /** + * A class representing a SealingKey which provides cryptographic sealing (encryption) + * and unsealing (decryption) capabilities. + */ + class SealingKey { + /** + * Constructs a SealingKey instance with the given private and public keys. + * + * @param {string} privateKey - The private key used for decryption. + * @param {string} publicKey - The public key used for encryption. + * @throws Will throw an error if the provided keys lengths do not match + * the required lengths for private and public keys. + */ + constructor(privateKey, publicKey) { + /** + * Unseals (decrypts) the provided ciphertext using the instance's private key. + * + * @param {string | Uint8Array} ciphertext - The encrypted data to be decrypted. + * @returns BigInt - The decrypted message as a bigint. + * @throws Will throw an error if the decryption process fails. + */ + this.unseal = (ciphertext) => { + let parsedData = undefined; + try { + if (typeof ciphertext === "string") { + parsedData = JSON.parse(ciphertext); + } + } + catch { + // ignore errors + } + if (!parsedData) { + const toDecrypt = typeof ciphertext === "string" ? fromHexString(ciphertext) : ciphertext; + // decode json structure that gets returned from the chain + const jsonString = Buffer.from(toDecrypt).toString("utf8"); + parsedData = JSON.parse(jsonString); + } + if (!parsedData) { + throw new Error("Failed to parse sealed data"); + } + // assemble decryption parameters + const nonce = naclUtilExports.decodeBase64(parsedData.nonce); + const ephemPublicKey = naclUtilExports.decodeBase64(parsedData.ephemPublicKey); + const dataToDecrypt = naclUtilExports.decodeBase64(parsedData.ciphertext); + // call the nacl box function to decrypt the data + const decryptedMessage = naclFastExports.box.open(dataToDecrypt, nonce, ephemPublicKey, fromHexString(this.privateKey)); + if (!decryptedMessage) { + throw new Error("Failed to decrypt message"); + } + return toBigInt(decryptedMessage); + }; + if (privateKey.length !== PRIVATE_KEY_LENGTH) { + throw new Error(`Private key must be of length ${PRIVATE_KEY_LENGTH}`); + } + if (publicKey.length !== PUBLIC_KEY_LENGTH) { + throw new Error(`Private key must be of length ${PUBLIC_KEY_LENGTH}`); + } + this.privateKey = privateKey; + this.publicKey = publicKey; + } } - } - - function wasm$1(imports){return _loadWasmModule(0, null, 'AGFzbQEAAAABjwREYAJ/fwBgAX8AYAN/f38AYAJ/fwF/YAh/f39/f39/fwBgAX8Bf2ADf39/AX9gBH9/f38AYAABf2AAAGAFf39/f38AYAN/fn8AYAN/f34AYAR/f39+AGAGf39/f39/AGAFf39/f38Bf2AFf39/fn4AYAJ/fgBgBn9/f39/fwF/YAN/f34Bf2AEf35+fwBgBH9/f38Bf2AGf39/f35+AGACf38BfmABfgF/YAJ+fgF/YAJ/fABgBX9/fn9/AGAHf39/f39/fwBgAXwBfGALf39/f39/f39/f38AYAZ/f39+f38AYAR/f35+AGAEf35+fgBgBH9+f38AYAJ/fgF/YAF8AX9gBn9+f39/fwBgCX9/f39/f3x8fwBgA35/fwBgCX9/f39/f39/fwBgDH9+fn9/f39/f39/fwBgBH9+f3wAYAl/f39/f39+fn4AYAp/f39/f39+fn5+AGAHf39/f39/fwF/YAN+f38Bf2ABfwF+YAV/f39/fgF+YAN/f38BfmAEf398fABgBX9+f35/AGADf39+AX5gCX9/f39/f35+fwBgC39/f39/f39/f39/AX9gBH9/f38BfmADf35+AGACfn8AYAJ+fgF8YAh/f39/fn5+fgBgBX9+fn9/AGACf34BfmAEf39+fgF+YAV/f3x/fwBgBH98f38AYAV/f31/fwBgBH99f38AYAN8fHwBfAL4D0IDd2JnGl9fd2JpbmRnZW5fYmlnaW50X2Zyb21fdTY0ABgDd2JnDl9fd2JpbmRnZW5fc2hyAAMDd2JnGl9fd2JpbmRnZW5fb2JqZWN0X2Ryb3BfcmVmAAEDd2JnGl9fd2JpbmRnZW5fYmlnaW50X2Zyb21faTY0ABgDd2JnE19fd2JpbmRnZW5fanN2YWxfZXEAAwN3YmcUX193YmluZGdlbl9lcnJvcl9uZXcAAwN3YmcbX193YmluZGdlbl9iaWdpbnRfZnJvbV9pMTI4ABkDd2JnG19fd2JpbmRnZW5fYmlnaW50X2Zyb21fdTEyOAAZA3diZxNfX3diZ19maGV1aW50MTZfbmV3AAUDd2JnFF9fd2JnX2ZoZXVpbnQxNjBfbmV3AAUDd2JnFF9fd2JnX2ZoZXVpbnQyNTZfbmV3AAUDd2JnE19fd2JnX2ZoZXVpbnQzMl9uZXcABQN3YmcUX193YmdfZmhldWludDEyOF9uZXcABQN3YmcSX193YmdfZmhldWludDhfbmV3AAUDd2JnE19fd2JnX2ZoZXVpbnQ2NF9uZXcABQN3YmcSX193YmdfZmhlaW50MzJfbmV3AAUDd2JnEl9fd2JnX2ZoZWludDY0X25ldwAFA3diZxFfX3diZ19maGVib29sX25ldwAFA3diZxNfX3diZ19maGVpbnQyNTZfbmV3AAUDd2JnE19fd2JnX2ZoZWludDE2MF9uZXcABQN3YmcSX193YmdfZmhlaW50MTZfbmV3AAUDd2JnEV9fd2JnX2ZoZWludDhfbmV3AAUDd2JnE19fd2JnX2ZoZWludDEyOF9uZXcABQN3YmcWX193YmluZGdlbl9ib29sZWFuX2dldAAFA3diZxpfX3diaW5kZ2VuX2JpZ2ludF9mcm9tX3N0cgADA3diZxJfX3diaW5kZ2VuX2JpdF9hbmQAAwN3YmcVX193YmluZGdlbl9udW1iZXJfbmV3ACQDd2JnDV9fd2JpbmRnZW5fbHQAAwN3YmcOX193YmluZGdlbl9uZWcABQN3YmcOX193YmluZGdlbl9zaGwAAwN3YmcOX193YmluZGdlbl9hZGQAAwN3YmcRX193YmluZGdlbl9iaXRfb3IAAwN3YmcaX193YmdfbmV3X2FiZGE3NmU4ODNiYThhNWYACAN3YmccX193Ymdfc3RhY2tfNjU4Mjc5ZmU0NDU0MWNmNgAAA3diZxxfX3diZ19lcnJvcl9mODUxNjY3YWY3MWJjZmM2AAADd2JnHV9fd2JnX2NyeXB0b183MGE5NmRlM2I2YjczZGFjAAUDd2JnFF9fd2JpbmRnZW5faXNfb2JqZWN0AAUDd2JnHl9fd2JnX3Byb2Nlc3NfZGQxNTc3NDQ1MTUyMTEyZQAFA3diZx9fX3diZ192ZXJzaW9uc181ODAzNmJlYzNhZGQ5ZTZmAAUDd2JnG19fd2JnX25vZGVfNmE5ZDI4MjA1ZWQ1YjBkOAAFA3diZxRfX3diaW5kZ2VuX2lzX3N0cmluZwAFA3diZx5fX3diZ19yZXF1aXJlX2YwNWQ3Nzk3Njk3NjRlODIACAN3YmcVX193YmluZGdlbl9zdHJpbmdfbmV3AAMDd2JnH19fd2JnX21zQ3J5cHRvX2FkYmM3NzBlYzllY2E5YzcABQN3YmclX193YmdfcmFuZG9tRmlsbFN5bmNfZTk1MDM2NmM0Mjc2NGEwNwAAA3diZyZfX3diZ19nZXRSYW5kb21WYWx1ZXNfMzc3NDc0NGUyMjFhMjJhZAAAA3diZxZfX3diaW5kZ2VuX2lzX2Z1bmN0aW9uAAUDd2JnIF9fd2JnX25ld25vYXJnc19lNjQzODU1YzY1NzJhNGE4AAMDd2JnG19fd2JnX2NhbGxfZjk2YjM5ODUxNTYzNTUxNAADA3diZxtfX3diZ19zZWxmX2I5YWFkN2YxYzYxOGJmYWYACAN3YmcdX193Ymdfd2luZG93XzU1ZTQ2OTg0MmM5OGIwODYACAN3YmchX193YmdfZ2xvYmFsVGhpc19kMDk1N2UzMDI3NTI1NDdlAAgDd2JnHV9fd2JnX2dsb2JhbF9hZTJmODczMTJiODk4N2ZiAAgDd2JnF19fd2JpbmRnZW5faXNfdW5kZWZpbmVkAAUDd2JnG19fd2JnX2NhbGxfMzU3ODJlOWExYWE1ZTA5MQAGA3diZx1fX3diZ19idWZmZXJfZmNiZmI2ZDg4YjI3MzJlOQAFA3diZzFfX3diZ19uZXd3aXRoYnl0ZW9mZnNldGFuZGxlbmd0aF85MmMyNTE5ODljNDg1Nzg1AAYDd2JnGl9fd2JnX25ld19iYzVkOWFhZDNmOWFjODBlAAUDd2JnGl9fd2JnX3NldF80YjNhYTg0NDVhYzFlOTFjAAIDd2JnJF9fd2JnX25ld3dpdGhsZW5ndGhfODllY2ExOGYyNjAzYTk5OQAFA3diZx9fX3diZ19zdWJhcnJheV83NjQ5ZDAyN2IyYjE0MWIzAAYDd2JnG19fd2JpbmRnZW5fb2JqZWN0X2Nsb25lX3JlZgAFA3diZxxfX3diaW5kZ2VuX2JpZ2ludF9nZXRfYXNfaTY0AAADd2JnF19fd2JpbmRnZW5fZGVidWdfc3RyaW5nAAADd2JnEF9fd2JpbmRnZW5fdGhyb3cAAAN3YmcRX193YmluZGdlbl9tZW1vcnkACAO2CbQJBQAlGhsAAgcHAgwDBgMGDgAmBwAAAAAAAAIDDgISCgonAAAFAgICAgEBBgAAAQIAAAYAAAQEAygEAAAAAAAGAQAAAAcHAikAAAoKAw4AKgAKAAcHAgErAwEBAw4BAQAsHAMAAwMtAA8dAAMDAh4DAwMDAwMDAwICAgIBAQACAgICAgICAgIDLi8DAgICAgIeAgICAgICBwgAHx8DAAAwAwMDAgMDAwMDAwMDBgMDAwADAwEODgAaAAIHAAEAAAAAAAAAAAADAAAAAQECBwAAAAoDAQUQAQABAAIAABYAAAACAAAAAAICAgICAgICAgICAgAAAAMAAAAAAAEHBwcHBwAAAAASBgYDAAcPMQMHBwMABgcMDAwMDAwMDAwRAAEOAAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAMFAAACMwIAEDQHBwAXADU2AAcHBwcHBwcCCAU3AQAWFgAAAAAAAgIDEgAABwcAAgIIBQAAAgICAwcDAwAFAAcAAAABAAAAAAAAAgICAgICOAICCTkCDQ0BAwM6AgIAAAAAAAAAFwACAAIAAAAACAEXAw0NDQ0NDQ0CAgICAgICAgICAgICAgAAAhMAAwMDFDsAHAADAQAAAgAAIAMCAgMAAAcCAgICAwIDAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgILCwsLCwICAgICAgICAgICAgICAgsLCwsLCgMAAAcHBwcHBwcHBwcHIQECAgICAgICAgILAgICCwIBAwMJCAAgAAE8BQUBBwYAAAMBEAMBAgAAAAAAAAAAACIBAAUDAAAHAwICAgICEwACAAAAAQABAAICAAIDAwMHAxMTBxEAABEAEQAFAAEAAgUBAAIAARQUAgIAAAEFBQUFAAUFBQEBARQJBQMBAAECAQEABQEAIwEDAgMKAwECAAEAAwEADAEBAQMDCSMAAAAAAAIAAgACAgIAAAIJCQAQAQ4BAAIAAz0DAwUBAQEABQMFAAYABgIBCQADAAAFAQUFBQEBAwUIEAEAABEPAyEABQMCAwMICAUAAwEDAQMDAgEBCQkJCQABBQADBQMFBwcHBwMDBwcHAwMDAAADAQEDAwMVAwEFBQUFBQUFAAMDAwMDAwMDAwMDAwUFBQUFBQUBAwMDAwUDAwMBAgECAAACAQMHAQEIAQUBAQEDAwACBQIABQUIBQAAChIDAwABAz4BChs/D0EABRUBCAMFBwUDAQEGCAEABQUFAQMDAQMDBh0DAQEDBQEVAgMDBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAwMGBwEFAwADCgMCAwMDAAEAAgACCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQMDAwAAAAAAAwYBBgUDAwMDAwUDAwEDAwEDAQEBAQEBAwMDAAkJAwADAwkDAAADAwMAAwMGBgZDBgYFAwUDCQgDAAEBBQUBBAQHAXAB4APgAwUDAQARBgkBfwFBgIDAAAsHz3zUAwZtZW1vcnkCAA9pbml0X3BhbmljX2hvb2sAzgYYX193YmdfdGZoZWNsaWVudGtleV9mcmVlAIIGFnRmaGVjbGllbnRrZXlfZ2VuZXJhdGUA+AQgdGZoZWNsaWVudGtleV9nZW5lcmF0ZV93aXRoX3NlZWQApgQXdGZoZWNsaWVudGtleV9zZXJpYWxpemUA4gIZdGZoZWNsaWVudGtleV9kZXNlcmlhbGl6ZQDaAyJfX3diZ190ZmhlY29tcHJlc3NlZHNlcnZlcmtleV9mcmVlAOsFG3RmaGVjb21wcmVzc2Vkc2VydmVya2V5X25ldwCJBCF0ZmhlY29tcHJlc3NlZHNlcnZlcmtleV9zZXJpYWxpemUA4wIjdGZoZWNvbXByZXNzZWRzZXJ2ZXJrZXlfZGVzZXJpYWxpemUA2wMYX193YmdfdGZoZXB1YmxpY2tleV9mcmVlAMIGEXRmaGVwdWJsaWNrZXlfbmV3ANwDF3RmaGVwdWJsaWNrZXlfc2VyaWFsaXplAOQCGXRmaGVwdWJsaWNrZXlfZGVzZXJpYWxpemUA9wMiX193YmdfdGZoZWNvbXByZXNzZWRwdWJsaWNrZXlfZnJlZQDDBht0ZmhlY29tcHJlc3NlZHB1YmxpY2tleV9uZXcA3QMidGZoZWNvbXByZXNzZWRwdWJsaWNrZXlfZGVjb21wcmVzcwDeAyF0ZmhlY29tcHJlc3NlZHB1YmxpY2tleV9zZXJpYWxpemUA5QIjdGZoZWNvbXByZXNzZWRwdWJsaWNrZXlfZGVzZXJpYWxpemUA+AMfX193YmdfdGZoZWNvbXBhY3RwdWJsaWNrZXlfZnJlZQDCBhh0ZmhlY29tcGFjdHB1YmxpY2tleV9uZXcA3wMedGZoZWNvbXBhY3RwdWJsaWNrZXlfc2VyaWFsaXplAOQCIHRmaGVjb21wYWN0cHVibGlja2V5X2Rlc2VyaWFsaXplAPkDKV9fd2JnX3RmaGVjb21wcmVzc2VkY29tcGFjdHB1YmxpY2tleV9mcmVlAMMGInRmaGVjb21wcmVzc2VkY29tcGFjdHB1YmxpY2tleV9uZXcA4AModGZoZWNvbXByZXNzZWRjb21wYWN0cHVibGlja2V5X3NlcmlhbGl6ZQDlAip0ZmhlY29tcHJlc3NlZGNvbXBhY3RwdWJsaWNrZXlfZGVzZXJpYWxpemUA+gMpdGZoZWNvbXByZXNzZWRjb21wYWN0cHVibGlja2V5X2RlY29tcHJlc3MA4QMVX193YmdfdGZoZWNvbmZpZ19mcmVlAPcHHF9fd2JnX3RmaGVjb25maWdidWlsZGVyX2ZyZWUA9wcZdGZoZWNvbmZpZ2J1aWxkZXJfZGVmYXVsdADrBi90ZmhlY29uZmlnYnVpbGRlcl9kZWZhdWx0X3dpdGhfc21hbGxfZW5jcnlwdGlvbgDsBhd0ZmhlY29uZmlnYnVpbGRlcl9idWlsZADZByJmaGV1aW50MTI4X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AKoEImZoZXVpbnQxMjhfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkAqwQtZmhldWludDEyOF9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5AKwEKmZoZXVpbnQxMjhfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCtBBJmaGV1aW50MTI4X2RlY3J5cHQAyAMUZmhldWludDEyOF9zZXJpYWxpemUA5wIWZmhldWludDEyOF9kZXNlcmlhbGl6ZQD7AxlmaGV1aW50MTI4X3NhZmVfc2VyaWFsaXplANUCG2ZoZXVpbnQxMjhfc2FmZV9kZXNlcmlhbGl6ZQDwAyxjb21wcmVzc2VkZmhldWludDEyOF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQCuBB9jb21wcmVzc2VkZmhldWludDEyOF9kZWNvbXByZXNzAOQDHmNvbXByZXNzZWRmaGV1aW50MTI4X3NlcmlhbGl6ZQDoAiBjb21wcmVzc2VkZmhldWludDEyOF9kZXNlcmlhbGl6ZQDlAyNjb21wcmVzc2VkZmhldWludDEyOF9zYWZlX3NlcmlhbGl6ZQDWAiVjb21wcmVzc2VkZmhldWludDEyOF9zYWZlX2Rlc2VyaWFsaXplANQDMWNvbXBhY3RmaGV1aW50MTI4X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAhwUbY29tcGFjdGZoZXVpbnQxMjhfc2VyaWFsaXplAOkCHWNvbXBhY3RmaGV1aW50MTI4X2Rlc2VyaWFsaXplAPwDIGNvbXBhY3RmaGV1aW50MTI4X3NhZmVfc2VyaWFsaXplANcCImNvbXBhY3RmaGV1aW50MTI4X3NhZmVfZGVzZXJpYWxpemUA8QM1Y29tcGFjdGZoZXVpbnQxMjhsaXN0X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAkAMcY29tcGFjdGZoZXVpbnQxMjhsaXN0X2V4cGFuZADqAh9jb21wYWN0ZmhldWludDEyOGxpc3Rfc2VyaWFsaXplAOkCIWNvbXBhY3RmaGV1aW50MTI4bGlzdF9kZXNlcmlhbGl6ZQD9AyJmaGV1aW50MTYwX2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AK8EImZoZXVpbnQxNjBfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkAsAQtZmhldWludDE2MF9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5ALEEKmZoZXVpbnQxNjBfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCyBBJmaGV1aW50MTYwX2RlY3J5cHQAyQMUZmhldWludDE2MF9zZXJpYWxpemUA5wIWZmhldWludDE2MF9kZXNlcmlhbGl6ZQD7AxlmaGV1aW50MTYwX3NhZmVfc2VyaWFsaXplANUCG2ZoZXVpbnQxNjBfc2FmZV9kZXNlcmlhbGl6ZQDwAyxjb21wcmVzc2VkZmhldWludDE2MF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQCzBB9jb21wcmVzc2VkZmhldWludDE2MF9kZWNvbXByZXNzAOQDHmNvbXByZXNzZWRmaGV1aW50MTYwX3NlcmlhbGl6ZQDoAiBjb21wcmVzc2VkZmhldWludDE2MF9kZXNlcmlhbGl6ZQDlAyNjb21wcmVzc2VkZmhldWludDE2MF9zYWZlX3NlcmlhbGl6ZQDWAiVjb21wcmVzc2VkZmhldWludDE2MF9zYWZlX2Rlc2VyaWFsaXplANQDMWNvbXBhY3RmaGV1aW50MTYwX2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAiAUbY29tcGFjdGZoZXVpbnQxNjBfc2VyaWFsaXplAOkCHWNvbXBhY3RmaGV1aW50MTYwX2Rlc2VyaWFsaXplAPwDIGNvbXBhY3RmaGV1aW50MTYwX3NhZmVfc2VyaWFsaXplANcCImNvbXBhY3RmaGV1aW50MTYwX3NhZmVfZGVzZXJpYWxpemUA8QM1Y29tcGFjdGZoZXVpbnQxNjBsaXN0X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAkQMcY29tcGFjdGZoZXVpbnQxNjBsaXN0X2V4cGFuZADrAh9jb21wYWN0ZmhldWludDE2MGxpc3Rfc2VyaWFsaXplAOkCIWNvbXBhY3RmaGV1aW50MTYwbGlzdF9kZXNlcmlhbGl6ZQD9AyJmaGV1aW50MjU2X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5ALQEImZoZXVpbnQyNTZfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkAtQQtZmhldWludDI1Nl9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5ALYEKmZoZXVpbnQyNTZfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQC3BBJmaGV1aW50MjU2X2RlY3J5cHQAyQMUZmhldWludDI1Nl9zZXJpYWxpemUA5wIWZmhldWludDI1Nl9kZXNlcmlhbGl6ZQD7AxlmaGV1aW50MjU2X3NhZmVfc2VyaWFsaXplANUCG2ZoZXVpbnQyNTZfc2FmZV9kZXNlcmlhbGl6ZQDwAyxjb21wcmVzc2VkZmhldWludDI1Nl9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQC4BB9jb21wcmVzc2VkZmhldWludDI1Nl9kZWNvbXByZXNzAOQDHmNvbXByZXNzZWRmaGV1aW50MjU2X3NlcmlhbGl6ZQDoAiBjb21wcmVzc2VkZmhldWludDI1Nl9kZXNlcmlhbGl6ZQDlAyNjb21wcmVzc2VkZmhldWludDI1Nl9zYWZlX3NlcmlhbGl6ZQDWAiVjb21wcmVzc2VkZmhldWludDI1Nl9zYWZlX2Rlc2VyaWFsaXplANQDMWNvbXBhY3RmaGV1aW50MjU2X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAiQUbY29tcGFjdGZoZXVpbnQyNTZfc2VyaWFsaXplAOkCHWNvbXBhY3RmaGV1aW50MjU2X2Rlc2VyaWFsaXplAPwDIGNvbXBhY3RmaGV1aW50MjU2X3NhZmVfc2VyaWFsaXplANcCImNvbXBhY3RmaGV1aW50MjU2X3NhZmVfZGVzZXJpYWxpemUA8QM1Y29tcGFjdGZoZXVpbnQyNTZsaXN0X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAkgMcY29tcGFjdGZoZXVpbnQyNTZsaXN0X2V4cGFuZADsAh9jb21wYWN0ZmhldWludDI1Nmxpc3Rfc2VyaWFsaXplAOkCIWNvbXBhY3RmaGV1aW50MjU2bGlzdF9kZXNlcmlhbGl6ZQD9AxRfX3diZ19maGVpbnQxMjhfZnJlZQDOByFmaGVpbnQxMjhfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkAuQQhZmhlaW50MTI4X2VuY3J5cHRfd2l0aF9wdWJsaWNfa2V5ALoELGZoZWludDEyOF9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5ALsEKWZoZWludDEyOF9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5ALwEEWZoZWludDEyOF9kZWNyeXB0AMoDE2ZoZWludDEyOF9zZXJpYWxpemUA5wIVZmhlaW50MTI4X2Rlc2VyaWFsaXplAP4DGGZoZWludDEyOF9zYWZlX3NlcmlhbGl6ZQDYAhpmaGVpbnQxMjhfc2FmZV9kZXNlcmlhbGl6ZQDyAx5fX3diZ19jb21wcmVzc2VkZmhlaW50MTI4X2ZyZWUA5gcrY29tcHJlc3NlZGZoZWludDEyOF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQC9BB5jb21wcmVzc2VkZmhlaW50MTI4X2RlY29tcHJlc3MA5gMdY29tcHJlc3NlZGZoZWludDEyOF9zZXJpYWxpemUA6AIfY29tcHJlc3NlZGZoZWludDEyOF9kZXNlcmlhbGl6ZQDnAyJjb21wcmVzc2VkZmhlaW50MTI4X3NhZmVfc2VyaWFsaXplANkCJGNvbXByZXNzZWRmaGVpbnQxMjhfc2FmZV9kZXNlcmlhbGl6ZQDVAxtfX3diZ19jb21wYWN0ZmhlaW50MTI4X2ZyZWUA2AYwY29tcGFjdGZoZWludDEyOF9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AIoFF2NvbXBhY3RmaGVpbnQxMjhfZXhwYW5kAOgDGmNvbXBhY3RmaGVpbnQxMjhfc2VyaWFsaXplAOkCHGNvbXBhY3RmaGVpbnQxMjhfZGVzZXJpYWxpemUA/wMfY29tcGFjdGZoZWludDEyOF9zYWZlX3NlcmlhbGl6ZQDaAiFjb21wYWN0ZmhlaW50MTI4X3NhZmVfZGVzZXJpYWxpemUA8wM0Y29tcGFjdGZoZWludDEyOGxpc3RfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCTAxtjb21wYWN0ZmhlaW50MTI4bGlzdF9leHBhbmQA7QIeY29tcGFjdGZoZWludDEyOGxpc3Rfc2VyaWFsaXplAOkCIGNvbXBhY3RmaGVpbnQxMjhsaXN0X2Rlc2VyaWFsaXplAIAEIWZoZWludDE2MF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQC+BCFmaGVpbnQxNjBfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkAvwQsZmhlaW50MTYwX2VuY3J5cHRfd2l0aF9jb21wcmVzc2VkX3B1YmxpY19rZXkAwAQpZmhlaW50MTYwX2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAwQQRZmhlaW50MTYwX2RlY3J5cHQAywMTZmhlaW50MTYwX3NlcmlhbGl6ZQDnAhVmaGVpbnQxNjBfZGVzZXJpYWxpemUA/gMYZmhlaW50MTYwX3NhZmVfc2VyaWFsaXplANgCGmZoZWludDE2MF9zYWZlX2Rlc2VyaWFsaXplAPIDK2NvbXByZXNzZWRmaGVpbnQxNjBfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkAwgQeY29tcHJlc3NlZGZoZWludDE2MF9kZWNvbXByZXNzAOYDHWNvbXByZXNzZWRmaGVpbnQxNjBfc2VyaWFsaXplAOgCH2NvbXByZXNzZWRmaGVpbnQxNjBfZGVzZXJpYWxpemUA5wMiY29tcHJlc3NlZGZoZWludDE2MF9zYWZlX3NlcmlhbGl6ZQDZAiRjb21wcmVzc2VkZmhlaW50MTYwX3NhZmVfZGVzZXJpYWxpemUA1QMwY29tcGFjdGZoZWludDE2MF9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AIsFGmNvbXBhY3RmaGVpbnQxNjBfc2VyaWFsaXplAOkCHGNvbXBhY3RmaGVpbnQxNjBfZGVzZXJpYWxpemUA/wMfY29tcGFjdGZoZWludDE2MF9zYWZlX3NlcmlhbGl6ZQDaAiFjb21wYWN0ZmhlaW50MTYwX3NhZmVfZGVzZXJpYWxpemUA8wM0Y29tcGFjdGZoZWludDE2MGxpc3RfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCUAxtjb21wYWN0ZmhlaW50MTYwbGlzdF9leHBhbmQA7gIeY29tcGFjdGZoZWludDE2MGxpc3Rfc2VyaWFsaXplAOkCIGNvbXBhY3RmaGVpbnQxNjBsaXN0X2Rlc2VyaWFsaXplAIAEIWZoZWludDI1Nl9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQDDBCFmaGVpbnQyNTZfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkAxAQsZmhlaW50MjU2X2VuY3J5cHRfd2l0aF9jb21wcmVzc2VkX3B1YmxpY19rZXkAxQQpZmhlaW50MjU2X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAxgQRZmhlaW50MjU2X2RlY3J5cHQAywMTZmhlaW50MjU2X3NlcmlhbGl6ZQDnAhVmaGVpbnQyNTZfZGVzZXJpYWxpemUA/gMYZmhlaW50MjU2X3NhZmVfc2VyaWFsaXplANgCGmZoZWludDI1Nl9zYWZlX2Rlc2VyaWFsaXplAPIDK2NvbXByZXNzZWRmaGVpbnQyNTZfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkAxwQeY29tcHJlc3NlZGZoZWludDI1Nl9kZWNvbXByZXNzAOYDHWNvbXByZXNzZWRmaGVpbnQyNTZfc2VyaWFsaXplAOgCH2NvbXByZXNzZWRmaGVpbnQyNTZfZGVzZXJpYWxpemUA5wMiY29tcHJlc3NlZGZoZWludDI1Nl9zYWZlX3NlcmlhbGl6ZQDZAiRjb21wcmVzc2VkZmhlaW50MjU2X3NhZmVfZGVzZXJpYWxpemUA1QMwY29tcGFjdGZoZWludDI1Nl9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AIwFGmNvbXBhY3RmaGVpbnQyNTZfc2VyaWFsaXplAOkCHGNvbXBhY3RmaGVpbnQyNTZfZGVzZXJpYWxpemUA/wMfY29tcGFjdGZoZWludDI1Nl9zYWZlX3NlcmlhbGl6ZQDaAiFjb21wYWN0ZmhlaW50MjU2X3NhZmVfZGVzZXJpYWxpemUA8wM0Y29tcGFjdGZoZWludDI1Nmxpc3RfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCVAxtjb21wYWN0ZmhlaW50MjU2bGlzdF9leHBhbmQA7wIeY29tcGFjdGZoZWludDI1Nmxpc3Rfc2VyaWFsaXplAOkCIGNvbXBhY3RmaGVpbnQyNTZsaXN0X2Rlc2VyaWFsaXplAIAEEl9fd2JnX2ZoZWJvb2xfZnJlZQDZBh9maGVib29sX2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AMgEH2ZoZWJvb2xfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkAyQQqZmhlYm9vbF9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5AMoEJ2ZoZWJvb2xfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQDLBA9maGVib29sX2RlY3J5cHQAlgQRZmhlYm9vbF9zZXJpYWxpemUA8AITZmhlYm9vbF9kZXNlcmlhbGl6ZQCBBBZmaGVib29sX3NhZmVfc2VyaWFsaXplANsCGGZoZWJvb2xfc2FmZV9kZXNlcmlhbGl6ZQD0AxxfX3diZ19jb21wcmVzc2VkZmhlYm9vbF9mcmVlALYGKWNvbXByZXNzZWRmaGVib29sX2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AMwEHGNvbXByZXNzZWRmaGVib29sX2RlY29tcHJlc3MA6QMbY29tcHJlc3NlZGZoZWJvb2xfc2VyaWFsaXplAPECHWNvbXByZXNzZWRmaGVib29sX2Rlc2VyaWFsaXplAIIEIGNvbXByZXNzZWRmaGVib29sX3NhZmVfc2VyaWFsaXplANwCImNvbXByZXNzZWRmaGVib29sX3NhZmVfZGVzZXJpYWxpemUA9QMZX193YmdfY29tcGFjdGZoZWJvb2xfZnJlZQDYBi5jb21wYWN0ZmhlYm9vbF9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AM0EFWNvbXBhY3RmaGVib29sX2V4cGFuZADqAxhjb21wYWN0ZmhlYm9vbF9zZXJpYWxpemUA6QIaY29tcGFjdGZoZWJvb2xfZGVzZXJpYWxpemUAgwQdY29tcGFjdGZoZWJvb2xfc2FmZV9zZXJpYWxpemUA3QIfY29tcGFjdGZoZWJvb2xfc2FmZV9kZXNlcmlhbGl6ZQD2Axljb21wYWN0ZmhlYm9vbGxpc3RfZXhwYW5kAPICHGNvbXBhY3RmaGVib29sbGlzdF9zZXJpYWxpemUA6QIeY29tcGFjdGZoZWJvb2xsaXN0X2Rlc2VyaWFsaXplAIQEIGZoZXVpbnQ4X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AM4EIGZoZXVpbnQ4X2VuY3J5cHRfd2l0aF9wdWJsaWNfa2V5AM8EK2ZoZXVpbnQ4X2VuY3J5cHRfd2l0aF9jb21wcmVzc2VkX3B1YmxpY19rZXkA0AQoZmhldWludDhfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQDRBBBmaGV1aW50OF9kZWNyeXB0AK0DEmZoZXVpbnQ4X3NlcmlhbGl6ZQDnAhRmaGV1aW50OF9kZXNlcmlhbGl6ZQD7AxdmaGV1aW50OF9zYWZlX3NlcmlhbGl6ZQDVAhlmaGV1aW50OF9zYWZlX2Rlc2VyaWFsaXplAPADKmNvbXByZXNzZWRmaGV1aW50OF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQDSBB1jb21wcmVzc2VkZmhldWludDhfZGVjb21wcmVzcwDkAxxjb21wcmVzc2VkZmhldWludDhfc2VyaWFsaXplAOgCHmNvbXByZXNzZWRmaGV1aW50OF9kZXNlcmlhbGl6ZQDlAyFjb21wcmVzc2VkZmhldWludDhfc2FmZV9zZXJpYWxpemUA1gIjY29tcHJlc3NlZGZoZXVpbnQ4X3NhZmVfZGVzZXJpYWxpemUA1AMvY29tcGFjdGZoZXVpbnQ4X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAjQUZY29tcGFjdGZoZXVpbnQ4X3NlcmlhbGl6ZQDpAhtjb21wYWN0ZmhldWludDhfZGVzZXJpYWxpemUA/AMeY29tcGFjdGZoZXVpbnQ4X3NhZmVfc2VyaWFsaXplANcCIGNvbXBhY3RmaGV1aW50OF9zYWZlX2Rlc2VyaWFsaXplAPEDGmNvbXBhY3RmaGV1aW50OGxpc3RfZXhwYW5kAPMCHWNvbXBhY3RmaGV1aW50OGxpc3Rfc2VyaWFsaXplAOkCH2NvbXBhY3RmaGV1aW50OGxpc3RfZGVzZXJpYWxpemUA/QMhZmhldWludDE2X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5ANMEIWZoZXVpbnQxNl9lbmNyeXB0X3dpdGhfcHVibGljX2tleQDUBCxmaGV1aW50MTZfZW5jcnlwdF93aXRoX2NvbXByZXNzZWRfcHVibGljX2tleQDVBClmaGV1aW50MTZfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQDWBBFmaGV1aW50MTZfZGVjcnlwdACuAxNmaGV1aW50MTZfc2VyaWFsaXplAOcCFWZoZXVpbnQxNl9kZXNlcmlhbGl6ZQD7AxhmaGV1aW50MTZfc2FmZV9zZXJpYWxpemUA1QIaZmhldWludDE2X3NhZmVfZGVzZXJpYWxpemUA8AMrY29tcHJlc3NlZGZoZXVpbnQxNl9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQDXBB5jb21wcmVzc2VkZmhldWludDE2X2RlY29tcHJlc3MA5AMdY29tcHJlc3NlZGZoZXVpbnQxNl9zZXJpYWxpemUA6AIfY29tcHJlc3NlZGZoZXVpbnQxNl9kZXNlcmlhbGl6ZQDlAyJjb21wcmVzc2VkZmhldWludDE2X3NhZmVfc2VyaWFsaXplANYCJGNvbXByZXNzZWRmaGV1aW50MTZfc2FmZV9kZXNlcmlhbGl6ZQDUAzBjb21wYWN0ZmhldWludDE2X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAjgUaY29tcGFjdGZoZXVpbnQxNl9zZXJpYWxpemUA6QIcY29tcGFjdGZoZXVpbnQxNl9kZXNlcmlhbGl6ZQD8Ax9jb21wYWN0ZmhldWludDE2X3NhZmVfc2VyaWFsaXplANcCIWNvbXBhY3RmaGV1aW50MTZfc2FmZV9kZXNlcmlhbGl6ZQDxAxtjb21wYWN0ZmhldWludDE2bGlzdF9leHBhbmQA9AIeY29tcGFjdGZoZXVpbnQxNmxpc3Rfc2VyaWFsaXplAOkCIGNvbXBhY3RmaGV1aW50MTZsaXN0X2Rlc2VyaWFsaXplAP0DIWZoZXVpbnQzMl9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQDYBCFmaGV1aW50MzJfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkA2QQsZmhldWludDMyX2VuY3J5cHRfd2l0aF9jb21wcmVzc2VkX3B1YmxpY19rZXkA2gQpZmhldWludDMyX2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkA2wQRZmhldWludDMyX2RlY3J5cHQAtAMTZmhldWludDMyX3NlcmlhbGl6ZQDnAhVmaGV1aW50MzJfZGVzZXJpYWxpemUA+wMYZmhldWludDMyX3NhZmVfc2VyaWFsaXplANUCGmZoZXVpbnQzMl9zYWZlX2Rlc2VyaWFsaXplAPADK2NvbXByZXNzZWRmaGV1aW50MzJfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkA3AQeY29tcHJlc3NlZGZoZXVpbnQzMl9kZWNvbXByZXNzAOQDHWNvbXByZXNzZWRmaGV1aW50MzJfc2VyaWFsaXplAOgCH2NvbXByZXNzZWRmaGV1aW50MzJfZGVzZXJpYWxpemUA5QMiY29tcHJlc3NlZGZoZXVpbnQzMl9zYWZlX3NlcmlhbGl6ZQDWAiRjb21wcmVzc2VkZmhldWludDMyX3NhZmVfZGVzZXJpYWxpemUA1AMwY29tcGFjdGZoZXVpbnQzMl9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AI8FGmNvbXBhY3RmaGV1aW50MzJfc2VyaWFsaXplAOkCHGNvbXBhY3RmaGV1aW50MzJfZGVzZXJpYWxpemUA/AMfY29tcGFjdGZoZXVpbnQzMl9zYWZlX3NlcmlhbGl6ZQDXAiFjb21wYWN0ZmhldWludDMyX3NhZmVfZGVzZXJpYWxpemUA8QMbY29tcGFjdGZoZXVpbnQzMmxpc3RfZXhwYW5kAPUCHmNvbXBhY3RmaGV1aW50MzJsaXN0X3NlcmlhbGl6ZQDpAiBjb21wYWN0ZmhldWludDMybGlzdF9kZXNlcmlhbGl6ZQD9AyFmaGV1aW50NjRfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkA3QQhZmhldWludDY0X2VuY3J5cHRfd2l0aF9wdWJsaWNfa2V5AN4ELGZoZXVpbnQ2NF9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5AN8EKWZoZXVpbnQ2NF9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AOAEEWZoZXVpbnQ2NF9kZWNyeXB0ALUDE2ZoZXVpbnQ2NF9zZXJpYWxpemUA5wIVZmhldWludDY0X2Rlc2VyaWFsaXplAPsDGGZoZXVpbnQ2NF9zYWZlX3NlcmlhbGl6ZQDVAhpmaGV1aW50NjRfc2FmZV9kZXNlcmlhbGl6ZQDwAytjb21wcmVzc2VkZmhldWludDY0X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AOEEHmNvbXByZXNzZWRmaGV1aW50NjRfZGVjb21wcmVzcwDkAx1jb21wcmVzc2VkZmhldWludDY0X3NlcmlhbGl6ZQDoAh9jb21wcmVzc2VkZmhldWludDY0X2Rlc2VyaWFsaXplAOUDImNvbXByZXNzZWRmaGV1aW50NjRfc2FmZV9zZXJpYWxpemUA1gIkY29tcHJlc3NlZGZoZXVpbnQ2NF9zYWZlX2Rlc2VyaWFsaXplANQDMGNvbXBhY3RmaGV1aW50NjRfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCQBRpjb21wYWN0ZmhldWludDY0X3NlcmlhbGl6ZQDpAhxjb21wYWN0ZmhldWludDY0X2Rlc2VyaWFsaXplAPwDH2NvbXBhY3RmaGV1aW50NjRfc2FmZV9zZXJpYWxpemUA1wIhY29tcGFjdGZoZXVpbnQ2NF9zYWZlX2Rlc2VyaWFsaXplAPEDG2NvbXBhY3RmaGV1aW50NjRsaXN0X2V4cGFuZAD2Ah5jb21wYWN0ZmhldWludDY0bGlzdF9zZXJpYWxpemUA6QIgY29tcGFjdGZoZXVpbnQ2NGxpc3RfZGVzZXJpYWxpemUA/QMfZmhlaW50OF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQDiBB9maGVpbnQ4X2VuY3J5cHRfd2l0aF9wdWJsaWNfa2V5AOMEKmZoZWludDhfZW5jcnlwdF93aXRoX2NvbXByZXNzZWRfcHVibGljX2tleQDkBCdmaGVpbnQ4X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkA5QQPZmhlaW50OF9kZWNyeXB0AMwDEWZoZWludDhfc2VyaWFsaXplAOcCE2ZoZWludDhfZGVzZXJpYWxpemUA/gMWZmhlaW50OF9zYWZlX3NlcmlhbGl6ZQDYAhhmaGVpbnQ4X3NhZmVfZGVzZXJpYWxpemUA8gMpY29tcHJlc3NlZGZoZWludDhfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkA5gQcY29tcHJlc3NlZGZoZWludDhfZGVjb21wcmVzcwDmAxtjb21wcmVzc2VkZmhlaW50OF9zZXJpYWxpemUA6AIdY29tcHJlc3NlZGZoZWludDhfZGVzZXJpYWxpemUA5wMgY29tcHJlc3NlZGZoZWludDhfc2FmZV9zZXJpYWxpemUA2QIiY29tcHJlc3NlZGZoZWludDhfc2FmZV9kZXNlcmlhbGl6ZQDVAy5jb21wYWN0ZmhlaW50OF9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AJEFGGNvbXBhY3RmaGVpbnQ4X3NlcmlhbGl6ZQDpAhpjb21wYWN0ZmhlaW50OF9kZXNlcmlhbGl6ZQD/Ax1jb21wYWN0ZmhlaW50OF9zYWZlX3NlcmlhbGl6ZQDaAh9jb21wYWN0ZmhlaW50OF9zYWZlX2Rlc2VyaWFsaXplAPMDGWNvbXBhY3RmaGVpbnQ4bGlzdF9leHBhbmQA9wIcY29tcGFjdGZoZWludDhsaXN0X3NlcmlhbGl6ZQDpAh5jb21wYWN0ZmhlaW50OGxpc3RfZGVzZXJpYWxpemUAgAQgZmhlaW50MTZfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkA5wQgZmhlaW50MTZfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkA6AQrZmhlaW50MTZfZW5jcnlwdF93aXRoX2NvbXByZXNzZWRfcHVibGljX2tleQDpBChmaGVpbnQxNl9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AOoEEGZoZWludDE2X2RlY3J5cHQAzQMSZmhlaW50MTZfc2VyaWFsaXplAOcCFGZoZWludDE2X2Rlc2VyaWFsaXplAP4DF2ZoZWludDE2X3NhZmVfc2VyaWFsaXplANgCGWZoZWludDE2X3NhZmVfZGVzZXJpYWxpemUA8gMqY29tcHJlc3NlZGZoZWludDE2X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AOsEHWNvbXByZXNzZWRmaGVpbnQxNl9kZWNvbXByZXNzAOYDHGNvbXByZXNzZWRmaGVpbnQxNl9zZXJpYWxpemUA6AIeY29tcHJlc3NlZGZoZWludDE2X2Rlc2VyaWFsaXplAOcDIWNvbXByZXNzZWRmaGVpbnQxNl9zYWZlX3NlcmlhbGl6ZQDZAiNjb21wcmVzc2VkZmhlaW50MTZfc2FmZV9kZXNlcmlhbGl6ZQDVAy9jb21wYWN0ZmhlaW50MTZfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCSBRljb21wYWN0ZmhlaW50MTZfc2VyaWFsaXplAOkCG2NvbXBhY3RmaGVpbnQxNl9kZXNlcmlhbGl6ZQD/Ax5jb21wYWN0ZmhlaW50MTZfc2FmZV9zZXJpYWxpemUA2gIgY29tcGFjdGZoZWludDE2X3NhZmVfZGVzZXJpYWxpemUA8wMaY29tcGFjdGZoZWludDE2bGlzdF9leHBhbmQA+AIdY29tcGFjdGZoZWludDE2bGlzdF9zZXJpYWxpemUA6QIfY29tcGFjdGZoZWludDE2bGlzdF9kZXNlcmlhbGl6ZQCABCBmaGVpbnQzMl9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQDsBCBmaGVpbnQzMl9lbmNyeXB0X3dpdGhfcHVibGljX2tleQDtBCtmaGVpbnQzMl9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5AO4EKGZoZWludDMyX2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkA7wQQZmhlaW50MzJfZGVjcnlwdADPAxJmaGVpbnQzMl9zZXJpYWxpemUA5wIUZmhlaW50MzJfZGVzZXJpYWxpemUA/gMXZmhlaW50MzJfc2FmZV9zZXJpYWxpemUA2AIZZmhlaW50MzJfc2FmZV9kZXNlcmlhbGl6ZQDyAypjb21wcmVzc2VkZmhlaW50MzJfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkA8AQdY29tcHJlc3NlZGZoZWludDMyX2RlY29tcHJlc3MA5gMcY29tcHJlc3NlZGZoZWludDMyX3NlcmlhbGl6ZQDoAh5jb21wcmVzc2VkZmhlaW50MzJfZGVzZXJpYWxpemUA5wMhY29tcHJlc3NlZGZoZWludDMyX3NhZmVfc2VyaWFsaXplANkCI2NvbXByZXNzZWRmaGVpbnQzMl9zYWZlX2Rlc2VyaWFsaXplANUDL2NvbXBhY3RmaGVpbnQzMl9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AJMFGWNvbXBhY3RmaGVpbnQzMl9zZXJpYWxpemUA6QIbY29tcGFjdGZoZWludDMyX2Rlc2VyaWFsaXplAP8DHmNvbXBhY3RmaGVpbnQzMl9zYWZlX3NlcmlhbGl6ZQDaAiBjb21wYWN0ZmhlaW50MzJfc2FmZV9kZXNlcmlhbGl6ZQDzAxpjb21wYWN0ZmhlaW50MzJsaXN0X2V4cGFuZAD5Ah1jb21wYWN0ZmhlaW50MzJsaXN0X3NlcmlhbGl6ZQDpAh9jb21wYWN0ZmhlaW50MzJsaXN0X2Rlc2VyaWFsaXplAIAEIGZoZWludDY0X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5APEEIGZoZWludDY0X2VuY3J5cHRfd2l0aF9wdWJsaWNfa2V5APIEK2ZoZWludDY0X2VuY3J5cHRfd2l0aF9jb21wcmVzc2VkX3B1YmxpY19rZXkA8wQoZmhlaW50NjRfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQD0BBBmaGVpbnQ2NF9kZWNyeXB0ANADEmZoZWludDY0X3NlcmlhbGl6ZQDnAhRmaGVpbnQ2NF9kZXNlcmlhbGl6ZQD+AxdmaGVpbnQ2NF9zYWZlX3NlcmlhbGl6ZQDYAhlmaGVpbnQ2NF9zYWZlX2Rlc2VyaWFsaXplAPIDKmNvbXByZXNzZWRmaGVpbnQ2NF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQD1BB1jb21wcmVzc2VkZmhlaW50NjRfZGVjb21wcmVzcwDmAxxjb21wcmVzc2VkZmhlaW50NjRfc2VyaWFsaXplAOgCHmNvbXByZXNzZWRmaGVpbnQ2NF9kZXNlcmlhbGl6ZQDnAyFjb21wcmVzc2VkZmhlaW50NjRfc2FmZV9zZXJpYWxpemUA2QIjY29tcHJlc3NlZGZoZWludDY0X3NhZmVfZGVzZXJpYWxpemUA1QMvY29tcGFjdGZoZWludDY0X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAlAUZY29tcGFjdGZoZWludDY0X3NlcmlhbGl6ZQDpAhtjb21wYWN0ZmhlaW50NjRfZGVzZXJpYWxpemUA/wMeY29tcGFjdGZoZWludDY0X3NhZmVfc2VyaWFsaXplANoCIGNvbXBhY3RmaGVpbnQ2NF9zYWZlX2Rlc2VyaWFsaXplAPMDGmNvbXBhY3RmaGVpbnQ2NGxpc3RfZXhwYW5kAPoCHWNvbXBhY3RmaGVpbnQ2NGxpc3Rfc2VyaWFsaXplAOkCH2NvbXBhY3RmaGVpbnQ2NGxpc3RfZGVzZXJpYWxpemUAgAQyY29tcGFjdGZoZWJvb2xsaXN0X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAlgMPX193YmdfdGZoZV9mcmVlAPEJLXRmaGVjb25maWdidWlsZGVyX2RlZmF1bHRfd2l0aF9iaWdfZW5jcnlwdGlvbgDrBhVfX3diZ19maGV1aW50MTYwX2ZyZWUAzgcfX193YmdfY29tcHJlc3NlZGZoZXVpbnQxNjBfZnJlZQDmBxVfX3diZ19maGV1aW50MjU2X2ZyZWUAzgcfX193YmdfY29tcHJlc3NlZGZoZXVpbnQyNTZfZnJlZQDmBxVfX3diZ19maGV1aW50MTI4X2ZyZWUAzgcfX193YmdfY29tcHJlc3NlZGZoZXVpbnQxMjhfZnJlZQDmBxRfX3diZ19maGVpbnQxNjBfZnJlZQDOBx5fX3diZ19jb21wcmVzc2VkZmhlaW50MTYwX2ZyZWUA5gcUX193YmdfZmhlaW50MjU2X2ZyZWUAzgceX193YmdfY29tcHJlc3NlZGZoZWludDI1Nl9mcmVlAOYHE19fd2JnX2ZoZXVpbnQ4X2ZyZWUAzgcdX193YmdfY29tcHJlc3NlZGZoZXVpbnQ4X2ZyZWUA5gcUX193YmdfZmhldWludDE2X2ZyZWUAzgceX193YmdfY29tcHJlc3NlZGZoZXVpbnQxNl9mcmVlAOYHFF9fd2JnX2ZoZXVpbnQzMl9mcmVlAM4HHl9fd2JnX2NvbXByZXNzZWRmaGV1aW50MzJfZnJlZQDmBxRfX3diZ19maGV1aW50NjRfZnJlZQDOBx5fX3diZ19jb21wcmVzc2VkZmhldWludDY0X2ZyZWUA5gcSX193YmdfZmhlaW50OF9mcmVlAM4HHF9fd2JnX2NvbXByZXNzZWRmaGVpbnQ4X2ZyZWUA5gcTX193YmdfZmhlaW50MTZfZnJlZQDOBx1fX3diZ19jb21wcmVzc2VkZmhlaW50MTZfZnJlZQDmBxNfX3diZ19maGVpbnQzMl9mcmVlAM4HHV9fd2JnX2NvbXByZXNzZWRmaGVpbnQzMl9mcmVlAOYHE19fd2JnX2ZoZWludDY0X2ZyZWUAzgcdX193YmdfY29tcHJlc3NlZGZoZWludDY0X2ZyZWUA5gcYY29tcGFjdGZoZXVpbnQxNjBfZXhwYW5kAOgDGGNvbXBhY3RmaGV1aW50MjU2X2V4cGFuZADoAxhjb21wYWN0ZmhldWludDEyOF9leHBhbmQA6AMVY29tcGFjdGZoZWludDhfZXhwYW5kAOgDF2NvbXBhY3RmaGVpbnQyNTZfZXhwYW5kAOgDF2NvbXBhY3RmaGVpbnQxNjBfZXhwYW5kAOgDF2NvbXBhY3RmaGV1aW50MTZfZXhwYW5kAOgDF2NvbXBhY3RmaGV1aW50MzJfZXhwYW5kAOgDF2NvbXBhY3RmaGV1aW50NjRfZXhwYW5kAOgDFmNvbXBhY3RmaGV1aW50OF9leHBhbmQA6AMWY29tcGFjdGZoZWludDE2X2V4cGFuZADoAxZjb21wYWN0ZmhlaW50MzJfZXhwYW5kAOgDFmNvbXBhY3RmaGVpbnQ2NF9leHBhbmQA6AMgX193YmdfY29tcGFjdGZoZXVpbnQxMjhsaXN0X2ZyZWUA2AYcX193YmdfY29tcGFjdGZoZXVpbnQxNjBfZnJlZQDYBiBfX3diZ19jb21wYWN0ZmhldWludDE2MGxpc3RfZnJlZQDYBhxfX3diZ19jb21wYWN0ZmhldWludDI1Nl9mcmVlANgGIF9fd2JnX2NvbXBhY3RmaGV1aW50MjU2bGlzdF9mcmVlANgGHF9fd2JnX2NvbXBhY3RmaGV1aW50MTI4X2ZyZWUA2AYZX193YmdfY29tcGFjdGZoZWludDhfZnJlZQDYBhtfX3diZ19jb21wYWN0ZmhlaW50MTYwX2ZyZWUA2AYfX193YmdfY29tcGFjdGZoZWludDE2MGxpc3RfZnJlZQDYBhtfX3diZ19jb21wYWN0ZmhlaW50MjU2X2ZyZWUA2AYfX193YmdfY29tcGFjdGZoZWludDI1Nmxpc3RfZnJlZQDYBh1fX3diZ19jb21wYWN0ZmhlYm9vbGxpc3RfZnJlZQDYBh9fX3diZ19jb21wYWN0ZmhlaW50MTI4bGlzdF9mcmVlANgGHl9fd2JnX2NvbXBhY3RmaGV1aW50OGxpc3RfZnJlZQDYBhtfX3diZ19jb21wYWN0ZmhldWludDE2X2ZyZWUA2AYfX193YmdfY29tcGFjdGZoZXVpbnQxNmxpc3RfZnJlZQDYBhtfX3diZ19jb21wYWN0ZmhldWludDMyX2ZyZWUA2AYfX193YmdfY29tcGFjdGZoZXVpbnQzMmxpc3RfZnJlZQDYBhtfX3diZ19jb21wYWN0ZmhldWludDY0X2ZyZWUA2AYfX193YmdfY29tcGFjdGZoZXVpbnQ2NGxpc3RfZnJlZQDYBhpfX3diZ19jb21wYWN0ZmhldWludDhfZnJlZQDYBh1fX3diZ19jb21wYWN0ZmhlaW50OGxpc3RfZnJlZQDYBhpfX3diZ19jb21wYWN0ZmhlaW50MTZfZnJlZQDYBh5fX3diZ19jb21wYWN0ZmhlaW50MTZsaXN0X2ZyZWUA2AYaX193YmdfY29tcGFjdGZoZWludDMyX2ZyZWUA2AYeX193YmdfY29tcGFjdGZoZWludDMybGlzdF9mcmVlANgGGl9fd2JnX2NvbXBhY3RmaGVpbnQ2NF9mcmVlANgGHl9fd2JnX2NvbXBhY3RmaGVpbnQ2NGxpc3RfZnJlZQDYBhFfX3diaW5kZ2VuX21hbGxvYwDaBhJfX3diaW5kZ2VuX3JlYWxsb2MAmAcfX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcgDACQ9fX3diaW5kZ2VuX2ZyZWUAjggUX193YmluZGdlbl9leG5fc3RvcmUAhwkJuQcBAEEBC98DmwGaAfIJ9AnCCcEJvwe9B78Huge9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SSAlmoN7OaIgIiAgoSABoaEiI6EhAQsgACABOQMAIAAgICABoSAjoTkDECAhRAAAAAAAAODBZiEFIABB/////wcCfyAhmUQAAAAAAADgQWMEQCAhqgwBC0GAgICAeAtBgICAgHggBRsgIUQAAMD////fQWQbQQAgISAhYRs2AggMCAtBgICAgHgLQYCAgIB4IAQbIAFEAADA////30FkG0EAIAEgAWEbtyIgOQMAIAEgIKFEAAAAAAAAcEGiIgFEAAAAAAAA4MFmIQQgCkH/////BwJ/IAGZRAAAAAAAAOBBYwRAIAGqDAELQYCAgIB4C0GAgICAeCAEGyABRAAAwP///99BZBtBACABIAFhGyIEtyIgOQMIIAogASAgoUQAAAAAAABwQaIiATkDECAKQgA3AyggCkIANwMgIApCADcDGCAKQRhqIRIjAEGwBGsiAyQAIANCADcDmAEgA0IANwOQASADQgA3A4gBIANCADcDgAEgA0IANwN4IANCADcDcCADQgA3A2ggA0IANwNgIANCADcDWCADQgA3A1AgA0IANwNIIANCADcDQCADQgA3AzggA0IANwMwIANCADcDKCADQgA3AyAgA0IANwMYIANCADcDECADQgA3AwggA0IANwMAIANCADcDuAIgA0IANwOwAiADQgA3A6gCIANCADcDoAIgA0IANwOYAiADQgA3A5ACIANCADcDiAIgA0IANwOAAiADQgA3A/gBIANCADcD8AEgA0IANwPoASADQgA3A+ABIANCADcD2AEgA0IANwPQASADQgA3A8gBIANCADcDwAEgA0IANwO4ASADQgA3A7ABIANCADcDqAEgA0IANwOgASADQgA3A9gDIANCADcD0AMgA0IANwPIAyADQgA3A8ADIANCADcDuAMgA0IANwOwAyADQgA3A6gDIANCADcDoAMgA0IANwOYAyADQgA3A5ADIANCADcDiAMgA0IANwOAAyADQgA3A/gCIANCADcD8AIgA0IANwPoAiADQgA3A+ACIANCADcD2AIgA0IANwPQAiADQgA3A8gCIANCADcDwAIgA0HgA2pBAEHQABDkCRpBvMPDACgCACILQQNBAkEBIAQbIAFEAAAAAAAAAABiGyICQQFrIgxqIQkgBUEUdkGWCGsiEEEDa0EYbSIFQQAgBUEAShsiDiAMayEEIA5BAnQg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AAAAAAAAAAAhAQwBCyACQX5xIQ5EAAAAAAAAAAAhAUEAIQJBACEEA0AgASACQdDFwwBqKwMAIAIgB2oiECsDAKKgIAJB2MXDAGorAwAgEEEIaisDAKKgIQEgAkEQaiECIA4gBEECaiIERw0ACwsgA0GgAWogBkEDdGogDAR8IAEgBEEDdEHQxcMAaisDACADQcACaiAEIAlqQQN0aisDAKKgBSABCzkDACAHQQhrIQcgCUEBayECIAkNAAsCQCAIQQNxIglFBEBEAAAAAAAAAAAhASAFIQQMAQsgA0GgAWogBUEDdGohAkQAAAAAAAAAACEBIAUhBANAIARBAWshBCABIAIrAwCgIQEgAkEIayECIAlBAWsiCQ0ACwsgBUEDTwRAIARBA3QgA2pBiAFqIQIDQCABIAJBGGorAwCgIAJBEGorAwCgIAJBCGorAwCgIAIrAwCgIQEgAkEgayECIARBA0cgBEEEayEEDQALCyASIAGaIAEgDRs5AwAgAysDoAEgAaEhAQJAIAVFDQBBASECA0AgASADQaABaiACQQN0aisDAKAhASACIAVPDQEgAiACIAVJaiICIAVNDQALCyASIAGaIAEgDRs5AwggA0GwBGokACAPQQdxIQUgJEIAWQRAIAAgBTYCCCAAIAorAyA5AxAgACAKKwMYOQMADAcLIABBACAFazYCCCAAIAorAyCaOQMQIAAgCisDGJo5AwAMBgsgBUG9+9eABE8EQCAFQfvD5IAERgRAAkAgASABRIPIyW0wX+Q/okQAAAAAAAA4Q6BEAAAAAAAAOMOgIiFEAABAVPsh+b+ioCIBICFEMWNiGmG00D2iIiOhIiC9QoCAgICAgID4/wCDQv////////+HP1YNACABICFEAABgGmG00D2iIiChIiIgIURzcAMuihmjO6IgASAioSAgoaEiI6EiIL1CgICAgICAgID/AINC//////////88VgRAICIhAQwBCyAiICFEAAAALooZozuiIiChIgEgIUTBSSAlmoN7OaIgIiABoSAgoaEiI6EhIAsgACAgOQMAIAAgASAgoSAjoTkDECAhRAAAAAAAAODBZiEFIABB/////wcCfyAhmUQAAAAAAADgQWMEQCAhqgwBC0GAgICAeAtBgICAgHggBRsgIUQAAMD////fQWQbQQAgISAhYRs2AggMBwsgJEIA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QAJAAkAgAS0AsAIiBUUEQCAEQQFrDgIDBQELAkACQAJAIARBAWsOAgECAAsgA0FAayABQQhqQYABEOcJGiADQThqIANB2ABqKQMANwMAIANBMGogA0HQAGopAwA3AwAgAyADKQNINwMoDAMLIAFBCGoMBAsgAUEIagwFCyADQUBrIAFBCGpBgAEQ5wkaIANBOGogA0HwAGopAwA3AwAgA0EwaiADQegAaikDADcDACADIANB4ABqKQMANwMoCyADIANBKGo2AkwgAyADNgJIIAMgA0EIajYCRCADIAE2AkAgA0FAaxCLAiAAIAMpAwg3AwAgAEEIaiADQRBqKQMANwMAIABBEGogA0EYaikDADcDACAAQRhqIANBIGopAwA3AwAgAUH4AGohBCABKAJ0DAQLIAFBIGoLIgRBEGopAwA3AwAgA0EwaiAEQQhqKQMANwMAIAMgBCkDADcDKCADIANBKGo2AkwgAyADNgJIIAMgA0EIajYCRCADIAE2AkAgA0FAaxCLAiAAIAMpAwg3AwAgAEEIaiADQRBqKQMANwMAIABBEGogA0EYaikDADcDACAAQRhqIANBIGopAwA3AwAgAUGQAWohBCABQYwBaigCAAwCCyABQSBqCyIEQRBqKQMANwMAIANBMGogBEEIaikDADcDACADIAQpAwA3AyggAyADQShqNgJMIAMgAzYCSCADIANBCGo2AkQgAyABNgJAIANBQGsQiwIgACADKQMINwMAIABBCGogA0EQaikDADcDACAAQRBqIANBGGopAwA3AwAgAEEYaiADQSBqKQMANwMAIAFB8ABqIQQgASgCbAshASAAIAU6ADAgACABNgIoIABBATYCJCAAIAQoAgA2AiwgACABQQFrNgIgIANBwAFqJAAL5AgBAX8jAEEwayICJAACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAALQAAQQFrDhEBAgMEBQYHCAkKCwwNDg8QEQALIAIgAC0AAToACCACQSRqQgE3AgAgAkECNgIcIAJBqOfCADYCGCACQakDNgIUIAIgAkEQajYCICACIAJBCGo2AhAgASACQRhqEPgIDBELIAIgACkDCDcDCCACQSRqQgE3AgAgAkECNgIcIAJBxOfCADYCGCACQd4BNgIUIAIgAkEQajYCICACIAJBCGo2AhAgASACQRhqEPgIDBALIAIgACkDCDcDCCACQSRqQgE3AgAgAkECNgIcIAJBxOfCADYCGCACQaoDNgIUIAIgAkEQajYCICACIAJBCGo2AhAgASACQRhqEPgIDA8LIAIgACsDCDkDCCACQSRqQgE3AgAgAkECNgIcIAJB5OfCADYCGCACQasDNgIUIAIgAkEQajYCICACIAJBCGo2AhAgASACQRhqEPgIDA4LIAIgACgCBDYCCCACQSRqQgE3AgAgAkECNgIcIAJBgOjCADYCGCACQawDNgIUIAIgAkEQajYCICACIAJBCGo2AhAgASACQRhqEPgIDA0LIAIgACkCBDcCCCACQSRqQgE3AgAgAkEBNgIcIAJBmOjCADYCGCACQeUBNgIUIAIgAkEQajYCICACIAJBCGo2AhAgASACQRhqEPgIDAwLIAJBJGpCADcCACACQQE2AhwgAkGg6MIANgIYIAJBlOfCADYCICABIAJBGGoQ+AgMCwsgAkEkakIANwIAIAJBATYCHCACQbTowgA2AhggAkGU58IANgIgIAEgAkEYahD4CAwKCyACQSRqQgA3AgAgAkEBNgIcIAJByOjCADYCGCACQZTnwgA2AiAgASACQRhqEPgIDAkLIAJBJGpCADcCACACQQE2AhwgAkHg6MIANgIYIAJBlOfCADYCICABIAJBGGoQ+AgMCAsgAkEkakIANwIAIAJBATYCHCACQfDowgA2AhggAkGU58IANgIgIAEgAkEYahD4CAwHCyACQSRqQgA3AgAgAkEBNgIcIAJB/OjCADYCGCACQZTnwgA2AiAgASACQRhqEPgIDAYLIAJBJGpCADcCACACQQE2AhwgAkGI6cIANgIYIAJBlOfCADYCICABIAJBGGoQ+AgMBQsgAkEkakIANwIAIAJBATYCHCACQZzpwgA2AhggAkGU58IANgIgIAEgAkEYahD4CAwECyACQSRqQgA3AgAgAkEBNgIcIAJBtOnCADYCGCACQZTnwgA2AiAgASACQRhqEPgIDAMLIAJBJGpCADcCACACQQE2AhwgAkHM6cIANgIYIAJBlOfCADYCICABIAJBGGoQ+AgMAgsgAkEkakIANwIAIAJBATYCHCACQeTpwgA2AhggAkGU58IANgIgIAEgAkEYahD4CAwBCyABIAAoAgQgAEEIaigCABCFCAsgAkEw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IAFBGGopAwA3AwAgAkHIAGogAUEQaikDADcDACACIAEpAwg3A0AgAkFAayADQSAQ5glFDQELIAJBOGogA0EYaikDADcDACACQTBqIANBEGopAwA3AwAgAkEoaiADQQhqKQMANwMAIAIgAykDADcDICACQdgAaiABQeAAaikDADcDACACQdAAaiABQdgAaikDADcDACACQcgAaiABQdAAaikDADcDACACIAEpA0g3A0ADQCACQSBqIARqIgUgBSkDACACQUBrIARqKQMAgzcDACAEQQhqIgRBIEcNAAsgAkEYaiIIIAJBOGoiCSkDADcDACACQRBqIgogAkEwaiILKQMANwMAIAJBCGoiDCACQShqIg0pAwA3AwAgAiACKQMgNwMAIAMgASgCiAFBARDkASABKAKMASIDIAEoAogBIgZJBEAgAUHoAGohBQNAIAJB2ABqIgQgBUEYaikDADcDACACQdAAaiIHIAVBEGopAwA3AwAgAkHIAGoiDiAFQQhqKQMANwMAIAIgBSkDADcDQCACQUBrIAMQygIgCSAEKQMANwMAIAsgBykDADcDACANIA4pAwA3AwAgAiACKQNANwMgQQAhBANAIAIgBGoiByAHKQMAIAJBIGogBGopAwCENwMAIARBCGoiBEEgRw0ACyADQQFqIgMgBkcNAAsgASgCiAEhBiABKAKMASEDCyAAIAIpAwA3AwggAEIBNwMAIABBEGogDCkDADcDACAAQRhqIAopAwA3AwAgAEEgaiAIKQMANwMAIAEgAyAGayIAQQAgACADTRs2AowBDAELIABCADcDAAsgAkHgAGokAAu6BQENfyMAQeAAayICJAACQCABKAKMAUUEQCAAQgA3AwAMAQsgAUEoaiEDAkAgASkDAFBFBEAgAkHYAGogAUEgaikDADcDACACQdAAaiABQRhqKQMANwMAIAJByABqIAFBEGopAwA3AwAgAiABKQMINwNAIAJBQGsgA0EgEOYJRQ0BCyACQThqIANBGGopAwA3AwAgAkEwaiADQRBqKQMANwMAIAJBKGogA0EIaikDADcDACACIAMpAwA3AyAgAkHYAGogAUHgAGopAwA3AwAgAkHQAGogAUHYAGopAwA3AwAgAkHIAGogAUHQAGopAwA3AwAgAiABKQNINwNAA0AgAkEgaiAEaiIFIAUpAwAgAkFAayAE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RiADQRBqIARGcQ0CIAQgAREBACADKAJEQQNHDQEMBAsLIAMoAkRBA0YNAiACIAgQjwEMAgsgA0HwAGoiASADQRBqQcAAEOcJGiAAQQxqIAFBARCbBCAAQQhqIANB6ABqKAIANgIADAILIAIgA0FAayADKAJUIANB2ABqKAIAEPoIAAsgA0HwAGogA0EQakHAABDnCRogA0G4AWogA0GYAWopAgA3AwAgAyADKQKQATcDsAEgAEEMaiADQbABahCLBiAAQQhqIAUoAgA2AgALIAAgAykDYDcCACADQcABaiQAC50FAQd/IwBBwAFrIgMkACADQcwAakEAOgAAIANByABqIAIoAogBNgIAIANBxABqIghBADYCACADQRhqIAFBCGopAgA3AwAgA0EgaiABQRBqKQIANwMAIANBKGogAUEYaikCADcDACADQQA2AjAgAyACQYwBajYCQCADIAEpAgA3AxAgAkGQAWoiBxD0ByEEIAdBAiADQRBqEM8FIAIoAowBIgVB+AFqENsGIgZB/wFxIglFIARBAXMgBkEIdkH/AXEgCUZyRXJFBEAgBUHsAWpBARDIBgsgA0GIAWogAUE4aigCADYCACADQYABaiABQTBqKQIANwMAIANB+ABqIAFBKGopAgA3AwAgA0EBOgCMASADIAEpAiA3A3AgA0HQAGogA0HwAGoQlQQCQAJAIAMoAlBFBEAgA0HoAGoiBSADQdwAaigCADYCACADIAMpAlQ3A2AgAygCREEDRg0BIAJBoAFqIQYCQANAAkAgA0EIaiAHEKQBAn8gAygCCCIBBEAgAygCDAwBCwNAIANB8ABqIAYQjwIgAygCcCIBQQJGDQALIAFBAWsNASADKAJ0IQEgAygCeAshBCABQQJGIANBEGogBEZxDQIgBCABEQEAIAMoAkRBA0cNAQwECwsgAygCREEDRg0CIAIgCBCPAQwCCyADQfAAaiIBIANBEGpBwAAQ5wkaIABBDGogAUEBEJwEIABBCGogA0HoAGooAgA2AgAMAgsgAiADQUBrIAMoAlQgA0HYAGooAgAQ+ggACyADQfAAaiADQRBqQcAAEOcJGiADQbgBaiADQZgBaikCADcDACADIAMpApABNwOwASAAQQxqIANBsAFqEIsGIABBCGogBSgCADYCAAsgACADKQNgNwIAIANBwAFqJAALnQUBB38jAEHAAWsiAyQAIANBzABqQQA6AAAgA0HIAGogAigCiAE2AgAgA0HEAGoiCEEANgIAIANBGGogAUEIaikCADcDACADQSBqIAFBEGopAgA3AwAgA0EoaiABQRhqKQIANwMAIANBADYCMCADIAJBjAFqNgJAIAMgASkCADcDECACQZABaiIHEPQHIQQgB0EBIANBEGoQzwUgAigCjAEiBUH4AWoQ2wYiBkH/AXEiCUUgBEEBcyAGQQh2Qf8BcSAJRnJFckUEQCAFQewBakEBEMgGCyADQYgBaiABQThqKAIANgIAIANBgAFqIAFBMGopAgA3AwAgA0H4AGogAUEoaikCADcDACADQQA6AIwBIAMgASkCIDcDcCADQdAAaiADQfAAahCUBAJAAkAgAygCUEUEQCADQegAaiIFIANB3ABqKAIANgIAIAMgAykCVDcDYCADKAJEQQNGDQEgAkGgAWohBgJAA0ACQCADQQhqIAcQpAECfyADKAIIIgEEQCADKAIMDAELA0AgA0HwAGogBhCPAiADKAJwIgFBAkYNAAsgAUEBaw0BIAMoAnQhASADKAJ4CyEEIAFBAUYgA0EQaiAERnENAiAEIAERAQAgAygCREEDRw0BDAQLCyADKAJEQQNGDQIgAiAIEI8BDAILIANB8ABqIgEgA0EQakHAABDnCRogAEEMaiABQQAQmwQgAEEIaiADQegAaigCADYCAAwCCyACIANBQGsgAygCVCADQdgAaigCABD6CAALIANB8ABqIANBEGpBwAAQ5wkaIANBuAFqIANBmAFqKQIANwMAIAMgAykCkAE3A7ABIABBDGogA0GwAWoQiwYgAEEIaiAFKAIANgIACyAAIAMpA2A3AgAgA0HAAWokAAudBQEHfyMAQcABayIDJAAgA0HMAGpBADoAACADQcgAaiACKAKIATYCACADQcQAaiIIQQA2AgAgA0EYaiABQQhqKQIANwMAIANBIGogAUEQaikCADcDACADQShqIAFBGGopAgA3AwAgA0EANgIwIAMgAkGMAWo2AkAgAyABKQIANwMQIAJBkAFqIgcQ9AchBCAHQQIgA0EQahDPBSACKAKMASIFQfgBahDbBiIGQf8BcSIJRSAEQQFzIAZBCHZB/wFxIAlGckVyRQRAIAVB7AFqQQEQyAYLIANBiAFqIAFBOGooAgA2AgAgA0GAAWogAUEwaikCADcDACADQfgAaiABQShqKQIANwMAIANBADoAjAEgAyABKQIgNwNwIANB0ABqIANB8ABqEJUEAkACQCADKAJQRQRAIANB6ABqIgUgA0HcAGooAgA2AgAgAyADKQJUNwNgIAMoAkRBA0YNASACQaABaiEGAkADQAJAIANBCGogBxCkAQJ/IAMoAggiAQRAIAMoAgwMAQsDQCADQfAAaiAGEI8CIAMoAnAiAUECRg0ACyABQQFrDQEgAygCdCEBIAMoAngLIQQgAUECRiADQRBqIARGcQ0CIAQgAREBACADKAJEQQNHDQEMBAsLIAMoAkRBA0YNAiACIAgQjwEMAgsgA0HwAGoiASADQRBqQcAAEOcJGiAAQQxqIAFBABCcBCAAQQhqIANB6ABqKAIANgIADAILIAIgA0FAayADKAJUIANB2ABqKAIAEPoIAAsgA0HwAGogA0EQakHAABDnCRogA0G4AWogA0GYAWopAgA3AwAgAyADKQKQATcDsAEgAEEMaiADQbABahCLBiAAQQhqIAUoAgA2AgALIAAgAykDYDcCACADQcABaiQAC8AFAgV/AX4jAEEgayIBJAAgASAAEOAFIAEoAgBFBEAgAUEIai0AACEFIAEoAgQiBEE0ai0AAEUEQCAEQQE6ADQgBEEMaigCACICBEAgBEEIaigCACEAIAJBDGwhAgNAIAAoAgBBDGoiAyADKAIAIgNBAiADGzYCACAAQQxqIQAgAkEMayICDQALCyAEQRhqIgIoAgAhACACQQA2AgAgAUEANgIQIAEgBEEQajYCCCABIAA2AgwgASAEQRRqKAIAIgI2AgAgASACIABBDGxqNgIEAkAgAEUNAANAIAEgAkEMajYCACACKAIAIgBFDQEgAEEMaiIDIAMoAgAiAyACKQIEIganIAMbNgIAIAEgBjcCGCABIAA2AhQgACAAKAIAIgBBAWs2AgAgAEEBRgRAIAFBFGoQhwYLIAEoAgAiAiABKAIERw0ACwsgARD0ASAEQSRqKAIAIgIEQCAEQSBqKAIAIQAgAkEMbCECA0AgACgCAEEMaiIDIAMoAgAiA0ECIAMbNgIAIABBDGohACACQQxrIgINAAsLIARBMGoiAigCACEAIAJBADYCACABQQA2AhAgASAEQShqNgIIIAEgADYCDCABIARBLGooAgAiAjYCACABIAIgAEEMbGo2AgQCQCAARQ0AA0AgASACQQxqNgIAIAIoAgAiAEUNASAAQQxqIgMgAygCACIDIAIpAgQiBqcgAxs2AgAgASAGNwIYIAEgADYCFCAAIAAoAgAiAEEBazYCACAAQQFGBEAgAUEUahCHBgsgASgCACICIAEoAgRHDQALCyABEPQBCwJAIAUNAEHszcMAKAIAQf////8HcUUNABDtCQ0AIARBAToAAQsgBEEAOgAAIAFBIGokAA8LIAEgASgCBDYCFCABIAFBCGotAAA6ABhBxM7AAEErIAFBFGpB8M7AAEHUz8AAEPYEAAv/BQEFfyAAQQhrIgEgAEEEaygCACIDQXhxIgBqIQICQAJAAkACQCADQQFxDQAgA0EDcUUNASABKAIAIgMgAGohACABIANrIgFBoNHDACgCAEYEQCACKAIEQQNxQQNHDQFBmNHDACAANgIAIAIgAigCBEF+cTYCBCABIABBAXI2AgQgAiAANgIADwsgASADEKgBCwJAAkAgAigCBCIDQQJxRQRAIAJBpNHDACgCAEYNAiACQaDRwwAoAgBGDQUgAiADQXhxIgIQqAEgASAAIAJqIgBBAXI2AgQgACABaiAANgIAIAFBoNHDACgCAEcNAUGY0cMAIAA2AgAPCyACIANBfnE2AgQgASAAQQFyNgIEIAAgAWogADYCAAsgAEGAAkkNAiABIAAQ2gFBACEBQbjRwwBBuNHDACgCAEEBayIANgIAIAANAUGAz8MAKAIAIgAEQANAIAFBAWohASAAKAIIIgANAAsLQbjRwwBB/x8gASABQf8fTRs2AgAPC0Gk0cMAIAE2AgBBnNHDAEGc0cMAKAIAIABqIgA2AgAgASAAQQFyNgIEQaDRwwAoAgAgAUYEQEGY0cMAQQA2AgBBoNHDAEEANgIACyAAQbDRwwAoAgAiA00NAEGk0cMAKAIAIgJFDQBBACEBAkBBnNHDACgCACIEQSlJDQBB+M7DACEAA0AgAiAAKAIAIgVPBEAgBSAAKAIEaiACSw0CCyAAKAIIIgANAAsLQYDPwwAoAgAiAARAA0AgAUEBaiEBIAAoAggiAA0ACwtBuNHDAEH/HyABIAFB/x9NGzYCACADIARPDQBBsNHDAEF/NgIACw8LIABBeHFBiM/DAGohAgJ/QZDRwwAoAgAiA0EBIABBA3Z0IgBxRQRAQZDRwwAgACADcjYCACACDAELIAIoAggLIQAgAiABNgIIIAAgATYCDCABIAI2AgwgASAANgIIDwtBoNHDACABNgIAQZjRwwBBmNHDACgCACAAaiIANgIAIAEgAEEBcjYCBCAAIAFqIAA2AgALlgUBC38jAEEwayIDJAAgA0EkaiABNgIAIANBAzoALCADQSA2AhwgA0EANgIoIAMgADYCICADQQA2AhQgA0EANgIMAn8CQAJAAkAgAigCECILRQRAIAJBDGooAgAiAEUNASACKAIIIgEgAEEDdGohBCAAQQFrQf////8BcUEBaiEIIAIoAgAhAANAIABBBGooAgAiBgRAIAMoAiAgACgCACAGIAMoAiQoAgwRBgANBAsgASgCACADQQxqIAFBBGooAgARAwANAyAFQQFqIQUgAEEIaiEAIAFBCGoiASAERw0ACwwBCyACQRRqKAIAIgBFDQAgAEEFdCEMIABBAWtB////P3FBAWohCCACKAIIIQYgAigCACEAA0AgAEEEaigCACIBBEAgAygCICAAKAIAIAEgAygCJCgCDBEGAA0DCyADIAUgC2oiAUEQaigCADYCHCADIAFBHGotAAA6ACwgAyABQRhqKAIANgIoIAFBDGooAgAhB0EAIQpBACEEAkACQAJAIAFBCGooAgBBAWsOAgACAQsgB0EDdCAGaiINKAIEQdEDRw0BIA0oAgAoAgAhBwtBASEECyADIAc2AhAgAyAENgIMIAFBBGooAgAhBAJAAkACQCABKAIAQQFrDgIAAgELIARBA3QgBmoiBygCBEHRA0cNASAHKAIAKAIAIQQLQQEhCgsgAyAENgIYIAMgCjYCFCAGIAFBFGooAgBBA3RqIgEoAgAgA0EMaiABQQRqKAIAEQMADQIgCUEBaiEJIABBCGohACAMIAVBIGoiBUcNAAsLIAggAigCBE8NASADKAIgIAIoAgAgCEEDdGoiACgCACAAKAIEIAMoAiQoAgwRBgBFDQELQQEMAQtBAAsgA0EwaiQAC6oFAgl/An4jAEFAaiICJAAgACgCBCIEQYABaiIFIAAoAgAiByABEPoBAkAgBCgCxAEgBCgCAGogBCgCQCAEKALIAUF/c3FGBEAgBCgCyAEgBCgCQHFFDQELIAEoAgBBDGoiAyADKAIAIgNBASADGzYCAAsgASgCACEBIAAoAggiACkDACELIAAoAggiAEGAlOvcA0YhBgJAAkADQAJAAkACQAJAIAEoAgwiAwRAIANBAWtBAkkNAQwHCyAGDQEQ+QYgAikDGCIMIAtUIAIoAiAiAyAASSALIAxRcXINAiABIAEoAgwiAEEBIAAbNgIMIABFIABBAWtBAklyDQAgAA0GQfzNwABBKEH40sAAEMwGAAsgAkE0aiAFEOAFIAIoAjQNAiACKAI4IgNBBGohCCACQTxqLQAAIQkgA0EMaigCACIGQQxsIQAgA0EIaigCACEBQX8hBQJAAkADQCAARQ0BIABBDGshACAFQQFqIQUgASgCBCEKIAFBDGohASAHIApHDQALIAJBNGogCCAFQYDUwAAQ2QUgAygCDCEGDAELIAJBADYCNAtBACEAIARBnAFqIAYEfyAABSADQRhqKAIARQs6AAACQCAJDQBB7M3DACgCAEH/////B3FFDQAQ7QkNACADQQE6AAELIANBADoAACACKAI0RQ0EIAJBMGogAkE8aigCADYCACACIAIpAjQiCzcDKCALpyIAIAAoAgAiAEEBazYCACAAQQFHDQUgAkEoahCHBgwFCxDRAwwCCyACQQhqIAsgACAMIAMQgwMgAikDCCACKAIQENIDDAELCyACIAIoAjg2AiggAiACQTxqLQAAOgAsQcTOwABBKyACQShqQZDUwABBsNTAABD2BAALQfDMwABBK0GI08AAEMwGAAsgAkFAayQAC6MFAgl/An4jAEFAaiICJAAgACgCBCIEQaABaiIFIAAoAgAiByABEPoBAkAgBCgCACAEKAJAIAQoAsgBQX9zcUYEQCAEKALIASAEKAJAcUUNAQsgASgCAEEMaiIDIAMoAgAiA0EBIAMbNgIACyABKAIAIQEgACgCCCIAKQMAIQsgACgCCCIAQYCU69wDRiEGAkACQANAAkACQAJAAkAgASgCDCIDBEAgA0EBa0ECSQ0BDAcLIAYNARD5BiACKQMYIgwgC1QgAigCICIDIABJIAsgDFFxcg0CIAEgASgCDCIAQQEgABs2AgwgAEUgAEEBa0ECSXINACAADQZB/M3AAEEoQdjSwAAQzAYACyACQTRqIAUQ4AUgAigCNA0CIAIoAjgiA0EEaiEIIAJBPGotAAAhCSADQQxqKAIAIgZBDGwhACADQQhqKAIAIQFBfyEFAkAC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QGsLIgIpAwAgAkEIaikDABDdBgJ/IANByABqIgICfwJAIAICfwJAAkACQCABLQCwAiIGRQRAIApBAWsOAgMFAQsCQAJAAkAgCkEBaw4CAQIACyADQdAAaiABQQhqQYABEOcJGiADQcgAaiADQegAaikDADcDACADQUBrIANB4ABqKQMANwMAIAMgAykDWDcDOAwDCyABQQhqDAQLIAFBCGoMBQsgA0HQAGogAUEIakGAARDnCRogA0HIAGogA0GAAWopAwA3AwAgA0FAayADQfgAaikDADcDACADIANB8ABqKQMANwM4CyADIANBOGo2AlwgAyADQQRqNgJYIAMgA0EQaiICNgJUIAMgATYCUCADQdAAahCMAiABKAJ0IQUgACACQSgQ5wkaIAFB+ABqDAQLIAFBIGoLIgJBEGopAwA3AwAgA0FAayACQQhqKQMANwMAIAMgAikDADcDOCADIANBOGo2AlwgAyADQQRqNgJYIAMgA0EQaiICNgJUIAMgATYCUCADQdAAahCMAiABQYwBaigCACEFIAAgAkEoEOcJGiABQZABagwCCyABQSBqCyICQRBqKQMANwMAIANBQGsgAkEIaikDADcDACADIAIpAwA3AzggAyADQThqNgJcIAMgA0EEajYCWCADIANBEGoiAjYCVCADIAE2AlAgA0HQAGoQjAIgASgCbCEFIAAgAkEoEOcJGiABQfAAagshASAAIAY6ADggACAFNgIsIABBATYCNCAAIAEoAgA2AjAgACAFQQFrNgIoIAMoAgQEQCADKAIIEGsLIANB0AFqJAAMAQtB4I/AAEEZQeyYwAAQzAYACyAAIAQ2AkAgDkHwAGokAAwFCyAGQQhqKQMAIRQgBikDACEVIAhBCGoiBiATIBICfwJAAkACQEICIAEpAwBCAn0iEiASQgJaG6ciDUEBaw4CAQIACyABQfQAagwCCyABQYwBagwBCyABQewAagsoAgAiBSAEEJ8FIAhB2AFqIBUgFCAFIAQQnwUgCEHwAGogBkHoABDnCRpBgc3DAC0AABpB0AFBCBCECSIHRQ0BIAcgCEHwAGpB0AEQ5wkhBSADIAJBIGoiAkYEQEG868EAIQoMBAsgAUH0AGohCSABQYwBaiELIAFB7ABqIQxBvOvBACEKA0AgAkEIaikDACESIAkhBgJAAkACQCANQQFrDgIAAQILIAshBgwBCyAMIQYLIAhB8ABqIAIpAwAgEiAGKAIAIAQQnwVBgc3DAC0AABpB8ABBCBCECSIHRQ0DIAcgCEHwAGpB6AAQ5wkiBiAKNgJsIAYgBTYCaEHY68EAIQogBiEFIAMgAkEQaiICRw0ACwwDCyAIQfwAakIANwIAIAhBATYCdCAIQeTowQA2AnAgCEGw0sEANgJ4IAhB8ABqQZTpwQAQ/AYAC0EIQdABEN8JAAtBCEHwABDfCQALIAAgASAHIAoQVCAAIAQ2AkALIAhBwAJqJAAL0xACDX8EfiMAQcACayIIJAACQAJAAkACQCACIANHBEAgAkEIaikDACESIAIpAwAhEyADIAJBEGoiBkYEQCMAQfAAayIOJAAgDkEIaiICIBMgEgJ/AkACQAJAQgIgASkDAEICfSISIBJCAlobp0EBaw4CAQIACyABQfQAagwCCyABQYwBagwBCyABQewAagsoAgAgBBCfBSMAQdABayIDJAACfwJAAkACQEICIAEpAwBCAn0iEiASQgJaG6ciCkEBaw4CAQIACyABQfQAaiEGIAFB+ABqDAILIAFBjAFqIQYgAUGQAWoMAQsgAUHsAGohBiABQfAAagsgBjUCACESNQIAIRMgA0HQAGoiBiACQegAEOcJGiADIBM3A8ABIAMgEjcDuAEgA0EEaiELIwBBsAFrIgIkAAJAAkACQCAGQegAagJ+AkACQCAGKAJgIgVFDQAgBiAFQQFrNgJgIAYpAxBCAlIEQCACQRBqIAZBEGoiBRDfASACKQMQpw0CIAVCAjcDAAsgBikDAFANACAGKQMIDAILIAtBADYCCCALQoCAgICAATcCAAwCCyACKQMYCxC9BiETIAJBCGpBBCAGKAJgIgkEfyAGKQMAIRICQCAGKQMQQgJRBEBBf0EAIBJCAFIbIQUMAQsgElAEQCAGKAJYIgVFDQQgBSAGKAJcTSEFDAELQX8hBSAGKAJYRQ0DCyAFIAkgBSAJSRsFQQALQQFqIgVBfyAFGyIFIAVBBE0bQQAQzgUgAigCCCEFIAIoAgwiCSATNwMAIAJBNGoiEEEBNgIAIAIgCTYCMCACIAU2AiwgAkE4aiIFIAZB+AAQ5wkaIAJBLGohCSMAQSBrIgwkAAJAIAUoAmAiBkUNACAFQegAaiERIAVBEGohDwNAIAUgBkEBazYCYCARAn4CQCAFKQMQQgJSBEAgDEEIaiAPEN8BIAwpAwinDQEgD0ICNwMACyAFKQMAUA0DIAUpAwgMAQsgDCkDEAsQvQYhEyAFKAJgIQYgCSgCCCINIAkoAgBGBEAgCSANIAYEfyAFKQMAIRICQCAFKQMQQgJRBEBBf0EAIBJCAFIbIQcMAQsgElAEQCAFKAJYIgdFDQcgByAFKAJcTSEHDAELQX8hByAFKAJYRQ0GCyAHIAYgBiAHSxsFQQALQQFqIgdBfyAHGxCuBgsgCSgCBCANQQN0aiATNwMAIAkgDUEBajYCCCAGDQALCyAMQSBqJAAgC0EIaiAQKAIANgIAIAsgAikCLDcCAAsgAkGwAWokACADQRBqIAFBoAJqKAIAQQFqIAMoAgwCfwJAAkACQCAKQQFrDgIBAgALIAFByABqDAILIAFB0ABqDAELIAFBQGsLIgIpAwAgAkEIaikDABDdBgJ/IANByABqIgICfwJAIAICfwJAAkACQCABLQCwAiIGRQRAIApBAWsOAgMFAQsCQAJAAkAgCkEBaw4CAQIACyADQdAAaiABQQhqQYABEOcJGiADQcgAaiADQegAaikDADcDACADQUBrIANB4ABqKQMANwMAIAMgAykDWDcDOAwDCyABQQhqDAQLIAFBCGoMBQsgA0HQAGogAUEIakGAARDnCRogA0HIAGogA0GAAWopAwA3AwAgA0FAayADQfgAaikDADcDACADIANB8ABqKQMANwM4CyADIANBOGo2AlwgAyADQQRqNgJYIAMgA0EQaiICNgJUIAMgATYCUCADQdAAahCMAiABKAJ0IQUgACACQSgQ5wkaIAFB+ABqDAQLIAFBIGoLIgJBEGopAwA3AwAgA0FAayACQQhqKQMANwMAIAMgAikDADcDOCADIANBOGo2AlwgAyADQQRqNgJYIAMgA0EQaiICNgJUIAMgATYCUCADQdAAahCMAiABQYwBaigCACEFIAAgAkEoEOcJGiABQZABagwCCyABQSBqCyICQRBqKQMANwMAIANBQGsgAkEIaikDADcDACADIAIpAwA3AzggAyADQThqNgJcIAMgA0EEajYCWCADIANBEGoiAjYCVCADIAE2AlAgA0HQAGoQjAIgASgCbCEFIAAgAkEoEOcJGiABQfAAagshASAAIAY6ADggACAFNgIsIABBATYCNCAA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AEEcaigCADYCACABIAM2AhAgASAAKQIENwIUIwBBIGsiBCQAIAFBEGoiAigCECEGIAIoAgwhByACKAIIIQUgAigCACEIIAIoAgQhCSAEQRhqIAJBHGooAgA2AgAgBCACKQIUNwMQIAQgCCgCACAJKAIAa0EBIAUoAgAgBSgCBCAHIAYgBEEQahB3IAQpAwAhCiABQQxqIAQoAgg2AgAgASAKNwIEIAFBADYCACAEQSBqJAACfyABKAIARQRAIAFBDGooAgAhA0EBIQQgASgCBCECIAFBCGooAgAMAQtBAiEEIAEoAgQhAiABQQhqKAIACyEFIABBIGoQzAcgAEEsaiADNgIAIABBKGogBTYCACAAQSRqIAI2AgAgACAENgIgIAAoAjAhAwJAIABBPGotAAAiBEUEQCADKAIAIQMMAQsgAygCACIDIAMoAgAiAkEBajYCACACQQBIDQIgASADNgIQCyAAQTRqIgIoAgAgAkEDNgIAQQJGBEAgA0FAayAAQThqKAIAEIoJCwJAIARFDQAgASgCECIAIAAoAgAiAEEBazYCACAAQQFHDQAgAUEQahCXAgsgAUEwaiQADwtBlIrAAEErQeyLwAAQzAYACwALmQQCCX8BfiMAQTBrIgEkACAAKAIAIQMgAEEANgIAAkAgAwRAIAFBHGogAEEMaikCADcCACABQSRqIABBFGopAgA3AgAgAUEsaiAAQRxqKAIANgIAIAEgAzYCECABIAApAgQ3AhQjAEEgayIEJAAgAUEQaiICKAIQIQYgAigCDCEHIAIoAgghBSACKAIAIQggAigCBCEJIARBGGogAkEcaigCADYCACAEIAIpAhQ3AxAgBCAIKAIAIAkoAgBrQQEgBSgCACAFKAIEIAcgBiAEQRBqEHYgBCkDACEKIAFBDGogBCgCCDYCACABIAo3AgQgAUEANgIAIARBIGokAAJ/IAEoAgBFBEAgAUEMaigCACEDQQEhBCABKAIEIQIgAUEIaigCAAwBC0ECIQQgASgCBCECIAFBCGooAgALIQUgAEEgahDMByAAQSxqIAM2AgAgAEEoaiAFNgIAIABBJGogAjYCACAAIAQ2AiAgACgCMCEDAkAgAEE8ai0AACIERQRAIAMoAgAhAwwBCyADKAIAIgMgAygCACICQQFqNgIAIAJBAEgNAiABIAM2AhALIABBNGoiAigCACACQQM2AgBBAkYEQCADQUBrIABBOGooAgAQigkLAkAgBEUNACABKAIQIgAgACgCACIAQQFrNgIAIABBAUcNACABQRBqEJcCCyABQTBqJAAPC0GUisAAQStB7IvAABDMBgALAAvpAgEFfwJAQc3/e0EQIAAgAEEQTRsiAGsgAU0NACAAQRAgAUELakF4cSABQQtJGyIEakEMahBCIgJFDQAgAkEIayEBAkAgAEEBayIDIAJxRQRAIAEhAAwBCyACQQRrIgUoAgAiBkF4cSACIANqQQAgAGtxQQhrIgIgAEEAIAIgAWtBEE0baiIAIAFrIgJrIQMgBkEDcQRAIAAgAyAAKAIEQQFxckECcjYCBCAAIANqIgMgAygCBEEBcjYCBCAFIAIgBSgCAEEBcXJBAnI2AgAgASACaiIDIAMoAgRBAXI2AgQgASACEJMBDAELIAEoAgAhASAAIAM2AgQgACABIAJqNgIACwJAIAAoAgQiAUEDcUUNACABQXhxIgIgBEEQak0NACAAIAQgAUEBcXJBAnI2AgQgACAEaiIBIAIgBGsiBEEDcjYCBCAAIAJqIgIgAigCBEEBcjYCBCABIAQQkwELIABBCGohAwsgAwuNAwEBfwJAIAIEQCABLQAAQTBNDQEgBUECOwEAAkACQAJAIAPBIgZBAEoEQCAFIAE2AgQgA0H//wNxIgMgAk8NASAFQQI7ARggBUECOwEMIAUgAzYCCCAFQSBqIAIgA2siAjYCACAFQRxqIAEgA2o2AgAgBUEUakEBNgIAIAVBEGpB/J/DADYCAEEDIQEgAiAETw0DIAQgAmshBAwCCyAFQQI7ARggBUEAOwEMIAVBAjYCCCAFQf2fwwA2AgQgBUEgaiACNgIAIAVBHGogATYCACAFQRBqQQAgBmsiAzYCAEEDIQEgAiAETw0CIAQgAmsiAiADTQ0CIAIgBmohBAwBCyAFQQA7AQwgBSACNgIIIAVBEGogAyACazYCACAERQRAQQIhAQwCCyAFQQI7ARggBUEgakEBNgIAIAVBHGpB/J/DADYCAAsgBUEAOwEkIAVBKGogBDYCAEEEIQELIAAgATYCBCAAIAU2AgAPC0G8nMMAQSFBiJ/DABDMBgALQZifwwBBH0G4n8MAEMwGAAv6AwEFfyMAQeAAayICJAAgACgCACEBIABBADYCAAJAIAEEQCACQSRqIABBBGpBOBDnCRogAiABNgIgIAJBBGohAyMAQUBqIgEkACABIAJBIGoiBEE8EOcJIQFBgIDAABDHBiIFRQRAQYSAwABBNkGsgcAAEMwGAAsgASAEIAUQZyADQQA2AgAgA0EUaiABQRBqKQMANwIAIANBDGogAUEIaikDADcCACADIAEpAwA3AgQgAUFAayQAAn8gAigCBEUEQCACQShqIAJBGGopAgA3AwAgAiACQRBqKQIANwMgQQEhASACQQxqKAIADAELQQIhASACQQxqKAIACyEDIAIoAgghBCAAQTxqEN4GIABBxABqIAM2AgAgAEFAayAENgIAIAAgATYCPCAAQcgAaiACKQMgNwIAIABB0ABqIAJBKGopAwA3AgAgACgCWCEBAkAgAEHkAGotAAAiA0UEQCABKAIAIQEMAQsgASgCACIBIAEoAgAiBEEBajYCACAEQQBIDQIgAiABNgIgCyAAQdwAaiIEKAIAIARBAzYCAEECRgRAIAFBQGsgAEHgAGooAgAQigkLAkAgA0UNACACKAIgIgAgACgCACIAQQFrNgIAIABBAUcNACACQSBqEJcCCyACQeAAaiQADwtBlIrAAEErQeyLwAAQzAYACwAL+gMBBX8jAEHgAGsiAiQAIAAoAgAhASAAQQA2AgACQCABBEAgAkEkaiAAQQRqQTgQ5wkaIAIgATYCICACQQRqIQMjAEFAaiIBJAAgASACQSBqIgRBPBDnCSEBQYCAwAAQxwYiBUUEQEGEgMAAQTZBrIHAABDMBgALIAEgBCAFEGYgA0EANgIAIANBFGogAUEQaikDADcCACADQQxqIAFBCGopAwA3AgAgAyABKQMANwIEIAFBQGskAAJ/IAIoAgRFBEAgAkEoaiACQRhqKQIANwMAIAIgAkEQaikCADcDIEEBIQEgAkEMaigCAAwBC0ECIQEgAkEMaigCAAshAyACKAIIIQQgAEE8ahDeBiAAQcQAaiADNgIAIABBQGsgBDYCACAAIAE2AjwgAEHIAGogAikDIDcCACAAQdAAaiACQShqKQMANwIAIAAoAlghAQJAIABB5ABqLQAAIgNFBEAgASgCACEBDAELIAEoAgAiASABKAIAIgRBAWo2AgAgBEEASA0CIAIgATYCIAsgAEHcAGoiBCgCACAEQQM2AgBBAkYEQCABQUBrIABB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KQMQQgJSBEAgBEUNAQNAAkAgA0EYaiAHEGQgAykDGFANACAFQQFrIgUNAQwDCwsgBUUNASABQgI3AxAgASkDACEICyAFQQAgCFAbIQYLIAEgASgCoAEiBSAEIAZrIgZrIgQ2AqABIAIgBmsiAiAFIAZGckUEQCABIARBAWs2AqABIAEpAxBCAlIEQCADQRhqIAcQZCADKQMYQgBSDQQgB0ICNwMACyABKQMAQgBSDQILIAFCAjcDAAsgASkDqAFCAlINA0IADAQLIAEpAwgMAQsgAykDIAshCUIBDAELIANBCGogAUGoAWogAhDMASADKQMQIQkgAykDCAshCCAAIAk3AwggACAINwMAIANBQGskAAvlAwEFfyMAQeAAayIBJAAgACgCBCECIABBADYCBAJAIAIEQCABQSRqIABBCGpBOBDnCRogASACNgIgIAFBBGohAyMAQUBqIgIkACACIAFBIGoiBEE8EOcJIQJBgIDAABDHBiIFRQRAQYSAwABBNkGcgcAAEMwGAAsgAiAEIAUQZiADQQA2AgAgA0EUaiACQRBqKQMANwIAIANBDGogAkEIaikDADcCACADIAIpAwA3AgQgAkFAayQAAn8gASgCBEUEQCABQShqIAFBGGopAgA3AwAgASABQRBqKQIANwMgQQEhAiABQQxqKAIADAELQQIhAiABQQxqKAIACyEDIAEoAgghBCAAQUBrEN4GIABByABqIAM2AgAgAEHEAGogBDYCACAAIAI2AkAgAEHMAGogASkDIDcCACAAQdQAaiABQShqIgIpAwA3AgAgAUEgaiAAKAIAEOIFIAEoAiANASACLQAAIQIgASgCJCIAQQE6AAICQCACDQBB7M3DACgCAEH/////B3FFDQAQ7QkNACAAQQE6AAELIABBADoAACABQeAAaiQADwtBlIrAAEErQeyLwAAQzAYACyABIAEoAiQ2AgQgASACLQAAOgAIQb+KwABBKyABQQRqQeyKwABB3IvAABD2BAAL5QMBBX8jAEHgAGsiASQAIAAoAgQhAiAAQQA2AgQCQCACBEAgAUEkaiAAQQhqQTgQ5wkaIAEgAjYCICABQQRqIQMjAEFAaiICJAAgAiABQSBqIgRBPBDnCSECQYCAwAAQxwYiBUUEQEGEgMAAQTZBnIHAABDMBgALIAIgBCAFEGcgA0EANgIAIANB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MCADIAVrIgBrNgIwIAEgAGshAgsgBEEgaiQAIAILmgICBX8BfiMAQUBqIgQkAAJAIAAoAqgBIgUEQCAAQagBaiEDIAFBAWohASAAQawBaigCACEGA0AgAUEBRg0CIARBCGogBSAGKAIMEQAAIAFBAWshASAEKAIIQQFGDQALIAFFDQEgAxC2ByADQQA2AgALIAApAwAiB0ICUQRAIAEhAgwBCyAAKAKgASICIAEgASACSxsiAyECAkAgACkDEEICUgRAQQAhBSADRQ0BIABBEGohBgNAAkAgBEEYaiAGEGQgBCkDGFANACACQQFrIgINAQwDCwsgAkUNASAAQgI3AxAgACkDACEHCyACQQAgB1AbIQULIAAgACgCoAEgAyAFayIAazYCoAEgASAAayECCyAEQUBrJAAgAguVAgIFfwF+IwBBIGsiBCQAAkAgACgCMCIFBEAgAEEwaiEDIAFBAWohASAAQTRqKAIAIQYDQCABQQFGDQIgBEEQaiAFIAYoAgwRAAAgAUEBayEBIAQoAhBBAUYNAAsgAUUNASADELYHIANBADYCAAsgACkDACIHQgJRBEAgASECDAELIAAoAigiAiABIAEgAksbIgMhAgJAIAAvARBBAkcEQEEAIQUgA0UNASAAQRBqIQYDQAJAIARBCGogBhChAyAELwEIRQ0AIAJBAWsiAg0BDAMLCyACRQ0BIABBAjsBECAAKQMAIQcLIAJBACAHUBshBQsgACAAKAIoIAMgBWsiAGs2AiggASAAayECCyAEQSBqJAAgAguaAgIFfwF+IwBBQGoiBCQAAkAgACgCqAEiBQRAIABBqAFqIQMgAUEBaiEBIABBrAFqKAIAIQYDQCABQQFGDQIgBEEIaiAFIAYoAgwRAAAgAUEBayEBIAQoAghBAUYNAAsgAUUNASADELYHIANBADYCAAsgACkDACIHQgJRBEAgASECDAELIAAoAqABIgIgASABIAJLGyIDIQICQCAAKQMQQgJSBEBBACEFIANFDQEgAEEQaiEGA0ACQCAEQRhqIAYQYyAEKQMYUA0AIAJBAWsiAg0BDAMLCyACRQ0BIABCAjcDECAAKQMAIQcLIAJBACAHUBshBQsgACAAKAKgASADIAVrIgBrNgKgASABIABrIQILIARBQGskACACC5UCAgV/AX4jAEEgayIEJAACQCAAKAI4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IANBEGoiACgCFCEHIAAoAhghBiAAKAIAIQUgACgCBCEIIAAoAgghASAAKAIMIQkgAiAAKAIQNgIgIAIgCTYCHCACIAE2AhggAiAINgIUIAIgBTYCECACIAEoAgA2AowBIAJBADYCiAEgAiAGNgKAASACIAJBEGo2AoQBIwBBIGsiACQAIABBCGogAkGAAWoiBkEMaigCACIBIAYoAghrIghBACABIAhPGxDLBSAAQRxqIgxBADYCACAAIAApAwg3AhQjAEEQayIIJAAgBkEMaigCACIBIAYoAghrIgpBACABIApPGyIPIABBFGoiASgCACABKAIIIgprSwRAIAEgCiAPEKwGIAEoAgghCgsgCCABKAIENgIMIAggCjYCCCAIIAFBCGo2AgQjAEEgayIBJAAgBkEMaigCACEPIAYoAgghCiABQRBqIAhBBGoiDUEIaigCADYCACABIA0pAgA3AwggASAGKQIANwIUIAogD0kEQCMAQSBrIgAkACABQRRqIgEoAgAgAEEQaiABKAIEIgFBCGopAgA3AwAgAEEYaiABQRBqKAIANgIAIAAgCjYCHCAAIAEpAgA3AwgjAEEwayICJAAgAkEANgIYIAJBgICAgHg2AiAgAkEYaiILIQMjAEEQayIEJAAoAgAiByAHKAIAIgFBAWo2AgAgAUEASARAAAsgAkEMaiEIIABBCGohBSAEQQRqIQkjAEEwayIAJAAgA0EMaikCACEuIAMoAgghAQJ/IAMoAgBFBEAQ8AcMAQsgAygCBAsaIAAgAUGAgICAeEYEf0EABSAAIC43AgggACABNgIEIABBEGogAEEEahDfAiAAKAIQQYCAgIB4RwRADBILIABBGGooAgAhASAAKAIUCyABEKYDIgY2AgAgBiAGKAIAIgFBAWo2AgACQAJAAkACQCABQQBIDQBBgc3DAC0AABpBGEEEEIQJIgNFDQEgA0EANgIMIAMgBzYCCCADQoKAgIAQNwIAIAAgAzYCEEEAEMAGIgcEQCAHIAcoAgAiAUEBajYCACABQQBIDQELIAAgBxDABiIBNgIgAkAgAUUNACABIAEoAgAiAUEBazYCACABQQFHDQAgAEEgahCZBgsgACgCECIKKAIIIgEEQCABQQhqEOMFC0GBzcMALQAAGkEkQQQQhAkiAUUNAiABIAc2AgggASADNgIEIAEgBjYC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ACgCACEBQdDRwwAgAzYCACAAIAE2AkggAUUNACABIAEoAgAiAUEBazYCACABQQFHDQAgAEHIAGoQhwYLIAApAzAiLkL/AYNCAlENAiAMIC43AgAMAwsgDEGBAjsBAAJAIA0NAEHszcMAKAIAQf////8HcUUNABDtCQ0AIAFBAToAAQsgAUEAOgAADAILIAAgACgCTDYCMCAAIABB0ABqLQAAOgA0QcTOwABBKyAAQTBqQfDOwABBhNDAABD2BAALEJgDGkHwzMAAQStBtNXAABDMBgALIABB4ABqJAALIAstAAghACAVIAsoAgw2AgQgFSAANgIAIAtBEGokACACKAIIDQMgECgCCCIAIAIoAgwiAU0NBCAbIAJBQGsiAyAGIAlBAXMiCRsiAEEIaikDADcDACACIAApAwA3A3ggAiAAKAIQNgKIASACIAApAxg3A3AgECgCBCEIIAYgAyAJGyIAKQMAIS4gACgCECELIAAoAhghAyAAQQhqKQMAIS8gACgCHCIFBEAgA0EAIAVBA3QQ5AkaCyACQZABaiAIIAFBBXRqIgAQ4gUgAigCkAEEQCACIAItAJgBOgC0ASACIAIoApQBNgKwAUG8gcAAQSsgAkGwAWpBiILAAEHIg8AAEPYEAAsgAigClAEiAS0AAkUNBSACLQCYASEIIAJBkAFqIABBBGoQ4AUgAigCkAENBiACLQCYASEMIAIoApQBIQAgAkGgAWogLzcDACACIC43A5gBIAIgCzYCqAEgAiAFNgKUASACIAM2ApABIAIgAEEUaikCADcCwAEgAiAAQQxqKQIANwK4ASACIAApAgQ3ArABIAJB2AFqIApBEGooAgA2AgAgAkHQAWogCkEIaikCADcDACACIAopAgA3A8gBIAJBkAFqIAJBsAFqIAJB8ABqIAJByAFqIAIoAmggAigCbBBRAkAgDA0AQezNwwAoAgBB/////wdxRQ0AEO0JDQAgAEEBOgABCyAAQQA6AAAgAUEAOgACAkAgCA0AQezNwwAoAgBB/////wdxRQ0AEO0JDQAgAUEBOgABCyABQQA6AAAgEkEBayISDQALIAlFDQYMBwsMGQtBvIHAAEErIAJBkAFqQeiBwABBiIPAABD2BAALQbyBwABBKyACQZABakH4gcAAQaiDwAAQ9gQACyABIABBuIPAABDABQALQdiDwABB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gAEgASADRw0AIAAgBjYCBCAAQQE2AgAgAEEIaiAHNgIADAELIAAgAjYCAAsgBEEMahD3BiAEQRBqJAAL+gECA38CfiMAQTBrIgIkACACIAE2AiggAkEYaiACQShqEO4GIAIoAighASAAAn8gAigCGEUEQCAAIAE2AgRBAQwBCyACKQMgIQUgAULAABAAIgMQASEEIANBhAFPBEAgAxACCyABQYQBTwRAIAEQAgsgAiAENgIsIAJBCGogAkEsahDuBgJAIAIoAghFBEAgAigCLCEBDAELIAIpAxAiBhADIQEgAigCLCABEAQgAUGEAU8EQCABEAILIAIoAiwhAUUNACABQYQBTwRAIAEQAgsgACAFNwMIIABBEGogBjcDAEEADAELIAAgATYCBEEBCzYCACACQTBqJAAL+gECA38CfiMAQTBrIgIkACACIAE2AiggAkEYaiACQShqEO4GIAIoAighASAAAn8gAigCGEUEQCAAIAE2AgRBAQwBCyACKQMgIQUgAULAABAAIgMQASEEIANBhAFPBEAgAxACCyABQYQBTwRAIAEQAgsgAiAENgIsIAJBCGogAkEsahDuBgJAIAIoAghFBEAgAigCLCEBDAELIAIpAxAiBhAAIQEgAigCLCABEAQgAUGEAU8EQCABEAILIAIoAiwhAUUNACABQYQBTwRAIAEQAgsgACAFNwMIIABBEGogBjcDAEEADAELIAAgATYCBEEBCzYCACACQTBqJAAL9AYCCn8FfAJAAkAgASgCACIHKAJEIgZBAXQiBQRAIAQgBCAFbiINIAVsayIEQQAgBkH/////B3EiBSAEIAVJIgwbayEGIwBBIGsiBCQAQZzGwwAtAABB/wFGBEAQ2AkLIAQgBygCRCIFNgIAIAQgAzYCBAJAAkACQAJAIAMgBUYEQCADIAZNDQEgB0EMaigCACEIIAcoAgghBSAHKAIEIQogBygCACELIAQgAzYCACADaUEBRw0CIAcoAkAhCSAEIAo2AgQgAyAKRw0DAkACQAJAAkAgCQRAIANBAWshByADIAluQQFrDgIDAgELQdDCwgBBGUH8zcIAEMwGAAsgAyAIIAMgCEkbIgNFDQIDQCALIAUoAgAgBmwgB3FBBHRqIggrAwAhDyACQQhqIAgrAwg5AwAgAiAPOQMAIAVBBGohBSACQRBqIQIgA0EBayID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AAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDPASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvuAQIFfwJ+IwBBMGsiAyQAAkACQCABKAKoASIERQ0AIAFBqAFqIQUgAkEBaiECIAFBrAFqKAIAIQYCQAJAAkACQANAIAJBAUYNASADQSBqIAQgBigCDCIHEQAAIAJBAWshAiADKAIgQQFGDQALIAJFDQEMAgsgBigCDCEHCyADQRBqIAQgBxEAACADKQMQIginDQFBACECCyAFELYHIAVBADYCAAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDNASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvrAQIFfwJ+IwBBMGsiAyQAAkACQCABKAIwIgRFDQAgAUEwaiEFIAJBAWohAiABQTRqKAIAIQYCQAJAAkACQANAIAJBAUYNASADQSBqIAQgBigCDCIHEQAAIAJBAWshAiADKAIgQQFGDQALIAJFDQEMAgsgBigCDCEHCyADQRBqIAQgBxEAACADKQMQIginDQFBACECCyAFELYHIAVBADYCAAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDQASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvrAQIFfwJ+IwBBMGsiAyQAAkACQCABKAI4IgRFDQAgAUE4aiEFIAJBAWohAiABQTxqKAIAIQYCQAJAAkACQANAIAJBAUYNASADQSBqIAQgBigCDCIHEQAAIAJBAWshAiADKAIgQQFGDQALIAJFDQEMAgsgBigCDCEHCyADQRBqIAQgBxEAACADKQMQIginDQFBACECCyAFELYHIAVBADYCAAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDXASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvtAQIFfwJ+IwBBMGsiAyQAAkACQCABKAJIIgRFDQAgAUHIAGohBSACQQFqIQIgAUHMAGooAgAhBgJAAkACQAJAA0AgAkEBRg0BIANBIGogBCAGKAIMIgcRAAAgAkEBayECIAMoAiBBAUYNAAsgAkUNAQwCCyAGKAIMIQcLIANBEGogBCAHEQAAIAMpAxAiCKcNAUEAIQILIAUQtgcgBUEANgIADAELIAMpAxghCQwBCyABKQMAQgJRBEBCACEIDAELIAMgASACENIBIAMpAwghCSADKQMAIQgLIAAgCTcDCCAAIAg3AwAgA0EwaiQAC+4BAgV/An4jAEEwayIDJAACQAJAIAEoAqgBIgRFDQAgAUGoAWohBSACQQFqIQIgAUGsAWooAgAhBgJAAkACQAJAA0AgAkEBRg0BIANBIGogBCAGKAIMIgcRAAAgAkEBayECIAMoAiBBAUYNAAsgAkUNAQwCCyAGKAIMIQcLIANBEGogBCAHEQAAIAMpAxAiCKcNAUEAIQILIAUQtgcgBUEANgIADAELIAMpAxghCQwBCyABKQMAQgJRBEBCACEIDAELIAMgASACEMwBIAMpAwghCSADKQMAIQgLIAAgCTcDCCAAIAg3AwAgA0EwaiQAC+0BAgV/An4jAEEwayIDJAACQAJAIAEoAkgiBEUNACABQcgAaiEFIAJBAWohAiABQcwAaigCACEGAkACQAJAAkADQCACQQFGDQEgA0EgaiAEIAYoAgwiBxEAACACQQFrIQIgAygCIEEBRg0ACyACRQ0BDAILIAYoAgwhBwsgA0EQaiAEIAcRAAAgAykDECIIpw0BQQAhAgsgBRC2ByAFQQA2AgAMAQsgAykDGCEJDAELIAEpAwBCAlEEQEIAIQgMAQsgAyABIAIQ0wEgAykDCCEJIAMpAwAhCAsgACAJNwMIIAAgCDcDACADQTBqJAAL7QECBX8CfiMAQTBrIgMkAAJAAkAgASgCaCIERQ0AIAFB6ABqIQUgAkEBaiECIAFB7ABqKAIAIQYCQAJAAkACQANAIAJBAUYNASADQSBqIAQgBigCDCIHEQAAIAJBAWshAiADKAIgQQFGDQALIAJFDQEMAgsgBigCDCEHCyADQRBqIAQgBxEAACADKQMQIginDQFBACECCyAFELYHIAVBADYCAAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDWASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvrAQIFfwJ+IwBBMGsiAyQAAkACQCABKAIoIgRFDQAgAUEoaiEFIAJBAWohAiABQSxqKAIAIQYCQAJAAkACQANAIAJBAUYNASADQSBqIAQgBigCDCIHEQAAIAJBAWshAiADKAIgQQFGDQALIAJFDQEMAgsgBigCDCEHCyADQRBqIAQgBxEAACADKQMQIginDQFBACECCyAFELYHIAVBADYCAAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDAASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvrAQIFfwJ+IwBBMGsiAyQAAkACQCABKAI4IgRFDQAgAUE4aiEFIAJBAWohAiABQTxqKAIAIQYCQAJAAkACQANAIAJBAUYNASADQSBqIAQgBigCDCIHEQAAIAJBAWshAiADKAIgQQFGDQALIAJFDQEMAgsgBigCDCEHCyADQRBqIAQgBxEAACADKQMQIginDQFBACECCyAFELYHIAVBADYCAAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDUASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvuAQICfwN+IwBBQGoiAiQAAkAgASgCqAEiAwRAIAJBCGogAyABQawBaigCACgCDBEAACACKQMQIQUgAikDCCIEQv////8PgyIGQgFRDQEgAUGoAWoiAxC2ByADQQA2AgAgBkIAUg0BCwJAIAEpAwAiBEICUgRAIAEoAqABIgMNAQtCACEEDAELIAEgA0EBazYCoAECQCABKQMQQgJSBEAgAkEYaiABQRBqEGQgAikDGEIAUg0BIAFCAjcDECABKQMAIQQLIAEpAwghBQwBCyACKQMgIQVCASEECyAAIAU3AwggACAENwMAIAJBQGskAAvuAQICfwN+IwBBQGoiAiQAAkAgASgCqAEiAwRAIAJBCGogAyABQawBaigCACgCDBEAACACKQMQIQUgAikDCCIEQv////8PgyIGQgFRDQEgAUGoAWoiAxC2ByADQQA2AgAgBkIAUg0BCwJAIAEpAwAiBEICUgRAIAEoAqABIgMNAQtCACEEDAELIAEgA0EBazYCoAECQCABKQMQQgJSBEAgAkEYaiABQRBqEGMgAikDGEIAUg0BIAFCAjcDECABKQMAIQQLIAEpAwghBQwBCyACKQMgIQVCASEECyAAIAU3AwggACAENwMAIAJBQGsk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aCADIBE2AmQgAyAQNgJgIAMgDzYCXCADIA42AlggAyANNgJUIAMgCjYCUCADIAk2AkwgAyAINgJIIAMgFDYCOCADIBY5AzAgAyAMNgIcIAMgBzYCGCADIAs2AgQgAyAGNgIAIANBEGogAkEQaikDADcDACADQShqIAJBIGopAwA3AwAMAgsgAigCLCEBIANBAjYCACADIAE2AgQMAQsgAigCLCEBIANBAjYCACADIAE2AgQLIAJBQGskACAAAn4gBSgCCEECRwRAIABBCGogBUEIakH4ABDnCRpCAQwBCyAAIAUoAgw2AghCAgs3AwAMAQsgBSgCDCEBIABCAjcDACAAIAE2AggLIAVBgAFqJAAL5wECAn8DfiMAQSBrIgIkAAJAIAEoAkgiAwRAIAJBEGogAyABQcwAaigCACgCDBEAACACKQMYIQUgAikDECIEQv////8PgyIGQgFRDQEgAUHIAGoiAxC2ByADQQA2AgAgBkIAUg0BCwJAIAEpAwAiBEICUgRAIAEoAkAiAw0BC0IAIQQMAQsgASADQQFrNgJAAkAgASkDEEICUgRAIAIgAUEQahCyAyACKQMApw0BIAFCAjcDECABKQMAIQQLIAEpAwghBQwBCyACKQMIIQVCASEECyAAIAU3AwggACAENwMAIAJBIGokAAvnAQICfwN+IwBBIGsiAiQAAkAgASgCSCIDBEAgAkEQaiADIAFBzABqKAIAKAIMEQAAIAIpAxghBSACKQMQIgRC/////w+DIgZCAVENASABQcgAaiIDELYHIANBADYCACAGQgBSDQELAkAgASkDACIEQgJSBEAgASgCQCIDDQELQgAhBAwBCyABIANBAWs2AkACQCABKQMQQgJSBEAgAiABQRBqELEDIAIpAwCnDQEgAUICNwMQIAEpAwAhBAsgASkDCCEFDAELIAIpAwghBUIBIQQLIAAgBTcDCCAAIAQ3AwAgAkEgaiQAC9ABAQh/IwBBEGsiAyQAAkAgAUEUaigCACIIIAEoAhAiBUYEQEEBIQQMAQsgASAFQQN0aiEGQQEhBANAAkAgASAFQQFqIgU2AhAgBkEEaigCACEJIANBCGogByAEIAYoAgAiAiACIARJGyIEENYHIAMoAghFDQAgAygCDCECIAMgCSAEENYHIAMoAgBFDQAgAiACIAMoAgRqIgJLDQAgBkEI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BiMAQdAAayICJAACQCABKAIIIgUgASgCDEYEQEICIQgMAQsgASAFQQRqNgIIIAJBKGogBSgCABB7An4gAigCKARAIAIoAiwhASACQSUQ8AUgAigCACEHIAIoAgRBr4/BAEElEOcJIQUgAkElNgIQIAIgBTYCDCACIAc2AgggBUElEAUhBSACQQhqEP8HIAFBhAFPBEAgARACCwJAIAYoAgBFDQAgBigCBCIBQYQBSQ0AIAEQAgsgBiAFNgIEIAZBATYCAEIADAELIAJBIGogAkHIAGopAwA3AwAgAkEYaiACQUBrKQMANwMAIAJBEGogAkE4aikDADcDACACIAIpAzA3AwhCAQshCCAEIAIpAwg3AwggBEEgaiACQSBqKQMANwMAIARBGGogAkEYaikDADcDACAEQRBqIAJBEGopAwA3AwALIAQgCDcDACACQdAAaiQAIAACfgJAIAMpAygiCEICUQ0AIANBIGoiASADQcgAaikDADcDACADQRhqIgIgA0FAaykDADcDACADQRBqIgQgA0E4aikDADcDACADIAMpAzA3AwggCFANACAAIAMpAwg3AwggAEEgaiABKQMANwMAIABBGGogAikDADcDACAAQRBqIAQpAwA3AwBCAQwBC0IACzcDACADQdAAaiQAC40EAgZ/AX4jAEHQAGsiAyQAIANBKGohBCABKAIQIQYjAEHQAGsiAiQAAkAgASgCCCIFIAEoAgxGBEBCAiEIDAELIAEgBUEEajYCCCACQShqIAUoAgAQiAICfiACKAIoBEAgAigCLCEBIAJBJRDwBSACKAIAIQcgAigCBEHljsEAQSUQ5wkhBSACQSU2AhAgAiAFNgIMIAIgBzYCCCAFQSUQBSEFIAJBCGoQ/wcgAUGEAU8EQCABEAILAkAgBigCAEUNACAGKAIEIgFBhAFJDQAgARACCyAGIAU2AgQgBkEBNgIAQgAMAQsgAkEgaiACQcgAaikDADcDACACQRhqIAJBQGspAwA3AwAgAkEQaiACQThqKQMANwMAIAIgAikDMDcDCEIBCyEIIAQgAikDCDcDCCAEQSBqIAJBIGopAwA3AwAgBEEYaiACQRhqKQMANwMAIARBEGogAkEQaikDADcDAAsgBCAINwMAIAJB0ABqJAAgAAJ+AkAgAykDKCIIQgJRDQAgA0EgaiIBIANByABqKQMANwMAIANBGGoiAiADQUBrKQMANwMAIANBEGoiBCADQThqKQMANwMAIAMgAykDMDcDCCAIUA0AIAAgAykDCDcDCCAAQSBqIAEpAwA3AwAgAEEYaiACKQMANwMAIABBEGogBCkDADcDAEIBDAELQgALNwMAIANB0ABqJAAL2wEBA38jAEEgayICJAACQCABIAAoAggiA0kEQCACQQxqIAAoAgQgAUEGdGoQ4gUgAigCDA0BIAJBFGotAAAhAyACKAIQIgEtAAIiBARAIAFBADoAAiAAIAAoAgxBAWs2AgwLAkAgAw0AQezNwwAoAgBB/////wdxRQ0AEO0JDQAgAUEBOgABCyABQQA6AAAgAkEgaiQAIARBAEcPCyABIANB9LLCABDABQALIAIgAigCEDYCGCACIAJBFGotAAA6ABxB7LDCAEErIAJBGGpBmLHCAEGEs8IAEPYEAAvXAgIHfwJ+IwBBoBhrIgIkACAAKAIAIgEgASgCACIAQQFqNgIAIABBAE4EQEEAIQBB1L/CACkCACEIQdy/wgApAgAhCQNAIAJBoBBqIABqIgMgCDcCACADQQhqIAk3AgAgAEEQaiIAQYAIRw0ACyACQaAIaiIAIAJBoBBqQYAIEOcJGiACQgA3AgQgAiABNgIMIAJBEGogAEGACBDnCRogAkGQCGpCADcCACACQgE3ApgIIAFBgAJqIQMgAkEEaiEAQYHNwwAtAAAaQZwIQQQQhAkiAUUEQEEEQZwIEN8JAAsgASAAQZwIEOcJIgZBfHEiBBCABiEFIAQgAygCACIBNgIAIAMgBSADKAIAIgAgACABRiIBGzYCACABRQRAA0AgBCAANgIAIAMgBSADKAIAIgEgACABRiIHGzYCACABIQAgB0UNAAsLIAJBoBhqJAAgBkF8cQ8LAAvUAQIDfwF+IwBBIGsiAiQAIAACfwJAAkAgAUIIEKIGIgMNACACQgA3AwggASgCDCIBKAIEIgNBB00EQCACQoKAgICAvokINwMIIAJBCGoQuwchAwwBCyACQQhqQQggASgCACIEQQhBxMvAABDeByABIANBCGs2AgQgASAEQQhqNgIAIAIpAwgiBUKAgICAEFQNASACQQE6AAggAiAFNwMQIAJBCGogAkEfakG0ysAAEKQFIQMLIAAgAzYCBEEBDAELIAAgBT4CBEEACzYCACACQSBqJAAL6gIBDH8jAEEQayIEJAACQCAAQRxqKAIAIgkgAEEgaigCACIFSQ0AIABBKGotAAAhCCAAQSRqKAIAIQYgAEEYaigCACEHIAAoAgAhCyAFQQN0IQwgASgCACEKA0AgB0UgCEH/AXFFcg0BIAQgByAFIAsRAgAgBCAEKQMANwIIAkAgBEEIaiIAKAIEIgIEQCAAKAIAIQEgCiACbiINQQFxBEAgAkEDdCEDIAEhAANAIABCACAAKQMAfTcDACAAQQhqIQAgA0EIayIDDQALCyABIAIgCiACIA1sayIDEMUHAkAgA0UNACACQQN0IQAgAUEIayEBA0AgAEUNASAAIAFqIgJCACACKQMAfTcDACAAQQhrIQAgA0EBayIDDQALCwwBC0HgkMEAQRlB9L/BABDMBgALIAhBACAGQQFLGyEIIAcgDGohByAGQQFrIgBBACAAIAZNGyEGIAkgBWsiCSAFTw0ACwsgBEEQaiQAC8sBAQJ/IwBBIGsiAyQAAkACQCABIAEgAmoiAUsNAEEIIAAoAgAiAkEBdCIEIAEgASAESRsiASABQQhNGyIEQX9zQR92IQECQCACRQRAIANBADYCGAwBCyADIAI2AhwgA0EBNgIYIAMgACgCBDYCFAsgA0EIaiABIAQgA0EUahCJAyADKAIMIQEgAygCCEUEQCAAIAQ2AgAgACABNgIEDAILIAFBgYCAgHhGDQEgAUUNACABIANBEGooAgAQ3wkACxD7BgALIANBIGokAAvTAQIBfwF+IwBBIGsiBSQAAkAgAEEAAn9BgJTr3AMgASADVA0AGiABIAN9IQMgAiAESQRAQYCU69wDIANQDQEaIANCAX0hAyACQYCU69wDaiECCyADIAIgBGsiAkGAlOvcA24iBK18IgYgA1QNASACIARBgJTr3ANsawsiAiACQYCU69wDRiICGzYCCCAAQgAgBiACGzcDACAFQSBqJAAPCyAFQRRqQgA3AgAgBUEBNgIMIAVBkOzCADYCCCAFQfzqwgA2AhAgBUEIakHg7MIAEPwGAAvLAQECfyMAQSBrIgMkAAJAAkAgASABIAJqIgFLDQBBCCAAKAIAIgJBAXQiBCABIAEgBEkbIgEgAUEITRsiBEF/c0EfdiEBAkAgAkUEQCADQQA2AhgMAQsgAyACNgIcIANBATYCGCADIAAoAgQ2AhQLIANBCGogASAEIANBFGoQywIgAygCDCEBIAMoAghFBEAgACAENgIAIAAgATYCBAwCCyABQYGAgIB4Rg0BIAFFDQAgASADQRBqKAIAEN8JAAsQ+wYACyADQSBqJAALyQEBA38jAEEgayICJAACQAJAIAFBAWoiAUUNAEEIIAAoAgAiBEEBdCIDIAEgASADSRsiASABQQhNGyIDQX9zQR92IQECQCAERQRAIAJBADYCGAwBCyACIAQ2AhwgAkEBNgIYIAIgACgCBDYCFAsgAkEIaiABIAMgAkEUahDLAiACKAIMIQEgAigCCEUEQCAAIAM2AgAgACABNgIEDAILIAFBgYCAgHhGDQEgAUUNACABIAJBEGooAgAQ3wkACxD7BgALIAJBIGokAAvLAQECfyMAQTBrIgUkACAFIAI2AgACQCACBEAgASgCCCIGIAJwRQ0BIAVBKGpBKTYCACAFQRBqQgI3AgAgBUEDNgIIIAVByLjAADYCBCAFQRY2AiAgBSAGNgIsIAUgBUEcajYCDCAFIAU2AiQgBSAFQSxqNgIcIAVBBGpB4LjAABD8BgALQYCgwABBOUHAt8AAEMwGAAsgACADNwMAIAAgAjYCECAAIAQ3AwggACABKQIANwIUIABBHGogAUEIaigCADYCACAFQTBqJAAL6wEDAX8BfAF+IwBBMGsiAyQAIAEoAgBFBEAgAyAAIAErAwggAUEQaisDABDmAiADKwMAIgQgBBCGCKEgArqiEIYIIgREAAAAAAAA4MNmIQACfiAEmUQAAAAAAADgQ2MEQCAEsAwBC0KAgICAgICAgIB/CyEFIANBMGokACACQv///////////wAgBUKAgICAgICAgIB/IAAbIARE////////30NkG0IAIAQgBGEbIgJCP4eDIAJ8DwsgA0EgakIANwIAIANBATYCGCADQfjGwQA2AhQgAyADQSxqNgIcIANBFGpBsMfBABD8BgALqwEBAX8gAAJ/AkACfwJAAkAgAQRAIAJBAEgNASADKAIEBEAgA0EIaigCACIEBEAgAygCACAEIAEgAhCNCAwFCwsgAkUNAkGBzcMALQAAGiACIAEQhAkMAwsgAEEANgIEIABBCGogAjYCAAwDCyAAQQA2AgQMAgsgAQsiAwRAIAAgAzYCBCAAQQhqIAI2AgBBAAwCCyAAIAE2AgQgAEEIaiACNgIA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MGokACAIKAIIIQECQCAIKAIYIgJBgICAgHhHBEAgACAIKQIMNwIEIABBDGogCEEUaigCADYCACAAQRRqIAhBHGpBJBDnCRogACACNgIQDAELIABBgYCAgHg2AhALIAAgATYCAAsgCEFAayQAC8IEAgl/A34jAEEwayICJAAgAkEANgIEIAJBIGogAUEIaikCADcDACACIAEpAgA3AxggAiACQQRqNgIoIAJBDGohByMAQUBqIgEkACABQRhqIAJBGGoiAxD9AgJAIAEpAxhQBEAgB0EANgIIIAdCgICAgIABNwIAIAMQ5wUMAQsgARDMBSABQShqIgUpAwAhCyABQTBqKQMAIQwgAUE4aikDACENIAEoAgAhBiABKAIEIgQgASkDIDcDACAEQRhqIA03AwAgBEEQaiAMNwMAIARBCGogCzcDACABQRRqIgpBATYCACABIAQ2AhAgASAGNgIMIAUgA0EQaigCADYCACABQSBqIANBCGopAgA3AwAgASADKQIANwMYIwBBMGsiAyQAIANBCGogAUEYaiIJEP0CIAMpAwhQRQRAIAFBDGohBCADQRBqIQUDQCAEKAIIIgYgBCgCAEYEQCAEIAYQqQYLIAQoAgQgBkEFdGoiCCAFKQMANwMAIAhBGGogBUEYaikDADcDACAIQRBqIAVBEGopAwA3AwAgCEEIaiAFQQhqKQMANwMAIAQgBkEBajYCCCADQQhqIAkQ/QIgAykDCFBFDQALCyAJEOcFIANBMGokACAHQQhqIAooAgA2AgAgByABKQIMNwIACyABQUBrJAACQCACKAIERQRAIAAgAikCDDcCACAAQQhqIAJBFGooAgA2AgAMAQsgACACKAIINgIEIABBgICAgHg2AgAgAigCDEUNACACKAIQEGsLIAJBMGokAAvCBAIJfwN+IwBBMGsiAiQAIAJBADYCBCACQSBqIAFBCGopAgA3AwAgAiABKQIANwMYIAIgAkEEajYCKCACQQxqIQcjAEFAaiIBJAAgAUEYaiACQRhqIgMQ/AICQCABKQMYUARAIAdBADYCCCAHQoCAgICAATcCACADEOcFDAELIAEQzAUgAUEoaiIFKQMAIQsgAUEwaikDACEMIAFBOGopAwAhDSABKAIAIQYgASgCBCIEIAEpAyA3AwAgBEEYaiANNwMAIARBEGogDDcDACAEQQhq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CGoiBCgCRCILQf8BTQRAIAJB2ABqIgVB4JnAACkDACIhNwMAIAJB0ABqIgxB2JnAACkDACIiNwMAIAJByABqIhFB0JnAACkDACIjNwMAIAJByJnAACkDACIkNwNAIAJBQGsiDSALEMoCIAJBOGoiCyAFKQMANwMAIAJBMGoiDiAMKQMANwMAIAJBKGoiEiARKQMANwMAIAIgAikDQDcDICAFICE3AwAgDCAiNwMAIBEgIzcDACACICQ3A0AgAkEgaiANEKsBIAJBGGogCykDADcDACACQRBqIA4pAwA3AwAgAkEIaiASKQMANwMAIAIgAikDIDcDACAFIARBGGopAwA3AwAgDCAEQRBqKQMANwMAIBEgBEEIaikDADcDACACIAQpAwA3A0ADQCACQUBrIAhqIgQgBCkDACACIAhqKQMAgzcDACAIQQhqIghBIEcNAAsgByACKQNANwMAIAdBGGogAkHYAGopAwA3AwAgB0EQaiACQdAAaikDADcDACAHQQhqIAJByABqKQMANwMADAELIAcgBCkDADcDACAHQRhqIARBGGopAwA3AwAgB0EQaiAEQRBqKQMANwMAIAdBCGogBEEIaikDADcDAAsgAkHgAGokAAsgA0HwAGokACAGRQ0BIBNBgAFqIQtBACENIwBBgAFrIgQkAAJAIAogBmdBH3NsIhZB/wFNBEAgBEH4AGoiAiALQRhqKQMANwMAIARB8ABqIgMgC0EQaikDADcDACAEQegAaiIHIAtBCGopAwA3AwAgBCALKQMANwNgIARB4ABqIBZBAWtBARDkASAEQdgAaiACKQMANwMAIARB0ABqIAMpAwA3AwAgBEHIAGogBykDADcDACAEIAQpA2A3A0ADQCAEQUBrIA1qIgIgAikDACANQcjKwQBqKQMAgzcDACANQQhqIg1BIEcNAAsgBEEYaiAEQdgAaiIXKQMANwMAIARBEGogBEHQAGoiGCkDADcDACAEQQhqIARByABqIhkpAwA3AwAgBCAEKQNANwMAQQAhDSAEQfgAaiIaQfjLwQApAwA3AwAgBEHwAGoiG0Hwy8EAKQMANwMAIARB6ABqIhxB6MvBACkDADcDACAEQeDLwQApAwA3A2BBACECIwBBgAFrIgMkACAEQZCLwQAQuQNBAWpB/wFxQQJPBEAgA0EYaiAEQRhqIgIpAwA3AwAgA0EQaiAEQRBqIgcpAwA3AwAgA0EIaiAEQQhqIggpAwA3AwAgAyAEKQMANwMAIANB2ABqIgUgAikDADcDACADQdAAaiIMIAcpAwA3AwAgA0HIAGoiByAIKQMANwMAIAMgBCkDADcDQEEAIQIgA0H4AGpByIvBACkDADcDACADQfAAakHAi8EAKQMANwMAIANB6ABqQbiLwQApAwA3AwAgA0Gwi8EAKQMANwNgIANBQGsgA0HgAGoQqwEgA0E4aiAFKQMANwMAIANBMGogDCkDADcDACADQShqIAcpAwA3AwAgAyADKQNANwMgA0AgAiADaiIHIAcpAwAgA0EgaiACaikDAIM3AwAgAkEIaiICQSBHDQALIANB+ABqIANBGGopAwA3AwAgA0HwAGogA0EQaikDADcDACADQegAaiADQQhqKQMANwMAIAMgAykDADcDYCADQeAAakGQi8EAQSAQ5glFIQILIARB4ABqIQcgA0GAAWokAAJAIAJFBEBBACEOIwBB0ABrIgYkACAGQSBqQQQQyAUgBkEANgIwIAYgBikDIDcCKCAEIgNBIGohCANAIAMpAwAhIkEAIQUgBkEYaiAOQQRqQQAQzgUgBkEANgI8IAYgBikDGDcCNCAOBEAgBkE0aiAOEJEEIAYoAjwhBQtBICEKQgAhISAHIQIDQCAGQQhqIAIpAwBCACAiEIUFIAZBEGopAwAhIyAhIAYpAwgiJHwiJSAkVK0gBigCNCAFRgRAIAZBNGogBRCjBiAGKAI8IQULICN8ISEgAkEIaiECIAYoAjggBUEDdGogJTcDACAGIAYoAjxBAWoiBTYCPCAKQQhrIgoNAAsgBigCNCAFRgRAIAZBNGogBRCjBiAGKAI8IQULIAYoAjggBUEDdGogITcDACAGQTxqIgIgAigCAEEBaiICNgIAIAZByABqIgwgAjYCACAGIAYpAjQ3A0AgBigCMCIFIAYoAihGBEAgBkEoaiAFEKQGIAYoAjAhBQsgDkEBaiEOIAYoAiwgBUEMbGoiAiAGKQNANwIAIAJBCGogDCgCADYCACAGIAYoAjAiAkEBaiIFNgIwIANBCGoiAyAIRw0ACwJAAkAgBUUNACAGIAI2AjAgBigCLCIFIAJBDGxqIhIoAgAiHUGAgICAeEYNACASKAIIIRQgEigCBCEIIAYoAighAyAGIBI2AkwgBiAFNgJIIAYgAzYCRCAGIAU2AkAgAkUNASAUQQN0IQwDQCAGIAVBDGoiETYCSCAFKAIAIh5BgICAgHhGDQIgBSgCBCEfIBQEQCAFKQIEIiGnIgogIUIgiKdBA3RqISBBACEOIAwhAyAIIQIDQCACIQVCACEhAn9BACAKRQ0AGkEAIAogIEYNABogCikDACEhIApBCGoLIQogBUEIaiECIAUgBSkDACIiICF8IiEgDq1CAYN8IiM3AwAgISAiVCAhICNWciEOIANBCGsiAw0ACwsgHgRAIB8QawsgESIFIBJHDQALDAELQZSTwQBBK0GYysEAEMwGAAsgBkFAayICKAIMIgwgAigCCCIDa0EMbiEFIAMgDEcEQANAIAMoAgAEQCADQQRqKAIAEGsLIANBDGohAyAFQQFrIgUNAAsLIAIoAgQEQCACKAIAEGsLQSAhCiAUQQN0IQUgCCECA0AgBQRAIAcgAikDADcDACAFQQhrIQUgAkEIaiECIAdBCGohByAKQQhrIgoNAQsLIB0EQCAIEGsLIAZB0ABqJAAMAQsgBwJ/IwBBIGsiAyQAIARBkIvBABC5A0H/AXFBAUYEQCAEQRhqIQJBwX0hCAJ/A0BBfyAIQUFGDQEaIAhBQGshCCACKQMAIAJBCGshAnmnIgdBwABGDQALQQAgByAIamsLIANBIGokAAwBCyADQRRqQgA3AgAgA0EBNgIMIANBgIzBADYCCCADQcyAwQA2AhAgA0EIakGwjMEAEPwGAAsQygILIBcgGikDADcDACAYIBspAwA3AwAgGSAcKQMANwMAIAQgBCkDYDcDQCAEQUBrIBYQygIgBEE4aiAXKQMANwMAIARBMGogGCkDADcDACAEQShqIBkpAwA3AwAgBCAEKQNANwMgA0AgBEEgaiANaiICIAIpAwAgCyANaikDAIQ3AwAgDUEIaiINQSBHDQALIAkgBCkDIDcDACAJQRhqIARBOGopAwA3AwAgCUEQaiAEQTBqKQMANwMAIAlBCGogBEEoaikDADcDAAwBCyAJIAspAwA3AwAgCUEYaiALQRhqKQMANwMAIAlBEGogC0EQaikDADcDACAJQQhqIAtBCGopAwA3AwALIARBgAFqJAAgE0GgAWokAAwCC0GgzMEAQTNB1MzBABDMBgALQeTMwQAQ/QYACyAJQSRqEMoHQQAhA0EAIQgjAEFAaiIHJAAgCUGoysEAELkDIgxB/wFxQf8BRgRAIAdBOGogCUEYaiIFKQMANwMAIAdBMGogCUEQaiIRKQMANwMAIAdBKGogCUEIaiIGKQMANwMAIAcgCSkDADcDICAHQSBqIQQDQCADIARqIgIgAikDAEJ/hTcDACADQQhqIgNBIEcNAAtBACEDQbCLwQAhAgNAQgAhIQJ/QQAgAkUNABpBACACQdCLwQBGDQAaIAIpAwAhISACQQhqCyECIAMgBGoiCiAKKQMAIiIgIXwiISAIrXwiIzcDACAhICJUICEgI1ZyIQggA0EIaiIDQSBHDQALIAcgBCkDADcDACAHQRhqIgIgBEEYaikDADcDACAHQRBqIgMgBEEQaikDADcDACAHQQhqIgggBEEIaikDADcDACAFIAIpAwA3AwAgESADKQMANwMAIAYgCCkDADcDACAJIAcpAwA3AwALQRghA0GHz8EAQQIQGCEIQYnPwQBBARAYIQIDQCACIAgQHSEEIAJBhAFPBEAgAhACCyAEIAMgCWopAwAQACIFEB8hAiAFQYQBTwRAIAUQAgsgBEGEAU8EQCAEEAILIANBCGsiA0F4Rw0ACwJAIAxB/wFxQf8BRwRAIAIhAwwBCyACEBwhAyACQYQBSQ0AIAIQAgsgCEGEAU8EQCAIEAILIAdBQGskACAQQQRqIgJBCGogAzYCACACQgA3AgAgCUEwaiQAAkAgECgCBEUEQCAQQQxqKAIAIQIgECgCCCEDDAELIBBBDGooAgAhByAQKAIIIQhBpI3CAEEQEAUhAiAIIAcoAgARAQBBASEDIAcoAgRFDQAgBygCCBogCBBrCyAPIAI2AgQgDyADNgIAIBBBEGokACAPKAIEIQIgDygCACEDIBUgFSgCAEEBazYCACABIAEoAgBBAWs2AgAgACADQQBHNgIIIAAgAkEAIAMbNgIEIAAgAjYCACAPQRBqJAAPCxDSCQALENMJAAu0AgEFfyMAQSBrIgQkAAJAIAEEQCABKAIAIgNBf0YNASABIANBAWo2AgAgBEEIaiACENIGIAQoAgwhBiAEKAIIIQMgBEGAgICAeDYCFCAEIAFBBGoiAjYCGAJ/IwBBgAFrIgUkACAFIAMQ2wUCQCAFQewAaigCACIHaUEBRgRAIAMgAigCBCACKAIIIgMQxwIhAiAHRQ0BIAVBgAFqJAAgAyAHZ0Efc2wiA0EHTQR/QQAgAkH/AXEgA0EBa0EHcXZBAXFrQf8AcSADdCACcgUgAgsMAgtBoMzBAEEzQdTMwQAQzAYAC0HkzMEAEP0GAAshAiAEQRRqEMoHIAYgBigCAEEBazYCACABIAEoAgBBAWs2AgAgAEIANwIEIAAgAsA2AgAgBEEgaiQADwsQ0gkACxDTCQALtgIBBX8jAEEgayIEJAACQCABBEAgASgCACIDQX9GDQEgASADQQFqNgIAIARBCGogAhDSBiAEKAIMIQYgBCgCCCEDIARBgICAgHg2AhQgBCABQQRqIgI2AhgCfyMAQYABayIFJAAgBSADENsFAkAgBUHsAGooAgAiB2lBAUYEQCADIAIoAgQgAigCCCIDEMgCIQIgB0UNASAFQYABaiQAIAMgB2dBH3NsIgNBD00Ef0EAIAJB//8DcSADQQFrQQ9xdkEBcWtB//8BcSADdCACcgUgAgsMAgtBoMzBAEEzQdTMwQAQzAYAC0HkzMEAEP0GAAshAiAEQRRqEMoHIAYgBigCAEEBazYCACABIAEoAgBBAWs2AgAgAEIANwIEIAAgAsE2AgAgBEEgaiQADwsQ0gkACxDTCQAL7QkBDH8jAEHwAmsiDCQAIAwgAjcD6AIgDCABNwPgAiMAQeACayIDJAAgA0EAQeACEOQJIgcgDEHgAmoiAyADEJYBQXshCUEIIQgDQCAIQQhrIgNBD2ohBiAHIANBAnRqIQRBICEKAkACQAJAA0AgBkEIa0HYAE8NAiAGQdgATw0BIAQgCmoiA0EcaiADQQRrKAIANgIAIAZBAWshBiAKQQRrIgoNAAsMAgsgBkHYAEGwpMIAEMAFAAsgBkEIa0HYAEGgpMIAEMAFAAsgBSAHaiIEQSBqIgMQbyADIAMoAgBBf3M2AgAgBEEkaiIDIAMoAgBBf3M2AgAgBEE0aiIDIAMoAgBBf3M2AgAgBEE4aiIDIAMoAgBBf3M2AgAgByAFIAlBBWpBCE8EfyAHIA1qIgQgBCgCAEGAgANzNgIAIARBBGoiAyADKAIAQYCAA3M2AgAgBEEMaiIDIAMoAgBBgIADczYCACAJQQFqBSALC0ECdGpqQSBqIgMgAygCAEGAgANzNgIAQQAhCkF4IQ4gByAIQQJ0aiEGQdgAIAggCEHYAE8bQdgAayEEAkACQAJAA0AgCCAOaiIDQdgATw0CIAQgCkYNASAGIAZBIGsoAgAgBigCAEEOeEGDhowYcXMiA0ECdEH8+fNncSADQQR0QfDhw4d/cXMgA0EGdEHAgYOGfHFzIANzNgIAIA5BAWohDiAGQQRqIQYgCkEBayIKQXhHDQALDAILIAggCmtB2ABBkKTCABDABQALIANB2ABBgKTCABDABQALIAtBAWohCyAJQQFqIQkgDUEkaiENIAhBCGohCCAFQSBqIgVBwAJHDQALIAdB4ABqIQYgB0FAayEJIAdBIGohC0EAIQUDQCAFQQAhBQNAIAUgC2oiBCAEKAIAIgQgBCAEQQR2c0GAmLwYcSIEQQR0cyAEcyIEIAQgBEECdnNBgOaAmANxIgRBAnRzIARzNgIAIAVBBGoiBUEgRw0AC0EAIQUDQCAFIAlqIgQgBCgCACIEIAQgBEEEdnNBgJ6A+ABxIgRBBHRzIARzNgIAIAVBBGoiBUEgRw0AC0EAIQUDQCAFIAZqIgQgBCgCACIEIAQgBEEEdnNBgIa84ABxIgRBBHRzIARzIgQgBCAEQQJ2c0GA5oCYA3EiBEECdHMgBHM2AgAgBUEEaiIFQSBHDQALIAZBgAFqIQYgCUGAAWohCSALQYABaiELQQEhBUEBcUUNAAtBoAIhBQNAIAUgB2oiAyADKAIAIgMgAyADQQR2c0GAmLwYcSIDQQR0cyADcyIDIAMgA0ECdnNBgOaAmANxIgNBAnRzIANzNgIAIAVBBGoiBUHAAkcNAAtBACEIA0AgByAIaiIFQSBqIgMgAygCAEF/czYCACAFQSRqIgMgAygCAEF/czYCACAFQTRqIgMgAygCAEF/czYCACAFQThqIgMgAygCAEF/czYCACAIQSBqIghBwAJHDQALIAwgB0HgAhDnCRogB0HgAmokAEGBzcMALQAAGkHgAkEEEIQJIgNFBEBBBEHgAhDfCQALIAMgDEHgAhDnCSEDIABBKGpCfzcDACAAQn83AyAgAEEQakEANgIAIABBCGpCADcDACAAQgA3AwAgACADNgK4ASAAQf8ANgIYIABBMGpBDjYCACAAQThqQQBBgAEQ5AkaIAxB8AJqJAALrwIBBX8jAEEgayIEJAACQCABBEAgASgCACIDQX9GDQEgASADQQFqNgIAIARBCGogAhDSBiAEKAIMIQYgBCgCCCEDIARBgICAgHg2AhQgBCABQQRqIgI2AhgCfyMAQYABayIFJAAgBSADENsFAkAgBUHsAGooAgAiB2lBAUYEQCADIAIoAgQgAigCCCIDENMCIQIgB0UNASAFQYABaiQAIAMgB2dBH3NsIgNBH00Ef0EAIAIgA0EBa3ZBAXFrQf////8HcSADdCACcgUgAgsMAgtBoMzBAEEzQdTMwQAQzAYAC0HkzMEAEP0GAAshAiAEQRRqEMoHIAYgBigCAEEBazYCACABIAEoAgBBAWs2AgAgAEIANwIEIAAgAjYCACAEQSBqJAAPCxDSCQALENMJAAu7AgIFfwF+IwBBIGsiAyQAAkAgAQRAIAEoAgAiBEF/Rg0BIAEgBEEBajYCACADQQhqIAIQ0gYgAygCDCEGIAMoAgghBCADQYCAgIB4NgIUIAMgAUEEaiICNgIYAn4jAEGAAWsiBSQAIAUgBBDbBQJAIAVB7ABqKAIAIgdpQQFGBEAgBCACKAIEIAIoAggiAhDNAiEIIAdFDQEgBUGAAWokACACIAdnQR9zbCICQT9NBH5CACAIIAJBAWtBP3GtiEIBg31C////////////AIMgAq2GIAiEBSAICwwCC0GgzMEAQTNB1MzBABDMBgALQeTMwQAQ/QYACyEIIANBFGoQygcgBiAGKAIAQQFrNgIAIAEgASgCAEEBazYCACAAQgA3AwggACAINwMAIANBIGokAA8LENIJAAsQ0wkAC7IBAQN/IwBBIGsiACQAAkACQEHE0cMAKAIAIgFFBEAQrwMhAUHE0cMAKAIADQFBxNHDACABNgIACyABIAEoAgAiAkEBajYCACACQQBIDQEgASABKAIAIgJBAWs2AgAgACABNgIIIAJBAUYEQCAAQQhqEPIFCyAAQSBqJAAPCyAAQRRqQgA3AgAgAEEBNgIMIABBjOvCADYCCCAAQfzqwgA2AhAgAEEIakHk68IAEPwGAAsAC7IBAQJ/IwBBIGsiASQAAkACQEHE0cMAKAIAIgJFBEAQrwMhAkHE0cMAKAIADQFBxNHDACACNgIACyACIAIoAgAiA0EBajYCACADQQBIDQEgAiACKAIAIgNBAWs2AgAgASACNgIIIANBAUYEQCABQQhqEPIFCyABQSBqJAAPCyABQRRqQgA3AgAgAUEBNgIMIAFBjOvCADYCCCABQfzqwgA2AhAgAUEIakHk68IAEPwGAAsAC6cCAQd/IwBB0ABrIgMkAAJAIAIoAgAiBiACKAIEIgdGDQAgAigCCCEIA0AgA0EIaiAIKAIAIAYQ7wUgAygCGEGAgICAeEYNASADQcgAaiABQQhqKAIANgIAIAMgASkCADcDQCADQQhqIQkjAEEgayICJAAgA0FAayIEKAIIIgUgBCgCBE8EQCACQRRqQgA3AgAgAkEBNgIMIAJBnP/AADYCCCACQcyAwQA2AhAgAkEIakGMgMEAEPwGAAsgBCgCACAFQThsaiAJQTgQ5wkaIARBCGogBUEBaiIFNgIAIAFBCGogBTYCACABIAQpAgA3AgAgAkEgaiQAIAZBOGoiBiAHRw0ACwsgACABKQIANwIAIABBCGogAUEIaigCADYCACADQdAAaiQAC4gUAhJ/AX4jAEEwayIMJAAgDCACNgIsIAwgATYCKCAMIAI2AiQgDEEIaiAMQSRqEIgJIAxBFGohECAMKAIIIQEgDCgCDCITIQIjAEEgayILJAAgCyACNgIEIAsgATYCACALIAM3AwggC0EQaiESQgAhAyMAQRBrIgIkACALKAIAIQUgCygCBCEGIAtBCGopAwAhFiMAQZABayIEJAAgBCAGNgIMIAQgBTYCCCAEQQA2AnAgBEKAgICAEDcCaCAEIARBCGo2AnQgBEHcAGogBEHoAGpC5AAQmwYCQAJAAkACQAJAAkACQCAEKAJcQYCAgIB4RgRAIAQoAmAhBSAEQQA2AkggBEKAgICAEDcCQCAEQYABakGkjsAANgIAIARBAzoAiAEgBEEgNgJ4IARBADYChAEgBEEANgJwIARBADYCaCAEIARBQGs2AnwgBSAEQegAahBcRQ0BDAYLIARBGGogBEHkAGooAgAiBTYCACAEIAQpAlw3AxAgBCgCFCAFQbCawABBAxDuBw0BIARBzABqQRc2AgAgBEH0AGpCAjcCACAEQQI2AmwgBEHIncAANgJoIARBGDYCRCAEQbScwAA2AkAgBCAEQUBrNgJwIAQgBEEQajYCSCACQQRqIARB6ABqEKABIAJBAjYCAAwCCyAEQdgAaiIGIARByABqKAIANgIAIAQgBCkCQDcDUCAFEM0GIAUQayAEQThqIAYoAgAiBTYCACAEIAQpA1AiFjcDMCACQQxqIAU2AgAgAiAWNwIEIAJBAjYCAAwDCyAEQQA2AnAgBEKAgICAEDcCaCAEIARBCGo2AnQgBEHcAGogBEHoAGpC6AcQmwYCQCAEKAJcQYCAgIB4RgRAIAQoAmAhBSAEQQA2AkggBEKAgICAEDcCQCAEQYABakGkjsAANgIAIARBAzoAiAEgBEEgNgJ4IARBADYChAEgBEEANgJwIARBADYCaCAEIARBQGs2AnwgBSAEQegAahBcRQ0BDAULIARBKGogBEHkAGooAgAiBTYCACAEIAQpAlw3AyAgBCgCJCAFQbOawABBIRDuBw0CIARBzABqQRc2AgAgBEH0AGpCAjcCACAEQQI2AmwgBEH0nMAANgJoIARBGDYCRCAEQfidwAA2AkAgBCAEQUBrNgJwIAQgBEEgaiIFNgJIIAJBBGogBEHoAGoQoAEgAkECNgIAIAUQ/wcMAQsgBEHYAGoiBiAEQcgAaigCADYCACAEIAQpAkA3A1AgBRDNBiAFEGsgBEE4aiAGKAIAIgU2AgAgBCAEKQNQIhY3AzAgAkEMaiAFNgIAIAIgFjcCBCACQQI2AgALIARBEGoQ/wcMAQsgBEEANgJwIARCgICAgBA3AmggBCAEQQhqNgJ0IwBBIGsiDiQAIA5BGGogFjcDACAOQQhqIARB6ABqIgVBCGopAgA3AwAgDkIANwMQIA4gBSkCADcDACAEQUBrIQ0jAEEwayIFJAAgBUECNgIMIAUgDjYCCCAFQSBqIQ8jAEEQayIGJAACQCAFQQhqIggoAgQiB0UEQCAPQQI2AgAMAQsgCCAHQQFrNgIEIAgoAgAhByMAQRBrIggkACAIQQRqIAcQjAMCQCAILQAEIgdBAkcEQCAIKAIIIQkgB0UEQCAIQQRqIQojAEEgayIHJAAgB0EBNgIQIAcgCTYCDCAHQRRqIAdBDGoQtQUCQCAHKAIUIglBgYCAgHhGBEAgBygCGCEJIApBgICAgHg2AgAgCiAJNgIEDAELIAlBgICAgHhGBEBBAEGc6MAAEJ0EIQkgCkGAgICAeDYCACAKIAk2AgQMAQsgBygCGCERIAogBygCHDYCCCAKIBE2AgQgCiAJNgIACyAHQSBqJAAgBgJ/IAgoAgRBgICAgHhHBEAgBiAIKQIENwIEIAZBDGogCEEMaigCADYCAEEADAELIAYgCCgCCDYCBEECCzYCAAwCC0EBIREgCEEEaiEKIwBBIGsiByQAIAdBATYCECAHIAk2AgwgB0EUaiAHQQxqEK8FAkAgBygCFCIJQYGAgIB4RgRAIAcoAhghCSAKQYCAgIB4NgIAIAogCTYCBAwBCyAJQYCAgIB4RgRAQQBBnOjAABCdBCEJIApBgICAgHg2AgAgCiAJNgIEDAELIAcoAhghFCAKIAcoAhw2AgggCiAUNgIEIAogCTYCAAsgB0EgaiQAAkAgCCgCBEGAgICAeEcEQCAGIAgpAgQ3AgQgBkEMaiAIQQxqKAIANgIADAELIAYgCCgCCDYCBEECIRELIAYgETYCAAwBCyAIKAIIIQcgBkECNgIAIAYgBzYCBAsgCEEQaiQAIAYoAgAiCEECRwRAIAYoAgQhByAPIAYpAgg3AgggDyAHNgIEIA8gCDYCAAwBCyAGKAIEIQggD0EDNgIAIA8gCDYCBAsgBkEQaiQAAkAgBSgCICIGQQNHBEAgBkECRgRAQQBBqPjAABCdBCEGIA1BAjYCACANIAY2AgQMAgsgBSgCJCEIIAUgBSkCKDcCGCAFIAg2AhQgBSAGNgIQIAUoAgwEQCANIAUpAhA3AgAgDUEIaiAFQRhqKQIANwIADAILQQFBqPjAABCdBCEGIA1BAjYCACANIAY2AgQgBUEQahCTBgwBCyAFKAIkIQYgDUECNgIAIA0gBjYCBAsgBUEwaiQAIA4Q/wcgDkEgaiQAAkAgBCgCQEECRwRAIAIgBCkCQDcCACACQQhqIARByABqKQIANwIADAELIAQoAkQhBSAEQQA2AmQgBEKAgICAEDcCXCAEQYABakGkjsAANgIAIARBAzoAiAEgBEEgNgJ4IARBADYChAEgBEEANgJwIARBADYCaCAEIARB3ABqNgJ8IAUgBEHoAGoQXA0CIARB2ABqIgYgBEHkAGooAgA2AgAgBCAEKQJcNwNQIAUQzQYgBRBrIAJBAjYCACACQQxqIAYoAgA2AgAgAiAEKQNQNwIECyAEQSBqEP8HIARBEGoQ/wcLIARBkAFqJAAMAQtBvI7AAEE3IARBjwFqQfSOwABB0I/AABD2BAALAn8gAigCACIEQQJHBEAgAikCCCEDIAIoAgQMAQsgAigCBCEFIAIgAkEIaikCADcCBCACIAU2AgAgAhChBQshBSASIAM3AgggEiAFNgIEIBIgBDYCACACQRBqJAACQCALKAIQQQNHBEAgECALKQIQNwIAIBBBCGogC0EYaikCADcCAAwBCyALQRhqKAIAIQIgCygCFCEEQaSNwgBBEBAFIQUgEEECNgIAIBAgBTYCBCAEIAIoAgARAQAgAigCBEUNACACKAIIGiAEEGsLIAtBIGokACATBEAgARBrCwJ/IAwoAhRBAkcEQCAMQRRqENcGIQFBAAwBC0EBIRUgDCgCGAshAiAAIBU2AgggACACNgIEIAAgATYCACAMQTBqJAALyhUCE38BfiMAQTBrIg0kACANIAI2AiwgDSABNgIoIA0gAjYCJCANQQhqIA1BJGoQiAkgDUEUaiERIA0oAgghASANKAIMIhQhAiMAQSBrIgwkACAMIAI2AgQgDCABNgIAIAwgAzcDCCAMQRBqIRJCACEDIwBBEGsiAiQAIAwoAgAhBSAMKAIEIQcgDEEIaikDACEXIwBBkAFrIgQkACAEIAc2AgwgBCAFNgIIIARBADYCcCAEQoCAgIAQNwJoIAQgBEEIajYCdCAEQdwAaiAEQegAakLkABCbBgJAAkACQAJAAkACQAJAIAQoAlxBgICAgHhGBEAgBCgCYCEFIARBADYCSCAEQoCAgIAQNwJAIARBgAFqQaSOwAA2AgAgBEEDOgCIASAEQSA2AnggBEEANgKEASAEQQA2AnAgBEEANgJoIAQgBEFAazYCfCAFIARB6ABqEFxFDQEMBgsgBEEYaiAEQeQAaigCACIFNgIAIAQgBCkCXDcDECAEKAIUIAVBsJrAAEEDEO4HDQEgBEHMAGpBFzYCACAEQfQAakICNwIAIARBAjYCbCAEQcidwAA2AmggBEEYNgJEIARBtJzAADYCQCAEIARBQGs2AnAgBCAEQRBqNgJIIAJBBGogBEHoAGoQoAEgAkECNgIADAILIARB2ABqIgcgBEHIAGooAgA2AgAgBCAEKQJANwNQIAUQzQYgBRBrIARBOGogBygCACIFNgIAIAQgBCkDUCIXNwMwIAJBDGogBTYCACACIBc3AgQgAkECNgIADAMLIARBADYCcCAEQoCAgIAQNwJoIAQgBEEIajYCdCAEQdwAaiAEQegAakLoBxCbBgJAIAQoAlxBgICAgHhGBEAgBCgCYCEFIARBADYCSCAEQoCAgIAQNwJAIARBgAFqQaSOwAA2AgAgBEEDOgCIASAEQSA2AnggBEEANgKEASAEQQA2AnAgBEEANgJoIAQgBEFAazYCfCAFIARB6ABqEFxFDQEMBQsgBEEoaiAEQeQAaigCACIFNgIAIAQgBCkCXDcDICAEKAIkIAVBh5vAAEEgEO4HDQIgBEHMAGpBFzYCACAEQfQAakICNwIAIARBAjYCbCAEQfScwAA2AmggBEEYNgJEIARBiJ7AADYCQCAEIARBQGs2AnAgBCAEQSBqIgU2AkggAkEEaiAEQegAahCgASACQQI2AgAgBRD/BwwBCyAEQdgAaiIHIARByABqKAIANgIAIAQgBCkCQDcDUCAFEM0GIAUQayAEQThqIAcoAgAiBTYCACAEIAQpA1AiFzcDMCACQQxqIAU2AgAgAiAXNwIEIAJBAjYCAAsgBEEQahD/BwwBCyAEQQA2AnAgBEKAgICAEDcCaCAEIARBCGo2AnQjAEEgayIPJAAgD0EYaiAXNwMAIA9BCGogBEHoAGoiBUEIaikCADcDACAPQgA3AxAgDyAFKQIANwMAIARBQGshDiMAQTBrIgUkACAFQQI2AgwgBSAPNgIIIAVBIGohECMAQRBrIgckAAJAIAVBCGoiCCgCBCIGRQRAIBBBAjYCAAwBCyAIIAZBAWs2AgQgCCgCACELIwBBEGsiCCQAIAhBBGohCSMAQRBrIgYkAAJAAkAgC0IEEKIGIgpFBEAgBkEANgIIIAsoAgwiCigCBCITQQNLDQEgBkKCgICAgL6JCDcDCCAGQQhqELsHIQoLIAlBAjoAACAJIAo2AgQMAQsgBkEIakEEIAooAgAiFUEEQcTLwAAQ3gcgCiAVQQRqNgIAIAogE0EEazYCBCAGIAY1AggQ3wUgBi0AAARAIAkgBigCBDYCBCAJQQI6AAAMAQsgCSALNgIEIAkgBi0AAToAAAsgBkEQaiQAAkAgCC0ABCIGQQJHBEAgCCgCCCELIAZFBEAgCEEEaiEJIwBBIGsiBiQAIAZBATYCECAGIAs2AgwgBkEUaiAGQQxqELUFAkAgBigCFCIKQYGAgIB4RgRAIAYoAhghCiAJQYCAgIB4NgIAIAkgCjYCBAwBCyAKQYCAgIB4RgRAQQBB1OjAABCdBCEKIAlBgICAgHg2AgAgCSAKNgIEDAELIAYoAhghCyAJIAYoAhw2AgggCSALNgIEIAkgCjYCAAsgBkEgaiQAIAcCfyAIKAIEQYCAgIB4RwRAIAcgCCkCBDcCBCAHQQxqIAhBDGooAgA2AgBBAAwBCyAHIAgoAgg2AgRBAgs2AgAMAgtBASEKIAhBBGohCSMAQSBrIgYkACAGQQE2AhAgBiALNgIMIAZBFGogBkEMahCvBQJAIAYoAhQiC0GBgICAeEYEQCAGKAIYIQsgCUGAgICAeDYCACAJIAs2AgQMAQsgC0GAgICAeEYEQEEAQdTowAAQnQQhCyAJQYCAgIB4NgIAIAkgCzYCBAwBCyAGKAIYIRMgCSAGKAIcNgIIIAkgEzYCBCAJIAs2AgALIAZBIGokAAJAIAgoAgRBgICAgHhHBEAgByAIKQIENwIEIAdBDGogCEEMaigCADYCAAwBCyAHIAgoAgg2AgRBAiEKCyAHIAo2AgAMAQsgCCgCCCEGIAdBAjYCACAHIAY2AgQLIAhBEGokACAHKAIAIghBAkcEQCAHKAIEIQYgECAHKQIINwIIIBAgBjYCBCAQIAg2AgAMAQsgBygCBCEIIBBBAzYCACAQIAg2AgQLIAdBEGokAAJAIAUoAiAiB0EDRwRAIAdBAkYEQEEAQez2wAAQnQQhByAOQQI2AgAgDiAHNgIEDAILIAUoAiQhCCAFIAUpAig3AhggBSAINgIUIAUgBzYCECAFKAIMBEAgDiAFKQIQNwIAIA5BCGogBUEYaikCADcCAAwCC0EBQez2wAAQnQQhByAOQQI2AgAgDiAHNgIEIAVBEGoQkwYMAQsgBSgCJCEHIA5BAjYCACAOIAc2AgQLIAVBMGokACAPEP8HIA9BIGokAAJAIAQoAkBBAkcEQCACIAQpAkA3AgAgAkEIaiAEQcgAaikCADcCAAwBCyAEKAJEIQUgBEEANgJkIARCgICAgBA3AlwgBEGAAWpBpI7AADYCACAEQQM6AIgBIARBIDYCeCAEQQA2AoQBIARBADYCcCAEQQA2AmggBCAEQdwAajYCfCAFIARB6ABqEFwNAiAEQdgAaiIHIARB5ABqKAIANgIAIAQgBCkCXDcDUCAFEM0GIAUQayACQQI2AgAgAkEMaiAHKAIANgIAIAIgBCkDUDcCBAsgBEEgahD/ByAEQRBqEP8HCyAEQZABaiQADAELQbyOwABBNyAEQY8BakH0jsAAQdCPwAAQ9gQACwJ/IAIoAgAiBEECRwRAIAIpAgghAyACKAIEDAELIAIoAgQhBSACIAJBCGopAgA3AgQgAiAFNgIAIAIQoQULIQUgEiADNwIIIBIgBTYCBCASIAQ2AgAgAkEQaiQAAkAgDCgCEEEDRwRAIBEgDCkCEDcCACARQQhqIAxBGGopAgA3AgAMAQsgDEEYaigCACECIAwoAhQhBEGkjcIAQRAQBSEFIBFBAjYCACARIAU2AgQgBCACKAIAEQEAIAIoAgRFDQAgAigCCBogBBBrCyAMQSBqJAAgFARAIAEQawsCfyANKAIUQQJHBEAgDUEUahDXBiEBQQAMAQtBASEWIA0oAhgLIQIgACAWNgIIIAAgAjYCBCAAIAE2AgAgDUEwaiQAC6QBAgR/A34jAEEQayICJAAgACgCgAgiAUHBAEkEQCABBEAgAUEEdCEBIAJBBGohA0HUv8IAKQIAIQZB3L/CACkCACEHA0AgACkCACEFIAAgBjcCACACQQhqIABBCGoiBCkCADcDACAEIAc3AgAgAiAFNwMAIAMgBacRAQAgAEEQaiEAIAFBEGsiAQ0ACwsgAkEQaiQADwsgAUHAAEHkv8IAEMEFAAuNAQEDfyMAQYABayIDJAAgACgCACEAA0AgAiADakH/AGpBMEHXACAAQQ9xIgRBCkkbIARqOgAAIAJBAWshAiAAQRBJIABBBHYhAEUNAAsgAkGAAWoiAEGAAUsEQCAAQYABQZylwwAQvwUACyABQQFBrKXDAEECIAIgA2pBgAFqQQAgAmsQXyADQYABaiQAC4wBAQN/IwBBgAFrIgMkACAAKAIAIQADQCACIANqQf8AakEwQTcgAEEPcSIEQQpJGyAEajoAACACQQFrIQIgAEEQSSAAQQR2IQBFDQALIAJBgAFqIgBBgAFLBEAgAEGAAUGcpcMAEL8FAAsgAUEBQaylwwBBAiACIANqQYABakEAIAJrEF8gA0GAAWokAAuQAQIBfwR+IwBBEGsiAiQAIAIgACABIAF5IAB5QkB9IAFCAFIbIgWnQf8AcRDtBSACQQhqKQMAIQMgAikDACEEIAJBEGokACADQguIIgZCAEKAgICAgICA6McAIAVCNIZ9IAAgAYRQG3wgBEL/////D4MgA0I1hiIAIARCC4iEhCAGQn+FIABCP4iDfUI/iHy/C/QXAhp/A34jAEHgA2siDiQAIA4gAjYC3AMgDiABNgLYAyAOIAI2AtQDIA5BCGogDkHUA2oQiAkgDkEQaiEZIA4oAgghASAOKAIMIRojAEHAA2siECQAIwBBgAdrIg8kACAPQcADaiEYIwBB0ANrIhEkACARIBo2AgwgESABNgIIIBFBEGohFyMAQYAHayIMJAAgDEEBNgIEIAwgEUEIajYCACAMQQhqIRQjAEHAA2siByQAAkAgDCgCBCICRQRAIBRCBDcDAAwBCyAMIAJBAWs2AgQgDCgCACECIwBB0AVrIgYkACAGQQI2AgwgBiACNgIIIAZBEGohEiMAQbACayINJAACQCAGQQhqIgIoAgQiA0UEQCASQgQ3AwAMAQsgAiADQQFrNgIEIAIoAgAhAiMAQeAEayILJAAgC0EBNgIEIAsgAjYCACALQQhqIQojAEGwAmsiAyQAAkAgCygCBCICRQRAIApCBDcDAAwBCyALIAJBAWs2AgQgCygCACEEIwBBoARrIgIkACACQQM2AgQgAiAENgIAIAJBCGohCSMAQRBrIgQkAAJAIAIoAgQiBUUEQCAJQYCAgIB4NgIADAELIAIgBUEBazYCBCACKAIAIQgjAEEgayIFJAAgBUECNgIQIAUgCDYCDCAFQRRqIAVBDGoQtAUCQCAFKAIUIghBgYCAgHhGBEAgBSgCGCEIIARBgICAgHg2AgAgBCAINgIEDAELIAhBgICAgHhGBEBBAEHk4cAAEJ0EIQggBEGAgICAeDYCACAEIAg2AgQMAQsgBSgCGCEVAn8gBSgCEARAIAUoAhwhFiAFQRRqIAUoAgwQqQMgBSgCFARAIAUoAhgMAgsgBCAFKAIYNgIMIAQgFjYCCCAEIBU2AgQgBCAINgIADAILQQFB5OHAABCdBAshFiAEQYCAgIB4NgIAIAQgFjYCBCAIRQ0AIBUQawsgBUEgaiQAIAQoAgAiBUGAgICAeEcEQCAEKAIEIQggCSAEKQIINwIIIAkgCDYCBCAJIAU2AgAMAQsgBCgCBCEFIAlBgYCAgHg2AgAgCSAFNgIECyAEQRBqJAACQCACKAIIIhVBgYCAgHhHBEAgFUGAgICAeEYEQEEAQajtwAAQnQQhBCADQgQ3AwAgAyAENgIIDAILIAIpAhAhHiACKAIMIRYgAkEIaiEJIwBBEGsiCCQAAkAgAigCBCIERQRAIAlBgICAgHg2AgAMAQsgAiAEQQFrNgIEIAhBBGohBSACKAIAIRMjAEEgayIEJAAgBEEBNgIQIAQgEzYCDCAEQRRqIARBDGoQtAUCQCAEKAIUIhNBgYCAgHhGBEAgBCgCGCETIAVBgICAgHg2AgAgBSATNgIEDAELIBNBgICAgHhGBEBBAEGE5MAAEJ0EIRMgBUGAgICAeDYCACAFIBM2AgQMAQsgBCgCGCEbIAUgBCgCHDYCCCAFIBs2AgQgBSATNgIACyAEQSBqJAAgCCgCBCIEQYCAgIB4RwRAIAkgCCkCCDcCBCAJIAQ2AgAMAQsgCCgCCCEEIAlBgYCAgHg2AgAgCSAENgIECyAIQRBqJAACQCACKAIIIgRBgYCAgHhGBEAgAigCDCEEIANCBDcDACADIAQ2AggMAQsgBEGAgICAeEYEQEEBQajtwAAQnQQhBCADQgQ3AwAgAyAENgIIDAELIAIoAhAhCSACKAIMIQUgAkEIaiACEJcEAn8gAikDCCIdQgVSBEAgAigCECEIIAJBnAJqIAJBFGpBhAIQ5wkaIB1CBFEEQEECQajtwAAQnQQMAgsgA0EMaiACQZwCakGEAhDnCRogAyAJNgKoAiADIAU2AqQCIAMgBDYCoAIgAyAeNwOYAiADIBY2ApQCIAMgFTYCkAIgAyAINgIIIAMgHTcDAAwECyACKAIQCyEJIANCBDcDACADIAk2AgggBEUNACAFEGsLIBVFDQEgFhBrDAELIAIoAgwhBCADQgQ3AwAgAyAENgIICyACQaAEaiQAIAMpAwAiHUIEUgRAIAMoAgghAiAKQQxqIANBDGpBpAIQ5wkaIAogAjYCCCAKIB03AwAMAQsgAygCCCECIApCBTcDACAKIAI2AggLIANBsAJqJAACQAJ/IAspAwgiHUIFUgRAIAsoAhAhAiALQbwCaiALQRRqQaQCEOcJGiAdQgRRBEBBAEGw6cAAEJ0EDAILIA1BDGogC0G8AmpBpAIQ5wkaIA0gAjYCCCANIB03AwAMAgsgCygCEAshAiANQgQ3AwAgDSACNgIICyALQeAEaiQAIA0pAwAiHUIEUgRAIA0oAgghAiASQQxqIA1BDGpBpAIQ5wkaIBIgAjYCCCASIB03AwAMAQsgDSgCCCECIBJCBTcDACASIAI2AggLIA1BsAJqJAACQAJAAn8gBikDECIdQgVSBEAgBigCGCEJIAZBxAJqIAZBHGpBhAIQ5wkaIB1CBFINAkEAQYTzwAAQnQQMAQsgBigCGAshAiAHQgQ3AwAgByACNgIIDAELIAYpA7gCIR4gBigCtAIhBSAGKAKwAiELIAYpA6gCIR8gBigCpAIhDSAGKAKgAiESIAZBEGohBCMAQZABayICJAACQCAGQQhqIgMoAgQiCkUEQCAEQQM2AgAMAQsgAyAKQQFrNgIEIAMoAgAhCiMAQZABayIDJAAgAyAKEPkEAkACQAJAAkAgAy0AAEUEQCADLQABIggOAgIDAQsgAygCBCEKIAJBAzYCACACIAo2AgQMAwsgA0GEgICAeDYCACADIAg2AgQgAxDtBiEKIAJBAzYCACACIAo2AgQMAgsgAkECNgIADAELIAMgChBDIAMoAgBBAkcEQCACIANBkAEQ5wkaDAELIAIgAygCBDYCBCACQQM2AgALIANBkAFqJAAgAigCACIDQQNHBEAgAigCBCEKIARBCGogAkEIakGIARDnCRogBCAKNgIEIAQgAzYCAAwBCyACKAIEIQMgBEEENgIAIAQgAzYCBAsgAkGQAWokAAJ/IAYoAhAiAkEERwRAIAYoAhQhAyAGQcgEaiAGQRhqQYgBEOcJGiACQQNGBEBBAUGE88AAEJ0EDAILIAdBuAJqIAZByARqQYgBEOcJGiAHIAk2AgggByAdNwMAIAdBDGogBkHEAmpBhAIQ5wkaIAcgAzYCtAIgByACNgKwAiAHIB43A6gCIAcgBTYCpAIgByALNgKgAiAHIB83A5gCIAcgDTYClAIgByASNgKQAgwCCyAGKAIUCyECIAdCBDcDACAHIAI2AgggEgRAIA0QawsgC0UNACAFEGsLIAZB0AVqJAAgBykDACIdQgRSBEAgBygCCCECIBRBDGogB0EMakG0AxDnCRogFCACNgIIIBQgHTcDAAwBCyAHKAIIIQIgFEIFNwMAIBQgAjYCCAsgB0HAA2okAAJAAn8gDCkDCCIdQgVSBEAgDCgCECECIAxBzANqIAxBFGpBtAMQ5wkaIB1CBFEEQEEAQbDpwAAQnQQMAgsgF0EMaiAMQcwDakG0AxDnCRogFyACNgIIIBcgHTcDAAwCCyAMKAIQCyECIBdCBDcDACAXIAI2AggLIAxBgAdqJAACQCARKQMQIh1CBFIEQCARKAIYIQIgGEEMaiARQRxqQbQDEOcJGiAYIAI2AggMAQsgGCARKAIYNgIICyAYIB03AwAgEUHQA2okACAPKALEAyEGIA8oAsADIQMCQCAPKQPAA0IEUgRAIA8oAsgDIQIgD0EMaiAPQcwDakG0AxDnCRoMAQsgDygCyAMQlQIhAgsgEEEMaiAPQQxqQbQDEOcJGiAQIAI2AgggECAGNgIEIBAgAzYCACAPQYAHaiQAAkAgECkDAEIFUgRAIBkgEEHAAxDnCRoMAQsgEEEMaigCACECIBAoAgghBkGkjcIAQRAQBSEDIBlCBDcDACAZIAM2AgggBiACKAIAEQEAIAIoAgRFDQAgAigCCBogBhBrCyAQQcADaiQAIBoEQCABEGsLAn8gDikDEEIEUgRAIA5BEGoQ8wUhAUEADAELQQEhHCAOKAIYCyECIAAgHDYCCCAAIAI2AgQgACABNgIAIA5B4ANqJAALnygCI38DfiMAQdABayITJAAgEyACNgLMASATIAE2AsgBIBMgAjYCxAEgE0EIaiATQcQBahCICSATQRBqIR4gEygCCCEBIBMoAgwiISECIwBBsAFrIhIkACMAQeACayIMJAAgDEGwAWohGiMAQcABayIUJAAgFCACNgIMIBQgATYCCCAUQRBqIRYjAEHgAmsiCiQAIApBATYCBCAKIBRBCGo2AgAgCkEIaiEXIwBBsAFrIg4kAAJAIAooAgQiAkUEQCAXQYCAgIB4NgKMAQwBCyAKIAJBAWs2AgQgCigCACECIwBB4AJrIggkACAIQQE2AgQgCCACNgIAIAhBCGohGCMAQbABayIPJAACQCAIKAIEIgJFBEAgGEGAgICAeDYCjAEMAQsgCCACQQFrNgIEIAgoAgAhAiMAQeACayIJJAAgCUEBNgIEIAkgAjYCACAJQQhqIRkjAEGwAWsiAiQAAkAgCSgCBCIERQRAIBlBgICAgHg2AowBDAELIAkgBEEBazYCBCAJKAIAIQMjAEHQAWsiBCQAIARBCDYCDCAEIAM2AgggBEE4aiEGIwBBQGoiCyQAAkAgBEEIaiIDKAIEIgVFBEAgBkGAgICAeDYCLAwBCyADIAVBAWs2AgQgC0EIaiEFIAMoAgAhByMAQSBrIgMkACADQQY2AgQgAyAHNgIAIANBCGogAxC0BQJAIAMoAggiDUGBgICAeEYEQCADKAIMIQcgBUGAgICAeDYCLCAFIAc2AgAMAQsgDUGAgICAeEYEQEEAQfzmwAAQnQQhByAFQYCAgIB4NgIsIAUgBzYCAAwBCyADKAIMIRACfwJAAkACQAJAAkAgAygCBCIHBEAgAygCECEcIANBCGogAygCACIREKkDIAMoAggNBSAHQQFGDQEgAygCDCEdIANBCGogERCpAyADKAIIDQUgB0ECRg0CIAMoAgwhFSADQQhqIBEQqQMgAygCCA0FIAdBA0YNAyADKAIMIRsgA0EIaiAREIUEIAMoAggNBSAHQQRGDQQgAykDECEmIANBGGopAwAhJyADQQhqIBEQhQIgAygCCA0FIAMoAhAhByADKQIUISggBUEcaiADQRxqNQIAPgIAIAUgKDcCFCAFQQxqICdCIIg+AgAgBSAnQiCGICZCIIiENwIEIAUgHDYCNCAFIBA2AjAgBSANNgIsIAUgGzYCKCAFIBU2AiQgBSAdNgIgIAUgBzYCECAFICY+AgAMBwtBAUH85sAAEJ0EDAULQQJB/ObAABCdBAwEC0EDQfzmwAAQnQQMAwtBBEH85sAAEJ0EDAILQQVB/ObAABCdBAwBCyADKAIMCyEHIAVBgICAgHg2AiwgBSAHNgIAIA1FDQAgEBBrCyADQSBqJAAgCygCCCEDAkAgCygCNCIFQYCAgIB4RwRAIAZBBGogC0EIakEEckEoEOcJGiAGIAspAzg3AzAgBiAFNgIsDAELIAZBgYCAgHg2AiwLIAYgAzYCAAsgC0FAayQAIAQoAjghHAJAAkAgBCgCZCIdQYGAgIB4RwRAIARBEGogBEE4akEEckEoEOcJGiAdQYCAgIB4Rw0BQQBB1PLAABCdBCEcCyACQYCAgIB4NgKMASACIBw2AgAMAQsgBCgCbCEiIAQoAmghHyAEQThqIREjAEHQAGsiBSQAAkAgBEEIaiIDKAIEIgZFBEAgEUECOgAADAELIAMgBkEBazYCBCADKAIAIQMjAEGQAWsiCyQAIAtByABqIAMQwAMCQCALLQBIIgNBAkcEQCALKAJMIQcgA0UEQCALQQhqIQYjAEGAAWsiAyQAIANBATYCBCADIAc2AgAgA0EIaiADEIYEIAMoAgghBwJAAkAgAygCOCINQYGAgIB4RwRAIANB1ABqIANBCGpBBHJBLBDnCRogA0HQAGoiECADQcQAaigCADYCACADIAMpAjw3A0ggDUGAgICAeEcNAUEAQaTlwAAQnQQhBwsgBkGAgICAeDYCMCAGIAc2AgAMAQsgBkEEaiADQdQAakEsEOcJGiAGIA02AjAgBiAHNgIAIAZBPGogECgCADYCACAGIAMpA0g3AjQLIANBgAFqJAAgBQJ/IAsoAjhBgICAgHhHBEAgC0HPAGogC0EIakHAABDnCRogBUEBaiALQcgAakHHABDnCRpBAAwBCyAFIAsoAgg2AgRBAgs6AAAMAgsjAEGQAWsiAyQAIANBAjYCBCADIAc2AgAgA0EIaiENIwBB0ABrIhAkAAJAIAMoAgQiBkUEQCANQYCAgIB4NgIwDAELIAMgBkEBazYCBCAQQQhqIQcgAygCACEVIwBBgAFrIgYkACAGQQI2AgwgBiAVNgIIIAZBEGogBkEIahCGBCAGKAIQIRUCQAJAIAYoAkAiG0GBgICAeEcEQCAGQdQAaiAGQRBqQQRyQSwQ5wkaIBtBgICAgHhHDQFBAEG458AAEJ0EIRULIAdBgICAgHg2AjAgByAVNgIADAELIAYoAkQhIAJ/IAYoAgwEQCAGKQNIISYgBkEQaiAGKAIIEKkDIAYoAhAEQCAGKAIUDAILIAYoAhQhIyAHIBU2AgAgB0EEaiAGQdQAakEsEOcJGiAHICM2AkAgByAmNwM4IAcgIDYCNCAHIBs2AjAMAgtBAUG458AAEJ0ECyEVIAdBgICAgHg2AjAgByAVNgIAIBtFDQAgIBBrCyAGQYABaiQAIBAoAgghBgJAIBAoAjgiB0GAgICAeEcEQCANQQRqIBBBCGpBBHJBLBDnCRogDUHEAGogEEHMAGooAgA2AgAgDUE8aiAQQcQAaikCADcCACANIBApAjw3AjQgDSAHNgIwDAELIA1BgYCAgHg2AjALIA0gBjYCAAsgEEHQAGokACADKAIIIQYCQAJAIAMoAjgiB0GBgICAeEcEQCADQeQAaiADQQhqQQRyQSwQ5wkaIANB2ABqIANByABqKQMANwMAIAMgAykDQDcDUCAHQYCAgIB4Rw0BQQBBoPLAABCdBCEGCyAFQQI6AAAgBSAGNgIEDAELIAMoAjwhDQJ/IAMoAgQEQCADQQhqIAMoAgAQnwQgAy0ACARAIAMoAgwMAgsgAy0ACSEQIAVBDGogA0HkAGpBLBDnCRogBSANNgI8IAUgBzYCOCAFIAY2AgggBSAQOgABIAVBAToAACAFQcgAaiADQdgAaikDADcCACAFIAMpA1A3AkAMAgtBAUGg8sAAEJ0ECyEGIAVBAjoAACAFIAY2AgQgB0UNACANEGsLIANBkAFqJAAMAQsgCygCTCEDIAVBAjoAACAFIAM2AgQLIAtBkAFqJAAgBS0AACIDQQJHBEAgESAFLwABOwABIBFBA2ogBS0AAzoAACAFKAIEIQYgEUEIaiAFQQhqQcgAEOcJGiARIAY2AgQgESADOgAADAELIAUoAgQhAyARQQM6AAAgESADNgIECyAFQdAAaiQAAkACQAJ/IAQtADgiBkEDRwRAIARBzgFqIAQtADs6AAAgBCAELwA5OwHMASAEKAI8IREgBEGYAWogBEFAa0EwEOcJGiAEQZABaiAEQYABaikDADcDACAEIAQpA3g3A4gBIAZBAkcNAkEBQdTywAAQnQQMAQsgBCgCPAshAyACQYCAgIB4NgKMASACIAM2AgAMAQsgBCgCdCELIAQoAnAhByAEQThqIARBCGoQuwUCfwJAAkACQAJAAkAgBCgCOCIDQQJGDQAgA0UEQEECQdTywAAQnQQMBgsgBCgCPCENIARBOGogBEEIahC7BSAEKAI4IgNBAkYNACADRQRAQQNB1PLAABCdBAwGCyAEKAIMIgNFDQIgBCgCPCEQIARBOGogBCgCCCIFEKkDIAQoAjgNACADQQFGDQMgBCgCPCEVIARBOGogBRCpAyAEKAI4DQAgA0ECRg0EIAQoAjwhGyAEQThqIAUQhQIgBCgCOA0AIANBA0YNASAEQcwAajUCACEmIAQpAkQhJyAEKAJAIQMgBEE4aiAFEL8DIAQtADgiBUECRg0AIAIgHDYCYCACQeQAaiAEQRBqQSgQ5wkaIAIgIjYClAEgAiAfNgKQASACIB02AowBIAIgBjoAECACIBE2AhQgAiAELwHMATsAESACQRNqIARBzgFqLQAAOgAAIAJBGGogBEGYAWpBMBDnCRogAkEMaiAmPgIAIAIgJzcCBCACIAs2AkwgAiAHNgJIIAIgBUEARzoAqAEgAiAbNgKkASACIBU2AqABIAIgEDYCnAEgAiANNgKYASACIAM2AgAgAiAEKQOIATcDUCACQdgAaiAEQZABaikDADcDAAwHCyAEKAI8DAQLQQdB1PLAABCdBAwDC0EEQdTywAAQnQQMAgtBBUHU8sAAEJ0EDAELQQZB1PLAABCdBAshAyACQYCAgIB4NgKMASACIAM2AgAgB0UNACALEGsLIB1FDQAgHxBrCyAEQdABaiQAIAIoAgAhBAJAIAIoAowBIgNBgICAgHhHBEAgGUEEaiACQQRyQYgBEOcJGiAZQagBaiACQagBaikDADcDACAZQaABaiACQaABaikDADcDACAZQZgBaiACQZgBaikDADcDACAZIAIpA5ABNwOQASAZIAM2AowBDAELIBlBgYCAgHg2AowBCyAZIAQ2AgALIAJBsAFqJAAgCSgCCCECAkACQCAJKAKUASIEQYGAgIB4RwRAIAlB2AFqIAlBCGpBBHJBiAEQ5wkaIAlB0AFqIgMgCUGwAWopAwA3AwAgCUHIAWoiBSAJQagBaikDADcDACAJQcABaiIGIAlBoAFqKQMANwMAIAkgCSkDmAE3A7gBIARBgICAgHhHDQFBAEGo68AAEJ0EIQILIA9BgICAgHg2AowBIA8gAjYCAAwBCyAPQQRqIAlB2AFqQYgBEOcJGiAPIAQ2AowBIA8gAjYCACAPQagBaiADKQMANwMAIA9BoAFqIAUpAwA3AwAgD0GYAWogBikDADcDACAPIAkpA7gBNwOQAQsgCUHgAmokACAPKAIAIQICQCAPKAKMASIEQYCAgIB4RwRAIBhBBGogD0EEckGIARDnCRogGEGoAWogD0GoAWopAwA3AwAgGEGgAWogD0GgAWopAwA3AwAgGEGYAWogD0GYAWopAwA3AwAgGCAPKQOQATcDkAEgGCAENgKMAQwBCyAYQYGAgIB4NgKMAQsgGCACNgIACyAPQbABaiQAIAgoAgghAgJAAkAgCCgClAEiBEGBgICAeEcEQCAIQdgBaiAIQQhqQQRyQYgBEOcJGiAIQdABaiIDIAhBsAFqKQMANwMAIAhByAFqIgUgCEGoAWopAwA3AwAgCEHAAWoiCSAIQaABaikDADcDACAIIAgpA5gBNwO4ASAEQYCAgIB4Rw0BQQBBvPPAABCdBCECCyAOQYCAgIB4NgKMASAOIAI2AgAMAQsgDkEEaiAIQdgBakGIARDnCRogDiAENgKMASAOIAI2AgAgDkGoAWogAykDADcDACAOQaABaiAFKQMANwMAIA5BmAFqIAkpAwA3AwAgDiAIKQO4ATcDkAELIAhB4AJqJAAgDigCACECAkAgDigCjAEiBEGAgICAeEcEQCAXQQRqIA5BBHJBiAEQ5wkaIBdBqAFqIA5BqAFqKQMANwMAIBdBoAFqIA5BoAFqKQMANwMAIBdBmAFqIA5BmAFqKQMANwMAIBcgDikDkAE3A5ABIBcgBDYCjAEMAQsgF0GBgICAeDYCjAELIBcgAjYCAAsgDkGwAWokACAKKAIIIQICQAJAIAooApQBIgRBgYCAgHhHBEAgCkHYAWogCkEIakEEckGIARDnCRogCkHQAWoiAyAKQbABaikDADcDACAKQcgBaiIFIApBqAFqKQMANwMAIApBwAFqIgggCkGgAWopAwA3AwAgCiAKKQOYATcDuAEgBEGAgICAeEcNAUEAQajrwAAQnQQhAgsgFkGAgICAeDYCjAEgFiACNgIADAELIBZBBGogCkHYAWpBiAEQ5wkaIBYgBDYCjAEgFiACNgIAIBZBqAFqIAMpAwA3AwAgFkGgAWogBSkDADcDACAWQZgBaiAIKQMANwMAIBYgCikDuAE3A5ABCyAKQeACaiQAIBQoAhAhAgJAIBQoApwBIgRBgICAgHhHBEAgGkEEaiAUQRBqQQRyQYgBEOcJGiAaQagBaiAUQbgBaikDADcDACAaQaABaiAUQbABaikDADcDACAaQZgBaiAUQagBaikDADcDACAaIBQpA6ABNwOQASAaIAQ2AowBDAELIBpBgICAgHg2AowBCyAaIAI2AgAgFEHAAWokACAMKAKwASECAkAgDCgCvAIiBEGAgICAeEcEQCAMKAK0ASEkIAxBLGogDEG4AWpBhAEQ5wkaIAxBIGogDEHYAmopAwA3AwAgDEEYaiAMQdACaikDADcDACAMQRBqIAxByAJqKQMANwMAIAwgDCkDwAI3AwgMAQsgAhCVAiECCyASQQhqIAxBLGpBhAEQ5wkaIBJBqAFqIAxBIGopAwA3AwAgEkGgAWogDEEYaikDADcDACASQZgBaiAMQRBqKQMANwMAIBIgDCkDCDcDkAEgEiAENgKMASASICQ2AgQgEiACNgIAIAxB4AJqJAACQCASKAKMAUGBgICAeEcEQCAeIBJBsAEQ5wkaDAELIBIoAgAhBCASKAIEIQJBpI3CAEEQEAUhAyAeQYCAgIB4NgKMASAeIAM2AgAgBCACKAIAEQEAIAIoAgRFDQAgAigCCBogBBBrCyASQbABaiQAICEEQCABEGsLAn8gEygCnAFBgICAgHhHBEAgE0EQahD0BSEBQQAMAQtBASElIBMoAhALIQIgACAlNgIIIAAgAjYCBCAAIAE2AgAgE0HQAWokAAvvEgIafwN+IwBBwAJrIg8kAAJAIAEEQCABKAIAIhNBf0YNAUEBIRcgASATQQFqNgIAIA9BCGohFCMAQcACayINJAAgDUEIaiEYIwBBwAJrIgwkACAMQQhqIgcgAUEIaiIFENsFAn9B8ABB9AAgDCkDCFAbIAdqLQAIBEAgDEEIaiMAQcACayIHJAACQAJAQQBBkN7AACgCABEFACIQBEAgECgCAA0BIBBBfzYCACAQQQhqIQ4jAEHAAWsiAyQAAkAgBRDhBSIaRQRAIANBCGogBUGUAmooAgAgBUGYAmooAgAQlAYgAygCDCECIAMoAgghBAJAAkACQEICIAUpAwBCAn0iHCAcQgJaGyIcp0EBaw4CAQIACyADQUBrIAVBCGpBgAEQ5wkaIANBOGogA0HwAGopAwA3AwAgA0EwaiADQegAaikDADcDACADIANB4ABqKQMANwMoDAMLIANBOGogBUEwaikDADcDACADQTBqIAVBKGopAwA3AwAgAyAFQSBqKQMANwMoDAILIANBOGogBUEwaikDADcDACADQTBqIAVBKGopAwA3AwAgAyAFQSBqKQMANwMoDAELIAMgBUGkAmooAgAgBUGoAmooAgAQlAYgAygCBCECIAMoAgAhBAJAAkACQEICIAUpAwBCAn0iHCAcQgJaGyIcp0EBaw4CAQIACyADQUBrIAVBCGpBgAEQ5wkaIANBOGogA0HYAGopAwA3AwAgA0EwaiADQdAAaikDADcDACADIAMpA0g3AygMAgsgA0E4aiAFQRhqKQMANwMAIANBMGogBUEQaikDADcDACADIAUpAwg3AygMAQsgA0E4aiAFQRhqKQMANwMAIANBMGogBUEQaikDADcDACADIAUpAwg3AygLIANBGGogA0EwaikDADcDACADQSBqIANBOGopAwA3AwAgAyAENgJAIAMgAykDKDcDECADIAI2AkQgB0GQAmohESADQUBrIRIgAkEGdEHAAWohAiADQRBqIRsCfwJAAkACQCAcp0EBaw4CAQIACyAFQcgAagwCCyAFQdAAagwBCyAFQUBrCyIEKQMAIRwgBEEIaikDACEdIwBBQGoiCCQAIAhBCGogAiASKAIEQQFqIgZs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IANBQGsgBUEIakGAARDnCRogA0E4aiADQfAAaikDADcDACADQTBqIANB6ABqKQMANwMAIAMgA0HgAGopAwA3AygMAwsgA0E4aiAFQTBqKQMANwMAIANBMGogBUEoaikDADcDACADIAVBIGopAwA3AygMAgsgA0E4aiAFQTBqKQMANwMAIANBMGogBUEoaikDADcDACADIAVBIGopAwA3AygMAQsgAyAFQaQCaigCACAFQagCaigCABCUBiADKAIEIQIgAygCACEIAkACQAJAQgIgBSkDAEICfSIcIBxCAlobIhynQQFrDgIBAgALIANBQGsgBUEIakGAARDnCRogA0E4aiADQdgAaikDADcDACADQTBqIANB0ABqKQMANwMAIAMgAykDSDcDKAwCCyADQThqIAVBGGopAwA3AwAgA0EwaiAFQRBqKQMANwMAIAMgBSkDCDcDKAwBCyADQThqIAVBGGopAwA3AwAgA0EwaiAFQRBqKQMANwMAIAMgBSkDCDcDKAsgA0EYaiADQTBqKQMANwMAIANBIGogA0E4aikDADcDACADIAg2AkAgAyADKQMoNwMQIAMgAjYCRCAKQZACaiEZIANBQGshCCACQQZ0QcABaiEEIANBEGohGgJ/AkACQAJAIBynQQFrDgIBAgALIAVByABqDAILIAVB0ABqDAELIAVBQGsLIgIpAwAhHCACQQhqKQMAIR1BwARqIQxBACECIwBB0ABrIgkkACAIKAIEIAlCADcDGCAJQgA3AxADQCAJQRBqIAJqIAwQ1QY6AAAgAkEBaiICQRBHDQALIAkpAxghHiAJKQMQIR8gCUEIaiAEQQEQzgUgCSAENgJMIAkgCSkDCDcCRCAJQRBqIQcgCUHEAGohBkEBaiELIwBBIGsiAiQAAkACQCAcIB2EUEUgHHsgHXt8QgJacUUEQCAGKAIIRQ0BIwBBIGsiBCQAIBwgHYRQIBx7IB17fEICVHJFBEAgBEEUakIANwIAIARBATYCDCAEQei9wAA2AgggBEH8n8AANgIQIARBCGpB3MXAABD8BgALIAcgHDcDECAHIB83AwAgByALNgIgIAdBGGogHTcDACAHIB43AwggByAGKQIANwIkIAdBLGogBkEIaigCADYCACAEQSBqJAAgAkEgaiQADAILIAJBFGpCADcCACACQQE2AgwgAkHg3MAA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ADcDkARQDQYgHCkDACE+IAMpA6gEIT8gAykDmAQhQCADKALEBCEmIAspAwALIT0gAygCwAQhCSADKAK8BCENIAMoArgEIQogA0HICWogPTcDACADQbgJaiA+NwMAIAMgPzcDwAkgAyBANwOwCSADICY2AtwJIAMgCTYC2AkgAyANNgLUCSADIAo2AtAJIAMgBTYCrAkgAyAINgKoCSADQZgOaiADQagJaiADKALwBBEAACADKAKYDiITRQ0FIANB4AxqIAdBNBDnCRogAygC+AQiHSADKAL8BEYNBSADIB1BCGo2AvgEIANBrAxqIANB4AxqQTQQ5wkaIANBqAlqIBIQigMgAygC4AoiHkUNBSADQZgOaiADQagJaiIKQbgBEOcJGiADKALkCiEFIAogFBCKAyADKALgCiIRRQRAIB4QawwGCyADQbAGaiIIIANBqAlqIh9BuAEQ5wkaIAMoAuQKIQkgA0HgDGoiCiADQZgOaiINQbgBEOcJGiAPIApBuAEQ5wkhCiAHIANBrAxqQTQQ5wkaIAMgEzYCmA4gHSkDACE9IB8gCkG4ARDnCRogAyAFNgLkCiADIB42AuAKIA4gCEG4ARDnCRogAyAJNgKkDCADIBE2AqAMIAQgDSA9ICIgHxBGIAMoAuAKEGsgAygCoAwQayADKALcBCINIAMoAuAEIgVPDQALDAQLIAMgCjYC7AcgBhCDByEAIANBDGpBzgA2AgAgA0G0CWpCAjcCACADQc4ANgIEIAMgADYCkAQgA0EDNgKsCSADQdycwQA2AqgJIAMgA0GQBGo2AgggAyADQewHajYCACADIAM2ArAJIANBqAlqQYigwQAQ/AYACyAEENgHIQAgA0EMakHPADYCACADQbQJakICNwIAIAMgAEEBajYC7AcgA0HPADYCBCADQQM2AqwJIANBvJ7BADYCqAkgAyAGKAIgNgKQBCADIANBkARqNgIIIAMgA0HsB2o2AgAgAyADNgKwCSADQagJakGYoMEAEPwGAAsgA0EMakHNADYCACADQbQJakICNwIAIAMgDTYC7AcgA0EDNgKsCSADQfCfwQA2AqgJIANBzQA2AgQgAyAKNgKQBCADIAM2ArAJIAMgA0GQBGo2AgggAyADQewHajYCACADQagJakGooMEAEPwGAAsgAyADLQCoCToAkARB0JPBAEErIANB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DAELIAgoAgghASAAQgU3AwAgACABNgIICyAIQZACaiQAC48BAgN/AX4jAEEgayICJAAgASgCAEGAgICAeEYEQCABKAIMIQMgAkEcaiIEQQA2AgAgAkKAgICAEDcCFCACQRRqQZztwgAgAxBsGiACQRBqIAQoAgAiAzYCACACIAIpAhQiBTcDCCABQQhqIAM2AgAgASAFNwIACyAAQaj4wgA2AgQgACABNgIAIAJBIGokAAuNAgEDfyMAQTBrIgUkACAFIAE2AgwgAWlBAUcEQCAFQRxqQgE3AgAgBUECNgIUIAVBvJTAADYCECAFQRY2AiwgBSAFQShqNgIYIAUgBUEMajYCKCAFQRBqQcyUwAAQ/AYACyAFQRBqIgYgAUEBdBCeBCMAQTBrIgQkACAGKAIIIgFpQQFHBEAgBEEUakIBNwIAIARBATYCDCAEQZyTwAA2AgggBEEWNgIoIAQgATYCLCAEIARBJGo2AhAgBCAEQSxqNgIkIARBCGpB3JPAABD8BgALIARBEGogBkEIaigCADYCACAEIAYpAgA3AwggACAEQQhqIAFBAXYgAiADEJYCIARBMGokACAFQTBqJAALiwECAn8BfiMAQSBrIgIkACABIABBGGoQpQQiA0UEQCACIAA1AhA3AwggASgCECgCACACQQhqIgNBCBCLCSACIAA1AhQ3AwggASgCECgCACADQQgQiwkgACkDACEEIAIgAEEIaikDADcDECACIAQ3AwggAkHAADYCGCADIAEQkAYhAwsgAkEgaiQAIAMLjgEBBn8jAEEQayIDJAAgASgCACIFRQRAQZSKwABBK0GEisAAEMwGAAsgASgCDCEGIAEoAhAhByABKAIIIQQgASgCBCEIIANBCGogAUEcaigCADYCACADIAEpAhQ3AwAgACAFKAIAIAgoAgBrIAIgBCgCACAEKAIEIAYgByADEHYgAUEgahDMByADQRBqJAALjgEBBn8jAEEQayIDJAAgASgCACIFRQRAQZSKwABBK0GEisAAEMwGAAsgASgCDCEGIAEoAhAhByABKAIIIQQgASgCBCEIIANBCGogAUEcaigCADYCACADIAEpAhQ3AwAgACAFKAIAIAgoAgBrIAIgBCgCACAEKAIEIAYgByADEHcgAUEgahDMByADQRBqJAALfgEBfyMAQUBqIgIkACACQczfwAA2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IQogAygCICEUIAhFDQIgCiAIQQN0IgRqIRUgCiECA0AgAiANENUGrUIBgzcDACACQQhqIQIgBEEIayIEDQALIAMgBSkDACIdNwNIIAMgBUEIaikDACIeNwNQIANB2ABqIAkgHSAeEJwFIANB+ABqIAcpAwAgB0EIaikDABDOAyAdeyAee3whISADQfAAaigCACIQQQN0IhZBCGshFyADQewAaigCACIJIBBBAWsiEUEDdGohGCAHQShqKAIAIQ4gA0HIAmohGUIBISAgCCENIAohBwNAIA1FICCnRXINBSAZIBw3AwAgAyAfNwPAAiADQQE2ArwCIAMgDjYCuAIgA0EIaiADQbgCahCRByADKAIYIhpFDQUgEEUNBCAIQQFrIg8gCEshGyAHKQMAISMgA0H4AGogCSARIB0gHhC1BgJAICFCAVINACADQcgAakGEq8EAEIsDISQgEUUNACAXIQQgCSECA0AgAiACKQMAICR+NwMAIAJBCGohAiAEQQhrIgQNAAsLIAdBCGohB0EAIA8gGxsgIEIAIAhBAUsbISAgDUEBayENIA5BCGohDiAYIBopAwA3AwAgFiEEIAkhAgNAIAIgAikDACAjfjcDACACQQhqIQIgBEEIayIEDQALIAUgA0HYAGoQ4AYhCCAHIBVHDQALDAQLIANB1ABqQSw2AgAgAyAcNwPAAiADIB83A7gCIANCAjcChAEgA0EDNgJ8IANBuKnBADYCeCADQSw2AkwgAyAdNwNgIAMgHjcDWCADIANByABqNgKAASADIANB2ABqNgJQIAMgA0G4Amo2AkggA0EoaiADQThqIANB+ABqQeSqwQAQhQcACyADQeQAakHOADYCACADQYQBakICNwIAIAMgCUEBazYCSCADQQM2AnwgA0G8qsEANgJ4IANBzgA2AlwgAyACQQFrNgK4AiADIANB2ABqNgKAASADIANBuAJqNgJgIAMgA0HIAGo2AlggA0H4AGpB9KrBABD8BgALIANB2ABqIAkgHiAdEJwFIANB+ABqIAcpAwAgB0EIaikDABDOAwwBC0H/oMAAQStB7LbAABDMBgALIAUgIhDhBiADKAKwAhBrIAMoAmgEQCADQewAaigCABBrCyAUBEAgChBrCyADQdACaiQAIAYgEiATbCAMbjYCLCAGIAw2AiggBkEBNgIkIAYgDEEBazYC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aikDADcDACACIAFBIGopAwA3A0gMAgsgAkHYAGogAUEwaikDADcDACACQdAAaiABQShqKQMANwMAIAIgAUEgaikDADcDSAwBCyACIAFBpAJqKAIAIAFBqAJqKAIAEJQGIAIoAgQhAyACKAIAIQUCQAJAAkBCAiABKQMAIhFCAn0iECAQQgJaG6dBAWsOAgECAAsgAkHgAGogAUEIakGAARDnCRogAkHYAGogAkH4AGopAwA3AwAgAkHQAGogAkHwAGopAwA3AwAgAiACKQNoNwNIDAILIAJB2ABqIAFBGGopAwA3AwAgAkHQAGogAUEQaikDADcDACACIAEpAwg3A0gMAQsgAkHYAGogAUEYaikDADcDACACQdAAaiABQRBqKQMANwMAIAIgASkDCDcDSAsgAkEYaiACQdAAaikDADcDACACQSBqIAJB2ABqKQMANwMAIAIgBTYCYCACIAIpA0g3AxAgAiADNgJkIAJBKGohCSACQeAAaiELIAJBEGohDiMAQSBrIgUkAAJAAn8CQAJAAkBCAiABKQMAQgJ9IhAgEEICWhunIgZBAWsOAgECAAsgAUH0AGohAyABQfgAagwCCyABQYwBaiEDIAFBkAFqDAELIAFB7ABqIQMgAUHwAGoLKAIAIAMoAgBsIgMEQCAHBEAgBSALKAIEQQFqAn8CQAJAAkAgBkEBaw4CAQIACyABQcgAagwCCyABQdAAagwBCyABQUBrCyIGKQMAIAZBCGopAwAQnAVCgICAgICAgICAfyADrYAgEiAHrYJ+IRAjAEFAaiIDJAACQAJAIAVBGGooAgAiCkEBayIGIAsoAgQiD0YEQCAKRQ0BIAVBFGooAgAhCiAFKQMAIRIgA0EgaiAFQQhqKQMAIhM3AwAgAyASNwMYIAMgCjYCECADIAY2AhQgAyATNwMwIAMgEjcDKCADIAogBkEDdGo2AjggCyADQRBqIANBKGogECAOIAwQ2wEgA0FAayQADAILIANBHGpBzgA2AgAgA0E0akICNwIAIAMgBjYCCCADQQM2AiwgA0HYpsEANgIoIANBzgA2AhQgAyAPNgIMIAMgA0EQajYCMCADIANBDGo2AhggAyADQQhqNgIQIANBKGpB8KbBABD8BgALQf+gwABBK0HstsAAEMwGAAsgCUEYaiAFQRhqKQMANwMAIAlBEGogBUEQaikD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QSUQ8AUgAigCACEHIAIoAgRBhYXAAEElEOcJIQMgAkElNgI4IAIgAzYCNCACIAc2AjAgA0ElEAUhAyACQTBqEP8HIARBhAFJDQEgBBACDAELIAJByABqIAJBKGopAwA3AwAgAkFAayACQSBqKQMANwMAIAJBOGogAkEYaikDADcDACACIAIpAxA3AzAjAEGAAWsiAyQAIAMgBBDbBSADIAQgAkEwaiADQewAaigCABCgBxD/BCACQQhqIgdBADYCACAHQQxqIANBCGooAgA2AgAgByADKQMANwIEIANBgAFqJAAgAigCCEUEQCACQRRqKAIAIQQgAkEQaigCACEDIAIoAgwMAgsgAikCDCEMIAIgAkEUaigCADYCECACIAw3AwggAkEIahCgBSEDC0GAgICAeAshByAJIAQ2AgggCSADNgIEIAkgBzYCACACQdAAaiQAAkAgBigCBEGBgICAeEcEQCAIIAYpAgQ3AgAgCEEIaiAGQQxqKAIANgIADAELIAZBDGooAgAhAiAGKAIIIQRBpI3CAEEQEAUhAyAIQYCAgIB4NgIAIAggAzYCBCAEIAIoAgARAQAgAigCBEUNACACKAIIGiAEEGsLIAZBEGokACAKIAooAgBBAWs2AgACfyAFKAIUQYCAgIB4RwRAIAVBFGoQ1gYhAUEADAELQQEhCyAFKAIYCyECIAAgCzYCCCAAIAI2AgQgACABNgIAIAVBIGokAAuMBQIJfwF+IwBBIGsiBSQAIAVBCGogAhDSBiAFKAIMIQogBUEUaiEIIAUoAgghBCMAQRBrIgYkACAGQQRqIQkjAEHQAGsiAiQAIAJBCGogARCIAgJ/AkAgAigCCARAIAIoAgwhBCACQSUQ8AUgAigCACEHIAIoAgRBhYXAAEElEOcJIQMgAkElNgI4IAIgAzYCNCACIAc2AjAgA0ElEAUhAyACQTBqEP8HIARBhAFJDQEgBBACDAELIAJByABqIAJBKGopAwA3AwAgAkFAayACQSBqKQMANwMAIAJBOGogAkEYaikDADcDACACIAIpAxA3AzAjAEGAAWsiAyQAIAMgBBDcBSADIAQgAkEwaiADQewAaigCABCgBxCEBSACQQhqIgdBADYCACAHQQxqIANBCGooAgA2AgAgByADKQMANwIEIANBgAFqJAAgAigCCEUEQCACQRRqKAIAIQQg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KAIARQRAIAEEQCABQQN0IQEgACgCACEAA0AgAiADKQMANwMIIAAgAkEIakEIEIsJIANBCGohAyABQQhrIgENAAsLQQAhAAsgAkEQaiQAIAAL1gQBCn8jAEHQA2siBSQAIAVBCGogARDSBiAFKAIMIQggBUEQaiEGIAUoAgghByMAQfAGayICJAAgAkGwA2ohCSMAQSBrIgMkAAJAAkACQCAHQewAaigCAEECaw4DAAEAAQsjAEHQBGsiASQAAkACQEEAQayBwgAoAgARBQAiBARAIAQoAgANASAEQX82AgAgAUHAAmogB0GAARDnCRogAUICNwO4AiABQQhqIARBCGogAUG4AmoQogIgBCAEKAIAQQFqNgIAIAEpAwhCBFINAgtBwobAAEHGACABQc8EakGIh8AAQeiHwAAQ9gQACxCyBgALIAkgAUEIakGwAhDnCRogAUHQBGokACAJQbACaiAHQYABakGQARDnCRogA0EgaiQADAELIANBFGpCADcCACADQQE2AgwgA0GIhcIANgIIIANBsPDBADYCECADQQhqQaCFwgAQ/AYACyACKAK8AyEBIAIoArgDIQMgAigCsAMhBCACKAK0AyEHIAIgAkHAA2pBsAMQ5wkhAgJAIAStIAetQiCGhEIEUgRAIAYgATYCDCAGIAM2AgggBiAHNgIEIAYgBDYCACAGQRBqIAJBsAMQ5wkaDAELQaSNwgBBEBAFIQQgBkIENwMAIAYgBDYCCCADIAEoAgARAQAgASgCBEUNACABKAIIGiADEGsLIAJB8AZqJAAgCCAIKAIAQQFrNgIAAn8gBSkDEEIEUgRAIAVBEGoQ8wUhCkEADAELQQEhCyAFKAIYCyEBIAAgCzYCCCAAIAE2AgQgACAKNgIAIAVB0ANqJAALgQEBBH8jAEEQayICJAAgAkEAOgAHAkAgASgCBCIEBEAgAkEHakEBIAEoAgAiBUEBQbDYwAAQ3gcgASAEQQFrNgIEIAEgBUEBajYCACAAIAItAAc6AAEMAQsgAkKBygA3AwggACACQQhqELsHNgIEQQEhAwsgACADOgAAIAJBEGokAAvbBgIHfwF+IwBBwAFrIggkACAIQQhqIgQgAgJ/AkACQAJAQgIgASkDAEICfSILIAtCAlobp0EBaw4CAQIACyABQfQAagwCCyABQYwBagwBCyABQewAagso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AgJ/AkACQAJAIAQtALACIgZFBEAgE0EBaw4CAwUBCwJAAkACQCATQQFrDgIBAgALIANB0ABqIARBCGpBgAEQ5wkaIANByABqIANB6ABqKQMANwMAIANBQGsgA0HgAGopAwA3AwAgAyADKQNYNwM4DAMLIARBCGoMBAsgBEEIagwFCyADQdAAaiAEQQhqQYABEOcJGiADQcgAaiADQYABaikDADcDACADQUBrIANB+ABqKQMANwMAIAMgA0HwAGopAwA3AzgLIAMgA0E4ajYCXCADIANBBGo2AlggAyADQRBqIgI2AlQgAyAENgJQIANB0ABqEIwCIAQoAnQhBSAKIAJBKBDnCRogBEH4AGoMBAsgBEEgagsiAkEQaikDADcDACADQUBrIAJBCGopAwA3AwAgAyACKQMANwM4IAMgA0E4ajYCXCADIANBBGo2AlggAyADQRBqIgI2AlQgAyAENgJQIANB0ABqEIwCIARBjAFqKAIAIQUgCiACQSgQ5wkaIARBkAFqDAILIARBIGoLIgJBEGopAwA3AwAgA0FAayACQQhqKQMANwMAIAMgAikDADcDOCADIANBOGo2AlwgAyADQQRqNgJYIAMgA0EQaiICNgJUIAMgBDYCUCADQdAAahCMAiAEKAJsIQUgCiACQSgQ5wkaIARB8ABqCyECIAogBjoAOCAKIAU2AiwgCkEBNgI0IAogAigCADYCMCAKIAVBAWs2AiggAygCBARAIAMoAggQawsgA0HQAWokAAwBC0Hgj8AAQRlB7JjAABDMBgALIAogETYCQCAXQdAAaiQADAULIAMpAwAhHSAJQQhqIgMgAQJ/AkACQAJAQgIgBCkDAEICfSIBIAFCAlobpyITQQFrDgIBAgALIARB9ABqDAILIARBjAFqDAELIARB7ABqCygCACIGIBEQtgUgCUGYAWogHSAGIBEQtgUgCUHQAGogA0HIABDnCRpBgc3DAC0AABpBkAFBCBCECSILRQ0BIAsgCUHQAGpBkAEQ5wkhAyASIAJBEGoiD0YEQEGc7cEAIQwMBAsgBEH0AGohBiAEQYwBaiEFIARB7ABqIQhBnO3BACEMA0AgBiECAkACQAJAIBNBAWsOAgABAgsgBSECDAELIAghAgsgCUHQAGogDykDACACKAIAIBEQtgVBgc3DAC0AABpB0ABBCBCECSILRQ0D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Cwt/AQJ/IwBBEGsiAyQAIAAgARCaBCICRQRAIAMgADUCKDcDCCABKAIQKAIAIANBCGoiAkEIEIsJIAMgADUCLDcDCCABKAIQKAIAIAJBCBCLCSADIAA1AjA3AwggASgCECgCACACQQgQiwkgAEE0aiABEJIGIQILIANBEGokACACC3kBAX8gACgCACICIAAoAgRGBEBBAw8LIAAgAkEEajYCAEEBQQIgAigCABAXIgBBAUYbQQAgABsiAEECRgR/QdSPwQBBFhAFIQACQCABKAIARQ0AIAEoAgQiAkGEAUkNACACEAILIAEgADYCBCABQQE2AgBBAgUgAAsLfgEBfyMAQUBqIgAkACAAQQo2AhAgAEGwxMIANgIMIABBAToAFyAAQSRqQgI3AgAgAEE8akGmAzYCACAAQQI2AhwgAEHA4sIANgIYIABBGDYCNCAAIABBMGo2AiAgACAAQRdqNgI4IAAgAEEMajYCMCAAQRhqQbDjwgAQ/AYAC44BAQN/IwBBIGsiACQAAkACQEHE0cMAKAIAIgFFBEAQrwMhAUHE0cMAKAIADQFBxNHDACABNgIACyABIAEoAgAiAkEBajYCACACQQBIDQEgAEEgaiQAIAEPCyAAQRRqQgA3AgAgAEEBNgIMIABBjOvCADYCCCAAQfzqwgA2AhAgAEEIakHk68IAEPwGAAsAC4cBAgN/AX4jAEEgayICJAAgASgCBCIDRQRAIAJBFGpCADcCACACQQE2AgwgAkGktsAANgIIIAJB/J/AADYCECACQQhqQay2wAAQ/AYACyABQRBqKQMAIQUgASgCACEEIAAgASkDCDcDCCAAIAM2AgQgACAENgIAIABBEGogBTcDACACQSBqJAALggEBAX8jAEEwayIEJAAgBEEMaiABEJ4EIAQoAhRFBEAgBEEkakIANwIAIARBATYCHCAEQaS2wAA2AhggBEH8n8AANgIgIARBGGpBrLbAABD8BgALIAAgAjcDACAAIAQpAgw3AhAgACADNwMIIABBGGogBEEUaigCADYCACAEQTBqJAALhwECA38BfiMAQSBrIgIkACABKAIEIgNFBEAgAkEUakIANwIAIAJBATYCDCACQdiuwAA2AgggAkH8n8AANgIQIAJBCGpBkK/AABD8BgALIAFBIGopAwAhBSABKAIAIQQgACABKQMYNwMIIAAg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cUUgAUEFdBD9CCABQYCAgIABSSIEIAFBBHQiARD9CCEDQcAAENEHIgIgA0HAABDRB2oiAyACTyADEP0IIQIgBCABEP0IIQEgACACQcAAENEHIgIgAUHAABDRB2oiASACTyABEP0INgIEIABBwAA2AgALwgQBBn8jAEEQayIGJAACQCABKAIEIgVFBEAgAEGAgICAeDYCAAwBCyABIAVBAWs2AgQgBkEEaiEFIAEoAgAhByMAQRBrIgMkACADQgA3AwgCQAJAAn8gBygCBCIEQQdNBEAgA0KBygA3AwggA0EIahC7BwwBCyADQQhqQQggBygCACIBQQhBsNjAABDeByAHIARBCGs2AgQgByABQQhqNgIAIAMgAykDCBDeAiADKAIARQ0BIAMoAgQLIQEgBUGAgICAeDYCACAFIAE2AgQMAQsgAygCBCEBIwBB4ABrIgIkACACIAc2AhQgAiABNgIYIAJBCGpBpJIBIAEgAUGkkgFPGxDJBSACQQA2AiQgAiACKQMINwIcIAJBKGogAkEUahCmAgJAAkAgAigCQCIEQYGAgIB4RwRAA0AgBEGAgICAeEYNAiACKAIkIgQgAigCHEYEQCACQRxqIAQQpwYgAigCJCEECyACKAIgIARBOGxqIAJBKGoiAUE4EOcJGiACIARBAWo2AiQgASACQRRqEKYCIAIoAkAiBEGBgICAeEcNAAsLIAUgAigCKDYCBCAFQYCAgIB4NgIAIAJBHGoQnQYgAigCHEUNASACKAIgEGsMAQsgBSACKQIcNwIAIAVBCGogAkEkaigCADYCAAsgAkHgAGokAAsgA0EQaiQAIAYoAgQiAUGAgICAeEcEQCAAIAYpAgg3AgQgACABNgIADAELIAYoAgghASAAQYGAgIB4NgIAIAAgATYCBAsgBkEQaiQAC9kEAQZ/IwBBEGsiBiQAAkAgASgCBCIFRQRAIABBgICAgHg2AgAMAQsgASAFQQFrNgIEIAZBBGohBSABKAIAIQcjAEEQayIDJAACQAJAAkAgB0IIEKIGIgENACADQgA3AwggBygCDCICKAIEIgRBB00EQCADQoKAgICAvokINwMIIANBCGoQuwchAQwBCyADQQhqQQggAigCACIBQQhBxMvAABDeByACIARBCGs2AgQgAiABQQhqNgIAIAMgAykDCBDeAiADKAIARQ0BIAMo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AARAIABBA3QhAQNAIANCCBCMBiIADQIgAUEIayIBDQALC0EAIQALIAJBEGokACAAC3MBAn8jAEEQayICJAACQCABKAIEIgNFBEAgAEEANgIADAELIAEgA0EBazYCBCACQQhqIAEoAgAQqQMgAigCCEUEQCAAIAIoAgw2AgQgAEEBNgIADAELIAIoAgwhASAAQQI2AgAgACABNgIECyACQRBqJAALcwECfyMAQRBrIgIkAAJAIAEoAgQiA0UEQCAAQQA2AgAMAQsgASADQQFrNgIEIAJBCGogASgCABCAAyACKAIIRQRAIAAgAigCDDYCBCAAQQE2AgAMAQsgAigCDCEBIABBAjYCACAAIAE2AgQLIAJBEGokAAt2AAJAIAIEQCACZ0EfcyICQRFPDQEgAEEAOwEgIAAgATsBHCAAQRA2AhggACACNgIUIABBADsBECAAIAM2AiggAEIANwMIIABCATcDACAAQX8gAnRBf3M7AR4PC0GYycEAEP0GAAtB8JfAAEEyQcyYwAAQzAYAC3wBAn8jAEEQayICJAACfwJAAkACQEECIAAoAgAiAC0AAEEEa0H/AXEiAyADQQJPG0EBaw4CAQIACyABQcirwgBBHBCFCAwCCyABQeSrwgBBGhCFCAwBCyACIAA2AgwgAUH+q8IAQQcgAkEMakGIrMIAEMwCCyACQRBqJAALbQEBfyMAQTBrIgMkACADIAA2AgAgAyABNgIEIANBFGpCAjcCACADQSxqQRY2AgAgA0ECNgIMIANB1KjDADYCCCADQRY2AiQgAyADQSBqNgIQIAMgA0EEajYCKCADIAM2AiAgA0EIaiACEPwGAAttAQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EUakICNwIAIANBLGpBFjYCACADQQI2AgwgA0H8osMANgIIIANBFjYCJCADIANBIGo2AhAgAyADNgIoIAMgA0EEajYCICADQQhqIAIQ/AYAC20BAX8jAEEwayIDJAAgAyAANgIAIAMgATYCBCADQRRqQgI3AgAgA0EsakEWNgIAIANBAjYCDCADQfSowwA2AgggA0EWNgIkIAMgA0EgajYCECADIANBBGo2AiggAyADNgIgIANBCGogAhD8BgALbQEBfyMAQTBrIgMkACADIAA2AgAgAyABNgIEIANBFGpCAjcCACADQSxqQRY2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AGsiAyQAIAdBBGoiBSgCBCEEIAUoAgAgASACRwRAIAUoAgggBEE4bGohBSAEIAIgAWtByABuIgJqIQQDQCADQUBrIgogAUEwEOcJGiADQQhqIgsgChCfAiADIAFBQGstAAA6ADggAyABQThqKAIANgI0IAMgAUE0aigCADYCMCADIAFBPGooAgA2AiwgAyABQTBqKAIANgIoIAFByABqIQEgBSALQTgQ5wlBOGohBSACQQFrIgINAAsLIAQ2AgAgA0HwAGokACAHQRBqJAAgAEEIaiAIKAIANgIAIAAgBikCFDcCACAGQSBqJAALawECfyMAQSBrIgEkACABIAAoAgAiAEEBcSICNgIEIAJFBEAgAUEgaiQAIABBAXYPCyABQgA3AhQgAUH8n8AANgIQIAFBATYCDCABQeSnwAA2AgggAUEEakGMp8AAIAFBCGpBmKjAABCLBwALVAEDfyAAKAIMIgEgACgCCCICRwRAIAEgAmtBAnYhAQNAIAIoAgAiA0GEAU8EQCADEAILIAJBBGohAiABQQFrIgENAAsLIAAoAgQEQCAAKAIAEGsLC2gAIwBBMGsiACQAQYDNwwAtAAAEQCAAQRhqQgE3AgAgAEECNgIQIABB+PbCADYCDCAAQRY2AiggACABNgIsIAAgAEEkajYCFCAAIABBLGo2AiQgAEEMakGg98IAEPwGAAsgAEEwaiQAC00BAX8jAEEQayIDJAAgA0GHgICAeDYCACADEM0GIAMgAq03AwAgASgCECgCACADQQgQiwlBACECIAAgATYCBCAAIAI2AgAgA0EQaiQAC0IBAn8jAEEQayICJAAgAkGHgICAeDYCBCACQQRqEM0GIAEgASkDAEIIfDcDACAAIAE2AgQgACADNgIAIAJBEGokAAuZAQECfyMAQbABayIBJAAjAEHAAWsiAiQAAkACQCAABEAgACgCAA0BIABBADYCACACQQhqIABBuAEQ5wkaIAEgAkEQakGwARDnCRogABBrIAJBwAFqJAAMAgsQ0gkACxDTCQALIAFBjAFqKAIABEAgAUGQAWooAgAQawsgAUHIAGooAgAEQCABQcwAaigCABBrCyABQbABaiQAC1YBAX4CQCADQcAAcUUEQCADRQ0BIAJBACADa0E/ca2GIAEgA0E/ca0iBIiEIQEgAiAEiCECDAELIAIgA0E/ca2I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AgAiAUEDRiABQQJGcg0AAkAgAUUEQCAAKAIEIgBBgwFLDQEMAgsgACgCBCIBQYQBTwRAIAEQAgsgACgCCCIAQYQBSQ0BCyAAEAILC4UBAQF+AkACQCAArSABrX4iAkIgiKcNACACpyIAQUBLIABBAEhyDQBBgc3DAC0AABogAEHAABCECSIBDQFBwAAgABDfCQALIwBBIGsiACQAIABBFGpCADcCACAAQQE2AgwgAEGg5sIANgIIIABBjObCADYCECAAQQhqQYTnwgAQ/AYACyABC1sBAX8jAEEgayIDJAAgAkUEQCADQRRqQgA3AgAgA0EBNgIMIANBkLzAADYCCCADQfyfwAA2AhAgA0EIakHEvMAAEPwGAAsgACACNgIEIAAgATYCACADQSBqJAALWgIBfwF+IwBBEGsiAiQAIAApAwAhAyACIABBCGopAwA3AwggAiADNwMAIAEoAhAiASgCACACQRAQiwkgAiAANQIQNwMAIAEoAgAgAkEIEIsJIAJBEGokAEEAC04BAX8CQCACIANNBEAgASgCBCIFIANJDQEgASgCACEBIAAgAyACazYCBCAAIAEgAkEDdGo2AgAPCyACIAMgBBDCBQALIAMgBSAEEMEFAAtWAQF/IwBBEGsiAiQAAkAgAC0AAEUEQCACQQA2AgggASgCECgCACACQQhqQQQQiwkMAQsgAkEBNgIMIAEoAhAoAgAgAkEMakEEEIsJCyACQRBqJABBAAswAQF/IABBBGohAQJAIAAoAgBFBEAMAQsgARCdBgsgASgCAARAIABBCGooAgAQawsLWwEBfyMAQSBrIgMkACACRQRAIANBFGpCADcCACADQQE2AgwgA0Hw/8EANgIIIANBsPDBADYCECADQQhqQaiAwgAQ/AYACyAAIAI2AgQgACABNgIAIANBIGokAAtKAQF/IwBBEGsiAiQAAkAgACgCACIABEAgAiABNgIEIAJBkwI2AgAgACACEJgCDAELIAFBfHEiAEEMahDWAyAAEGsLIAJBEGokAAtQAQF/AkAgACgCACIBRQ0AIAEgASgCACIBQQFrNgIAIAFBAUYEQCAAEPwFCyAAKAIEIgEgASgCACIBQQFrNgIAIAFBAUcNACAAQQRqEMEDCwuMAwIJfwF+IwBBEGsiAiQAIAIgARC+ASACKAIAIQEgAiACKAIEIgMgAigC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DQEgACkDECIDUA0CIAIgA3wiAyACVA0DIAIgBFQNBCADQoCAgICAgICAIFoNBSAaIAAvARgiADsBCCAaIAIgBH0iBDcDACAAIABBIGsgACADQoCAgIAQVCIBGyIYQRBrIBggA0IghiADIAEbIgNCgICAgICAwABUIgEbIhhBCGsgGCADQhCGIAMgARsiA0KAgICAgICAgAFUIgEbIhhBBGsgGCADQgiGIAMgARsiA0KAgICAgICAgBBUIgEbIhhBAmsgGCADQgSGIAMgARsiA0KAgICAgICAgMAAVCIBGyADQgKGIAMgARsiBUIAWSIYayIBa8EiIUEASA0GIBpCfyAhrSIGiCIDIASDNwMQIAMgBFQNCiAaIAA7AQggGiACNwMAIBogAiADgzcDECACIANWDQpBoH8gAWvBQdAAbEGwpwVqQc4QbSIAQdEATw0HIABBBHQiAEGAkMMAaikDACIHQv////8PgyIDIAIgBkI/gyIChiIIQiCIIhF+IglCIIgiFSAHQiCIIgYgEX58IAYgCEL/////D4MiB34iCEIgiCIWfCELIAlC/////w+DIAMgB35CIIh8IAhC/////w+DfEKAgICACHxCIIghEkIBQQAgASAAQYiQwwBqLwEAamtBP3GtIgmGIgdCAX0hDCADIAQgAoYiAkIgiCIEfiIIQv////8PgyADIAJC/////w+DIgJ+QiCIfCACIAZ+IgJC/////w+DfEKAgICACHxCIIghDyAEIAZ+IQQgAkIgiCECIAhCIIghCCAAQYqQwwBqLwEAIQEgBiAFIBithiIFQiCIIhN+IhQgAyATfiIKQiCIIg18IAYgBUL/////D4MiBX4iDkIgiCIQfCAKQv////8PgyADIAV+QiCIfCAOQv////8Pg3xCgICAgAh8QiCIIg58QgF8IgogCYinIgBBkM4ATwRAIABBwIQ9SQ0JIABBgMLXL08EQEEIQQkgAEGAlOvcA0kiGBshIUGAwtcvQYCU69wDIBgbDAsLQQZBByAAQYCt4gRJIhgbISFBwIQ9QYCt4gQgGBsMCgsgAEHkAE8EQEECQQMgAEHoB0kiGBshIUHkAEHoByAYGwwKC0EKQQEgAEEJSyIhGwwJC0HTi8MAQRxB0JrDABDMBgALQYCMwwBBHUHgmsMAEMwGAAtBsIzDAEEcQfCawwAQzAYAC0GU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DCAEIAA2AghBACAEQQhqQYyVwQAgBEEMakGMlcEAIAIgAxCiAQALNgEBfyMAQRBrIgIkACACIAA2AgwgAUG0jcIAQQVBuY3CACACQQxqQcCNwgAQpwMgAkEQaiQACzYBAX8jAEEQayICJAAgAiAANgIMIAFB8KfCAEEUQYSowgAgAkEMakGIqMIAEKcDIAJBEGokAAs5AQF/IwBBEGsiBCQAIAQgATYCDCAEIAA2AghBACAEQQhqQYTAwgAgBEEMakGEwMIAIAIgAxCiAQALOQEBfyMAQRBrIgQkACAEIAE2AgwgBCAANgIIQQAgBEEIakGUwMIAIARBDGpBlMDCACACIAMQogEACzkBAX8jAEEQayIEJAAgBCABNgIMIAQgADYCCEEAIARBCGpBrOLCACAEQQxqQaziwgAgAiADEKIBAAs0AQF/IwBBEGsiAiQAIAIgACgCADYCDCABQdfJwABBCCACQQxqQbTJwAAQzAIgAkEQaiQACzQBAX8jAEEQayICJAAgAiAAKAIANgIMIAFBy8nAAEEMIAJBDGpBtMnAABDMAiACQRBqJAALNAEBfyMAQRBrIgIkACACIAAoAgA2AgwgAUHfycAAQQ4gAkEMakG0ycAAEMwCIAJBEGokAAs5ACABKAIERQRAQQBBAEGUtMAAEMAFAAsgACABKQMINwMAIAAgASgCADYCECAAIAFBEGopAwA3AwgLOQAgASgCBEUEQEEAQQBBhLTAABDABQALIAAgASkDCDcDACAAIAEoAgA2AhAgACABQRBqKQMANwMICzIAAkAgASAAQRhqELoFIgANACABQggQjAYiAA0AIAFCCBCMBiIADQAgARD8ByEACyAACygBAX8gACgCCCIBIAAoAgwgAWtBOG4QuQYgACgCBARAIAAoAgAQawsLKAEBfyAAKAIIIgEgACgCDCABa0EMbhDEBiAAKAIEBEAgACgCABBrCws0AQF/IwBBEGsiAiQAIAIgACgCADYCDCABQeXQwQBBByACQQxqQezQwQAQzAIgAkEQaiQACzIBAX8gASgCHCICQRBxRQRAIAJBIHFFBEAgACABELwJDwsgACABENgDDwsgACABENcDCzIBAX8gASgCHCICQRBxRQRAIAJBIHFFBEAgACABENIHDwsgACABENgDDwsgACABENcDCy4AAkAgA2lBAUdBgICAgHggA2sgAUlyRQRAIAAgASADIAIQjQgiAA0BCwALIAALNAEBfyMAQRBrIgIkACACIAAoAgA2AgwgAUHEosIAQQkgAkEMakHQosIAEMwCIAJBEGokAAsoAQF/IAAoAggiASAAKAIMIAFrQQN2ENEGIAAoAgQEQCAAKAIAEGsLCzIAAkAgAARAIABnQR9zIgANAUHgj8AAQRlBoJrAABDMBgALQZCawAAQ/QYAC0EgIABuCzIAAkAgAARAIABnQR9zIgANAUHgj8AAQRlBoJrAABDMBgALQZCawAAQ/QYAC0EQIABuCzMAAkAgAARAIABnQR9zIgANAUHgj8AAQRlBoJrAABDMBgALQZCawAAQ/QYAC0GAASAAbgsyAAJAIAAEQCAAZ0EfcyIADQFB4I/AAEEZQaCawAAQzAYAC0GQmsAAEP0GAAtBCCAAbgszAAJAIAAEQCAAZ0EfcyIADQFB4I/AAEEZQaCawAAQzAYAC0GQmsAAEP0GAAtBgAIgAG4LMwACQCAABEAgAGdBH3MiAA0BQeCPwABBGUGgmsAAEMwGAAtBkJrAABD9BgALQaABIABuCzMAAkAgAARAIABnQR9zIgANAUHgj8AAQRlBoJrAABDMBgALQZCawAAQ/QYAC0HAACAAbgvPAgIFfwR+AkAgASgCACEFIAEoAgQhAiABKAIoIQMgASgCLCEEIAEpAwghCSABQRBqKQMAIQogASkDGCEHIAFBIGopAwAhCCMAQTBrIgEkAAJAIAcgCIRQRSAHeyAIe3xCAlpxRQRAIAMgBGwiBiACRw0BIAAgBzcDGCAAIAk3AwggACAENgIsIAAgAzYCKCAAIAI2AgQgACAFNgIAIABBIGogCDcDACAAQRBqIAo3AwAgAUEwaiQADAILIAFBDGpCADcCACABQQE2AgQgAUHovcAANgIAIAFB/J/AADYCCCABQcjAwAAQ/AYACyABQSRqQRY2AgAgAUEMakICNwIAIAEgBjYCKCABQQI2AgQgAUH8wMAANgIAIAFBFjYCHCABIAI2AiwgASABQRhqNgIIIAEgAUEsajYCICABIAFBKGo2AhggAUGMwcAAEPwGAAsLMQEBfyMAQRBrIgIkACACIAA2AgwgAUHfycAAQQ4gAkEMakG0ycAAEMwCIAJBEGokAAsxAQF/IwBBEGsiAiQAIAIgADYCDCABQdfJwABBCCACQQxqQbTJwAAQzAIgAkEQaiQACzEBAX8jAEEQayICJAAgAiAANgIMIAFB7cnAAEEXIAJBDGpBtMnAABDMAiACQRBqJAALMQEBfyMAQRBrIgIkACACIAA2AgwgAUHLycAAQQwgAkEMakG0ycAAEMwCIAJBEGokAAsxAQF/IwBBEGsiAiQAIAIgADYCDCABQcTJwABBByACQQxqQbTJwAAQzAIgAkEQaiQACzEBAX8jAEEQayICJAAgAiAANgIMIAFBrODAAEEMIAJBDGpBuODAABDMAiACQRBqJAALMQEBfyMAQRBrIgIkACACIAA2AgwgAUHX0MEAQQ4gAkEMakGU0MEAEMwCIAJBEGokAAsxAQF/IwBBEGsiAiQAIAIgADYCDCABQcrQwQBBDSACQQxqQZTQwQAQzAIgAkEQaiQACzEBAX8jAEEQayICJAAgAiAANgIMIAFBhNDBAEEOIAJBDGpBlNDBABDMAiACQRBqJAALMQEBfyMAQRBrIgIkACACIAA2AgwgAUG20MEAQQwgAkEMakGU0MEAEMwCIAJBEGokAAsxAQF/IwBBEGsiAiQAIAIgADYCDCABQcLQwQBBCCACQQxqQZTQwQAQzAIgAkEQaiQACzEBAX8jAEEQayICJAAgAiAANgIMIAFBpNDBAEESIAJBDGpBlNDBABDMAiACQRBqJAALMgACQCAABEAgAGdBH3MiAA0BQeCQwQBBGUHEz8EAEMwGAAtBtM/BABD9BgALQRAgAG4LMwACQCAABEAgAGdBH3MiAA0BQeCQwQBBGUHEz8EAEMwGAAtBtM/BABD9BgALQYACIABuCzMAAkAgAARAIABnQR9zIgANAUHgkMEAQRlBxM/BABDMBgALQbTPwQAQ/QYAC0GAASAAbgszAAJAIAAEQCAAZ0EfcyIADQFB4JDBAEEZQcTPwQAQzAYAC0G0z8EAEP0GAAtBoAEgAG4LMwACQCAABEAgAGdBH3MiAA0BQeCQwQBBGUHEz8EAEMwGAAtBtM/BABD9BgALQcAAIABuCzIAAkAgAARAIABnQR9zIgANAUHgkMEAQRlBxM/BABDMBgALQbTPwQAQ/QYAC0EIIABuCzIAAkAgAARAIABnQR9zIgANAUHgkMEAQRlBxM/BABDMBgALQbTPwQAQ/QYAC0EgIABuCzIBAX8CQCAAKAIAIgFFDQAgASAAKAIEIgAoAgARAQAgACgCBEUNACAAKAIIGiABEGsLCzEBAX8jAEEQayICJAAgAiAANgIMIAFBhO/BAEEMIAJBDGpBkO/BABDMAiACQRBqJAALMQEBfyMAQRBrIgIkACACIAA2AgwgAUGwicIAQQwgAkEMakG8icIAEMwCIAJBEGokAAssAQF/IwBBEGsiACQAIABBCGoiAiABQdCNwgBBCRDIByACELADIABBEGokAAssAQF/IwBBEGsiACQAIABBCGoiAiABQdmNwgBBCxDIByACELADIABBEGokAAsxAQF/IwBBEGsiASQAIAFBgICAgHg2AgQgASAAKQIANwIIIAFBBGoQ7QYgAUEQaiQACzEBAX8jAEEQayICJAAgAiAANgIMIAFBrKLCAEEIIAJBDGpBtKLCABDMAiACQRBqJAALLAEBfyMAQRBrIgAkACAAQQhqIgIgAUHMtcIAQQsQyAcgAhCwAyAAQRBqJAALLAEBfyMAQRBrIgAkACAAQQhqIgIgAUGU7sIAQQsQyAcgAhC5BSAAQRBqJAALOgEBfyAAKAIAIQECQCAALQAEDQBB7M3DACgCAEH/////B3FFDQAQ7QkNACABQQE6AAELIAFBADoAAAstACABIAJJBEBByNTBAEEhQezUwQAQzAYACyABIAJrIgEgACABQQN0aiACEHALHQAgACgCAEF8cSIAKAIEBEAgACgCABBrCyAAEGsLLwAgAEG078IANgIEIABBAjoAACABIAIoAgARAQAgAigCBARAIAIoAggaIAEQawsLjQICBH4DfwJAIAEoAgAhByABKAIEIQYgASgCKCEIIAEpAwghBCABQRBqKQMAIQUgASkDGCECIAFBIGopAwAhAyMAQSBrIgEkAAJAIAIgA4RQRSACeyADe3xCAlpxRQRAIAZFDQEgACACNwMYIAAgBDcDCCAAIAg2AiggACAGNgIEIAAgBzYCACAAQSBqIAM3AwAgAEEQaiAFNwMAIAFBIGokAAwCCyABQRRqQgA3AgAgAUEBNgIMIAFB6L3AADYCCCABQfyfwAA2AhAgAUEIakH0w8AAEPwGAAsgAUEUakIANwIAIAFBATYCDCABQbzEwAA2AgggAUH8n8AANgIQIAFBCGpBxMTAABD8BgALCzAAIAAgASgCACABKAIEIAEoAiggASkDCCABQRBqKQMAIAEpAxggAUEgaikDABCOBAsrACABIAJJBEBBidLBAEEjQZTUwQAQzAYACyACIAAgAkEDdGogASACaxBwC90CAQN/AkACQAJAIAAoAgBBAWsOAgECAAsjAEEQayICJAAgAEEEaigCACIAIAAoAoACIgFBAWs2AoACAkAgAUEBRw0AIAAgACgCQCIBIAAoAsgBIgNyNgJAIAEgA3FFBEAgAEGgAWoQlwELIAAtAIgCIABBAToAiAJFDQAgAiAANgIMIAJBDGoQ1AYLIAJBEGokAA8LIwBBEGsiAiQAIABBBGooAgAiACAAKALAASIBQQFrNgLAAQJAIAFBAUcNACAAIAAoAkAiAUEBcjYCQCABQQFxRQRAIABBgAFqEJcBCyAALQDIASAAQQE6AMgBRQ0AIAIgADYCDCACQQxqEPYHCyACQRBqJAAPCyMAQRBrIgIkACAAQQRqKAIAIgAgACgCOCIBQQFrNgI4AkAgAUEBRw0AIAAQaiAALQBAIABBAToAQEUNACACIAA2AgwgAkEMahDjBwsgAkEQaiQACzIBAX9Bgc3DAC0AABpBCEEEEIQJIgJFBEBBBEEIEN8JAAsgAiABNgIEIAIgADYCACACCzAAIAEoAhQgAiADIAFBGGooAgAoAgwRBgAhAiAAQQA6AAUgACACOgAEIAAgATYCAAsqAQF/IAAoAgAiASAAKAIEIgAoAgARAQAgACgCBARAIAAoAggaIAEQawsLKAEBfwJAIAAoAgAiAUGAgICAeEYNACAAEJ4GIAFFDQAgACgCBBBrCwspAQF/An9BvKfCABDHBiIABEAgAEGMAWoMAQsQ7AMLKAIAQYQCaigCAAsuAAJAAkACQCAAKAIADgIBAgALIABBBGoQyQcLDwsgACgCBCAAQQxqKAIAELkGCyoBAX8gACgCECIBBEAgAEEcaigCACABbg8LQeCfwABBGUHMscAAEMwGAAuaAQEDfyMAQRBrIgMkACADQQRqIQEjAEEQayICJAACQAJAIAAEQCAAKAIADQEgAEEANgIAIAJBCGogAEEIaikCADcDACACIAApAgA3AwAgASACKQIENwIAIAFBCGogAkEMaigCADYCACAAEGsgAkEQaiQADAILENIJAAsQ0wkACyABEJ4GIAEoAgAEQCABKAIEEGsLIANBEGokAAs6AQJ/QYzNwwAtAAAhAUGMzcMAQQA6AABBkM3DACgCACECQZDNwwBBADYCACAAIAI2AgQgACABNgIACycAIABCADcAACAAQRhqQgA3AAAgAEEQakIANwAAIABBCGpCADcAAAsgAQF/IAAgACABakEBayICSwRAEOwJAAsgAkEAIAFrcQsiACAAKAIAIgCtIABBf3OsQgF8IABBAE4iABsgACABEMkBC5sBAQN/IAAoAggiAiABTwRAIAEgACgCCE0EQCAAIAE2AggLDwsgASACayICIAAoAgAgACgCCCIDa0sEQCAAIAMgAhCtBgsgACgCBCIEIAAoAggiAWohAwJAAkAgAkECTwRAIANBACACQQFrIgIQ5AkaIAQgASACaiIBaiEDDAELIAJFDQELIANBADoAACABQQFqIQELIAAgATYCCAsjABD6BiAAQQhqIAI6AAAgACABNgIEIAAgAS0AAUEARzYCAAsuAQF/QYHNwwAtAAAaQYwIQQQQhAkiAUUEQEEEQYwIEN8JAAsgASAAQYwIEOcJCyMBAX8gACABIAJqQQFrIgNBACACa3E2AgQgACABIANNNgIACyYAIAAgASkDCDcDCCAAIAEpAwA3AwAgAEEQaiABQRBqKQMANwMACycBAX8gACgCDCIBBEAgACgCCCABbg8LQeCfwABBGUHEs8AAEMwGAAsiAQF/IwBBkAJrIgEkACABIAAQ8QUgARD4BSABQZACaiQACyYBAX9Bgc3DAC0AABpB4AJBBBCECSIABEAgAA8LQQRB4AIQ3wkACyoBAX8gACgCECIBRQRAQbDPwgBBGUGcz8IAEMwGAAsgAEEMaigCACABbgsmACAAIAAoAgAgACgCBEEDdEHAACABQQN0EI0INgIAIAAgATYCBAsmACAAIAAoAgAgACgCBEEEdEHAACABQQR0EI0INgIAIAAgATYCBAsfACABIANGBEAgACACIAEQ5wkaDwsgASADIAQQwwUACyUAIABFBEBBgJ7CAEEyENEJAAsgACACIAMgBCAFIAEoAhARDwALKAAgASAAKAIALQAAQQJ0IgBB7OrCAGooAgAgAEHc6sIAaigCABCFCAsgAQJ+IAApAwAiAiACQj+HIgOFIAN9IAJCAFkgARDJAQvlAQIDfwJ+IAEoAgAhBCABKAIEIQMgASgCGCECIAEpAwghBSABQRBqKQMAIQYjAEEwayIBJAAgASACNgIAAkAgAgRAIAMgAnBFDQEgAUEoakEpNgIAIAFBEGpCAjcCACABQQM2AgggAUHIuMAANgIEIAFBFjYCICABIAM2AiwgASABQRxqNgIMIAEgATYCJCABIAFBLGo2AhwgAUEEakHguMAAEPwGAAtBgKDAAEE5QcC3wAAQzAYACyAAIAU3AwggACACNgIYIAAgAzYCBCAAIAQ2AgAgAEEQaiAGNwMAIAFBMGokAAsbACAAKAIAIgBBBGoQhgYgAEEcahCGBiAAEGsLJQAgASAALQAAQQJ0IgBBiNHBAGooAgAgAEH80MEAaigCABCFCAsdACACIAOEUEUEQCAAIAEgAhCHAw8LIAAgARDuAwvKAQECfyMAQRBrIgEkACMAQSBrIgIkAAJAAkAgAARAIAAoAgANASAAQQA2AgAgAkEQaiAAQQhqKQIANwMAIAJBGGogAEEQaigCADYCACACIAApAgA3AwggASACKQIMNwIAIAFBCGogAkEUaikCADcCACAAEGsgAkEgaiQADAILENIJAAsQ0wkACyABQQRqIQACQCABKAIARQRAIAAoAgBFDQEgAUEIaigCABBrDAELIAAQnQYgACgCAARAIAAoAgQQawsLIAFBEGokAAsjACAARQRAQYCewgBBMhDRCQALIAAgAiADIAQgASgCEBEHAAsjACAARQRAQYCewgBBMhDRCQALIAAgAiADIAQgASgCEBEiAAsjACAARQRAQYCewgBBMhDRCQALIAAgAiADIAQgASgCEBFAAAsjACAARQRAQYCewgBBMhDRCQALIAAgAiADIAQgASgCEBEVAAsjACAARQRAQYCewgBBMhDRCQALIAAgAiADIAQgASgCEBFCAAsiACAAIAEoAkAiAUEEdDYCBCAAIAFBgICAgAFJQQZ0NgIACycBAX8gACgCECIBRQRAQbDPwgBBGUHMz8IAEMwGAAsgACgCBCABbgsZAQF/IAEgA0YEfyAAIAIgARDmCUUFIAQLCx8AIAAoAgBBgICAgHhyQYCAgIB4RwRAIAAoAgQQawsLJQEBf0HUzcMAKAIAIgAEQCAAQQFrDwtB1M3DAEGBIDYCAEGAIAslACABIAAtAABBAnQiAEGcg8MAaigCACAAQfiBwwBqKAIAEIUIC7cBAQJ/QaDGwwApAwBQBH8jAEHQDGsiASQAAkAgAARA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gAFqIQIgOkEBaiI6ID1HDQALCyAEQeAAaiQADAQLIARBADYCBCAEQcwAaiAEIARBBGpB1NfCABCMBwALIARBADYCBCAEQcwAaiAEIARBBGpBxNfCABCMBwALIARBADYCBCAEQcwAaiAEIARBBGpBtNfCABCMBwALIARBADYCBCAEQcwAaiAEIARBBGpBpNfCABCMBwALC5gNAjF8CH8CQCMAQeAAayIEJAAgBEEgNgIAIAQgATYCTCABQSBGBEAgBCADNgJMIANBIEYEQCAEIAU2AkwgBUEgRgRAIAQgBzYCTCAHQSBGBEAgAEGAAWohB0GAfyEBA0AgASACaiIDQYgEaiAAIAFqIgVBiAFqKwMAIg8gBUGIA2orAwAiEKEiFyAFQYACaisDACIRIAVBgARqKwMAIhihIhmhOQMAIANBgARqIAVBgAFqKwMAIhIgBUGAA2orAwAiCKEiCiAFQYgCaisDACINIAVBiARqKwMAIgmhIgugOQMAIANBiANqIA8gEKAiDyANIAmgIhChOQMAIANBgANqIBIgCKAiEiARIBigIhGhOQMAIANBiAJqIBcgGaA5AwAgA0GAAmogCiALoTkDACADQYgBaiAPIBCgOQMAIANBgAFqIBIgEaA5AwAgAUEQaiIBDQALIARChICAgBA3AkQgBEEANgI8IAQgADYCQCAEIABBQGsiATYCOCAEQoSAgIAQNwJYIAQgATYCVCAEQQA2AlAgBCAHNgJMIARBBGogBEE4aiAEQcwAahCXAwJAQQQgBCgCMCAEKAIsIgVrIgEgAUEETxsiPUUNACAEKAIMIgdFDQAgBCgCKCIBQQR0IT4gBCgCFCIDQQR0IT8gBCgCICABIAVsQQR0aiE6IAcgAyAFbEEEdGohOyADIAEgASADSxsiQEEARyEDA0AgQARAIAYgOUEHdGoiASsDcCEPIAErA2AhECABKwNQIRcgASsDQCERIAErAzAhGCABKwMgIRkgASsDECESIAFB+ABqKwMAIiOaISQgAUHoAGorAwAiJZohJiABQdgAaisDACInmiEoIAFByABqKwMAIimaISogAUE4aisDACIrmiEsIAFBKGorAwAiLZohLiABQRhqKwMAIi+aITBBACEHIAMhAQNAIAIgB2oiBUHwAGorAwAhCCAFQfgAaisDACEKIBggBUE4aisDACIaICsg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QQR0IRAgCCgCGCABIARsQQR0aiEMIAgoAgQgAyAEbEEEdGohDSADIAEgASADSxsiEUEARyEFIAAhASACIQMDQCARBEAgBiALQQh0aiIEKwPwASEqIAQrA+ABISAgBCsD0AEhKyAEKwPAASEsIAQrA7ABITMgBCsDoAEhISAEKwOQASEtIAQrA4ABITQgBCsDcCE1IAQrA2AhIiAEKwNQITYgBCsDQCE3IAQrAzAhOCAEKwMgIUAgBCsDECFBIARB+AFqKwMAIkuaIUwgBEHoAWorAwAiTZohTiAEQdgBaisDACJPmiFQIARByAFqKwMAIlGaIVIgBEG4AWorAwAiU5ohVCAEQagBaisDACJVmiFWIARBmAFqKwMAIleaIVggBEGIAWorAwAiWZohWiAEQfgAaisDACJbmiFcIARB6ABqKwMAIl2aIV4gBEHYAGorAwAiX5ohYCAEQcgAaisDACJhmiFiIARBOGorAwAiY5ohZCAEQShqKwMAImWaIWYgBEEYaisDACJnmiFoQQAhCiAFIQQDQCAKIA1qIhIrAwAhGCABIApqIglBgAhqKwMAIRkgCUGADGorAwAhGiAJQYAEaisDACEjIAlBgApqKwMAIRYgCUGAAmorAwAhFCAJQYAOaisDACEkIAlBgAZqKwMAISUgCiAMaiITKwMAIRsgCUGACWorAwAhJiAJQYANaisDACEnIAlBgAVqKwMAISggCUGAC2orAwAhFSAJQYADaisDACE5IAlBgA9qKwMAIS4gCUGAB2orAwAhLyADIApqIgdBCGogEkEIaisDACI6IAlBiAhqKwMAIjCgIhwgCUGIBGorAwAiQiAJQYgMaisDACJDoCIdoCIeIAlBiAJqKwMAIjsgCUGICmorAwAiRKAiHyAJQYgGaisDACJFIAlBiA5qKwMAIkagIjGgIhegIikgE0EIaisDACJpIAlBiAlqKwMAImqgIjwgCUGIBWorAwAiayAJQYgNaisDACJsoCI9oCI+IAlBiANqKwMAIm0gCUGIC2orAwAibqAiPyAJQYgHaisDACJvIAlBiA9qKwMAInCgIkegIjKgIkigOQMAIAcgGCAZoCJxICMgGqAicqAiSSAUIBagInMgJSAkoCJ0oCJ1oCJ2IBsgJqAidyAoICegInigIkogOSAVoCJ5IC8gLqAieqAie6AifKA5AwAg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WCAEQYgBaisDACJZmiFaIARB+ABqKwMAIluaIVwgBEHoAGorAwAiXZohXiAEQdgAaisDACJfmiFgIARByABqKwMAImGaIWIgBEE4aisDACJjmiFkIARBKGorAwAiZZohZiAEQRhqKwMAImeaIWhBACEKIAUhBANAIAogDWoiEisDACEcIAEgCmoiCUGAAmorAwAhICAJQYADaisDACEdIAlBgAFqKwMAISEgCUHAAmorAwAhFyAJQUBrKwMAIRQgCUHAA2orAwAhIiAJQcABaisDACEjIAogDGoiEysDACEeIAlBoAJqKwMAISQgCUGgA2orAwAhJSAJQaABaisDACEmIAlB4AJqKwMAIRUgCUHgAGorAwAhLCAJQeADaisDACEnIAlB4AFqKwMAISggAyAKaiIHQQhqIBJBCGorAwAiLSAJQYgCaisDACIpoCIYIAlBiAFqKwMAIjcgCUGIA2orAwAiOKAiGaAiGiAJQcgAaisDACIuIAlByAJqKwMAIjmgIhsgCUHIAWorAwAiOiAJQcgDaisDACI7oCIqoCIWoCIfIBNBCGorAwAiaSAJQagCaisDACJqoCIvIAlBqAFqKwMAImsgCUGoA2orAwAibKAiMKAiMSAJQegAaisDACJtIAlB6AJqKwMAIm6gIjIgCUHoAWorAwAibyAJQegDaisDACJwoCI8oCIroCI9oDkDACAHIBwgIKAicSAhIB2gInKgIj4gFCAXoCJzICMgIqAidKAidaAidiAeICSgIncgJiAloCJ4oCI/ICwgFaAieSAoICegInqgInugInygOQMAIAdByAFqIDYgGiAWoSIaID8ge6EiFqAiPyBRID4gdaEiPiAxICuhIjGhIiuiEOUJOQMAIAdBwAFqIDYgKyA/IFKiEOUJOQMAIAdBiAFqIEMgHyA9oSIfIFkgdiB8oSIrohDlCTkDACAHQYABaiBDICsgHyBaohDlCTkDACAHQcgAaiBHIBogFqEiGiBhID4gMaAiFqIQ5Qk5AwAgB0FAayBHIBYgGiBiohDlCTkDACAHQegBaiA0IBggGaEiGCBzIHShIhmgIhogLyAwoSIWIHkgeqEiH6AiLyB3IHihIjAgMiA8oSIxoSIyoETNO39mnqDmP6IiPKAiKyBNIHEgcqEiPSAbICqhIhuhIiogMiAvoUTNO39mnqDmP6IiL6Ai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KwMAIgwgBUGIDGorAwAiDaAiECAFQYgIaisDACIRIAVBiBBqKwMAIhigIimhIhKhOQMAIANBiApqIBwgFaAiHCAQICmgIhWhOQMAIANBgApqIAggC6AiCCAWICigIhahOQMAIANBiAZqIB4gNaE5AwAgA0GABmogDyASoDkDACADQYgCaiAcIBWgOQMAIANBgAJqIAggFqA5AwAgA0GIEGogGyAUoSIbIBcgCaEiFKAiHCAMIA2hIhUgJiAnoSIeoCIWICQgJaEiJCARIBihIiWhIiagRM07f2aeoOY/oiInoDkDACADQYAQaiA2IAqhIiggHSAjoSIdoSIjICYgFqFEzTt/Zp6g5j+iIhagOQMAIANBiAxqIBsgFKEiGyAVIB6hIhQgJCAloCIVoUTNO39mnqDmP6IiHqE5AwAgA0GADGogKCAdoCIdIBQgFaBEzTt/Zp6g5j+iIhShOQMAIANBiAhqIBwgJ6E5AwAgA0GACGogIyAWoTkDACADQYgEaiAbIB6gOQMAIANBgARqIB0gFKA5AwAgAUEQaiIBDQALIARCiICAgBA3AkQgBEEANgI8IAQgADYCQCAEIABBgAFqIgE2AjggBEKIgICAEDcCWCAEIAE2AlQgBEEANgJQIAQgBzYCTCAEQQRqIARBOGogBEHMAGoQlwNBCCAEKAIwIAQoAiwiBWsiASABQQhPGyJ1BEAgBCgCKCIBQQR0IXYgBCgCFCIDQQR0IXcgBCgCICABIAVsQQR0aiFzIAQoAgwgAyAFbEEEdGohdCADIAEgASADSxsieEEARyEDA0AgeARAIAYgckEIdGoiASsD8AEhGyABKwPgASEUIAErA9ABIRwgASsDwAEhHSABKwOwASEjIAErA6ABIRUgASsDkAEhHiABKwOAASEkIAErA3AhJSABKwNgIRYgASsDUCEmIAErA0AhJyABKwMwISggASsDICE1IAErAxAhNiABQfgBaisDACJFmiFGIAFB6AFqKwMAIkeaIUggAUHYAWorAwAiSZohSiABQcgBaisDACJLmiFMIAFBuAFqKwMAIk2aIU4gAUGoAWorAwAiT5ohUCABQZgBaisDACJRmiFSIAFBiAFqKwMAIlOaIVQgAUH4AGorAwAiVZohViABQegAaisDACJXmiFYIAFB2ABqKwMAIlmaIVogAUHIAGorAwAiW5oh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A0GIAmogJyAooDkDACADQYACaiApICqgOQMAIAFBEGoiAQ0ACyAEQoKAgIAQNwJEIARBADYCPCAEIAA2AkAgBCAAQSBqIgE2AjggBEKCgICAEDcCWCAEIAE2AlQgBEEANgJQIAQgAEFAazYCTCAEQQRqIARBOGogBEHMAGoQlwNBAiAEKAIwIAQoAiwiBWsiASABQQJPGyJ1BEAgBCgCKCIBQQR0IXYgBCgCFCIDQQR0IXcgBCgCICABIAVsQQR0aiFzIAQoAgwgAyAFbEEEdGohdCADIAEgASADSxsieEEARyEDA0AgeARAIAYgckEIdGoiASsD8AEhJyABKwPgASEoIAErA9ABISkgASsDwAEhKiABKwOwASE6IAErA6ABITsgASsDkAEhPCABKwOAASE9IAErA3AhPiABKwNgIT8gASsDUCFAIAErA0AhQSABKwMwIUIgASsDICFDIAErAxAhRCABQfgBaisDACJFmiFGIAFB6AFqKwMAIkeaIUggAUHYAWorAwAiSZohSiABQcgBaisDACJLmiFMIAFBuAFqKwMAIk2aIU4gAUGoAWorAwAiT5ohUCABQZgBaisDACJRmiFSIAFBiAFqKwMAIlOaIVQgAUH4AGorAwAiVZohViABQegAaisDACJXmiFYIAFB2ABqKwMAIlmaIVogAUHIAGorAwAiW5ohXCABQThqKwMAIl2aIV4gAUEoaisDACJfmiFgIAFBGGorAwAiYZohYkEAIQcgAyEBA0AgAiAHaiIFQfABaisDACEKIAVB+AFqKwMAIQggPiAFQfgAaisDACIcIFUgBUHwAGorAwAiIqIQ5QkhFiAnIAggRSAKohDlCSEJIAVBsAFqKwMAIQsgBUG4AWorAwAhECBCIAVBOGorAwAiIyBdIAVBMGorAwAiMaIQ5QkhDSA6IBAgTSALohDlCSEOIAVB0AFqKwMAIREgBUHYAWorAwAhEiBAIAVB2ABqKwMAIiQgWSAFQdAAaisDACIlohDlCSEXICkgEiBJIBGiEOUJISsgBUGQAWorAwAhEyAFQZgBaisDACEPIEQgBUEYaisDACIyIGEgBUEQaisDACImohDlCSEdIDwgDyBRIBOiEOUJIRggBUHgAWorAwAhFCAFQegBaisDACEMID8gBUHoAGorAwAiMyBXIAVB4ABqKwMAIjSiEOUJIR4g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IAVB6ANqIBggHqAiCCAPIBWgIhVERo0yz2uQ7T8gESALoCILRGSprqbifdi/ohDlCSIKoDkDACAFQeADaiAdIA6gIgkgC0RGjTLPa5DtPyAVRGSprqbifdg/ohDlCSILoDkDACAFQegBaiAIIAqhOQMAIAVB4AFqIAkgC6E5AwAgB0EQaiEHIAFBAWsiAQ0ACwsgAEEQaiEAIHMgdmohcyB0IHdqIXQgAkGAAmohAiByQQFqInIgdUcNAAsLIARB4ABqJAAMBAsgBEEANgIEIARBzABqIAQgBEEEakGs2sIAEIwHAAsgBEEANgIEIARBzABqIAQgBEEEakGc2sIAEIwHAAsgBEEANgIEIARBzABqIAQgBEEEakGM2sIAEIwHAAsgBEEANgIEIARBzABqIAQgBEEEakH82cIAEIwHAAsLuCMCanwIfwJAIwBB4ABrIgQkACAEQYACNgIAIAQgATYCTCABQYACRgRAIAQgAzYCTCADQYACRgRAIAQgBTYCTCAFQYACRgRAIAQgBzYCTCAHQYACRgRAIABBgAJqIQcgAEGABGohckGAfiEBA0AgACABaiIDQYASaisDACEbIANBgAJqKwMAIRwgA0GAGmorAwAhHSADQYAKaisDACEsIANBgBZqKwMAIR4gA0GABmorAwAhHyADQYAeaisDACEgIANBgA5qKwMAISEgA0GIFGorAwAhIiADQYgEaisDACEVIANBiBxqKwMAIS0gA0GIDGorAwAhIyADQYgYaisDACEWIANBiAhqKwMAIS4gA0GIIGorAwAhJCADQYgQaisDACEKIAEgAmoiBUGIGmogA0GIAmorAwAiCCADQYgSaisDACIToCIJIANBiApqKwMAIgwgA0GIGmorAwAiF6AiC6AiDiADQYgGaisDACIYIANBiBZqKwMAIhGgIg8gA0GIDmorAwAiMCADQYgeaisDACIZoCINoCIQoSIUIANBgARqKwMAIiUgA0GAFGorAwAiEqAiKCADQYAMaisDACIpIANBgBxqKwMAIiagIiegIhogA0GACGorAwAiMSADQYAYaisDACIvoCIqIANBgBBqKwMAIjQgA0GAIGorAwAiNaAiMqAiK6EiNqE5AwAgBUGAGmogHCAboCIzICwgHaAiPaAiNyAfIB6gIj4gISAgoCI/oCJAoSJBIBUgIqAiQiAjIC2g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QQA2AgQgCEHMAGogCCAIQQRqQazawgAQjAcACyAIQQA2AgQgCEHMAGogCCAIQQRqQZzawgAQjAcACyAIQQA2AgQgCEHMAGogCCAIQQRqQYzawgAQjAcACyAIQQA2AgQgCEHMAGogCCAIQQRqQfzZwgAQjAcACwu4IwJqfAh/AkAjAEHgAGsiBCQAIARBgAI2AgAgBCABNgJMIAFBgAJGBEAgBCADNgJMIANBgAJGBEAgBCAFNgJMIAVBgAJGBEAgBCAHNgJMIAdBgAJGBEAgAEGAAmohByAAQYAEaiFyQYB+IQEDQCAAIAFqIgNBgBJqKwMAIRwgA0GAAmorAwAhHSADQYAaaisDACEeIANBgApqKwMAISsgA0GAFmorAwAhHyADQYAGaisDACEgIANBgB5qKwMAISEgA0GADmorAwAhIiADQYgUaisDACEjIANBiARqKwMAIRUgA0GIHGorAwAhLCADQYgMaisDACEkIANBiBhqKwMAIRYgA0GICGorAwAhLSADQYggaisDACElIANBiBBqKwMAIQogASACaiIFQYgaaiADQYgCaisDACIIIANBiBJqKwMAIhOgIgkgA0GICmorAwAiDSADQYgaaisDACIXoCILoCIMIANBiAZqKwMAIhggA0GIFmorAwAiEaAiDyADQYgOaisDACIwIANBiB5qKwMAIhmgIg6gIhChIhQgA0GABGorAwAiJiADQYAUaisDACISoCInIANBgAxqKwMAIiggA0GAHGorAwAiLqAiGqAiGyADQYAIaisDACIxIANBgBhqKwMAIi+gIikgA0GAEGorAwAiNCADQYAgaisDACI1oCIyoCIqoSI2oDkDACAFQYAaaiAdIBygIjMgKyAeoCI9oCI3ICAgH6AiPiAiICGgIj+gIkChIkEgFSAjoCJCICQgLKAiQ6AiRCAtIBagIkUgCiAloCJGoCJHoSJIoTkDACAFQYgSaiAMIBCgIgwgRCBHoCIQoTkDACAFQYASaiA3IECgIjcgGyAqoCIboTkDACAFQYgKaiAUIDahOQMAIAVBgApqIEEgSKA5AwAgBUGIAmogDCAQoDkDACAFQYACaiA3IBugOQMAIAVBiB5qIAkgC6EiCSA+ID+hIgugIgwgQiBDoSIQICkgMqEiFKAiGyAnIBqhIicgRSBGoSIaoSIpoETNO39mnqDmP6IiMqA5AwAgBUGAHmogMyA9oSIqIA8gDqEiD6EiDiApIBuhRM07f2aeoOY/oiIboDkDACAFQYgWaiAJIAuhIgkgECAUoSILICcgGqAiEKFEzTt/Zp6g5j+iIhShOQMAIAVBgBZqICogD6AiDyALIBCgRM07f2aeoOY/oiILoTkDACAFQYgOaiAMIDKhOQMAIAVBgA5qIA4gG6E5AwAgBUGIBmogCSAUoDkDACAFQYAGaiAPIAugOQMAIAVBiCBqIAggE6EiCCArIB6hIh6gIisgGCARoSITICIgIaEiIaAiIiAgIB+hIh8gMCAZoSIgoSIJoETNO39mnqDmP6IiC6AiDCAVICOhIiMgKCAuoSIVoCIYIC0gFqEiFiA0IDWhIi2gIhEgMSAvoSIPIAogJaEiJaEiCqBEzTt/Zp6g5j+iIjCgIhlERo0yz2uQ7T8gJiASoSIOICQgLKEiLKEiJCAKIBGhRM07f2aeoOY/oiIKoCIRRGSprqbifdg/ohDlCSIQoDkDACAFQYAgaiAdIByhIhwgDSAXoSIdoSINIAkgIqFEzTt/Zp6g5j+iIiKgIgkgEURGjTLPa5DtPyAZRGSprqbifdi/ohDlCSIXoDkDACAFQYgcaiAIIB6hIh4gEyAhoSIhIB8gIKAiH6FEzTt/Zp6g5j+iIiChIgggIyAVoSIjIBYgLaEiFSAPICWgIhahRM07f2aeoOY/oiItoSIlRGSprqbifdg/IA4gLKAiLCAVIBagRM07f2aeoOY/oiIVoSIWREaNMs9rkO0/ohDlCSIToDkDACAFQYAcaiAcIB2gIhwgISAfoETNO39mnqDmP6IiHaEiHyAWRGSprqbifdg/ICVERo0yz2uQ7b+iEOUJIiGgOQMAIAVBiBhqICsgC6EiKyAYIDChIhZEZKmupuJ92D8gJCAKoSIkREaNMs9rkO2/ohDlCSIloTkDACAFQYAYaiANICKhIiIgJERkqa6m4n3YPyAWREaNMs9rkO0/ohDlCSIkoTkDACAFQYgUaiAeICCgIh4gIyAtoCIgREaNMs9rkO0/ICwgFaAiI0Rkqa6m4n3Yv6IQ5QkiFaE5AwAgBUGAFGogHCAdoCIcICNERo0yz2uQ7T8gIERkqa6m4n3YP6IQ5QkiHaE5AwAgBUGIEGogDCAQoTkDACAFQYAQaiAJIBehOQMAIAVBiAxqIAggE6E5AwAgBUGADGogHyAhoTkDACAFQYgIaiArICWgOQMAIAVBgAhqICIgJKA5AwAgBUGIBGogHiAVoDkDACAFQYAEaiAcIB2gOQMAIAFBEGoiAQ0ACyAEQpCAgIAQNwJEIAQgADYCQCAEQQA2AjwgBCAHNgI4IARCkICAgBA3AlggBCAHNgJUIARBADYCUCAEIHI2AkwgBEEEaiAEQThqIARBzABqEJcDQRAgBCgCMCAEKAIsIgVrIgEgAUEQTxsidQRAIAQoAigiAUEEdCF2IAQoAhQiA0EEdCF3IAQoAiAgASAFbEEEdGohciAEKAIMIAMgBWxBBHRqIXQgAyABIAEgA0sbInhBAEchAwNAIHgEQCAGIHNBCHRqIgErA/ABIRwgASsD4AEhHSABKwPQASEeIAErA8ABISsgASsDsAEhHyABKwOgASEgIAErA5ABISEgASsDgAEhIiABKwNwISMgASsDYCEVIAErA1AhLCABKwNAISQgASsDMCEWIAErAyAhLSABKwMQISUgAUH4AWorAwAiPZohNyABQegBaisDACI+miE/IAFB2AFqKwMAIkCaIUEgAUHIAWorAwAiQpohQyABQbgBaisDACJEmiFFIAFBqAFqKwMAIkaaIUcgAUGYAWorAwAiSJohUiABQYgBaisDACJTmiFUIAFB+ABqKwMAIlWaIVYgAUHoAGorAwAiV5ohWCABQdgAaisDACJZmiFaIAFByABqKwMAIluaIVwgAUE4aisDACJdmiFeIAFBKGorAwAiX5ohYCABQRhqKwMAImGaIWJBACEHIAMhAQNAIAIgB2oiBUHwAWorAwAhCiAFQfgBaisDACEIICMgBUH4AGorAwAiMyBVIAVB8ABqKwMAIjiiEOUJIRMgHCAIID0gCqIQ5QkhCSAFQbABaisDACENIAVBuAFqKwMAIRcgFiAFQThqKwMAIjkgXSAFQTBqKwMAIkmiEOUJIQsgHyAXIEQgDaIQ5QkhDCAFQdABaisDACEYIAVB2AFqKwMAIREgLCAFQdgAaisDACI6IFkgBUHQAGorAwAiO6IQ5QkhDyAeIBEgQCAYohDlCSEwIAVBkAFqKwMAIRkgBUGYAWorAwAhDiAlIAVBGGorAwAiSiBhIAVBEGorAwAiPKIQ5QkhECAhIA4gSCAZohDlCSEUIAVB4AFqKwMAISYgBUHoAWorAwAhEiAVIAVB6ABqKwMAIksgVyAFQeAAaisDACJMohDlCSEnIB0gEiA+ICaiEOUJISggBUGgAWorAwAhLiAFQagBaisDACEaIC0gBUEoaisDACJNIF8gBUEgaisDACJOohDlCSEbICAgGiBGIC6iEOUJITEgBUHAAWorAwAhLyAFQcgBaisDACEpICQgBUHIAGorAwAiTyBbIAVBQGsrAwAiUKIQ5QkhNCArICkgQiAvohDlCSE1IAVBCGorAwAhMiAiIAVBiAFqKwMAIlEgUyAFQYABaisDACJjohDlCSEqIAUrAwAhNiAHIHRqIgVBCGogMiAqoCJkIDQgNaAiZaAiZiAbIDGgImcgJyAooCJooCJpoCJqIBAgFKAiayAPIDCgImygIm0gCyAMoCJuIBMgCaAib6AicKAicaA5AwAgIyA4IDMgVqIQ5QkhMyAcIAogCCA3ohDlCSEKIBYgSSA5IF6iEOUJIQggHyANIBcgRaIQ5QkhDSAsIDsgOiBaohDlCSEXIB4gGCARIEGiEOUJIRggJSA8IEogYqIQ5QkhESAhIBkgDiBSohDlCSEZIBUgTCBLIFiiEOUJIQ4gHSAmIBIgP6IQ5QkhJiAtIE4gTSBgohDlCSESICAgLiAaIEeiEOUJIS4gJCBQIE8gXKIQ5QkhGiArIC8gKSBDohDlCSEvIAUgNiAiIGMgUSBUohDlCSIpoCI4IBogL6AiOaAiSSASIC6gIjogDiAmoCI7oCJKoCI8IBEgGaAiSyAXIBigIkygIk0gCCANoCJOIDMgCqAiT6AiUKAiUaA5AwAgACAHaiIFQYgQaiBqIHGhOQMAIAVBgBBqIDwgUaE5AwAgByByaiJ5QQhqIDIgKqEiMiAaIC+hIhqhIi8gGyAxoSIbIA4gJqEiDqEiJiASIC6hIhIgJyAooSInoCIooUTNO39mnqDmP6IiLqAiMSAQIBShIhAgFyAYoSIXoSIYIAsgDKEiCyAzIAqhIgqhIgwgCCANoSIIIBMgCaEiE6AiCaFEzTt/Zp6g5j+iIg2gIhRERo0yz2uQ7T8gESAZoSIRIA8gMKEiD6AiMCAMIAmgRM07f2aeoOY/oiIJoCIMRGSprqbifdi/ohDlCSIZoDkDACB5IDYgKaEiKSA0IDWhIjSgIjUgJiAooETNO39mnqDmP6IiJqAiKCAMREaNMs9rkO0/IBREZKmupuJ92D+iEOUJIgygOQMAIAVBiBJqIDEgGaE5AwAgBUGAEmogKCAMoTkDACAFQYgUaiBkIGWhIgwgOiA7oSIZoSIUIGsgbKEiKCBOIE+hIjGhIiogSyBMoSI2IG4gb6EiM6AiOqFEzTt/Zp6g5j+iIjuhOQMAIAVBgBRqIDggOaEiOCBnIGihIjmgIjwgKiA6oETNO39mnqDmP6IiKqE5AwAgBUGIBGogFCA7oDkDACAFQYAEaiA8ICqgOQMAIAVBiBZqIDIgGqAiFCAbIA6gIg4gEiAnoSISoETNO39mnqDmP6IiJ6EiGiAQIBegIhcgCyAKoCIKIAggE6EiCKBEzTt/Zp6g5j+iIhOhIgtEZKmupuJ92D8gESAPoSIRIAggCqFEzTt/Zp6g5j+iIgqhIghERo0yz2uQ7b+iEOUJIg+hOQMAIAVBgBZqICkgNKEiECASIA6hRM07f2aeoOY/oiIOoSISIAhEZKmupuJ92D8gC0RGjTLPa5DtP6IQ5QkiCKE5AwAgBUGIBmogGiAPoDkDACAFQYAGaiASIAigOQMAIAVBiBhqIGYgaaEiCCBNIFChIgugOQMAIAVBgBhqIEkgSqEiDyBtIHChIhKhOQMAIAVBiAhqIAggC6E5AwAgBUGACGogDyASoDkDACAFQYgaaiAvIC6hIgggGCANoSINRGSprqbifdg/IDAgCaEiCURGjTLPa5DtP6IQ5QkiC6A5AwAgBUGAGmogNSAmoSIYIAlEZKmupuJ92D8gDURGjTLPa5Dtv6IQ5QkiCaA5AwAgBUGICmogCCALoTkDACAFQYAKaiAYIAmhOQMAIAVBiBxqIAwgGaAiCCAoIDGgIgkgNiAzoSINoETNO39mnqDmP6IiC6A5AwAgBUGAHGogOCA5oSIMIA0gCaFEzTt/Zp6g5j+iIgmgOQMAIAVBiAxqIAggC6E5AwAgBUGADGogDCAJoTkDACAFQYgeaiAUICegIgggFyAToCITREaNMs9rkO0/IBEgCqAiCkRkqa6m4n3YP6IQ5QkiCaA5AwAgBUGAHmogECAOoCINIApERo0yz2uQ7T8gE0Rkqa6m4n3Yv6IQ5QkiCqA5AwAgBUGIDmogCCAJoTkDACAFQYAOaiANIAqhOQMAIAdBEGohByABQQFrIgENAAsLIABBEGohACByIHZqIXIgdCB3aiF0IAJBgAJqIQIgc0EBaiJzIHVHDQALCyAEQeAAaiQADAQLIARBADYCBCAEQcwAaiAEIARBBGpBrNrCABCMBwALIARBADYCBCAEQcwAaiAEIARBBGpBnNrCABCMBwALIARBADYCBCAEQcwAaiAEIARBBGpBjNrCABCMBwALIARBADYCBCAEQcwAaiAEIARBBGpB/NnCABCMBwALC54bAmp8CH8CQCMAQeAAayIEJAAgBEGAATYCACAEIAE2AkwgAUGAAUYEQCAEIAM2AkwgA0GAAUYEQCAEIAU2AkwgBUGAAUYEQCAEIAc2AkwgB0GAAUYEQCAAQYACaiEHQYB+IQEDQCABIAJqIgNBiA5qIAAgAWoiBUGIAmorAwAiGyAFQYgKaisDACIToCIcIAVBiAZqKwMAIh0gBUGIDmorAwAiI6AiFKEiHiAFQYAEaisDACIkIAVBgAxqKwMAIiWgIhUgBUGACGorAwAiJiAFQYAQaisDACInoCIooSI1oTkDACADQYAOaiAFQYACaisDACI2IAVBgApqKwMAIgugIgggBUGABmorAwAiFiAFQYAOaisDACIKoCIJoSIOIAVBiARqKwMAIgwgBUGIDGorAwAiF6AiDyAFQYgIaisDACIQIAVBiBBqKwMAIhigIimhIhGgOQMAIANBiApqIBwgFKAiHCAPICmgIhShOQMAIANBgApqIAggCaAiCCAVICigIhWhOQMAIANBiAZqIB4gNaA5AwAgA0GABmogDiARoTkDACADQYgCaiAcIBSgOQMAIANBgAJqIAggFaA5AwAgA0GIEGogGyAToSIbIBYgCqEiE6EiHCAMIBehIhQgJiAnoSIeoSIVICQgJaEiJCAQIBihIiWgIiahRM07f2aeoOY/oiInoDkDACADQYAQaiA2IAuhIiggHSAjoSIdoCIjICYgFaBEzTt/Zp6g5j+iIhWgOQMAIANBiAxqIBsgE6AiGyAkICWhIhMgFCAeoCIUoETNO39mnqDmP6IiHqE5AwAgA0GADGogKCAdoSIdIBMgFKFEzTt/Zp6g5j+iIhOhOQMAIANBiAhqIBwgJ6E5AwAgA0GACGogIyAVoTkDACADQYgEaiAbIB6gOQMAIANBgARqIB0gE6A5AwAgAUEQaiIBDQALIARCiICAgBA3AkQgBEEANgI8IAQgADYCQCAEIABBgAFqIgE2AjggBEKIgICAEDcCWCAEIAE2AlQgBEEANgJQIAQgBzYCTCAEQQRqIARBOGogBEHMAGoQlwNBCCAEKAIwIAQoAiwiBWsiASABQQhPGyJ1BEAgBCgCKCIBQQR0IXYgBCgCFCIDQQR0IXcgBCgCICABIAVsQQR0aiFzIAQoAgwgAyAFbEEEdGohdCADIAEgASADSxsieEEARyEDA0AgeARAIAYgckEIdGoiASsD8AEhGyABKwPgASETIAErA9ABIRwgASsDwAEhHSABKwOwASEjIAErA6ABIRQgASsDkAEhHiABKwOAASEkIAErA3AhJSABKwNgIRUgASsDUCEmIAErA0AhJyABKwMwISggASsDICE1IAErAxAhNiABQfgBaisDACJFmiFGIAFB6AFqKwMAIkeaIUggAUHYAWorAwAiSZohSiABQcgBaisDACJLmiFMIAFBuAFqKwMAIk2aIU4gAUGoAWorAwAiT5ohUCABQZgBaisDACJRmiFSIAFBiAFqKwMAIlOaIVQgAUH4AGorAwAiVZohViABQegAaisDACJXmiFYIAFB2ABqKwMAIlmaIVogAUHIAGorAwAiW5ohXCABQThqKwMAIl2aIV4gAUEoaisDACJfmiFgIAFBGGorAwAiYZohYkEAIQcgAyEBA0AgAiAHaiIFQfABaisDACELIAVB+AFqKwMAIQggJSAFQfgAaisDACIqIFUgBUHwAGorAwAiMKIQ5QkhFiAbIAggRSALohDlCSEKIAVBsAFqKwMAIQkgBUG4AWorAwAhDiAoIAVBOGorAwAiMSBdIAVBMGorAwAiPKIQ5QkhDCAjIA4gTSAJohDlCSEXIAVB0AFqKwMAIQ8gBUHYAWorAwAhECAmIAVB2ABqKwMAIjIgWSAFQdAAaisDACIzohDlCSEYIBwgECBJIA+iEOUJISkgBUGQAWorAwAhESAFQZgBaisDACESIDYgBUEYaisDACI9IGEgBUEQaisDACI0ohDlCSErIB4gEiBRIBGiEOUJIR8gBUHgAWorAwAhGSAFQegBaisDACENIBUgBUHoAGorAwAiPiBXIAVB4ABqKwMAIj+iEOUJISwgEyANIEcgGaIQ5QkhICAFQaABaisDACEaIAVBqAFqKwMAISEgNSAFQShqKwMAIkAgXyAFQSBqKwMAIkGiEOUJITcgFCAhIE8gGqIQ5QkhLSAFQcABaisDACEiIAVByAFqKwMAIS4gJyAFQcgAaisDACJCIFsgBUFAaysDACJDohDlCSE4IB0gLiBLICKiEOUJITkgBUEIaisDACE6ICQgBUGIAWorAwAiRCBTIAVBgAFqKwMAImOiEOUJIS8gBSsDACE7IAcgdGoiBUEIaiA6IC+gImQgOCA5oCJloCJmIDcgLaAiZyAsICCgImigImmgImogKyAfoCJrIBggKaAibKAibSAMIBegIm4gFiAKoCJvoCJwoCJxoDkDACAlIDAgKiBWohDlCSEqIBsgCyAIIEaiEOUJIQsgKCA8IDEgXqIQ5QkhCCAjIAkgDiBOohDlCSEJICYgMyAyIFqiEOUJIQ4gHCAPIBAgSqIQ5QkhDyA2IDQgPSBiohDlCSEQIB4gESASIFKiEOUJIREgFSA/ID4gWKIQ5QkhEiATIBkgDSBIohDlCSEZIDUgQSBAIGCiEOUJIQ0gFCAaICEgUKIQ5QkhGiAnIEMgQiBcohDlCSEhIB0gIiAuIEyiEOUJISIgBSA7ICQgYyBEIFSiEOUJIi6gIjAgISAioCIxoCI8IA0gGqAiMiASIBmgIjOgIj2gIjQgECARoCI+IA4gD6AiP6AiQCAIIAmgIkEgKiALoCJCoCJDoCJEoDkDACAAIAdqIgVBiAhqIGogcaE5AwAgBUGACGogNCBEoTkDACAHIHNqInlBCGogOiAvoSI6ICEgIqEiIaAiIiANIBqhIg0gLCAgoSIsoSIgIDcgLaEiGiASIBmhIhKgIhmgRM07f2aeoOY/oiI3oCItICsgH6EiKyAOIA+hIg6gIg8gCCAJoSIIIBYgCqEiFqEiCiAMIBehIgkgKiALoSILoCIMoETNO39mnqDmP6IiF6AiH0RGjTLPa5DtPyAQIBGhIhAgGCApoSIYoSIpIAogDKFEzTt/Zp6g5j+iIgqgIgxEZKmupuJ92D+iEOUJIhGgOQMAIHkgOyAuoSIuIDggOaEiOKEiOSAgIBmhRM07f2aeoOY/oiIZoCIgIAxERo0yz2uQ7T8gH0Rkqa6m4n3Yv6IQ5QkiDKA5AwAgBUGICWogLSARoTkDACAFQYAJaiAgIAyhOQMAIAVBiApqIGQgZaEiDCAyIDOhIhGgIh8gPiA/oSIgIG4gb6EiLaEiLyBrIGyhIjsgQSBCoSIqoCIyoETNO39mnqDmP6IiM6E5AwAgBUGACmogMCAxoSIwIGcgaKEiMaEiNCAvIDKhRM07f2aeoOY/oiIvoTkDACAFQYgCaiAfIDOgOQMAIAVBgAJqIDQgL6A5AwAgBUGIC2ogOiAhoSIfIBogEqEiEiANICygIg2hRM07f2aeoOY/oiIsoSIaICsgDqEiDiAJIAuhIgsgCCAWoCIIoUTNO39mnqDmP6IiFqEiCURkqa6m4n3YPyAQIBigIhAgCCALoETNO39mnqDmP6IiC6EiCERGjTLPa5DtP6IQ5QkiGKE5AwAgBUGAC2ogLiA4oCIrIA0gEqBEzTt/Zp6g5j+iIhKhIg0gCERkqa6m4n3YPyAJREaNMs9rkO2/ohDlCSIIoTkDACAFQYgDaiAaIBigOQMAIAVBgANqIA0gCKA5AwAgBUGIDGogZiBpoSIIIEAgQ6EiCaE5AwAgBUGADGogPCA9oSIYIG0gcKEiDaA5AwAgBUGIBGogCCAJoDkDACAFQYAEaiAYIA2hOQMAIAVBiA1qICIgN6EiCCAPIBehIglEZKmupuJ92D8gKSAKoSIKREaNMs9rkO2/ohDlCSIXoDkDACAFQYANaiA5IBmhIg8gCkRkqa6m4n3YPyAJREaNMs9rkO0/ohDlCSIKoDkDACAFQYgFaiAIIBehOQMAIAVBgAVqIA8gCqE5AwAgBUGIDmogDCARoSIIIDsgKqEiCiAgIC2gIgmhRM07f2aeoOY/oiIMoDkDACAFQYAOaiAwIDGgIhcgCSAKoETNO39mnqDmP6IiCqA5AwAgBUGIBmogCCAMoTkDACAFQYAGaiAXIAqhOQMAIAVBiA9qIB8gLKAiCCAOIBagIhZERo0yz2uQ7T8gECALoCILRGSprqbifdi/ohDlCSIKoDkDACAFQYAPaiArIBKgIgkgC0RGjTLPa5DtPyAWRGSprqbifdg/ohDlCSILoDkDACAFQYgHaiAIIAqhOQMAIAVBgAdqIAkgC6E5AwAgB0EQaiEHIAFBAWsiAQ0ACwsgAEEQaiEAIHMgdmohcyB0IHdqIXQgAkGAAmohAiByQQFqInIgdUcNAAsLIARB4ABqJAAMBAsgBEEANgIEIARBzABqIAQgBEEEakGs2sIAEIwHAAsgBEEANgIEIARBzABqIAQgBEEEakGc2sIAEIwHAAsgBEEANgIEIARBzABqIAQgBEEEakGM2sIAEIwHAAsgBEEANgIEIARBzABqIAQgBEEEakH82cIAEIwHAAsLrC0CCX9qfAJAIwBB4ABrIggkACAIQYAINgIAIAggATYCTCABQYAIRgRAIAggAzYCTCADQYAIRgRAIAggBTYCTCAFQYAIRgRAIAggBzYCTCAHQYAIRgRAA0AgACAJaiIBQYjgAGoiAysDACEwIAMgAUEIaiIDKwMAIjEgAUGIwABqIgQrAwAiMqEiOiABQYAgaiIFKwMAIjMgAUGA4ABqIgcrAwAiO6EiPKA5AwAgByABKwMAIj0gAUGAQGsiBysDACI+oSI/IAFBiCBqIgorAwAiQCAwoSJBoTkDACAEIDEgMqAiMSBAIDCgIjChOQMAIAcgPSA+oCIyIDMgO6AiM6E5AwAgCiA6IDyhOQMAIAUgPyBBoDkDACADIDEgMKA5AwAgASAyIDOgOQMAIAlBEGoiCUGAIEcNAAsgCELAgICAgAI3AkRBACEFIAhBADYCPCAIIAI2AkAgCCACQYAIaiIBNgI4IAhCwICAgIACNwJYIAggATYCVCAIQQA2AlAgCCACQYAQajYCTCAIQQRqIAhBOGogCEHMAGoQlwNBBCAIKAIwIAgoAiwiBGsiASABQQRPGyILBEBBECAIKAIUIgEgCCgCKCIDIAEgA0kbIgcgB0EQTxsiDEEEdCENIANBBHQhDiABQQR0IQ8gCCgCICADIARsQQR0aiEHIAgoAgwgASAEbEEEdGohCiACIQEgACEDA0AgDARAIAYgBUEMdGoiBCsD8AEhMCAEKwPgASExIAQrA9ABITIgBCsDwAEhOiAEKwOwASEzIAQrA6ABITsgBCsDkAEhPCAEKwOAASE9IAQrA3AhPiAEKwNgIT8gBCsDUCFAIAQrA0AhQSAEKwMwIUsgBCsDICFMIAQrAxAhTSAEQfgBaisDACJOmiFPIARB6AFqKwMAIlCaIVEgBEHYAWorAwAiUpohUyAEQcgBaisDACJUmiFVIARBuAFqKwMAIlaaIVcgBEGoAWorAwAiWJohWSAEQZgBaisDACJamiFbIARBiAFqKwMAIlyaIV0gBEH4AGorAwAiXpohXyAEQegAaisDACJgmiFhIARB2ABqKwMAImKaIWMgBEHIAGorAwAiZJohZSAEQThqKwMAImaaIWcgBEEoaisDACJomiFpIARBGGorAwAiapoha0EAIQkDQCADIAlqIgRBgB5qKwMAIRMgBEGIHmorAwAhESA+IARBiA5qKwMAIiUgXiAEQYAOaisDACIrohDlCSEfIDAgESBOIBOiEOUJIRIgBEGAFmorAwAhFCAEQYgWaisDACEZIEsgBEGIBmorAwAiLCBmIARBgAZqKwMAIkKiEOUJIRYgMyAZIFYgFKIQ5QkhFyAEQYAaaisDACEaIARBiBpqKwMAIRsgQCAEQYgKaisDACItIGIgBEGACmorAwAiLqIQ5QkhICAyIBsgUiAaohDlCSE0IARBgBJqKwMAIRwgBEGIEmorAwAhGCBNIARBiAJqKwMAIkMgaiAEQYACaisDACIvohDlCSEmIDwgGCBaIByiEOUJISEgBEGAHGorAwAhHSAEQYgcaisDACEVID8gBEGIDGorAwAiRCBgIARBgAxqKwMAIkWiEOUJIScgMSAVIFAgHaIQ5QkhIiAEQYAUaisDACEjIARBiBRqKwMAIR4gTCAEQYgEaisDACJGIGggBEGABGorAwAiR6IQ5QkhNSA7IB4gWCAjohDlCSEoIARBgBhqKwMAISQgBEGIGGorAwAhKSBBIARBiAhqKwMAIkggZCAEQYAIaisDACJJohDlCSE2IDogKSBUICSiEOUJITcgBEEIaisDACE4ID0gBEGIEGorAwAiSiBcIARBgBBqKwMAImyiEOUJISogBCsDACE5IAkgCmoiBEEIaiA4ICqgIm0gNiA3oCJuoCJvIDUgKKAicCAnICKgInGgInKgInMgJiAhoCJ0ICAgNKAidaAidiAWIBegIncgHyASoCJ4oCJ5oCJ6oDkDACA+ICsgJSBfohDlCSElIDAgEyARIE+iEOUJIRMgSyBCICwgZ6IQ5QkhESAzIBQgGSBXohDlCSEUIEAgLiAtIGOiEOUJIRkgMiAaIBsgU6IQ5QkhGiBNIC8gQyBrohDlCSEbIDwgHCAYIFuiEOUJIRwgPyBFIEQgYaIQ5QkhGCAxIB0gFSBRohDlCSEdIEwgRyBGIGmiEOUJIRUgOyAjIB4gWaIQ5QkhIyBBIEkgSCBlohDlCSEeIDogJCApIFWiEOUJISQgBCA5ID0gbCBKIF2iEOUJIimgIisgHiAkoCIsoCJCIBUgI6AiLSAYIB2gIi6gIkOgIi8gGyAcoCJEIBkgGqAiRaAiRiARIBSgIkcgJSAToCJIoCJJoCJKoDkDACABIAlqIgRBiMAAaiBzIHqhOQMAIARBgEBrIC8gSqE5AwAgByAJaiIQQQhqIDggKqEiOCAeICShIh6hIiQgNSAooSI1IBggHaEiGKEiHSAVICOhIhUgJyAioSInoCIioUTNO39mnqDmP6IiI6AiKCAmICGhIiYgGSAaoSIZoSIaIBYgF6EiFiAlIBOhIhOhIhcgESAUoSIRIB8gEqEiH6AiEqFEzTt/Zp6g5j+iIhSgIiFERo0yz2uQ7T8gGyAcoSIbICAgNKEiIKAiNCAXIBKgRM07f2aeoOY/oiISoCIXRGSprqbifdi/ohDlCSIcoDkDACAQIDkgKaEiKSA2IDehIjagIjcgHSAioETNO39mnqDmP6IiHaAiIiAXREaNMs9rkO0/ICFEZKmupuJ92D+iEOUJIhegOQMAIARBiMgAaiAoIByhOQMAIARBgMgAaiAiIBehOQMAIARBiNAAaiBtIG6hIhcgLSAuoSIcoSIhIHQgdaEiIiBHIEihIiihIiogRCBFoSI5IHcgeKEiJaAiLaFEzTt/Zp6g5j+iIi6hOQMAIARBgNAAaiArICyhIisgcCBxoSIsoCIvICogLaBEzTt/Zp6g5j+iIiqhOQMAIARBiBBqICEgLqA5AwAgBEGAEGogLyAqoDkDACAEQYjYAGogOCAeoCIhIDUgGKAiGCAVICehIhWgRM07f2aeoOY/oiInoSIeICYgGaAiGSAWIBOgIhMgESAfoSIRoETNO39mnqDmP6IiH6EiFkRkqa6m4n3YPyAbICChIhsgESAToUTNO39mnqDmP6IiE6EiEURGjTLPa5Dtv6IQ5QkiIKE5AwAgBEGA2ABqICkgNqEiJiAVIBihRM07f2aeoOY/oiIYoSIVIBFEZKmupuJ92D8gFkRGjTLPa5DtP6IQ5QkiEaE5AwAgBEGIGGogHiAgoDkDACAEQYAYaiAVIBGgOQMAIARBiOAAaiBvIHKhIhEgRiBJoSIWoDkDACAEQYDgAGogQiBDoSIgIHYgeaEiFaE5AwAgBEGIIGogESAWoTkDACAEQYAgaiAgIBWgOQMAIARBiOgAaiAkICOhIhEgGiAUoSIURGSprqbifdg/IDQgEqEiEkRGjTLPa5DtP6IQ5QkiFqA5AwAgBEGA6ABqIDcgHaEiGiASRGSprqbifdg/IBRERo0yz2uQ7b+iEOUJIhKgOQMAIARBiChqIBEgFqE5AwAgBEGAKGogGiASoTkDACAEQYjwAGogFyAcoCIRICIgKKAiEiA5ICWhIhSgRM07f2aeoOY/oiIWoDkDACAEQYDwAGogKyAsoSIXIBQgEqFEzTt/Zp6g5j+iIhKgOQMAIARBiDBqIBEgFqE5AwAgBEGAMGogFyASoTkDACAEQYj4AGogISAnoCIRIBkgH6AiH0RGjTLPa5DtPyAbIBOgIhNEZKmupuJ92D+iEOUJIhKgOQMAIARBgPgAaiAmIBigIhQgE0RGjTLPa5DtPyAfRGSprqbifdi/ohDlCSIToDkDACAEQYg4aiARIBKhOQMAIARBgDhqIBQgE6E5AwAgDSAJQRBqIglHDQALCyABQYACaiEBIAcgDmohByAKIA9qIQogA0GAIGohAyAFQQFqIgUgC0cNAAsLIAhCwICAgBA3AkRBACEDIAhBADYCPCAIIAA2AkAgCCAAQYAIaiIBNgI4IAhCwICAgBA3AlggCCABNgJUIAhBADYCUCAIIABBgBBqNgJMIAhBBGogCEE4aiAIQcwAahCXA0HAACAIKAIwIAgoAiwiAWsiBCAEQcAATxsiCwRAIAgoAigiBEEEdCEMIAgoAhQiBUEEdCENIAgoAiAgASAEbEEEdGohCiAIKAIMIAEgBWxBBHRqIQEgBSAEIAQgBUsbIg5BAEchBQNAIA4EQCAGIANBCHRqIgQrA/ABITAgBCsD4AEhMSAEKwPQASEyIAQrA8ABITogBCsDsAEhMyAEKwOgASE7IAQrA5ABITwgBCsDgAEhPSAEKwNwIT4gBCsDYCE/IAQrA1AhQCAEKwNAIUEgBCsDMCFLIAQrAyAhTCAEKwMQIU0gBEH4AWorAwAiTpohTyAEQegBaisDACJQmiFRIARB2AFqKwMAIlKaIVMgBEHIAWorAwAiVJohVSAEQbgBaisDACJWmiFXIARBqAFqKwMAIliaIVkgBEGYAWorAwAiWpohWyAEQYgBaisDACJcmiFdIARB+ABqKwMAIl6aIV8gBEHoAGorAwAiYJohYSAEQdgAaisDACJimiFjIARByABqKwMAImSaIWUgBEE4aisDACJmmiFnIARBKGorAwAiaJohaSAEQRhqKwMAImqaIWtBACEJIAUhBANAIAIgCWoiB0HwAWorAwAhEyAHQfgBaisDACERID4gB0H4AGorAwAiJSBeIAdB8ABqKwMAIiuiEOUJIR8gMCARIE4gE6IQ5QkhEiAHQbABaisDACEUIAdBuAFqKwMAIRkgSyAHQThqKwMAIiwgZiAHQTBqKwMAIkKiEOUJIRYgMyAZIFYgFKIQ5QkhFyAHQdABaisDACEaIAdB2AFqKwMAIRsgQCAHQdgAaisDACItIGIgB0HQAGorAwAiLqIQ5QkhICAyIBsgUiAaohDlCSE0IAdBkAFqKwMAIRwgB0GYAWorAwAhGCBNIAdBGGorAwAiQyBqIAdBEGorAwAiL6IQ5QkhJiA8IBggWiAcohDlCSEhIAdB4AFqKwMAIR0gB0HoAWorAwAhFSA/IAdB6ABqKwMAIkQgYCAHQeAAaisDACJFohDlCSEnIDEgFSBQIB2iEOUJISIgB0GgAWorAwAhIyAHQagBaisDACEeIEwgB0EoaisDACJGIGggB0EgaisDACJHohDlCSE1IDsgHiBYICOiEOUJISggB0HAAWorAwAhJCAHQcgBaisDACEpIEEgB0HIAGorAwAiSCBkIAdBQGsrAwAiSaIQ5QkhNiA6ICkgVCAkohDlCSE3IAdBCGorAwAhOCA9IAdBiAFqKwMAIkogXCAHQYABaisDACJsohDlCSEqIAcrAwAhOSABIAlqIgdBCGogOCAqoCJtIDYgN6AibqAibyA1ICigInAgJyAioCJxoCJyoCJzICYgIaAidCAgIDSgInWgInYgFiAXoCJ3IB8gEqAieKAieaAieqA5AwAgPiArICUgX6IQ5QkhJSAwIBMgESBPohDlCSETIEsgQiAsIGeiEOUJIREgMyAUIBkgV6IQ5QkhFCBAIC4gLSBjohDlCSEZIDIgGiAbIFOiEOUJIRogTSAvIEMga6IQ5QkhGyA8IBwgGCBbohDlCSEcID8gRSBEIGGiEOUJIRggMSAdIBUgUaIQ5QkhHSBMIEcgRiBpohDlCSEVIDsgIyAeIFmiEOUJISMgQSBJIEggZaIQ5QkhHiA6ICQgKSBVohDlCSEkIAcgOSA9IGwgSiBdohDlCSIpoCIrIB4gJKAiLKAiQiAVICOgIi0gGCAdoCIuoCJDoCIvIBsgHKAiRCAZIBqgIkWgIkYgESAUoCJHICUgE6AiSKAiSaAiSqA5AwAgACAJaiIHQYjAAGogcyB6oTkDACAHQYBAayAvIEqhOQMAIAkgCmoiD0EIaiA4ICqhIjggHiAkoSIeoSIkIDUgKKEiNSAYIB2hIhihIh0gFSAjoSIVICcgIqEiJ6AiIqFEzTt/Zp6g5j+iIiOgIiggJiAhoSImIBkgGqEiGaEiGiAWIBehIhYgJSAToSIToSIXIBEgFKEiESAfIBKhIh+gIhKhRM07f2aeoOY/oiIUoCIhREaNMs9rkO0/IBsgHKEiGyAgIDShIiCgIjQgFyASoETNO39mnqDmP6IiEqAiF0Rkqa6m4n3Yv6IQ5QkiHKA5AwAgDyA5ICmhIikgNiA3oSI2oCI3IB0gIqBEzTt/Zp6g5j+iIh2gIiIgF0RGjTLPa5DtPyAhRGSprqbifdg/ohDlCSIXoDkDACAHQYjIAGogKCAcoTkDACAHQYDIAGogIiAXoTkDACAHQYjQAGogbSBuoSIXIC0gLqEiHKEiISB0IHWhIiIgRyBIoSIooSIqIEQgRaEiOSB3IHihIiWgIi2hRM07f2aeoOY/oiIuoTkDACAHQYDQAGogKyAsoSIrIHAgcaEiLKAiLyAqIC2gRM07f2aeoOY/oiIqoTkDACAHQYgQaiAhIC6gOQMAIAdBgBBqIC8gKqA5AwAgB0GI2ABqIDggHqAiISA1IBigIhggFSAnoSIVoETNO39mnqDmP6IiJ6EiHiAmIBmgIhkgFiAToCITIBEgH6EiEaBEzTt/Zp6g5j+iIh+hIhZEZKmupuJ92D8gGyAgoSIbIBEgE6FEzTt/Zp6g5j+iIhOhIhFERo0yz2uQ7b+iEOUJIiChOQMAIAdBgNgAaiApIDahIiYgFSAYoUTNO39mnqDmP6IiGKEiFSARRGSprqbifdg/IBZERo0yz2uQ7T+iEOUJIhGhOQMAIAdBiBhqIB4gIKA5AwAgB0GAGGogFSARoDkDACAHQYjgAGogbyByoSIRIEYgSaEiFqA5AwAgB0GA4ABqIEIgQ6EiICB2IHmhIhWhOQMAIAdBiCBqIBEgFqE5AwAgB0GAIGogICAVoDkDACAHQYjoAGogJCAjoSIRIBogFKEiFERkqa6m4n3YPyA0IBKhIhJERo0yz2uQ7T+iEOUJIhagOQMAIAdBgOgAaiA3IB2hIhogEkRkqa6m4n3YPyAUREaNMs9rkO2/ohDlCSISoDkDACAHQYgoaiARIBahOQMAIAdBgChqIBogEqE5AwAgB0GI8ABqIBcgHKAiESAiICigIhIgOSAloSIUoETNO39mnqDmP6IiFqA5AwAgB0GA8ABqICsgLKEiFyAUIBKhRM07f2aeoOY/oiISoDkDACAHQYgwaiARIBahOQMAIAdBgDBqIBcgEqE5AwAgB0GI+ABqICEgJ6AiESAZIB+gIh9ERo0yz2uQ7T8gGyAToCITRGSprqbifdg/ohDlCSISoDkDACAHQYD4AGogJiAYoCIUIBNERo0yz2uQ7T8gH0Rkqa6m4n3Yv6IQ5QkiE6A5AwAgB0GIOGogESASoTkDACAHQYA4aiAUIBOhOQMAIAlBEGohCSAEQQFrIgQNAAsLIABBEGohACAKIAxqIQogASANaiEBIAJBgAJqIQIgA0EBaiIDIAtHDQALCyAIQeAAaiQADAQLIAhBADYCBCAIQcwAaiAIIAhBBGpBrNrCABCMBwALIAhBADYCBCAIQcwAaiAIIAhBBGpBnNrCABCMBwALIAhBADYCBCAIQcwAaiAIIAhBBGpBjNrCABCMBwALIAhBADYCBCAIQcwAaiAIIAhBBGpB/NnCABCMBwALCxMAIAEoAhQgAUEYaigCACAAEGwLEwAgACgCFCAAQRhqKAIAIAEQbAsQACAAIAEgASACahC6BkEACx8AIAEoAgRBA0cEQCAAIAFBBGoQjwELIAIgAxDVCQALDAAgACgCAEF8cRBrCxAAIAAoAgQgACgCAGtBBHYLDgAgAEUEQBDsCQALIAELEgAgACABKAIAQRBqKQIANwMACxQAIAAoAgAgASAAKAIEKAIMEQMAC68JAQV/IwBB8ABrIgUkACAFIAM2AgwgBSACNgIIAkACQAJ/IAFBgQJPBEACQAJ/QYACIAAsAIACQb9/Sg0AGkH/ASAALAD/AUG/f0oNABpB/gEgACwA/gFBv39KDQAaQf0BCyIGIAFJIghFBEAgASAGRg0BDAQLIAAgBmosAABBv39MDQMLIAUgADYCECAFIAY2AhRBBUEAIAgbIQdBgK3DAEGoiMMAIAgbDAELIAUgATYCFCAFIAA2AhBBqIjDAAshBiAFIAc2AhwgBSAGNgIYAkACQAJAAkAgASACSSIHIAEgA0lyRQRAIAIgA0sNAQJAIAJFIAEgAk1yRQRAIAAgAmosAABBQEgNAQsgAyECCyAFIAI2AiAgAiABIgNJBEAgAkEDayIDQQAgAiADTxsiAyACQQFqIgdLDQMCQCADIAdGDQAgACAHaiAAIANqIghrIQcgACACaiIJLAAAQb9/SgRAIAdBAWshBgwBCyACIANGDQAgCUEBayICLAAAQb9/SgRAIAdBAmshBgwBCyACIAhGDQAgCUECayICLAAAQb9/SgRAIAdBA2shBgwBCyACIAhGDQAgCUEDayICLAAAQb9/SgRAIAdBBGshBgwBCyACIAhGDQAgB0EFayEGCyADIAZqIQMLIAMEfwJAIAEgA00EQCABIANGDQEMBwsgACADaiwAAEG/f0wNBgsgASADawUgAQtFDQMCfwJAAkAgACADaiIBLAAAIgBBAEgEQCABLQABQT9xIQYgAEEfcSECIABBX0sNASACQQZ0IAZyIQIMAgsgBSAAQf8BcTYCJEEBDAILIAEtAAJBP3EgBkEGdHIhBiAAQXBJBEAgBiACQQx0ciECDAELIAJBEnRBgIDwAHEgAS0AA0E/cSAGQQZ0cnIiAkGAgMQARg0FCyAFIAI2AiRBASACQYABSQ0AGkECIAJBgBBJDQAaQQNBBCACQYCABEkbCyEAIAUgAzYCKCAFIAAgA2o2AiwgBUE8akIFNwIAIAVB7ABqQdUDNgIAIAVB5ABqQdUDNgIAIAVB3ABqQdcDNgIAIAVB1ABqQdgDNgIAIAVBBTYCNCAFQYiuwwA2AjAgBUEWNgJMIAUgBUHIAGo2AjggBSAFQRhqNgJoIAUgBUEQajYCYCAFIAVBKGo2AlggBSAFQSRqNgJQIAUgBUEgajYCSAwGCyAFIAIgAyAHGzYCKCAFQTxqQgM3AgAgBUHcAGpB1QM2AgAgBUHUAGpB1QM2AgAgBUEDNgI0IAVByK7DADYCMCAFQRY2AkwgBSAFQcgAajYCOCAFIAVBGGo2AlggBSAFQRBqNgJQIAUgBUEoajYCSAwFCyAFQeQAakHVAzYCACAFQdwAakHVAzYCACAFQdQAakEWNgIAIAVBPGpCBDcCACAFQQQ2AjQgBUGorcMANgIwIAVBFjYCTCAFIAVByABqNgI4IAUgBUEYajYCYCAFIAVBEGo2AlggBSAFQQxqNgJQIAUgBUEIajYCSAwECyADIAdB/K7DABDCBQALQd2cwwBBKyAEEMwGAAsgACABIAMgASAEEIAJAAsgACABQQAgBiAEEIAJAAsgBUEwaiAEEPwGAAsRACAAKAIEIAAoAgggARDiCQsQACAAIAI2AgQgACABNgIACxAAIAAoAgQgACgCCCABEFALGgACfyABQQlPBEAgASAAEJwBDAELIAAQQgsLPAACQAJ/IAFBCU8EQCABIAAQnAEMAQsgABBCCyIBRQ0AIAFBBGstAABBA3FFDQAgAUEAIAAQ5AkaCyABCxEAIAEQhAYgACABKQIENwMACxYAQZDNwwAgADYCAEGMzcMAQQE6AAALmAIBBn8jAEEQayIFJAACQAJAAkAgASgCCCICIAEoAgBPDQAgBUEIaiEGIwBBIGsiBCQAAkAgAiABKAIAIgNNBEACf0GBgICAeCADRQ0AGiABKAIEIQcCQCACRQRAQQEhAyAHEGsMAQtBASAHIANBASACEI0IIgNFDQEaCyABIAI2AgAgASADNgIEQYGAgIB4CyEDIAYgAjYCBCAGIAM2AgAgBEEgaiQADAELIARBFGpCADcCACAEQQE2AgwgBEHcn8IANgIIIARBuJ/CADYCECAEQQhqQbCgwgAQ/AYACyAFKAIIIgJBgYCAgHhGDQAgAkUNASACIAUoAgwQ3wkACyAFQRBqJAAMAQsQ+wYACyAAIAEpAgQ3AwALDgAgACABIAEgAmoQugYLDgAgAEGsAWogARD+AhoLSwEBfyABIAJqIAFrIgIgACgCACAAKAIIIgNrSwR/IAAgAyACEK0GIAAoAggFIAMLIAAoAgRqIAEgAhDnCRogACAAKAIIIAJqNgIICxYAQcXNwwAtAABFBEAQ/wULQcDNwwALkwIBAnwCQCMAQSBrIgIkACACQQI2AgAgAiABNgIEAkACQAJAIAFBAkYEQCACIAM2AgQgA0ECRw0BIAIgBTYCBCAFQQJHDQIgAiAHNgIEIAdBAkcNAyAAIAArAwAiCCAAKwMQIgmhOQMQIAAgCCAJoDkDACAAQRhqIgEgACsDCCIIIAErAwAiCaE5AwAgACAIIAmgOQMIIAJBIGokAAwECyACQQA2AgggAkEEaiACIAJBCGpByNDCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakHY0MIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQejQwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpB+NDCABCMBwALC5MCAQJ8AkAjAEEgayICJAAgAkECNgIAIAIgATYCBAJAAkACQCABQQJGBEAgAiADNgIEIANBAkcNASACIAU2AgQgBUECRw0CIAIgBzYCBCAHQQJHDQMgACAAKwMAIgggACsDECIJoTkDECAAIAggCaA5AwAgAEEYaiIBIAArAwgiCCABKwMAIgmhOQMAIAAgCCAJoDkDCCACQSBqJAAMBAsgAkEANgIIIAJBBGogAiACQQhqQfTRwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBhNLCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakGU0sIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQaTSwgAQjAcACwuTAgECfAJAIwBBIGsiAiQAIAJBAjYCACACIAE2AgQCQAJAAkAgAUECRgRAIAIgAzYCBCADQQJHDQEgAiAFNgIEIAVBAkcNAiACIAc2AgQgB0ECRw0DIAAgACsDACIIIAArAxAiCaE5AxAgACAIIAmgOQMAIABBGGoiASAAKwMIIgggASsDACIJoTkDACAAIAggCaA5AwggAkEgaiQADAQLIAJBADYCCCACQQRqIAIgAkEIakGg08IAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQbDTwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBwNPCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakHQ08IAEIwHAAsLgwMBCHwCQCMAQSBrIgIkACACQQQ2AgAgAiABNgIEAkACQAJAIAFBBEYEQCACIAM2AgQgA0EERw0BIAIgBTYCBCAFQQRHDQIgAiAHNgIEIAdBBEcNAyAAIAArAwAiCiAAKwMgIgugIgggACsDECIMIAArAzAiDaAiCaE5AyAgACAIIAmgOQMAIABBOGoiASsDACEIIAEgACsDCCIJIABBKGoiASsDACIOoSIPIAwgDaEiDKE5AwAgACAKIAuhIgogAEEYaiIDKwMAIgsgCKEiDaA5AzAgASAJIA6gIgkgCyAIoCIIoTkDACADIA8gDKA5AwAgACAKIA2hOQMQIAAgCSAIoDkDCCACQSBqJAAMBAsgAkEANgIIIAJBBGogAiACQQhqQaDTwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBsNPCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakHA08IAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQdDTwgAQjAcACwuDAwEIfAJAIwBBIGsiAiQAIAJBBDYCACACIAE2AgQCQAJAAkAgAUEERgRAIAIgAzYCBCADQQRHDQEgAiAFNgIEIAVBBEcNAiACIAc2AgQgB0EERw0DIAAgACsDACIKIAArAyAiC6AiCCAAKwMQIgwgACsDMCINoCIJoTkDICAAIAggCaA5AwAgAEE4aiIBKwMAIQggASAAKwMIIgkgAEEoaiIBKwMAIg6hIg8gDCANoSIMoDkDACAAIAogC6EiCiAAQRhqIgMrAwAiCyAIoSINoTkDMCABIAkgDqAiCSALIAigIgihOQMAIAMgDyAMoTkDACAAIAogDaA5AxAgACAJIAigOQMIIAJBIGokAAwECyACQQA2AgggAkEEaiACIAJBCGpBoNPCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakGw08IAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQcDTwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpB0NPCABCMBwALC4MDAQh8AkAjAEEgayICJAAgAkEENgIAIAIgATYCBAJAAkACQCABQQRGBEAgAiADNgIEIANBBEcNASACIAU2AgQgBUEERw0CIAIgBzYCBCAHQQRHDQMgACAAKwMAIgogACsDICILoCIIIAArAxAiDCAAKwMwIg2gIgmhOQMgIAAgCCAJoDkDACAAQThqIgErAwAhCCABIAArAwgiCSAAQShqIgErAwAiDqEiDyAMIA2hIgyhOQMAIAAgCiALoSIKIABBGGoiAysDACILIAihIg2gOQMwIAEgCSAOoCIJIAsgCKAiCKE5AwAgAyAPIAygOQMAIAAgCiANoTkDECAAIAkgCKA5AwggAkEgaiQADAQLIAJBADYCCCACQQRqIAIgAkEIakHM1MIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQdzUwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpB7NTCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakH81MIAEIwHAAsLkwIBAnwCQCMAQSBrIgIkACACQQI2AgAgAiABNgIEAkACQAJAIAFBAkYEQCACIAM2AgQgA0ECRw0BIAIgBTYCBCAFQQJHDQIgAiAHNgIEIAdBAkcNAyAAIAArAwAiCCAAKwMQIgmhOQMQIAAgCCAJoDkDACAAQRhqIgEgACsDCCIIIAErAwAiCaE5AwAgACAIIAmgOQMIIAJBIGokAAwECyACQQA2AgggAkEEaiACIAJBCGpBzNTCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakHc1MIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQezUwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpB/NTCABCMBwALC4MDAQh8AkAjAEEgayICJAAgAkEENgIAIAIgATYCBAJAAkACQCABQQRGBEAgAiADNgIEIANBBEcNASACIAU2AgQgBUEERw0CIAIgBzYCBCAHQQRHDQMgACAAKwMAIgogACsDICILoCIIIAArAxAiDCAAKwMwIg2gIgmhOQMgIAAgCCAJoDkDACAAQThqIgErAwAhCCABIAArAwgiCSAAQShqIgErAwAiDqEiDyAMIA2hIgygOQMAIAAgCiALoSIKIABBGGoiAysDACILIAihIg2hOQMwIAEgCSAOoCIJIAsgCKAiCKE5AwAgAyAPIAyhOQMAIAAgCiANoDkDECAAIAkgCKA5AwggAkEgaiQADAQLIAJBADYCCCACQQRqIAIgAkEIakHM1MIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQdzUwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpB7NTCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakH81MIAEIwHAAsLxQUBGHwCQCMAQSBrIgIkACACQQg2AgAgAiABNgIEAkACQAJAIAFBCEYEQCACIAM2AgQgA0EIRw0BIAIgBTYCBCAFQQhHDQIgAiAHNgIEIAdBCEcNAyAAIAArAwAiDCAAKwNAIg2gIgggACsDICIOIAArA2AiEKAiCaAiCiAAKwMQIhEgACsDUCISoCILIAArAzAiEyAAKwNwIhSgIg+gIhWhOQNAIAAgCiAVoDkDACAAQegAaiIBIAArAwgiCiAAQcgAaiIDKwMAIhWgIhYgAEEoaiIEKwMAIhggASsDACIZoCIXoSIaIAsgD6EiC6A5AwAgACAIIAmhIgggAEEYaiIBKwMAIgkgAEHYAGoiBSsDACIPoCIbIABBOGoiBisDACIcIABB+ABqIgcrAwAiHaAiHqEiH6E5A2AgAyAWIBegIhYgGyAeoCIXoTkDACAEIBogC6E5AwAgACAIIB+gOQMgIAAgFiAXoDkDCCAHIAogFaEiCCAOIBChIg6gIhAgCSAPoSIJIBMgFKEiCqAiCyARIBKhIhEgHCAdoSISoSIToETNO39mnqDmP6IiFKA5AwAgACAMIA2hIgwgGCAZoSINoSIPIBMgC6FEzTt/Zp6g5j+iIgugOQNwIAUgCCAOoSIIIAkgCqEiDiARIBKgIgmhRM07f2aeoOY/oiIKoTkDACAAIAwgDaAiDCAOIAmgRM07f2aeoOY/oiINoTkDUCAGIBAgFKE5AwAgACAPIAuhOQMwIAEgCCAKoDkDACAAIAwgDaA5AxAgAkEgaiQADAQLIAJBADYCCCACQQRqIAIgAkEIakH41cIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQYjWwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBmNbCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakGo1sIAEIwHAAsLgwMBCHwCQCMAQSBrIgIkACACQQQ2AgAgAiABNgIEAkACQAJAIAFBBEYEQCACIAM2AgQgA0EERw0BIAIgBTYCBCAFQQRHDQIgAiAHNgIEIAdBBEcNAyAAIAArAwAiCiAAKwMgIgugIgggACsDECIMIAArAzAiDaAiCaE5AyAgACAIIAmgOQMAIABBOGoiASsDACEIIAEgACsDCCIJIABBKGoiASsDACIOoSIPIAwgDaEiDKA5AwAgACAKIAuhIgogAEEYaiIDKwMAIgsgCKEiDaE5AzAgASAJIA6gIgkgCyAIoCIIoTkDACADIA8gDKE5AwAgACAKIA2gOQMQIAAgCSAIoDkDCCACQSBqJAAMBAsgAkEANgIIIAJBBGogAiACQQhqQfjVwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBiNbCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakGY1sIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQajWwgAQjAcACwuTAgECfAJAIwBBIGsiAiQAIAJBAjYCACACIAE2AgQCQAJAAkAgAUECRgRAIAIgAzYCBCADQQJHDQEgAiAFNgIEIAVBAkcNAiACIAc2AgQgB0ECRw0DIAAgACsDACIIIAArAxAiCaE5AxAgACAIIAmgOQMAIABBGGoiASAAKwMIIgggASsDACIJoTkDACAAIAggCaA5AwggAkEgaiQADAQLIAJBADYCCCACQQRqIAIgAkEIakH41cIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQYjWwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBmNbCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakGo1sIAEIwHAAsLgwMBCHwCQCMAQSBrIgIkACACQQQ2AgAgAiABNgIEAkACQAJAIAFBBEYEQCACIAM2AgQgA0EERw0BIAIgBTYCBCAFQQRHDQIgAiAHNgIEIAdBBEcNAyAAIAArAwAiCiAAKwMgIgugIgggACsDECIMIAArAzAiDaAiCaE5AyAgACAIIAmgOQMAIABBOGoiASsDACEIIAEgACsDCCIJIABBKGoiASsDACIOoSIPIAwgDaEiDKE5AwAgACAKIAuhIgogAEEYaiIDKwMAIgsgCKEiDaA5AzAgASAJIA6gIgkgCyAIoCIIoTkDACADIA8gDKA5AwAgACAKIA2hOQMQIAAgCSAIoDkDCCACQSBqJAAMBAsgAkEANgIIIAJBBGogAiACQQhqQfjVwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBiNbCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakGY1sIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQajWwgAQjAcACwvFBQEYfAJAIwBBIGsiAiQAIAJBCDYCACACIAE2AgQCQAJAAkAgAUEIRgRAIAIgAzYCBCADQQhHDQEgAiAFNgIEIAVBCEcNAiACIAc2AgQgB0EIRw0DIAAgACsDACIMIAArA0AiDaAiCCAAKwMgIg4gACsDYCIQoCIJoCIKIAArAxAiESAAKwNQIhKgIgsgACsDMCITIAArA3AiFKAiD6AiFaE5A0AgACAKIBWgOQMAIABB6ABqIgEgACsDCCIKIABByABqIgMrAwAiFaAiFiAAQShqIgQrAwAiGCABKwMAIhmgIhehIhogCyAPoSILoTkDACAAIAggCaEiCCAAQRhqIgErAwAiCSAAQdgAaiIFKwMAIg+gIhsgAEE4aiIGKwMAIhwgAEH4AGoiBysDACIdoCIeoSIfoDkDYCADIBYgF6AiFiAbIB6gIhehOQMAIAQgGiALoDkDACAAIAggH6E5AyAgACAWIBegOQMIIAcgCiAVoSIIIA4gEKEiDqEiECAJIA+hIgkgEyAUoSIKoSILIBEgEqEiESAcIB2hIhKgIhOhRM07f2aeoOY/oiIUoDkDACAAIAwgDaEiDCAYIBmhIg2gIg8gEyALoETNO39mnqDmP6IiC6A5A3AgBSAIIA6gIgggESASoSIOIAkgCqAiCaBEzTt/Zp6g5j+iIgqhOQMAIAAgDCANoSIMIA4gCaFEzTt/Zp6g5j+iIg2hOQNQIAYgECAUoTkDACAAIA8gC6E5AzAgASAIIAqgOQMAIAAgDCANoDkDECACQSBqJAAMBAsgAkEANgIIIAJBBGogAiACQQhqQfjVwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBiNbCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakGY1sIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQajWwgAQjAcACwuTAgECfAJAIwBBIGsiAiQAIAJBAjYCACACIAE2AgQCQAJAAkAgAUECRgRAIAIgAzYCBCADQQJHDQEgAiAFNgIEIAVBAkcNAiACIAc2AgQgB0ECRw0DIAAgACsDACIIIAArAxAiCaE5AxAgACAIIAmgOQMAIABBGGoiASAAKwMIIgggASsDACIJoTkDACAAIAggCaA5AwggAkEgaiQADAQLIAJBADYCCCACQQRqIAIgAkEIakGk18IAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQbTXwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBxNfCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakHU18IAEIwHAAsLgwMBCHwCQCMAQSBrIgIkACACQQQ2AgAgAiABNgIEAkACQAJAIAFBBEYEQCACIAM2AgQgA0EERw0BIAIgBTYCBCAFQQRHDQIgAiAHNgIEIAdBBEcNAyAAIAArAwAiCiAAKwMgIgugIgggACsDECIMIAArAzAiDaAiCaE5AyAgACAIIAmgOQMAIABBOGoiASsDACEIIAEgACsDCCIJIABBKGoiASsDACIOoSIPIAwgDaEiDKA5AwAgACAKIAuhIgogAEEYaiIDKwMAIgsgCKEiDaE5AzAgASAJIA6gIgkgCyAIoCIIoTkDACADIA8gDKE5AwAgACAKIA2gOQMQIAAgCSAIoDkDCCACQSBqJAAMBAsgAkEANgIIIAJBBGogAiACQQhqQaTXwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBtNfCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakHE18IAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQdTXwgAQjAcACwvFBQEYfAJAIwBBIGsiAiQAIAJBCDYCACACIAE2AgQCQAJAAkAgAUEIRgRAIAIgAzYCBCADQQhHDQEgAiAFNgIEIAVBCEcNAiACIAc2AgQgB0EIRw0DIAAgACsDACIMIAArA0AiDaAiCCAAKwMgIg4gACsDYCIQoCIJoCIKIAArAxAiESAAKwNQIhKgIgsgACsDMCITIAArA3AiFKAiD6AiFaE5A0AgACAKIBWgOQMAIABB6ABqIgEgACsDCCIKIABByABqIgMrAwAiFaAiFiAAQShqIgQrAwAiGCABKwMAIhmgIhehIhogCyAPoSILoDkDACAAIAggCaEiCCAAQRhqIgErAwAiCSAAQdgAaiIFKwMAIg+gIhsgAEE4aiIGKwMAIhwgAEH4AGoiBysDACIdoCIeoSIfoTkDYCADIBYgF6AiFiAbIB6gIhehOQMAIAQgGiALoTkDACAAIAggH6A5AyAgACAWIBegOQMIIAcgCiAVoSIIIA4gEKEiDqAiECAJIA+hIgkgEyAUoSIKoCILIBEgEqEiESAcIB2hIhKhIhOgRM07f2aeoOY/oiIUoDkDACAAIAwgDaEiDCAYIBmhIg2hIg8gEyALoUTNO39mnqDmP6IiC6A5A3AgBSAIIA6hIgggCSAKoSIOIBEgEqAiCaFEzTt/Zp6g5j+iIgqhOQMAIAAgDCANoCIMIA4gCaBEzTt/Zp6g5j+iIg2hOQNQIAYgECAUoTkDACAAIA8gC6E5AzAgASAIIAqgOQMAIAAgDCANoDkDECACQSBqJAAMBAsgAkEANgIIIAJBBGogAiACQQhqQaTXwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBtNfCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakHE18IAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQdTXwgAQjAcACwuDAwEIfAJAIwBBIGsiAiQAIAJBBDYCACACIAE2AgQCQAJAAkAgAUEERgRAIAIgAzYCBCADQQRHDQEgAiAFNgIEIAVBBEcNAiACIAc2AgQgB0EERw0DIAAgACsDACIKIAArAyAiC6AiCCAAKwMQIgwgACsDMCINoCIJoTkDICAAIAggCaA5AwAgAEE4aiIBKwMAIQggASAAKwMIIgkgAEEoaiIBKwMAIg6hIg8gDCANoSIMoTkDACAAIAogC6EiCiAAQRhqIgMrAwAiCyAIoSINoDkDMCABIAkgDqAiCSALIAigIgihOQMAIAMgDyAMoDkDACAAIAogDaE5AxAgACAJIAigOQMIIAJBIGokAAwECyACQQA2AgggAkEEaiACIAJBCGpBpNfCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakG018IAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQcTXwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpB1NfCABCMBwALC8UFARh8AkAjAEEgayICJAAgAkEINgIAIAIgATYCBAJAAkACQCABQQhGBEAgAiADNgIEIANBCEcNASACIAU2AgQgBUEIRw0CIAIgBzYCBCAHQQhHDQMgACAAKwMAIgwgACsDQCINoCIIIAArAyAiDiAAKwNgIhCgIgmgIgogACsDECIRIAArA1AiEqAiCyAAKwMwIhMgACsDcCIUoCIPoCIVoTkDQCAAIAogFaA5AwAgAEHoAGoiASAAKwMIIgogAEHIAGoiAysDACIVoCIWIABBKGoiBCsDACIYIAErAwAiGaAiF6EiGiALIA+hIguhOQMAIAAgCCAJoSIIIABBGGoiASsDACIJIABB2ABqIgUrAwAiD6AiGyAAQThqIgYrAwAiHCAAQfgAaiIHKwMAIh2gIh6hIh+gOQNgIAMgFiAXoCIWIBsgHqAiF6E5AwAgBCAaIAugOQMAIAAgCCAfoTkDICAAIBYgF6A5AwggByAKIBWhIgggDiAQoSIOoSIQIAkgD6EiCSATIBShIgqhIgsgESASoSIRIBwgHaEiEqAiE6FEzTt/Zp6g5j+iIhSgOQMAIAAgDCANoSIMIBggGaEiDaAiDyATIAugRM07f2aeoOY/oiILoDkDcCAFIAggDqAiCCARIBKhIg4gCSAKoCIJoETNO39mnqDmP6IiCqE5AwAgACAMIA2hIgwgDiAJoUTNO39mnqDmP6IiDaE5A1AgBiAQIBShOQMAIAAgDyALoTkDMCABIAggCqA5AwAgACAMIA2gOQMQIAJBIGokAAwECyACQQA2AgggAkEEaiACIAJBCGpBpNfCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakG018IAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQcTXwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpB1NfCABCMBwALC58NAjh8CX8CQCMAQSBrIgIkACACQRA2AgAgAiABNgIEAkACQAJAIAFBEEYEQCACIAM2AgQgA0EQRw0BIAIgBTYCBCAFQRBHDQIgAiAHNgIEIAdBEEcNAyAAQZgBaiIBKwMAIQggAEEYaiIDKwMAIQkgAEHYAWoiBCsDACENIABB2ABqIgUrAwAhDiAAQbgBaiIGKwMAIQogAEE4aiIHKwMAIQ8gAEH4AWoiQCsDACEQIABB+ABqIkErAwAhESAAQYgBaiJCKwMAIRIgAEHIAWoiQysDACEaIABByABqIkQrAwAhGyAAQagBaiJFKwMAIRMgAEEoaiJGKwMAIRQgAEHoAWoiRysDACEcIABB6ABqIkgrAwAhHSAAKwMIIR4gACAAKwMAIh8gACsDgAEiJaAiFSAAKwNAIiAgACsDwAEiIaAiFqAiCyAAKwMgIiYgACsDoAEiIqAiFyAAKwNgIicgACsD4AEiKKAiI6AiDKAiGCAAKwMQIjAgACsDkAEiMaAiKSAAKwNQIjIgACsD0AEiM6AiKqAiGSAAKwMwIjQgACsDsAEiNaAiKyAAKwNwIjYgACsD8AEiN6AiLKAiJKAiLaE5A4ABIAAgGCAtoDkDACBDIB4gEqAiGCAbIBqgIi2gIi4gFCAToCI4IB0gHKAiOaAiL6EiOiAZICShIhmgOQMAIAAgCyAMoSILIAkgCKAiDCAOIA2gIiSgIjsgDyAKoCI8IBEgEKAiPaAiPqEiP6E5A8ABIEIgLiAvoCIuIDsgPqAiL6E5AwAgRCA6IBmhOQMAIAAgCyA/oDkDQCAAIC4gL6A5AwggRyAYIC2hIgsgFyAjoSIXoCIjIAwgJKEiDCArICyhIhigIhkgKSAqoSIpIDwgPaEiKqEiK6BEzTt/Zp6g5j+iIiygOQMAIAAgFSAWoSIVIDggOaEiFqEiJCArIBmhRM07f2aeoOY/oiIZoDkD4AEgRSALIBehIgsgDCAYoSIXICkgKqAiDKFEzTt/Zp6g5j+iIhihOQMAIAAgFSAWoCIVIBcgDKBEzTt/Zp6g5j+iIhahOQOgASBIICMgLKE5AwAgACAkIBmhOQNgIEYgCyAYoDkDACAAIBUgFqA5AyAgQCAeIBKhIhIgICAhoSIeoCIVIBQgE6EiEyAnICihIhSgIiAgJiAioSIhIB0gHKEiHKEiHaBEzTt/Zp6g5j+iIhagIgsgCSAIoSIIIDIgM6EiCaAiJiAPIAqhIgogNiA3oSIPoCIiIDQgNaEiFyARIBChIhChIhGgRM07f2aeoOY/oiInoCIoREaNMs9rkO0/IDAgMaEiIyAOIA2hIg2hIg4gESAioUTNO39mnqDmP6IiEaAiIkRkqa6m4n3YP6IQ5QkiDKA5AwAgACAfICWhIh8gGyAaoSIaoSIbIB0gIKFEzTt/Zp6g5j+iIh2gIiUgIkRGjTLPa5DtPyAoRGSprqbifdi/ohDlCSIgoDkD8AEgBCASIB6hIhIgEyAUoSITICEgHKAiFKFEzTt/Zp6g5j+iIhyhIh4gCCAJoSIIIAogD6EiCSAXIBCgIgqhRM07f2aeoOY/oiIPoSIQRGSprqbifdg/ICMgDaAiDSAJIAqgRM07f2aeoOY/oiIJoSIKREaNMs9rkO0/ohDlCSIhoDkDACAAIB8gGqAiGiATIBSgRM07f2aeoOY/oiIToSIUIApEZKmupuJ92D8gEERGjTLPa5Dtv6IQ5QkiCqA5A9ABIAYgFSAWoSIQICYgJ6EiH0Rkqa6m4n3YPyAOIBGhIg5ERo0yz2uQ7b+iEOUJIhGhOQMAIAAgGyAdoSIbIA5EZKmupuJ92D8gH0RGjTLPa5DtP6IQ5QkiDqE5A7ABIAEgEiAcoCISIAggD6AiCERGjTLPa5DtPyANIAmgIglEZKmupuJ92L+iEOUJIg2hOQMAIAAgGiAToCIPIAlERo0yz2uQ7T8gCERkqa6m4n3YP6IQ5QkiCKE5A5ABIEEgCyAMoTkDACAAICUgIKE5A3AgBSAeICGhOQMAIAAgFCAKoTkDUCAHIBAgEaA5AwAgACAbIA6gOQMwIAMgEiANoDkDACAAIA8gCKA5AxAgAkEgaiQADAQLIAJBADYCCCACQQRqIAIgAkEIakHQ2MIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQeDYwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpB8NjCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakGA2cIAEIwHAAsLkwIBAnwCQCMAQSBrIgIkACACQQI2AgAgAiABNgIEAkACQAJAIAFBAkYEQCACIAM2AgQgA0ECRw0BIAIgBTYCBCAFQQJHDQIgAiAHNgIEIAdBAkcNAyAAIAArAwAiCCAAKwMQIgmhOQMQIAAgCCAJoDkDACAAQRhqIgEgACsDCCIIIAErAwAiCaE5AwAgACAIIAmgOQMIIAJBIGokAAwECyACQQA2AgggAkEEaiACIAJBCGpB0NjCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakHg2MIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQfDYwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBgNnCABCMBwALC4MDAQh8AkAjAEEgayICJAAgAkEENgIAIAIgATYCBAJAAkACQCABQQRGBEAgAiADNgIEIANBBEcNASACIAU2AgQgBUEERw0CIAIgBzYCBCAHQQRHDQMgACAAKwMAIgogACsDICILoCIIIAArAxAiDCAAKwMwIg2gIgmhOQMgIAAgCCAJoDkDACAAQThqIgErAwAhCCABIAArAwgiCSAAQShqIgErAwAiDqEiDyAMIA2hIgyhOQMAIAAgCiALoSIKIABBGGoiAysDACILIAihIg2gOQMwIAEgCSAOoCIJIAsgCKAiCKE5AwAgAyAPIAygOQMAIAAgCiANoTkDECAAIAkgCKA5AwggAkEgaiQADAQLIAJBADYCCCACQQRqIAIgAkEIakHQ2MIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQeDYwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpB8NjCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakGA2cIAEIwHAAsLxQUBGHwCQCMAQSBrIgIkACACQQg2AgAgAiABNgIEAkACQAJAIAFBCEYEQCACIAM2AgQgA0EIRw0BIAIgBTYCBCAFQQhHDQIgAiAHNgIEIAdBCEcNAyAAIAArAwAiDCAAKwNAIg2gIgggACsDICIOIAArA2AiEKAiCaAiCiAAKwMQIhEgACsDUCISoCILIAArAzAiEyAAKwNwIhSgIg+gIhWhOQNAIAAgCiAVoDkDACAAQegAaiIBIAArAwgiCiAAQcgAaiIDKwMAIhWgIhYgAEEoaiIEKwMAIhggASsDACIZoCIXoSIaIAsgD6EiC6A5AwAgACAIIAmhIgggAEEYaiIBKwMAIgkgAEHYAGoiBSsDACIPoCIbIABBOGoiBisDACIcIABB+ABqIgcrAwAiHaAiHqEiH6E5A2AgAyAWIBegIhYgGyAeoCIXoTkDACAEIBogC6E5AwAgACAIIB+gOQMgIAAgFiAXoDkDCCAHIAogFaEiCCAOIBChIg6gIhAgCSAPoSIJIBMgFKEiCqAiCyARIBKhIhEgHCAdoSISoSIToETNO39mnqDmP6IiFKA5AwAgACAMIA2hIgwgGCAZoSINoSIPIBMgC6FEzTt/Zp6g5j+iIgugOQNwIAUgCCAOoSIIIAkgCqEiDiARIBKgIgmhRM07f2aeoOY/oiIKoTkDACAAIAwgDaAiDCAOIAmgRM07f2aeoOY/oiINoTkDUCAGIBAgFKE5AwAgACAPIAuhOQMwIAEgCCAKoDkDACAAIAwgDaA5AxAgAkEgaiQADAQLIAJBADYCCCACQQRqIAIgAkEIakHQ2MIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQeDYwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpB8NjCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakGA2cIAEIwHAAsLgwMBCHwCQCMAQSBrIgIkACACQQQ2AgAgAiABNgIEAkACQAJAIAFBBEYEQCACIAM2AgQgA0EERw0BIAIgBTYCBCAFQQRHDQIgAiAHNgIEIAdBBEcNAyAAIAArAwAiCiAAKwMgIgugIgggACsDECIMIAArAzAiDaAiCaE5AyAgACAIIAmgOQMAIABBOGoiASsDACEIIAEgACsDCCIJIABBKGoiASsDACIOoSIPIAwgDaEiDKA5AwAgACAKIAuhIgogAEEYaiIDKwMAIgsgCKEiDaE5AzAgASAJIA6gIgkgCyAIoCIIoTkDACADIA8gDKE5AwAgACAKIA2gOQMQIAAgCSAIoDkDCCACQSBqJAAMBAsgAkEANgIIIAJBBGogAiACQQhqQdDYwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpB4NjCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakHw2MIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQYDZwgAQjAcACwufDQI4fAl/AkAjAEEgayICJAAgAkEQNgIAIAIgATYCBAJAAkACQCABQRBGBEAgAiADNgIEIANBEEcNASACIAU2AgQgBUEQRw0CIAIgBzYCBCAHQRBHDQMgAEGYAWoiASsDACEIIABBGGoiAysDACEJIABB2AFqIgQrAwAhDSAAQdgAaiIFKwMAIQ4gAEG4AWoiBisDACEKIABBOGoiBysDACEPIABB+AFqIkArAwAhECAAQfgAaiJBKwMAIREgAEGIAWoiQisDACESIABByAFqIkMrAwAhGiAAQcgAaiJEKwMAIRsgAEGoAWoiRSsDACETIABBKGoiRisDACEcIABB6AFqIkcrAwAhFCAAQegAaiJIKwMAIR0gACsDCCEeIAAgACsDACIfIAArA4ABIiWgIhUgACsDQCIgIAArA8ABIiGgIhagIgsgACsDICImIAArA6ABIiKgIhcgACsDYCInIAArA+ABIiigIiOgIgygIhggACsDECIwIAArA5ABIjGgIikgACsDUCIyIAArA9ABIjOgIiqgIhkgACsDMCI0IAArA7ABIjWgIisgACsDcCI2IAArA/ABIjegIiygIiSgIi2hOQOAASAAIBggLaA5AwAgQyAeIBKgIhggGyAaoCItoCIuIBwgE6AiOCAdIBSgIjmgIi+hIjogGSAkoSIZoTkDACAAIAsgDKEiCyAJIAigIgwgDiANoCIkoCI7IA8gCqAiPCARIBCgIj2gIj6hIj+gOQPAASBCIC4gL6AiLiA7ID6gIi+hOQMAIEQgOiAZoDkDACAAIAsgP6E5A0AgACAuIC+gOQMIIEcgGCAtoSILIBcgI6EiF6EiIyAMICShIgwgKyAsoSIYoSIZICkgKqEiKSA8ID2hIiqgIiuhRM07f2aeoOY/oiIsoDkDACAAIBUgFqEiFSA4IDmhIhagIiQgKyAZoETNO39mnqDmP6IiGaA5A+ABIEUgCyAXoCILICkgKqEiFyAMIBigIgygRM07f2aeoOY/oiIYoTkDACAAIBUgFqEiFSAXIAyhRM07f2aeoOY/oiIWoTkDoAEgSCAjICyhOQMAIAAgJCAZoTkDYCBGIAsgGKA5AwAgACAVIBagOQMgIEAgHiASoSISICAgIaEiHqEiFSAcIBOhIhMgJyAooSIcoSIgICYgIqEiISAdIBShIhSgIh2hRM07f2aeoOY/oiIWoCILIAkgCKEiCCAyIDOhIgmhIiYgDyAKoSIKIDYgN6EiD6EiIiA0IDWhIhcgESAQoSIQoCIRoUTNO39mnqDmP6IiJ6AiKERGjTLPa5DtPyAwIDGhIiMgDiANoSINoCIOIBEgIqBEzTt/Zp6g5j+iIhGgIiJEZKmupuJ92L+iEOUJIgygOQMAIAAgHyAloSIfIBsgGqEiGqAiGyAdICCgRM07f2aeoOY/oiIdoCIlICJERo0yz2uQ7T8gKERkqa6m4n3YP6IQ5QkiIKA5A/ABIAQgEiAeoCISICEgFKEiFCATIBygIhOgRM07f2aeoOY/oiIcoSIeIAggCaAiCCAXIBChIgkgCiAPoCIKoETNO39mnqDmP6IiD6EiEERkqa6m4n3YPyAjIA2hIg0gCSAKoUTNO39mnqDmP6IiCaEiCkRGjTLPa5Dtv6IQ5QkiIaA5AwAgACAfIBqhIhogFCAToUTNO39mnqDmP6IiE6EiFCAKRGSprqbifdg/IBBERo0yz2uQ7T+iEOUJIgqgOQPQASAGIBUgFqEiECAmICehIh9EZKmupuJ92D8gDiARoSIOREaNMs9rkO0/ohDlCSIRoTkDACAAIBsgHaEiGyAORGSprqbifdg/IB9ERo0yz2uQ7b+iEOUJIg6hOQOwASABIBIgHKAiEiAIIA+gIghERo0yz2uQ7T8gDSAJoCIJRGSprqbifdg/ohDlCSINoTkDACAAIBogE6AiDyAJREaNMs9rkO0/IAhEZKmupuJ92L+iEOUJIgihOQOQASBBIAsgDKE5AwAgACAlICChOQNwIAUgHiAhoTkDACAAIBQgCqE5A1AgByAQIBGgOQMAIAAgGyAOoDkDMCADIBIgDaA5AwAgACAPIAigOQMQIAJBIGokAAwECyACQQA2AgggAkEEaiACIAJBCGpB0NjCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakHg2MIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQfDYwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBgNnCABCMBwALC8UFARh8AkAjAEEgayICJAAgAkEINgIAIAIgATYCBAJAAkACQCABQQhGBEAgAiADNgIEIANBCEcNASACIAU2AgQgBUEIRw0CIAIgBzYCBCAHQQhHDQMgACAAKwMAIgwgACsDQCINoCIIIAArAyAiDiAAKwNgIhCgIgmgIgogACsDECIRIAArA1AiEqAiCyAAKwMwIhMgACsDcCIUoCIPoCIVoTkDQCAAIAogFaA5AwAgAEHoAGoiASAAKwMIIgogAEHIAGoiAysDACIVoCIWIABBKGoiBCsDACIYIAErAwAiGaAiF6EiGiALIA+hIguhOQMAIAAgCCAJoSIIIABBGGoiASsDACIJIABB2ABqIgUrAwAiD6AiGyAAQThqIgYrAwAiHCAAQfgAaiIHKwMAIh2gIh6hIh+gOQNgIAMgFiAXoCIWIBsgHqAiF6E5AwAgBCAaIAugOQMAIAAgCCAfoTkDICAAIBYgF6A5AwggByAKIBWhIgggDiAQoSIOoSIQIAkgD6EiCSATIBShIgqhIgsgESASoSIRIBwgHaEiEqAiE6FEzTt/Zp6g5j+iIhSgOQMAIAAgDCANoSIMIBggGaEiDaAiDyATIAugRM07f2aeoOY/oiILoDkDcCAFIAggDqAiCCARIBKhIg4gCSAKoCIJoETNO39mnqDmP6IiCqE5AwAgACAMIA2hIgwgDiAJoUTNO39mnqDmP6IiDaE5A1AgBiAQIBShOQMAIAAgDyALoTkDMCABIAggCqA5AwAgACAMIA2gOQMQIAJBIGokAAwECyACQQA2AgggAkEEaiACIAJBCGpB0NjCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakHg2MIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQfDYwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBgNnCABCMBwALC8UFARh8AkAjAEEgayICJAAgAkEINgIAIAIgATYCBAJAAkACQCABQQhGBEAgAiADNgIEIANBCEcNASACIAU2AgQgBUEIRw0CIAIgBzYCBCAHQQhHDQMgACAAKwMAIgwgACsDQCINoCIIIAArAyAiDiAAKwNgIhCgIgmgIgogACsDECIRIAArA1AiEqAiCyAAKwMwIhMgACsDcCIUoCIPoCIVoTkDQCAAIAogFaA5AwAgAEHoAGoiASAAKwMIIgogAEHIAGoiAysDACIVoCIWIABBKGoiBCsDACIYIAErAwAiGaAiF6EiGiALIA+hIgugOQMAIAAgCCAJoSIIIABBGGoiASsDACIJIABB2ABqIgUrAwAiD6AiGyAAQThqIgYrAwAiHCAAQfgAaiIHKwMAIh2gIh6hIh+hOQNgIAMgFiAXoCIWIBsgHqAiF6E5AwAgBCAaIAuhOQMAIAAgCCAfoDkDICAAIBYgF6A5AwggByAKIBWhIgggDiAQoSIOoCIQIAkgD6EiCSATIBShIgqgIgsgESASoSIRIBwgHaEiEqEiE6BEzTt/Zp6g5j+iIhSgOQMAIAAgDCANoSIMIBggGaEiDaEiDyATIAuhRM07f2aeoOY/oiILoDkDcCAFIAggDqEiCCAJIAqhIg4gESASoCIJoUTNO39mnqDmP6IiCqE5AwAgACAMIA2gIgwgDiAJoETNO39mnqDmP6IiDaE5A1AgBiAQIBShOQMAIAAgDyALoTkDMCABIAggCqA5AwAgACAMIA2gOQMQIAJBIGokAAwECyACQQA2AgggAkEEaiACIAJBCGpB/NnCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakGM2sIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQZzawgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBrNrCABCMBwALC4MDAQh8AkAjAEEgayICJAAgAkEENgIAIAIgATYCBAJAAkACQCABQQRGBEAgAiADNgIEIANBBEcNASACIAU2AgQgBUEERw0CIAIgBzYCBCAHQQRHDQMgACAAKwMAIgogACsDICILoCIIIAArAxAiDCAAKwMwIg2gIgmhOQMgIAAgCCAJoDkDACAAQThqIgErAwAhCCABIAArAwgiCSAAQShqIgErAwAiDqEiDyAMIA2hIgyhOQMAIAAgCiALoSIKIABBGGoiAysDACILIAihIg2gOQMwIAEgCSAOoCIJIAsgCKAiCKE5AwAgAyAPIAygOQMAIAAgCiANoTkDECAAIAkgCKA5AwggAkEgaiQADAQLIAJBADYCCCACQQRqIAIgAkEIakH82cIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQYzawgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBnNrCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakGs2sIAEIwHAAsLkwIBAnwCQCMAQSBrIgIkACACQQI2AgAgAiABNgIEAkACQAJAIAFBAkYEQCACIAM2AgQgA0ECRw0BIAIgBTYCBCAFQQJHDQIgAiAHNgIEIAdBAkcNAyAAIAArAwAiCCAAKwMQIgmhOQMQIAAgCCAJoDkDACAAQRhqIgEgACsDCCIIIAErAwAiCaE5AwAgACAIIAmgOQMIIAJBIGokAAwECyACQQA2AgggAkEEaiACIAJBCGpB/NnCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakGM2sIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQZzawgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBrNrCABCMBwALC58NAjh8CX8CQCMAQSBrIgIkACACQRA2AgAgAiABNgIEAkACQAJAIAFBEEYEQCACIAM2AgQgA0EQRw0BIAIgBTYCBCAFQRBHDQIgAiAHNgIEIAdBEEcNAyAAQZgBaiIBKwMAIQggAEEYaiIDKwMAIQkgAEHYAWoiBCsDACENIABB2ABqIgUrAwAhDiAAQbgBaiIGKwMAIQogAEE4aiIHKwMAIQ8gAEH4AWoiQCsDACEQIABB+ABqIkErAwAhESAAQYgBaiJCKwMAIRIgAEHIAWoiQysDACEaIABByABqIkQrAwAhGyAAQagBaiJFKwMAIRMgAEEoaiJGKwMAIRQgAEHoAWoiRysDACEcIABB6ABqIkgrAwAhHSAAKwMIIR4gACAAKwMAIh8gACsDgAEiJaAiFSAAKwNAIiAgACsDwAEiIaAiFqAiCyAAKwMgIiYgACsDoAEiIqAiFyAAKwNgIicgACsD4AEiKKAiI6AiDKAiGCAAKwMQIjAgACsDkAEiMaAiKSAAKwNQIjIgACsD0AEiM6AiKqAiGSAAKwMwIjQgACsDsAEiNaAiKyAAKwNwIjYgACsD8AEiN6AiLKAiJKAiLaE5A4ABIAAgGCAtoDkDACBDIB4gEqAiGCAbIBqgIi2gIi4gFCAToCI4IB0gHKAiOaAiL6EiOiAZICShIhmgOQMAIAAgCyAMoSILIAkgCKAiDCAOIA2gIiSgIjsgDyAKoCI8IBEgEKAiPaAiPqEiP6E5A8ABIEIgLiAvoCIuIDsgPqAiL6E5AwAgRCA6IBmhOQMAIAAgCyA/oDkDQCAAIC4gL6A5AwggRyAYIC2hIgsgFyAjoSIXoCIjIAwgJKEiDCArICyhIhigIhkgKSAqoSIpIDwgPaEiKqEiK6BEzTt/Zp6g5j+iIiygOQMAIAAgFSAWoSIVIDggOaEiFqEiJCArIBmhRM07f2aeoOY/oiIZoDkD4AEgRSALIBehIgsgDCAYoSIXICkgKqAiDKFEzTt/Zp6g5j+iIhihOQMAIAAgFSAWoCIVIBcgDKBEzTt/Zp6g5j+iIhahOQOgASBIICMgLKE5AwAgACAkIBmhOQNgIEYgCyAYoDkDACAAIBUgFqA5AyAgQCAeIBKhIhIgICAhoSIeoCIVIBQgE6EiEyAnICihIhSgIiAgJiAioSIhIB0gHKEiHKEiHaBEzTt/Zp6g5j+iIhagIgsgCSAIoSIIIDIgM6EiCaAiJiAPIAqhIgogNiA3oSIPoCIiIDQgNaEiFyARIBChIhChIhGgRM07f2aeoOY/oiInoCIoREaNMs9rkO0/IDAgMaEiIyAOIA2hIg2hIg4gESAioUTNO39mnqDmP6IiEaAiIkRkqa6m4n3YP6IQ5QkiDKA5AwAgACAfICWhIh8gGyAaoSIaoSIbIB0gIKFEzTt/Zp6g5j+iIh2gIiUgIkRGjTLPa5DtPyAoRGSprqbifdi/ohDlCSIgoDkD8AEgBCASIB6hIhIgEyAUoSITICEgHKAiFKFEzTt/Zp6g5j+iIhyhIh4gCCAJoSIIIAogD6EiCSAXIBCgIgqhRM07f2aeoOY/oiIPoSIQRGSprqbifdg/ICMgDaAiDSAJIAqgRM07f2aeoOY/oiIJoSIKREaNMs9rkO0/ohDlCSIhoDkDACAAIB8gGqAiGiATIBSgRM07f2aeoOY/oiIToSIUIApEZKmupuJ92D8gEERGjTLPa5Dtv6IQ5QkiCqA5A9ABIAYgFSAWoSIQICYgJ6EiH0Rkqa6m4n3YPyAOIBGhIg5ERo0yz2uQ7b+iEOUJIhGhOQMAIAAgGyAdoSIbIA5EZKmupuJ92D8gH0RGjTLPa5DtP6IQ5QkiDqE5A7ABIAEgEiAcoCISIAggD6AiCERGjTLPa5DtPyANIAmgIglEZKmupuJ92L+iEOUJIg2hOQMAIAAgGiAToCIPIAlERo0yz2uQ7T8gCERkqa6m4n3YP6IQ5QkiCKE5A5ABIEEgCyAMoTkDACAAICUgIKE5A3AgBSAeICGhOQMAIAAgFCAKoTkDUCAHIBAgEaA5AwAgACAbIA6gOQMwIAMgEiANoDkDACAAIA8gCKA5AxAgAkEgaiQADAQLIAJBADYCCCACQQRqIAIgAkEIakH82cIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQYzawgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBnNrCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakGs2sIAEIwHAAsLgwMBCHwCQCMAQSBrIgIkACACQQQ2AgAgAiABNgIEAkACQAJAIAFBBEYEQCACIAM2AgQgA0EERw0BIAIgBTYCBCAFQQRHDQIgAiAHNgIEIAdBBEcNAyAAIAArAwAiCiAAKwMgIgugIgggACsDECIMIAArAzAiDaAiCaE5AyAgACAIIAmgOQMAIABBOGoiASsDACEIIAEgACsDCCIJIABBKGoiASsDACIOoSIPIAwgDaEiDKA5AwAgACAKIAuhIgogAEEYaiIDKwMAIgsgCKEiDaE5AzAgASAJIA6gIgkgCyAIoCIIoTkDACADIA8gDKE5AwAgACAKIA2gOQMQIAAgCSAIoDkDCCACQSBqJAAMBAsgAkEANgIIIAJBBGogAiACQQhqQfzZwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBjNrCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakGc2sIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQazawgAQjAcACwufDQI4fAl/AkAjAEEgayICJAAgAkEQNgIAIAIgATYCBAJAAkACQCABQRBGBEAgAiADNgIEIANBEEcNASACIAU2AgQgBUEQRw0CIAIgBzYCBCAHQRBHDQMgAEGYAWoiASsDACEIIABBGGoiAysDACEJIABB2AFqIgQrAwAhDSAAQdgAaiIFKwMAIQ4gAEG4AWoiBisDACEKIABBOGoiBysDACEPIABB+AFqIkArAwAhECAAQfgAaiJBKwMAIREgAEGIAWoiQisDACESIABByAFqIkMrAwAhGiAAQcgAaiJEKwMAIRsgAEGoAWoiRSsDACETIABBKGoiRisDACEcIABB6AFqIkcrAwAhFCAAQegAaiJIKwMAIR0gACsDCCEeIAAgACsDACIfIAArA4ABIiWgIhUgACsDQCIgIAArA8ABIiGgIhagIgsgACsDICImIAArA6ABIiKgIhcgACsDYCInIAArA+ABIiigIiOgIgygIhggACsDECIwIAArA5ABIjGgIikgACsDUCIyIAArA9ABIjOgIiqgIhkgACsDMCI0IAArA7ABIjWgIisgACsD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nqDmP6IiDaE5A1AgBiAQIBShOQMAIAAgDyALoTkDMCABIAggCqA5AwAgACAMIA2gOQMQIAJBIGokAAwECyACQQA2AgggAkEEaiACIAJBCGpB/NnCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakGM2sIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQZzawgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBrNrCABCMBwALCxMAIABBGTYCBCAAQYjiwgA2AgALEAAgACgCACAAKAIEIAEQUAsRACAAKAIAIAAoAgQgARDiCQsRACABIAAoAgAgACgCBBCFCAsiACAAQpzKtJyT4uSVzwA3AwggAELRxe/NzYLN4f8ANwMACyAAIABC5N7HhZDQhd59NwMIIABCwff56MyTstFBNwMACyIAIABCjYSZ6OiU74GjfzcDCCAAQqSF9JiC9Ziku383AwALIAAgAELrnd3g6M63nQc3AwggAEL9xtfm68XEvTM3AwALEwAgAEG4+MIANgIEIAAgATYCAAsQACABIAAoAgAgACgCBBBOCw0AIAAgASACEIsJQQALCgAgACgCuAEQawsNACAAIAEgAhCJCUEACw0AIAAoAgQgACgCAGsLDgAgACgCABoDQAwACwALDgAgADUCAEEBIAEQyQELDgAgADEAAEEBIAEQyQELDgAgACkDAEEBIAEQyQELvAICAn8BfgJ/IAAoAgApAwAhBCMAQYABayIDJAACQAJAAn8CQCABKAIcIgBBEHFFBEAgAEEgcQ0BIARBASABEMkBDAILQQAhAANAIAAgA2pB/wBqQTBB1wAgBKdBD3EiAkEKSRsgAmo6AAAgAEEBayEAIARCEFQgBEIEiCEERQ0ACyAAQYABaiICQYABSw0CIAFBAUGspcMAQQIgACADakGAAWpBACAAaxBfDAELQQAhAANAIAAgA2pB/wBqQTBBNyAEp0EPcSICQQpJGyACajoAACAAQQFrIQAgBEIQVCAEQgSIIQRFDQALIABBgAFqIgJBgAFLDQIgAUEBQaylwwBBAiAAIANqQYABakEAIABrEF8LIANBgAFqJAAMAgsgAkGAAUGcpcMAEL8FAAsgAkGAAUGcpcMAEL8FAAsLCwAgACMAaiQAIwALDgAgAUGogsAAQQkQhQgLDgAgAUGxgsAAQQwQhQgLBwAg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AAAtAAAAPQEQAEsAAAAEAwAASAAAAEZhaWxlZCB0byBjb252ZXJ0IHRoZSB2YWx1ZSB0byBhIHUxMjhGYWlsZWQgdG8gY29udmVydCB0aGUgdmFsdWUgdG8gYSBVMjU2RmFpbGVkIHRvIGNvbnZlcnQgdGhlIHZhbHVlIHRvIGEgaTEyOEZhaWxlZCB0byBjb252ZXJ0IHRoZSB2YWx1ZSB0byBhIEkyNTZWYWx1ZSBkb2VzIG5vdCBmaXQgaW4gYSB1MTI4UHVibGljS2V5IHVzaW5nIGJpZyBwYXJhbWV0ZXJzIG5vdCBjb21wYXRpYmxlIHdhc21jYW5ub3QgYWNjZXNzIGEgVGhyZWFkIExvY2FsIFN0b3JhZ2UgdmFsdWUgZHVyaW5nIG9yIGFmdGVyIGRlc3RydWN0aW9uDQAAAAAAAAABAAAADgAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbG9jYWwucnMAmAMQAE8AAAD2AAAAGgAAAHRmaGUvc3JjL3Nob3J0aW50L2VuZ2luZS9tb2QucnMA+AMQAB8AAAAvAQAAPwAAAHRmaGUvc3JjL2hpZ2hfbGV2ZWxfYXBpL2dsb2JhbF9zdGF0ZS5ycwAoBBAAJwAAAIUAAAAgAAAAKAQQACcAAACJAAAADgAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGUvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yYXlvbi1jb3JlLTEuMTIuMS9zcmMvam9iLnJzAJgEEABbAAAA5gAAACAAAACYBBAAWwAAAGYAAAAgAAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZWNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAAA8AAAAIAAAABAAAAAgAAAAvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yYXlvbi1jb3JlLTEuMTIuMS9zcmMvbGF0Y2gucnMAAAB8BRAAXQAAAAsBAAAqAAAAmAQQAFsAAAB3AAAALgAAABIAAAATAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY29uc29sZV9lcnJvcl9wYW5pY19ob29rLTAuMS43L3NyYy9saWIucnMEBhAAaAAAAJUAAAAOAAAAZmFpbGVkIHRvIHNwYXduIHRocmVhZAAAGQAAAAgAAAAEAAAAGgAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvc2NvcGVkLnJzpAYQAFAAAADCAAAALgAAAGEgc2NvcGVkIHRocmVhZCBwYW5pY2tlZAQHEAAYAAAAGwAAAAwAAAAEAAAAHAAAAB0AAAAeAAAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseQAfAAAAAAAAAAEAAAAgAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAIQHEABLAAAAMwoAAA4AAABhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZUVycm9yaW52YWxpZCB2YWx1ZTogLCBleHBlY3RlZCAAKQgQAA8AAAA4CBAACwAAAGludmFsaWQgbGVuZ3RoIABUCBAADwAAADgIEAALAAAASW8AACEAAAAEAAAABAAAACIAAABJbnZhbGlkVXRmOEVuY29kaW5nACEAAAAEAAAABAAAACMAAABJbnZhbGlkQm9vbEVuY29kaW5nACEAAAAEAAAABAAAACQAAABJbnZhbGlkQ2hhckVuY29kaW5nSW52YWxpZFRhZ0VuY29kaW5nAAAAIQAAAAQAAAAEAAAAJQAAAERlc2VyaWFsaXplQW55Tm90U3VwcG9ydGVkU2l6ZUxpbWl0U2VxdWVuY2VNdXN0SGF2ZUxlbmd0aEN1c3RvbQAhAAAABAAAAAQAAAAmAAAATHdlQ29tcGFjdFB1YmxpY0tleSBjb250YWluZXIgbGVuIG11c3QgYmUgYSBwb3dlciBvZiAyLCBnb3QgbGVuID0gAABYCRAAQgAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2VudGl0aWVzL2x3ZV9jb21wYWN0X3B1YmxpY19rZXkucnMApAkQADcAAABLAAAACQAAAEx3ZUNvbXBhY3RQdWJsaWNLZXkgb25seSBzdXBwb3J0cyBwb3dlciBvZiAyIEx3ZURpbWVuc2lvbi4gR290IGx3ZV9kaW1lbnNpb24gPSAu7AkQAE8AAAA7ChAAAQAAAKQJEAA3AAAArgAAAAkAAABTZWVkZWQgZW50aXRpZXMgYXJlIG5vdCB5ZXQgY29tcGF0aWJsZSB3aXRoIG5vbiBwb3dlciBvZiAyIG1vZHVsaS4AAFwKEABCAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZW50aXRpZXMvc2VlZGVkX2x3ZV9jb21wYWN0X3B1YmxpY19rZXkucnMAAKgKEAA+AAAAaAAAAAkAAABTZWVkZWRMd2VDb21wYWN0UHVibGljS2V5IGNvbnRhaW5lciBsZW4gbXVzdCBiZSBhIHBvd2VyIG9mIDIsIGdvdCBsZW4gPSD4ChAASAAAAKgKEAA+AAAAbQAAAAkAAABTZWVkZWRMd2VDb21wYWN0UHVibGljS2V5IG9ubHkgc3VwcG9ydHMgcG93ZXIgb2YgMiBMd2VEaW1lbnNpb24uIEdvdCBsd2VfZGltZW5zaW9uID0gAAAAWAsQAFUAAAA7ChAAAQAAAKgKEAA+AAAA2AAAAAkAQfCXwAAL2QFhc3NlcnRpb24gZmFpbGVkOiBiaXRzX3Blcl9ibG9jayA8PSBUOjpCSVRTIGFzIHUzMnRmaGUvc3JjL2ludGVnZXIvYmxvY2tfZGVjb21wb3NpdGlvbi5ycwAAACIMEAAnAAAAdAAAAAkAAAAiDBAAJwAAAHgAAAA6AAAAIgwQACcAAACwAAAAIgAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYubnVtX2JpdHNfaW5fbWFzayA8PSBWOjpCSVRTIGFzIHUzMgAAACIMEAAnAAAAvwAAAAkAAAABAEHomcAAC74FdGZoZS9zcmMvaGlnaF9sZXZlbF9hcGkvaW50ZWdlcnMvbW9kLnJzAOgMEAAnAAAAIQAAAC4AAADoDBAAJwAAACEAAAAJAAAAMC4zaGlnaF9sZXZlbF9hcGk6OkNvbXByZXNzZWRGaGVVaW50aGlnaF9sZXZlbF9hcGk6OkNvbXBhY3RGaGVJbnRoaWdoX2xldmVsX2FwaTo6RmhlSW50aGlnaF9sZXZlbF9hcGk6OkNvbXByZXNzZWRGaGVJbnRoaWdoX2xldmVsX2FwaTo6Q29tcGFjdEZoZUJvb2xoaWdoX2xldmVsX2FwaTo6RmhlVWludGhpZ2hfbGV2ZWxfYXBpOjpDb21wYWN0RmhlVWludGhpZ2hfbGV2ZWxfYXBpOjpDb21wcmVzc2VkRmhlQm9vbGhpZ2hfbGV2ZWxfYXBpOjpGaGVCb29sAAAwDRAAAwAAANwNEAAeAAAAT24gZGVzZXJpYWxpemF0aW9uLCBleHBlY3RlZCB0eXBlICwgZ290IHR5cGUgAAAARA4QACIAAABmDhAACwAAAE9uIGRlc2VyaWFsaXphdGlvbiwgZXhwZWN0ZWQgc2VyaWFsaXphdGlvbiB2ZXJzaW9uICwgZ290IHZlcnNpb24gAAAAhA4QADMAAAC3DhAADgAAAMUNEAAXAAAAVA0QAB0AAACnDRAAHgAAAHENEAAWAAAAMw0QACEAAAD6DRAAIQAAAIcNEAAgAAAAGw4QABcAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9jb21tb25zL251bWVyaWMvdW5zaWduZWQucnMYDxAAMAAAAAcBAAABAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9pdGVyLnJzAEGwn8AAC7srYXR0ZW1wdCB0byBkaXZpZGUgYnkgemVybwAAAFgPEABOAAAAWwcAABEAAAAAAAAAYXR0ZW1wdCB0byBkaXZpZGUgYnkgemVybwAAAAAAAABhdHRlbXB0IHRvIGNhbGN1bGF0ZSB0aGUgcmVtYWluZGVyIHdpdGggYSBkaXZpc29yIG9mIHplcm9jaHVuayBzaXplIG11c3QgYmUgbm9uLXplcm85EBAAGwAAAGFzc2VydGlvbiBmYWlsZWQ6IG1pZCA8PSBzZWxmLmxlbigpY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZS9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JheW9uLTEuMTAuMC9zcmMvc2xpY2UvbW9kLnJzAACqEBAAXAAAAEsDAAAoAAAATWlzbWF0Y2hlZCBDaXBoZXJ0ZXh0TW9kdWx1cyBiZXR3ZWVuIGlucHV0IFNlZWRlZEdsd2VDaXBoZXJ0ZXh0ICgpIGFuZCBvdXRwdXQgR2x3ZUNpcGhlcnRleHQgKCkAGBEQAEEAAABZERAAHQAAAHYREAABAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vYWxnb3JpdGhtcy9zZWVkZWRfZ2x3ZV9jaXBoZXJ0ZXh0X2RlY29tcHJlc3Npb24ucnMAkBEQAEcAAAAZAAAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IGNpcGhlcnRleHRfbW9kdWx1cy5pc19jb21wYXRpYmxlX3dpdGhfbmF0aXZlX21vZHVsdXMoKZAREABHAAAAJQAAAAUAAACQERAARwAAAC0AAAAgAAAAkBEQAEcAAAAyAAAACgAAAEV4cGVjdGVkIGFuIHVuc2lnbmVkIGludGVnZXIgd2l0aCAgYml0cywgZm91bmQgIGJpdHMgZHVyaW5nIGRlc2VyaWFsaXphdGlvbiBvZiBDaXBoZXJ0ZXh0TW9kdWx1cywgaGF2ZSB5b3UgbWl4ZWQgdHlwZXMgZHVyaW5nIGRlc2VyaWFsaXphdGlvbj8AAGASEAAiAAAAghIQAA0AAACPEhAAXwAAAEAAAABDYW5ub3QgZ2V0IHNjYWxpbmcgZm9yIG5vbiBwb3dlciBvZiB0d28gbW9kdWx1cyAMExAAMAAAAENpcGhlcnRleHRNb2R1bHVzKDJeRBMQABQAAAB2ERAAAQAAAENpcGhlcnRleHRNb2R1bHVzKAAAaBMQABIAAAB2ERAAAQAAAAAAAABDYW5ub3QgY29udmVydCBhIFBvbHlub21pYWxTaXplIHRoYXQgaXMgbm90IGEgbXVsdGlwbGUgb2YgMiB0byBGb3VyaWVyUG9seW5vbWlhbFNpemWQExAAVAAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2NvbW1vbnMvcGFyYW1ldGVycy5ycwAA7BMQACoAAAB1AAAACQAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2NvbW1vbnMvdHJhaXRzL2NvbnRpZ3VvdXNfZW50aXR5X2NvbnRhaW5lci5ycwAAKBQQAEIAAAB5AAAAHAAAACgUEABCAAAAowAAADsAAAAoFBAAQgAAANMAAAAOAAAAVGhlIGN1cnJlbnQgY29udGFpbmVyIGhhcyAgZW50aXRpZXMsIHdoaWNoIGlzIG5vdCBkaXZpZGFibGUgYnkgdGhlIHJlcXVlc3RlZCBjaHVua19zaXplOiAAAAAoFBAAQgAAAE0BAAAOAAAAKBQQAEIAAACZAQAADgAAACgUEABCAAAApAEAAA0AAAAoFBAAQgAAAK8BAAAOAAAALCBwcmV2ZW50aW5nIGNodW5rc19leGFjdF9tdXQgZnJvbSByZXR1cm5pbmcgYW4gaXRlcmF0b3IuAAAAnBQQABoAAAC2FBAAPwAAADgVEAA5AAAAKBQQAEIAAACjAQAACQAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2VudGl0aWVzL2NvbXByZXNzZWRfbW9kdWx1c19zd2l0Y2hlZF9sd2VfY2lwaGVydGV4dC5yc01pc21hdGNoIGJldHdlZW4gYWN0dWFsKD0pIGFuZCBleHBlY3RlZCg9KSBDb21wcmVzc2VkTW9kdWx1c1N3aXRjaGVkTHdlQ2lwaGVydGV4dCBwYWNrZWRfY29lZmZzIHNpemUA5xUQABkAAAAAFhAAEAAAABAWEAA7AAAAnBUQAEsAAACxAAAACQAAAC4gR290IGNvbnRhaW5lciBsZW5ndGg6ICBhbmQgZ2x3ZV9zaXplOiAsIHBvbHlub21pYWxfc2l6ZTogLlRoZSBwcm92aWRlZCBjb250YWluZXIgbGVuZ3RoIGlzIG5vdCB2YWxpZC4gRXhwZWN0ZWQgbGVuZ3RoIG9mIC5Hb3QgY29udGFpbmVyIGxlbmd0aDogIGFuZCBkZWNvbXBfbGV2ZWxfY291bnQ6ICwgIGdsd2Vfc2l6ZTogR290IGFuIGVtcHR5IGNvbnRhaW5lciB0byBjcmVhdGUgYSBHbHdlQm9keS0XEAArAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZW50aXRpZXMvZ2x3ZV9jaXBoZXJ0ZXh0LnJzYBcQ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cmVhdGUgYSBTZWVkZWRHbHdlQ2lwaGVydGV4dAAEIhAANwAAALwhEAA3AAAAggAAAAkAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9lbnRpdGllcy9zZWVkZWRfZ2x3ZV9jaXBoZXJ0ZXh0X2xpc3QucnNUIhAAPAAAAHQAAAAJAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZW50aXRpZXMvc2VlZGVkX2x3ZV9jaXBoZXJ0ZXh0X2xpc3QucnMAoCIQADsAAABnAAAACQAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2VudGl0aWVzL3NlZWRlZF9sd2Vfa2V5c3dpdGNoX2tleS5ycwAAAOwiEAA5AAAAigAAAAkAAABHb3QgYW4gZW1wdHkgY29udGFpbmVyIHRvIGNyZWF0ZSBhbiBTZWVkZWRMd2VLZXlzd2l0Y2hLZXkAAAA4IxAAOQAAAOwiEAA5AAAAjwAAAAkAAADsIhAAOQAAAJQAAAANAAAAVGhlIHByb3ZpZGVkIGNvbnRhaW5lciBsZW5ndGggaXMgbm90IHZhbGlkLiBJdCBuZWVkcyB0byBiZSBkaXZpZGFibGUgYnkgZGVjb21wX2xldmVsX2NvdW50OiCcIxAAXAAAAHQWEAAYAAAABhcQABkAAACvFhAAAQAAAOwiEAA5AAAAkwAAAAkAAADsIhAAOQAAALgAAAAWAAAAdGZoZS9zcmMvaW50ZWdlci9jaXBoZXJ0ZXh0L2NvbXBhY3RfbGlzdC5ycwA4JBAAKwAAAEIAAAAJAAAAdGZoZS9zcmMvc2hvcnRpbnQvY2lwaGVydGV4dC9jb21wYWN0X2xpc3QucnN0JBAALAAAADsAAAAOAAAAOAAAADkAAAAEAAAABAAAACUAAABMd2VTaXplTHdlRGltZW5zaW9uR2x3ZVNpemVQb2x5bm9taWFsU2l6ZURlY29tcG9zaXRpb25MZXZlbENvdW50dmFyaWFudCBpbmRleCAwIDw9IGkgPCAyBCUQABgAAAA5AAAACAAAAAQAAAA6AAAAPAAAAAAAAAABAAAAPQAAADwAAAAAAAAAAQAAAD4AAAA/AAAAQAAAAEEAAAD//////////2AlEABB+MrAAAvbLS9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy9pby9pbXBscy5ycwB4JRAASwAAACkBAAARAAAAZmFpbGVkIHRvIGZpbGwgd2hvbGUgYnVmZmVyANQlEAAbAAAAJQAAAE9uY2UgaW5zdGFuY2UgaGFzIHByZXZpb3VzbHkgYmVlbiBwb2lzb25lZAAA/CUQACoAAABvbmUtdGltZSBpbml0aWFsaXphdGlvbiBtYXkgbm90IGJlIHBlcmZvcm1lZCByZWN1cnNpdmVseTAmEAA4AAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZS9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy9zeW5jL21wbWMvbGlzdC5yc5smEABRAAAA7wAAAEMAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlmyYQAFEAAAC/AQAAKgAAAJsmEABRAAAAwQEAADkAAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlAEIAAAAIAAAABAAAAAoAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L3N0ZC9zcmMvc3luYy9tcG1jL3plcm8ucnMAAACAJxAAUQAAAB4BAAArAAAAgCcQAFEAAACEAAAANgAAAIAnEABRAAAAfQAAADYAAACAJxAAUQAAAOkAAAArAAAAgCcQAFEAAAAIAQAAJgAAAIAnEABRAAAACgEAAEsAAACAJxAAUQAAAAoBAAAnAAAAgCcQAFEAAAAOAQAASwAAAIAnEABRAAAADgEAACcAAACAJxAAUQAAABQBAABAAAAAgCcQAFEAAACsAAAALQAAAIAnEABRAAAApQAAACsAAACAJxAAUQAAAMEAAAAmAAAAgCcQAFEAAADDAAAASQAAAIAnEABRAAAAxAAAAEcAAACAJxAAUQAAAMMAAAAnAAAAgCcQAFEAAADIAAAASQAAAIAnEABRAAAAyQAAAEcAAACAJxAAUQAAAMgAAAAnAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3N5bmMvbXBtYy9hcnJheS5ycwAABCkQAFIAAACQAQAAKgAAAAQpEABSAAAAkgEAADkAAAAEKRAAUgAAAF0BAAAqAAAABCkQAFIAAABfAQAANwAAAEMAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L3N0ZC9zcmMvc3luYy9tcG1jL3dha2VyLnJzAACcKRAAUgAAAF0AAAArAAAAnCkQAFIAAAA7AAAAKAAAAEIAAAAIAAAABAAAAAoAAACcKRAAUgAAAL0AAAArAAAAnCkQAFIAAACjAAAAKwAAAJwpEABSAAAArgAAAC8AAACcKRAAUgAAAJoAAAArAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3N5bmMvbXBtYy9jb250ZXh0LnJzYCoQAFQAAAAxAAAAHgAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy9zeW5jL29uY2UucnPEKhAATAAAANAAAAAxAAAAxCoQAEwAAACVAAAAMgAAAABjYW5ub3QgcmVjdXJzaXZlbHkgYWNxdWlyZSBtdXRleAAAADErEAAgAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3N5cy93YXNtLy4uL3Vuc3VwcG9ydGVkL2xvY2tzL211dGV4LnJzAABcKxAAZgAAABQAAAAJAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYmluY29kZS0xLjMuMy9zcmMvZGUvcmVhZC5ycwDUKxAAWwAAAE4AAAANAAAA/////y9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy9zeXMvd2FzbS8uLi91bnN1cHBvcnRlZC9sb2Nrcy9yd2xvY2sucnMARCwQAGcAAAA/AAAACQAAAE1pc21hdGNoZWQgTHdlRGltZW5zaW9uIGJldHdlZW4gaW5wdXQgTHdlU2VjcmV0S2V5ICBhbmQgb3V0cHV0IEx3ZVB1YmxpY0tleSC8LBAAMwAAAO8sEAAZAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vYWxnb3JpdGhtcy9sd2VfcHVibGljX2tleV9nZW5lcmF0aW9uLnJzGC0QADwAAAAcAAAABQAAACBhbmQgb3V0cHV0IFNlZWRlZEx3ZVB1YmxpY0tleSAAvCwQADMAAABkLRAAHwAAABgtEAA8AAAApAAAAAUAAABHb3QgYW4gZW1wdHkgY29udGFpbmVyIHRvIGNyZWF0ZSBhbiBMd2VQdWJsaWNLZXmkLRAAMAAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2VudGl0aWVzL2x3ZV9wdWJsaWNfa2V5LnJzANwtEAAvAAAAZAAAAAkAAABTZWVkZWQgZW50aXRpZXMgYXJlIG5vdCB5ZXQgY29tcGF0aWJsZSB3aXRoIG5vbiBwb3dlciBvZiAyIG1vZHVsaS4AABwuEABCAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZW50aXRpZXMvc2VlZGVkX2x3ZV9wdWJsaWNfa2V5LnJzAABoLhAANgAAAIoAAAAJAAAAR290IGFuIGVtcHR5IGNvbnRhaW5lciB0byBjcmVhdGUgYSBTZWVkZWRMd2VQdWJsaWNLZXkAAACwLhAANQAAAGguEAA2AAAAjwAAAAkAAAA8AAAAAAAAAAEAAABEAAAARQAAAHRmaGUvc3JjL3Nob3J0aW50L3BhcmFtZXRlcnMvbW9kLnJzV29wYnNPbmx5IHBhcmFtZXRlcnMgZG8gbm90IGhhdmUgYSBNYXhOb2lzZUxldmVsIGluZm9ybWF0aW9uADcvEAA8AAAAFC8QACMAAAABAgAAEQAAAHN0cnVjdCBTZXJpYWxpYXphYmxlTHdlQ2lwaGVydGV4dE1vZHVsdXMgd2l0aCAyIGVsZW1lbnRzjC8QADgAAABGAAAACAAAAAQAAAA6AAAAc3RydWN0IEdhdXNzaWFuIHdpdGggMiBlbGVtZW50cwDcLxAAHwAAAHN0cnVjdCBUVW5pZm9ybSB3aXRoIDIgZWxlbWVudHMABDAQAB8AAABMd2VEaW1lbnNpb25GAAAABAAAAAQAAAAlAAAAc3RydWN0IENvbXByZXNzZWRNb2R1bHVzU3dpdGNoZWRMd2VDaXBoZXJ0ZXh0IHdpdGggNCBlbGVtZW50cwAAAEgwEAA9AAAAc3RydWN0IEdsd2VDaXBoZXJ0ZXh0IHdpdGggMyBlbGVtZW50cwAAAJAwEAAlAAAAc3RydWN0IEdsd2VTZWNyZXRLZXkgd2l0aCAyIGVsZW1lbnRzwDAQACQAAABzdHJ1Y3QgTHdlQ2lwaGVydGV4dCB3aXRoIDIgZWxlbWVudHPsMBAAJAAAAHN0cnVjdCBMd2VDaXBoZXJ0ZXh0TGlzdCB3aXRoIDMgZWxlbWVudHMYMRAAKAAAAHN0cnVjdCBMd2VDb21wYWN0Q2lwaGVydGV4dExpc3Qgd2l0aCA0IGVsZW1lbnRzAEgxEAAvAAAAc3RydWN0IEx3ZUNvbXBhY3RQdWJsaWNLZXkgd2l0aCAxIGVsZW1lbnQAAACAMRAAKQAAAHN0cnVjdCBMd2VQdWJsaWNLZXkgd2l0aCAxIGVsZW1lbnQAALQxEAAiAAAAc3RydWN0IEx3ZVNlY3JldEtleSB3aXRoIDEgZWxlbWVudAAA4DEQACIAAABzdHJ1Y3QgU2VlZGVkR2dzd0NpcGhlcnRleHRMaXN0IHdpdGggNyBlbGVtZW50cwAMMhAALwAAAHN0cnVjdCBTZWVkZWRHbHdlQ2lwaGVydGV4dCB3aXRoIDQgZWxlbWVudHMARDIQACsAAABzdHJ1Y3QgU2VlZGVkTHdlQm9vdHN0cmFwS2V5IHdpdGggMSBlbGVtZW50AHgyEAArAAAAc3RydWN0IFNlZWRlZEx3ZUNpcGhlcnRleHQgd2l0aCA0IGVsZW1lbnRzAACsMhAAKgAAAHN0cnVjdCBTZWVkZWRMd2VDaXBoZXJ0ZXh0TGlzdCB3aXRoIDQgZWxlbWVudHMAAOAyEAAuAAAAc3RydWN0IFNlZWRlZEx3ZUNvbXBhY3RQdWJsaWNLZXkgd2l0aCAxIGVsZW1lbnQAGDMQAC8AAABzdHJ1Y3QgU2VlZGVkTHdlS2V5c3dpdGNoS2V5IHdpdGggNiBlbGVtZW50c1AzEAAsAAAAc3RydWN0IFNlZWRlZEx3ZU11bHRpQml0Qm9vdHN0cmFwS2V5IHdpdGggMiBlbGVtZW50c4QzEAA0AAAAc3RydWN0IFNlZWRlZEx3ZVB1YmxpY0tleSB3aXRoIDEgZWxlbWVudMAzEAAoAAAAc3RydWN0IEJhc2VSYWRpeENpcGhlcnRleHQgd2l0aCAxIGVsZW1lbnQAAADwMxAAKQAAAHN0cnVjdCBCYXNlU2lnbmVkUmFkaXhDaXBoZXJ0ZXh0IHdpdGggMSBlbGVtZW50ACQ0EAAvAAAAc3RydWN0IENvbXBhY3RDaXBoZXJ0ZXh0TGlzdCB3aXRoIDIgZWxlbWVudHNcNBAALAAAAHN0cnVjdCBDbGllbnRLZXkgd2l0aCAxIGVsZW1lbnQAkDQQAB8AAABzdHJ1Y3QgQ29tcGFjdFB1YmxpY0tleSB3aXRoIDEgZWxlbWVudAAAuDQQACYAAABzdHJ1Y3QgQ29tcHJlc3NlZENvbXBhY3RQdWJsaWNLZXkgd2l0aCAxIGVsZW1lbnToNBAAMAAAAHN0cnVjdCBDb21wcmVzc2VkUHVibGljS2V5IHdpdGggMSBlbGVtZW50AAAAIDUQACkAAABzdHJ1Y3QgUHVibGljS2V5IHdpdGggMSBlbGVtZW50AFQ1EAAfAAAAc3RydWN0IENvbXByZXNzZWRTZXJ2ZXJLZXkgd2l0aCAxIGVsZW1lbnQAAAB8NRAAKQAAAHN0cnVjdCBDb21wYWN0Q2lwaGVydGV4dExpc3Qgd2l0aCA2IGVsZW1lbnRzsDUQACwAAABzdHJ1Y3QgQ29tcHJlc3NlZENpcGhlcnRleHQgd2l0aCA2IGVsZW1lbnRzAOQ1EAArAAAAc3RydWN0IENvbXByZXNzZWRNb2R1bHVzU3dpdGNoZWRDaXBoZXJ0ZXh0IHdpdGggNSBlbGVtZW50cwAAGDYQADoAAABzdHJ1Y3QgQ2lwaGVydGV4dCB3aXRoIDYgZWxlbWVudHMAAABcNhAAIQAAAHN0cnVjdCBDbGllbnRLZXkgd2l0aCAzIGVsZW1lbnRziDYQACAAAABzdHJ1Y3QgTXVsdGlCaXRQQlNQYXJhbWV0ZXJzIHdpdGggMTcgZWxlbWVudHMAAACwNhAALQAAAHN0cnVjdCBXb3Bic1BhcmFtZXRlcnMgd2l0aCAxOCBlbGVtZW50cwDoNhAAJwAAAHN0cnVjdCBDbGFzc2ljUEJTUGFyYW1ldGVycyB3aXRoIDE1IGVsZW1lbnRzGDcQACwAAAB2YXJpYW50IGluZGV4IDAgPD0gaSA8IDJMNxAAGAAAAHZhcmlhbnQgaW5kZXggMCA8PSBpIDwgM2w3EAAYAAAAdHVwbGUgdmFyaWFudCBTaG9ydGludFBhcmFtZXRlclNldElubmVyOjpQQlNBbmRXb3BicyB3aXRoIDIgZWxlbWVudHOMNxAARAAAAHN0cnVjdCBTaG9ydGludFBhcmFtZXRlclNldCB3aXRoIDEgZWxlbWVudAAA2DcQACoAAABzdHJ1Y3QgQ29tcGFjdFB1YmxpY0tleSB3aXRoIDMgZWxlbWVudHMADDgQACcAAABzdHJ1Y3QgQ29tcHJlc3NlZENvbXBhY3RQdWJsaWNLZXkgd2l0aCAzIGVsZW1lbnRzAAAAPDgQADEAAABzdHJ1Y3QgQ29tcHJlc3NlZFB1YmxpY0tleSB3aXRoIDMgZWxlbWVudHMAAHg4EAAqAAAAc3RydWN0IFB1YmxpY0tleSB3aXRoIDMgZWxlbWVudHOsOBAAIAAAAHN0cnVjdCB2YXJpYW50IFNob3J0aW50Q29tcHJlc3NlZEJvb3RzdHJhcHBpbmdLZXk6Ok11bHRpQml0IHdpdGggMiBlbGVtZW50cwDUOBAASwAAAHN0cnVjdCBDb21wcmVzc2VkU2VydmVyS2V5IHdpdGggOCBlbGVtZW50cwAAKDkQACoAAABzdHJ1Y3QgSW50ZWdlckNsaWVudEtleSB3aXRoIDIgZWxlbWVudHMAXDkQACcAAABzdHJ1Y3QgSW50ZWdlckNvbXByZXNzZWRTZXJ2ZXJLZXkgd2l0aCAxIGVsZW1lbnSMORAAMAAAAHN0cnVjdCBJbnRlZ2VyQ29tcGFjdFB1YmxpY0tleSB3aXRoIDEgZWxlbWVudAAAAMQ5EAAtAAAAc3RydWN0IEludGVnZXJDb21wcmVzc2VkQ29tcGFjdFB1YmxpY0tleSB3aXRoIDEgZWxlbWVudAD8ORAANwAAAHN0cnVjdCBGaGVCb29sIHdpdGggMSBlbGVtZW50AAAAPDoQAB0AAABzdHJ1Y3QgQ29tcGFjdEZoZUJvb2wgd2l0aCAxIGVsZW1lbnRkOhAAJAAAAHN0cnVjdCBDb21wYWN0RmhlQm9vbExpc3Qgd2l0aCAxIGVsZW1lbnSQOhAAKAAAAHN0cnVjdCBGaGVJbnQgd2l0aCAyIGVsZW1lbnRzAAAAwDoQAB0AAABzdHJ1Y3QgQ29tcGFjdEZoZUludCB3aXRoIDIgZWxlbWVudHPoOhAAJAAAAHN0cnVjdCBDb21wYWN0RmhlSW50TGlzdCB3aXRoIDIgZWxlbWVudHMUOxAAKAAAAHN0cnVjdCBDb21wcmVzc2VkRmhlSW50IHdpdGggMiBlbGVtZW50cwBEOxAAJwAAAHN0cnVjdCBGaGVVaW50IHdpdGggMiBlbGVtZW50cwAAdDsQAB4AAABzdHJ1Y3QgQ29tcGFjdEZoZVVpbnQgd2l0aCAyIGVsZW1lbnRzAAAAnDsQACUAAABzdHJ1Y3QgQ29tcGFjdEZoZVVpbnRMaXN0IHdpdGggMiBlbGVtZW50cwAAAMw7EAApAAAAc3RydWN0IENvbXByZXNzZWRGaGVVaW50IHdpdGggMiBlbGVtZW50cwA8EAAoAAAAYXNzZXJ0aW9uIGZhaWxlZDogbWlkIDw9IHNlbGYubGVuKCkAQeD4wAALZ2F0dGVtcHQgdG8gY2FsY3VsYXRlIHRoZSByZW1haW5kZXIgd2l0aCBhIGRpdmlzb3Igb2YgemVyb2NhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUwPBAAQdD5wAALggVhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvdGZoZS9zcmMvc2hvcnRpbnQvZW5naW5lL2NsaWVudF9zaWRlLnJz6TwQACcAAABFAAAAFQAAAOk8EAAnAAAASgAAABEAAADpPBAAJwAAAHYAAAAdAAAA6TwQACcAAAC6AAAAHQAAAOk8EAAnAAAAvwAAABUAAAB0ZmhlL3NyYy9zaG9ydGludC9lbmdpbmUvcHVibGljX3NpZGUucnMAYD0QACcAAACRAAAAHQAAAGA9EAAnAAAAlgAAABUAAABgPRAAJwAAAMEAAAAdAAAAYD0QACcAAADGAAAAFQAAAHRmaGUvc3JjL3Nob3J0aW50L2VuZ2luZS9zZXJ2ZXJfc2lkZS5ycwDIPRAAJwAAALwAAABHAAAAdGZoZS9zcmMvc2hvcnRpbnQvZW5naW5lL21vZC5ycwAAPhAAHwAAAD0AAAAaAAAAAD4QAB8AAABUAAAABQAAAAA+EAAfAAAAWAAAAAUAAAAAPhAAHwAAAGUAAAAUAAAAAD4QAB8AAAB6AAAAHwAAAAA+EAAfAAAAdAAAABgAAABUaGUgc2VydmVyIGtleSB3YXMgbm90IHByb3Blcmx5IGluaXRpYWxpemVkLgpEaWQgeW91IGZvcmdldCB0byBjYWxsIGBzZXRfc2VydmVyX2tleWAgaW4gdGhlIGN1cnJlbnQgdGhyZWFkID8KICAgICAgICAgICAgAAAAgD4QAHkAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL2l0ZXIucnMAQeD+wAALqQxhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvdG9vIG1hbnkgdmFsdWVzIHB1c2hlZCB0byBjb25zdW1lcgB5PxAAIgAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JheW9uLTEuMTAuMC9zcmMvaXRlci9jb2xsZWN0L2NvbnN1bWVyLnJzpD8QAGgAAAB+AAAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IGluZGV4IDw9IGxlbgAApD8QAGgAAABhAAAADQAAAGFsaWduX29mZnNldDogYWxpZ24gaXMgbm90IGEgcG93ZXItb2YtdHdvAAAATEAQACkAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL3B0ci9tdXRfcHRyLnJzAIBAEABPAAAAYwYAAA0AAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAASAAAAAQAAAAEAAAASQAAAGV4cGVjdGVkICB0b3RhbCB3cml0ZXMsIGJ1dCBnb3QgSEEQAAkAAABRQRAAFwAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JheW9uLTEuMTAuMC9zcmMvaXRlci9jb2xsZWN0L21vZC5ycwB4QRAAYwAAAGQAAAAFAAAAYXNzZXJ0aW9uIGZhaWxlZDogdmVjLmNhcGFjaXR5KCkgLSBzdGFydCA+PSBsZW4ApD8QAGgAAAASAAAACQAAAAQ/EABOAAAAWwcAABEAAAAKcmVxdWVzdGVkIGFsaWdubWVudCBpcyBsZXNzIHRoYW4gdGhlIG1pbmltdW0gdmFsaWQgYWxpZ25tZW50IGZvciBgYDoKIC0gcmVxdWVzdGVkIGFsaWdubWVudDogCiAtIG1pbmltdW0gYWxpZ25tZW50OiAKAAA8QhAAQwAAAH9CEAAbAAAAmkIQABcAAACxQhAAAQAAAApidWZmZXIgaXMgbm90IGxhcmdlIGVub3VnaCB0byBhbGxvY2F0ZSBhbiBhcnJheSBvZiB0eXBlIGBgIG9mIHRoZSByZXF1ZXN0ZWQgbGVuZ3RoOgogLSByZW1haW5pbmcgYnVmZmVyIGxlbmd0aCAoYWZ0ZXIgYWRqdXN0aW5nIGZvciBhbGlnbm1lbnQpOiAsCiAtIHJlcXVlc3RlZCBhcnJheSBsZW5ndGg6ICAoIGJ5dGVzKSwKAAAA1EIQADoAAAAOQxAAVwAAAGVDEAAdAAAAgkMQAAIAAACEQxAACQAAAApidWZmZXIgaXMgbm90IGxhcmdlIGVub3VnaCB0byBhY2NvbW9kYXRlIHRoZSByZXF1ZXN0ZWQgYWxpZ25tZW50CiAtIGJ1ZmZlciBsZW5ndGg6IAogLSByZXF1ZXN0ZWQgYWxpZ25tZW50OiAKIC0gYnl0ZSBvZmZzZXQgZm9yIGFsaWdubWVudDoguEMQAFQAAAAMRBAAGQAAACVEEAAfAAAAsUIQAAEAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9lbnRpdGllcy9jb21wcmVzc2VkX21vZHVsdXNfc3dpdGNoZWRfbHdlX2NpcGhlcnRleHQucnMAZEQQAEsAAAD5AAAAFQAAAGREEABLAAAA+wAAADgAAABkRBAASwAAAP4AAAArAAAAZEQQAEsAAADcAAAAJwAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2ZmdF9pbXBsL2ZmdDY0L2NyeXB0by9ib290c3RyYXAucnMA8EQQADcAAAAFAQAAFgAAAPBEEAA3AAAACAEAACMAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9mZnRfaW1wbC9mZnQ2NC9jcnlwdG8vZ2dzdy5ycwAASEUQADIAAAAqAgAAFgBBsIvBAAsBAQBB0IvBAAvVPmFyZ3VtZW50IG9mIGludGVnZXIgbG9nYXJpdGhtIG11c3QgYmUgcG9zaXRpdmUAANBFEAAuAAAAdGZoZS9zcmMvaW50ZWdlci9iaWdpbnQvc3RhdGljX3NpZ25lZC5ycwhGEAAoAAAATwAAAAkAAAAzNDAyODIzNjY5MjA5Mzg0NjM0NjMzNzQ2MDc0MzE3NjgyMTE0NTUxMjh0ZmhlL3NyYy9qc19vbl93YXNtX2FwaS9qc19oaWdoX2xldmVsX2FwaS9pbnRlZ2Vycy5ycwBqRhAANQAAABoAAAAtAAAAdmFsdWUgaXMgb3V0IG9mIHJhbmdlIGZvciB1MjU2AABqRhAANQAAAEsAAAAtAAAAakYQADUAAABNAAAALwAAAAEAAAB0ZmhlL3NyYy9oaWdoX2xldmVsX2FwaS9ib29sZWFucy9jb21wYWN0LnJzAPRGEAArAAAAiAAAABEAAAD0RhAAKwAAAIkAAABaAAAARmFpbGVkIHRvIGNvbnZlcnQgdGhlIHZhbHVlIHRvIGEgdTEyOEZhaWxlZCB0byBjb252ZXJ0IHRoZSB2YWx1ZSB0byBhIFUyNTZGYWlsZWQgdG8gY29udmVydCB0aGUgdmFsdWUgdG8gYSBpMTI4RmFpbGVkIHRvIGNvbnZlcnQgdGhlIHZhbHVlIHRvIGEgSTI1NlZhbHVlIGlzIG5vdCBhIGJvb2xlYW5Ob25lU29tZQAASgAAAAQAAAAEAAAAJAAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvY29yZS9zcmMvbnVtL21vZC5ycwAESBAASwAAAJEEAAAFAAAAYXR0ZW1wdCB0byBkaXZpZGUgYnkgemVybwAAAARIEABLAAAAqQQAAAUAAAAAAAAAYXR0ZW1wdCB0byBjYWxjdWxhdGUgdGhlIHJlbWFpbmRlciB3aXRoIGEgZGl2aXNvciBvZiB6ZXJvYXNzZXJ0aW9uIGZhaWxlZDogbWlkIDw9IHNlbGYubGVuKClhc3NlcnRpb24gZmFpbGVkOiBzdGVwICE9IDAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL2l0ZXIvYWRhcHRlcnMvc3RlcF9ieS5ycwdJEABZAAAAIQAAAAkAAABjaHVuayBzaXplIG11c3QgYmUgbm9uLXplcm8AcEkQABsAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlAFYAAAABAAAAAQAAAFcAAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlAFgAAAAEAAAABAAAAFkAAABaAAAAAAAAAAEAAABbAAAAXAAAAAgAAAAEAAAACAAAAF0AAAAIAAAABAAAAAoAAABdAAAACAAAAAQAAAAKAAAAWAAAAAQAAAAEAAAAXgAAAFgAAAAEAAAABAAAAF8AAABYAAAABAAAAAQAAABgAAAAWAAAAAQAAAAEAAAAYQAAAFgAAAAEAAAABAAAAGIAAABTaXplT3ZlcmZsb3dGb3JrVG9vTGFyZ2VaZXJvQ2hpbGRyZW5Db3VudFplcm9CeXRlc1BlckNoaWxkIGluIG91dHB1dCwgYW5kICBpbiBzZWNyZXQga2V5LnRmaGUvc3JjL2NvcmVfY3J5cHRvL2FsZ29yaXRobXMvZ2dzd19lbmNyeXB0aW9uLnJzRmFpbGVkIHRvIHNwbGl0IGdlbmVyYXRvciBpbnRvIGdnc3cgbGV2ZWxzYXNzZXJ0aW9uIGZhaWxlZDogY2lwaGVydGV4dF9tb2R1bHVzLmlzX2NvbXBhdGlibGVfd2l0aF9uYXRpdmVfbW9kdWx1cygpRmFpbGVkIHRvIHNwbGl0IGdlbmVyYXRvciBpbnRvIGdsd2X1ShAAMgAAAHIBAAAKAAAA9UoQADIAAAB5AQAABQAAAPVKEAAyAAAAhQEAAC4AAAD1ShAAMgAAAIoBAAAOAAAA9UoQADIAAADxAgAACQAAAPVKEAAyAAAA6QIAABcAAABNaXNtYXRjaGVkIG1vZHVsaSBiZXR3ZWVuIG91dHB1dF9tYXNrICgpIGFuZCBvdXRwdXRfYm9keSAoKQAcTBAAJwAAAENMEAATAAAAVkwQAAEAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL2dsd2VfZW5jcnlwdGlvbi5ycwAAcEwQADIAAAAlAAAABQAAAHBMEAAyAAAALwAAAAUAAABwTBAAMgAAADoAAAAwAAAATWlzbWF0Y2ggYmV0d2VlbiBHbHdlRGltZW5zaW9uIG9mIG91dHB1dCBjaXBoZXJ0ZXh0IGFuZCBpbnB1dCBzZWNyZXQga2V5LiBHb3QgAADUTBAATgAAANZKEAAQAAAA5koQAA8AAABNaXNtYXRjaCBiZXR3ZWVuIFBvbHlub21pYWxTaXplIG9mIG91dHB1dCBjaXBoZXJ0ZXh0IGFuZCBpbnB1dCBzZWNyZXQga2V5LiBHb3QgADxNEABPAAAA1koQABAAAADmShAADwAAAHBMEAAyAAAAzgAAAAUAAABwTBAAMgAAANUAAAAFAAAATWlzbWF0Y2hlZCBMd2VEaW1lbnNpb24gYmV0d2VlbiBpbnB1dCBMV0Ugc2VjcmV0IGtleSBhbmQgTFdFIGJvb3RzdHJhcCBrZXkuIElucHV0IExXRSBzZWNyZXQga2V5IEx3ZURpbWVuc2lvbjogLCBMV0UgYm9vdHN0cmFwIGtleSBpbnB1dCBMd2VEaW1lbnNpb24gLgDETRAAbwAAADNOEAAnAAAAWk4QAAEAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL2x3ZV9ib290c3RyYXBfa2V5X2dlbmVyYXRpb24ucnNNaXNtYXRjaGVkIEdsd2VTaXplIGJldHdlZW4gb3V0cHV0IEdMV0Ugc2VjcmV0IGtleSBhbmQgTFdFIGJvb3RzdHJhcCBrZXkuIE91dHB1dCBHTFdFIHNlY3JldCBrZXkgR2x3ZVNpemU6ICwgTFdFIGJvb3RzdHJhcCBrZXkgR2x3ZVNpemUgALNOEABrAAAAHk8QAB0AAABaThAAAQAAAE1pc21hdGNoZWQgUG9seW5vbWlhbFNpemUgYmV0d2VlbiBvdXRwdXQgR0xXRSBzZWNyZXQga2V5IGFuZCBMV0UgYm9vdHN0cmFwIGtleS4gT3V0cHV0IEdMV0Ugc2VjcmV0IGtleSBQb2x5bm9taWFsU2l6ZTogLCBMV0UgYm9vdHN0cmFwIGtleSBQb2x5bm9taWFsU2l6ZSAAAFRPEAB3AAAAy08QACMAAABaThAAAQAAAHROEAA/AAAAjgEAAAUAAAB0ThAAPwAAAJYBAAAFAAAAdE4QAD8AAACeAQAABQAAAHROEAA/AAAAsgEAAAoAAABhc3NlcnRpb24gZmFpbGVkOiBvdXRwdXRfbHdlX2NpcGhlcnRleHRfbGlzdC5lbnRpdHlfY291bnQoKSA9PQogICAgaW5wdXRfbHdlX2NvbXBhY3RfY2lwaGVydGV4dF9saXN0Lmx3ZV9jaXBoZXJ0ZXh0X2NvdW50KCkuMHRmaGUvc3JjL2NvcmVfY3J5cHRvL2FsZ29yaXRobXMvbHdlX2NvbXBhY3RfY2lwaGVydGV4dF9saXN0X2V4cGFuc2lvbi5ycwAAAMVQEABIAAAAFAAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiBvdXRwdXRfbHdlX2NpcGhlcnRleHRfbGlzdC5sd2Vfc2l6ZSgpID09CiAgICBpbnB1dF9sd2VfY29tcGFjdF9jaXBoZXJ0ZXh0X2xpc3QubHdlX3NpemUoKQDFUBAASAAAABkAAAAFAAAAxVAQAEgAAAAsAAAAHwAAAE1pc21hdGNoZWQgbW9kdWxpIGJldHdlZW4gbWFzayAoKSBhbmQgYm9keSAorFEQACAAAADMURAADAAAAFZMEAABAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vYWxnb3JpdGhtcy9sd2VfZW5jcnlwdGlvbi5ycwAAAPBREAAxAAAAJQAAAAUAAADwURAAMQAAAFgAAAAFAAAA8FEQADEAAABiAAAABQAAAPBREAAxAAAAeAAAADQAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2Rl8FEQADEAAAB8AAAAKQAAAPBREAAxAAAAlAAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiAhY2lwaGVydGV4dF9tb2R1bHVzLmlzX2NvbXBhdGlibGVfd2l0aF9uYXRpdmVfbW9kdWx1cygpAAAA8FEQADEAAACeAAAABQAAAE1pc21hdGNoIGJldHdlZW4gTHdlRGltZW5zaW9uIG9mIG91dHB1dCBjaXBoZXJ0ZXh0IGFuZCBpbnB1dCBzZWNyZXQga2V5LiBHb3QgAAAACFMQAE0AAADWShAAEAAAAOZKEAAPAAAA8FEQADEAAAD/AAAABQAAAPBREAAxAAAAJwIAAAUAAADwURAAMQAAADEC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Q2lwaGVydGV4dCBpbnB1dCBMd2VEaW1lbnNpb24gLiBGb3VyaWVyTHdlTXVsdGlCaXRCb290c3RyYXBLZXkgaW5wdXQgTHdlRGltZW5zaW9uIIBaEABAAAAAwFoQADQAAABaThAAAQAAABRaEABLAAAAMAEAAAUAAABNaXNtYXRjaGVkIEdsd2VTaXplLiBBY2N1bXVsYXRvciBHbHdlU2l6ZSAuIEZvdXJpZXJMd2VNdWx0aUJpdEJvb3RzdHJhcEtleSBHbHdlU2l6ZSAcWxAAKgAAAEZbEAAqAAAAWk4QAAEAAAAUWhAASwAAADkBAAAFAAAATWlzbWF0Y2hlZCBQb2x5bm9taWFsU2l6ZS4gQWNjdW11bGF0b3IgUG9seW5vbWlhbFNpemUgLiBGb3VyaWVyTHdlTXVsdGlCaXRCb290c3RyYXBLZXkgUG9seW5vbWlhbFNpemUgAACYWxAANgAAAM5bEAAwAAAAWk4QAAEAAAAUWhAASwAAAEIBAAAFAAAATWlzbWF0Y2hlZCBDaXBoZXJ0ZXh0TW9kdWx1cyBiZXR3ZWVuIGlucHV0ICgpIGFuZCBhY2N1bXVsYXRvciAoAChcEAAsAAAAVFwQABMAAABWTBAAAQAAABRaEABLAAAASwEAAAUAAABHb3QgdGhyZWFkX2NvdW50ID09IDAsIHRoaXMgaXMgbm90IHN1cHBvcnRlZJBcEAAsAAAAFFoQAEsAAABTAQAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IGFjY3VtdWxhdG9yLmNpcGhlcnRleHRfbW9kdWx1cygpLmlzX2NvbXBhdGlibGVfd2l0aF9uYXRpdmVfbW9kdWx1cygpAAAUWhAASwAAAFgBAAAFAAAAYXNzZXJ0aW9uIGZhaWxlZDogd29ya19xdWV1ZS5sZW4oKSA9PSBsd2VfbWFzay5sd2VfZGltZW5zaW9uKCkuMCAvIGdyb3VwaW5nX2ZhY3Rvci4wFFoQAEsAAABtAQAABQAAABRaEABLAAAAkgEAAAUAAAAUWhAASwAAAJoBAAAwAAAAFFoQAEsAAACeAQAAPAAAABRaEABLAAAApQEAAE0AAAAUWhAASwAAAK0BAABKAAAAFFoQAEsAAAC7AQAAIwAAABRaEABLAAAAqgEAAEsAAAAUWhAASwAAACgCAAAFAAAAFFoQAEsAAAAxAgAABQAAABRaEABLAAAAOgIAAAUAAAAUWhAASwAAAEMCAAAFAAAAFFoQAEsAAABLAgAABQAAABRaEABLAAAAYQIAAAUAAAAUWhAASwAAAIICAAAFAAAAFFoQAEsAAACOAgAANAAAABRaEABLAAAAkAIAAE0AAAAUWhAASwAAAJgCAABKAAAAFFoQAEsAAACeAgAANQAAABRaEABLAAAAowIAABYAAAAUWhAASwAAAJUCAABLAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vYWxnb3JpdGhtcy9wb2x5bm9taWFsX2FsZ29yaXRobXMucnPgXhAAOAAAACEAAAAFAAAA4F4QADgAAACBAAAAMwAAAE91dHB1dCBwb2x5bm9taWFsIHNpemUgIGlzIG5vdCB0aGUgc2FtZSBhcyBpbnB1dCBsaHMgcG9seW5vbWlhbCA4XxAAFwAAAE9fEAApAAAAWk4QAAEAAADgXhAAOAAAAK8AAAAFAAAAIGlzIG5vdCB0aGUgc2FtZSBhcyBpbnB1dCByaHMgcG9seW5vbWlhbCAAAAA4XxAAFwAAAKBfEAApAAAAWk4QAAEAAADgXhAAOAAAALUAAAAFAAAA4F4QADgAAADhAAAAHQAAAOBeEAA4AAAACwEAAB0AAAAgaXMgbm90IHRoZSBzYW1lIGFzIGlucHV0IHBvbHlub21pYWwgc2l6ZSAAADhfEAAXAAAAFGAQACoAAABaThAAAQAAAOBeEAA4AAAAQwEAAAUAAADgXhAAOAAAAEsBAAAcAAAA4F4QADgAAADHAQAABQAAAOBeEAA4AAAAzwEAABwAAADgXhAAOAAAALUCAAAFAAAA4F4QADgAAAC7AgAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IHBvbHlfc2l6ZS5pc19wb3dlcl9vZl90d28oKQAAAOBeEAA4AAAAxQIAAAUAAADgXhAAOAAAANMCAAAkAAAA4F4QADgAAADTAgAAOAAAAOBeEAA4AAAA1AIAACQAAADgXhAAOAAAANQCAAA1AAAA4F4QADgAAADVAgAAKwAAAOBeEAA4AAAA1QIAAD8AAADgXhAAOAAAANYCAAArAAAA4F4QADgAAADWAgAAPwAAAOBeEAA4AAAAAgMAACgAAADgXhAAOAAAAAIDAAA8AAAA4F4QADgAAAADAwAAKAAAAOBeEAA4AAAAAwMAADkAAADgXhAAOAAAAAkDAAAkAAAA4F4QADgAAADuAgAAHwAAAE1pc21hdGNoZWQgQ2lwaGVydGV4dE1vZHVsdXMgYmV0d2VlbiBpbnB1dCBTZWVkZWRMd2VDaXBoZXJ0ZXh0TGlzdCAoKSBhbmQgb3V0cHV0IEx3ZUNpcGhlcnRleHRMaXN0ICjYYRAARAAAABxiEAAgAAAAVkwQAAEAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL3NlZWRlZF9sd2VfY2lwaGVydGV4dF9saXN0X2RlY29tcHJlc3Npb24ucnMAVGIQAEsAAAAbAAAABQAAAEVycm9yIHdoaWxlIGZvcmtpbmcgZ2VuZXJhdG9yIGZvciBTZWVkZWRMd2VDaXBoZXJ0ZXh0TGlzdCBkZWNvbXByZXNzaW9uLlRiEABLAAAALQAAAAoAAABUYhAASwAAAEAAAAAoAAAAbm90IHlldCBpbXBsZW1lbnRlZDogVGhpcyBkaXN0cmlidXRpb24gZG9lcyBub3Qgc3VwcG9ydCBjdXN0b20gbW9kdWx1cyBnZW5lcmF0aW9uIGF0IHRoaXMgdGltZS4AGGMQAF8AAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9jb21tb25zL21hdGgvcmFuZG9tL21vZC5ycwCAYxAALwAAAD8AAAAJAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZW50aXRpZXMvc2VlZGVkX2x3ZV9tdWx0aV9iaXRfYm9vdHN0cmFwX2tleS5ycwDAYxAAQwAAAG4BAAANAAAATXVsdGkgQml0IEJTSyByZXF1aXJlcyBpbnB1dCBMV0UgZGltZW5zaW9uICgpIHRvIGJlIGEgbXVsdGlwbGUgb2YgAAAUZBAALAAAAEBkEAAWAAAAwGMQAEMAAABtAQAACQAAAHRmaGUvc3JjL2ludGVnZXIvZW5jcnlwdGlvbi5ycwAAeGQQAB4AAABNAAAAKwAAAHRmaGUvc3JjL2ludGVnZXIvYmlnaW50L2FsZ29yaXRobXMucnMAAACoZBAAJQAAAHQAAAAqAAAAYXNzZXJ0aW9uIGZhaWxlZDogbGhzLmxlbigpID49IHJocy5sZW4oKahkEAAlAAAAqQAAAAUAAACoZBAAJQAAAL0AAAAiAEHIysEACwEBAEHoysEAC/oGqGQQACUAAAA0AQAAEQAAAKhkEAAlAAAAOgEAABgAAACoZBAAJQAAAEIBAAAcAAAAqGQQACUAAABeAQAAEQAAAKhkEAAlAAAAYwEAABwAAAB0ZmhlL3NyYy9pbnRlZ2VyL2NsaWVudF9rZXkvbW9kLnJzAAAAAAAA/////////////////////////////////////////3+4ZRAAIgAAALMAAAAuAAAAuGUQACIAAABjAQAARQAAAGFzc2VydGlvbiBmYWlsZWQ6IG1lc3NhZ2VfbW9kdWx1cy5pc19wb3dlcl9vZl90d28oKQC4ZRAAIgAAALsBAAAJAAAAuGUQACIAAADDAQAAMwAAAHRmaGUvc3JjL2ludGVnZXIvcHVibGljX2tleS9zdGFuZGFyZC5ycwB0ZhAAJwAAAEEAAAAuAAAAYwAAAE1vZHVsdXMgc3dpdGNoIGNvbXByZXNzaW9uIGFuZCBtdWx0aSBiaXQgUEJTIGFyZSBjdXJyZW50bHkgbm90IGNvbXBhdGlibGUAAACwZhAASQAAAHRmaGUvc3JjL3Nob3J0aW50L3NlcnZlcl9rZXkvbW9kdWx1c19zd2l0Y2hlZF9jb21wcmVzc2lvbi5ycwRnEAA8AAAAawAAAA0AAAB0ZmhlL3NyYy9zaG9ydGludC9zZXJ2ZXJfa2V5L21vZC5ycwBQZxAAIwAAAJcFAAASAAAAMTI4NjQwdGZoZS9zcmMvaGlnaF9sZXZlbF9hcGkvaW50ZWdlcnMvbW9kLnJzAAAAimcQACcAAAAhAAAALgAAAIpnEAAnAAAAIQAAAAkAAAB2YXJpYW50IGluZGV4IDAgPD0gaSA8IDLUZxAAGAAAAFgAAAAIAAAABAAAADoAAABQbGFpbnRleHRDb3VudAAAWAAAAAQAAAAEAAAAJQAAAEx3ZUNpcGhlcnRleHRDb3VudEx3ZURpbWVuc2lvbkdsd2VTaXplR2x3ZURpbWVuc2lvblBvbHlub21pYWxTaXplTWVzc2FnZVgAAAAEAAAABAAAACYAAAAMAAAAEQAAABEAAACoShAAtEoQAMVKEAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL2l0ZXIucnMAQfDRwQALiTBhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvYXNzZXJ0aW9uIGZhaWxlZDogbWlkIDw9IHNlbGYubGVuKCl1NjQAYWxpZ25fb2Zmc2V0OiBhbGlnbiBpcyBub3QgYSBwb3dlci1vZi10d28AAAAwaRAAKQAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvY29yZS9zcmMvcHRyL211dF9wdHIucnMAZGkQAE8AAABjBgAADQAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvbW9kLnJzAAAAxGkQAE0AAABoDQAACQAAAGNodW5rIHNpemUgbXVzdCBiZSBub24temVybwAkahAAGwAAAGFzc2VydGlvbiBmYWlsZWQ6IGsgPD0gc2VsZi5sZW4oKQAAAMRpEABNAAAAkw0AAAkAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAAZQAAAAgAAAAEAAAACgAAAGYAAAAIAAAABAAAAAoAAACUaBAATgAAAFsHAAARAAAACnJlcXVlc3RlZCBhbGlnbm1lbnQgaXMgbGVzcyB0aGFuIHRoZSBtaW5pbXVtIHZhbGlkIGFsaWdubWVudCBmb3IgYGA6CiAtIHJlcXVlc3RlZCBhbGlnbm1lbnQ6IAogLSBtaW5pbXVtIGFsaWdubWVudDogCgAABGsQAEMAAABHaxAAGwAAAGJrEAAXAAAAeWsQAAEAAAAKYnVmZmVyIGlzIG5vdCBsYXJnZSBlbm91Z2ggdG8gYWxsb2NhdGUgYW4gYXJyYXkgb2YgdHlwZSBgYCBvZiB0aGUgcmVxdWVzdGVkIGxlbmd0aDoKIC0gcmVtYWluaW5nIGJ1ZmZlciBsZW5ndGggKGFmdGVyIGFkanVzdGluZyBmb3IgYWxpZ25tZW50KTogLAogLSByZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoOiAgKCBieXRlcyksCgAAAJxrEAA6AAAA1msQAFcAAAAtbBAAHQAAAEpsEAACAAAATGwQAAkAAAAKYnVmZmVyIGlzIG5vdCBsYXJnZSBlbm91Z2ggdG8gYWNjb21vZGF0ZSB0aGUgcmVxdWVzdGVkIGFsaWdubWVudAogLSBidWZmZXIgbGVuZ3RoOiAKIC0gcmVxdWVzdGVkIGFsaWdubWVudDogCiAtIGJ5dGUgb2Zmc2V0IGZvciBhbGlnbm1lbnQ6IIBsEABUAAAA1GwQABkAAADtbBAAHwAAAHlrEAABAAAATWlzbWF0Y2hlZCBpbnB1dCBMd2VEaW1lbnNpb24uIEx3ZUtleXN3aXRjaEtleSBpbnB1dCBMd2VEaW1lbnNpb246ICwgaW5wdXQgTHdlQ2lwaGVydGV4dCBMd2VEaW1lbnNpb24gLgAsbRAAQwAAAG9tEAAjAAAAkm0QAAEAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL2x3ZV9rZXlzd2l0Y2gucnOsbRAAMAAAAGsAAAAFAAAATWlzbWF0Y2hlZCBvdXRwdXQgTHdlRGltZW5zaW9uLiBMd2VLZXlzd2l0Y2hLZXkgb3V0cHV0IEx3ZURpbWVuc2lvbjogLCBvdXRwdXQgTHdlQ2lwaGVydGV4dCBMd2VEaW1lbnNpb24gAAAA7G0QAEUAAAAxbhAAJAAAAJJtEAABAAAArG0QADAAAABzAAAABQAAAE1pc21hdGNoZWQgQ2lwaGVydGV4dE1vZHVsdXMuIEx3ZUtleXN3aXRjaEtleSBDaXBoZXJ0ZXh0TW9kdWx1czogLCBvdXRwdXQgTHdlQ2lwaGVydGV4dCBDaXBoZXJ0ZXh0TW9kdWx1cyAAAIBuEABBAAAAwW4QACkAAACSbRAAAQAAAKxtEAAwAAAAfgAAAAUAAABUaGlzIG9wZXJhdGlvbiBjdXJyZW50bHkgb25seSBzdXBwb3J0cyBwb3dlciBvZiAyIG1vZHVsaRRvEAA4AAAArG0QADAAAACGAAAABQAAAKxtEAAwAAAAjQAAAAUAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL2x3ZV9wcm9ncmFtbWFibGVfYm9vdHN0cmFwcGluZy5ycwAAAHRvEABBAAAAFwEAAAUAAAApTWlzbWF0Y2hlZCBDaXBoZXJ0ZXh0TW9kdWx1cyBiZXR3ZWVuIGlucHV0IFNlZWRlZEx3ZUNpcGhlcnRleHQgKCkgYW5kIG91dHB1dCBMd2VDaXBoZXJ0ZXh0ICgAAADJbxAAQAAAAAlwEAAcAAAAyG8QAAEAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL3NlZWRlZF9sd2VfY2lwaGVydGV4dF9kZWNvbXByZXNzaW9uLnJzAABAcBAARgAAABQAAAAFAAAAQHAQAEYAAAAoAAAAJAAAAEBwEABGAAAAOwAAAAUAAABNaXNtYXRjaGVkIENpcGhlcnRleHRNb2R1bHVzIGJldHdlZW4gaW5wdXQgU2VlZGVkTHdlUHVibGljS2V5ICgpIGFuZCBvdXRwdXQgTHdlUHVibGljS2V5ICgAALhwEAA/AAAA93AQABsAAADIbxAAAQAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2FsZ29yaXRobXMvc2VlZGVkX2x3ZV9wdWJsaWNfa2V5X2RlY29tcHJlc3Npb24ucnMAACxxEABGAAAAEwAAAAUAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9jb21tb25zL3RyYWl0cy9jb250YWluZXIucnOEcRAAMAAAAFgAAAASAAAAhHEQADAAAABnAAAADgAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2VudGl0aWVzL2x3ZV9tdWx0aV9iaXRfYm9vdHN0cmFwX2tleS5yc9RxEAA8AAAAeAEAAA4AAADUcRAAPAAAAI0BAAAWAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZmZ0X2ltcGwvZmZ0NjQvY3J5cHRvL2Jvb3RzdHJhcC5ycwAwchAANwAAAPkAAAA1AAAAYXNzZXJ0aW9uIGZhaWxlZDogY2lwaGVydGV4dF9tb2R1bHVzLmlzX2NvbXBhdGlibGVfd2l0aF9uYXRpdmVfbW9kdWx1cygpMHIQADcAAAD9AAAACQAAADByEAA3AAAADgEAACoAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9mZnRfaW1wbC9mZnQ2NC9jcnlwdG8vZ2dzdy5ycwAA4HIQADIAAAA+AAAACQAAAOByEAAyAAAAjAAAAAkAAADgchAAMgAAAPcBAAAPAAAA4HIQADIAAABiAgAARwAAAOByEAAyAAAAYwIAADwAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9mZnRfaW1wbC9mZnQ2NC9tYXRoL2RlY29tcG9zaXRpb24ucnMAAABkcxAAOQAAACMAAAATAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZmZ0X2ltcGwvZmZ0NjQvbWF0aC9mZnQvbW9kLnJzALBzEAAzAAAAtwAAAC4AAACwcxAAMwAAAL8AAAAeAAAAsHMQADMAAACXAAAALQAAALBzEAAzAAAAoAEAABYAAACwcxAAMwAAALQBAAARAAAAsHMQADMAAAC1AQAAEQAAAEF0IGxlYXN0IG9uZSBtZXNzYWdlIGlzIHJlcXVpcmVkRHQQACAAAAB0ZmhlL3NyYy9pbnRlZ2VyL3B1YmxpY19rZXkvY29tcGFjdC5ycwAAbHQQACYAAABfAAAAHQAAAGcAAABgAAAACAAAAGgAAABpAAAAagAAAGsAAABsAAAAOAAAAAgAAABtAAAAbgAAAG8AAABwAAAAZwAAAHAAAAAIAAAAcQAAAHIAAABzAAAAdAAAAHUAAABAAAAACAAAAHYAAAB3AAAAeAAAAHkAAABnAAAAUAEAAAgAAAB6AAAAewAAAHwAAAB9AAAAfgAAALAAAAAIAAAAfwAAAIAAAACBAAAAggAAAGcAAADQAAAACAAAAIMAAACEAAAAhQAAAIYAAACHAAAAcAAAAAgAAACIAAAAiQAAAIoAAACLAAAAZwAAAFABAAAIAAAAjAAAAHsAAACNAAAAjgAAAH4AAACwAAAACAAAAI8AAACAAAAAkAAAAJEAAABnAAAA0AAAAAgAAACSAAAAhAAAAJMAAACUAAAAhwAAAHAAAAAIAAAAlQAAAIkAAACWAAAAlwAAAGcAAACQAAAACAAAAJgAAACZAAAAmgAAAJsAAACcAAAAUAAAAAgAAACdAAAAngAAAJ8AAACgAAAAZwAAAGAAAAAIAAAAoQAAAGkAAACiAAAAowAAAGwAAAA4AAAACAAAAKQAAABuAAAApQAAAKYAAABnAAAAUAAAAAgAAACnAAAAqAAAAKkAAACqAAAAqwAAADAAAAAIAAAArAAAAK0AAACuAAAArwAAAGcAAACQAAAACAAAALAAAACZAAAAsQAAALIAAACcAAAAUAAAAAgAAACzAAAAngAAALQAAAC1AAAAZwAAAFAAAAAIAAAAtgAAAKgAAAC3AAAAuAAAAKsAAAAwAAAACAAAALkAAACtAAAAugAAALsAAABnAAAAcAAAAAgAAAC8AAAAcgAAAL0AAAC+AAAAdQAAAEAAAAAIAAAAvwAAAHcAAADAAAAAwQAAAHRmaGUvc3JjL2ludGVnZXIvcHVibGljX2tleS9jb21wcmVzc2VkLnJzAAAARHcQACkAAAA+AAAALgAAAMIAAABMd2VEaW1lbnNpb27DAAAABAAAAAQAAAAlAAAAdmFyaWFudCBpbmRleCAwIDw9IGkgPCAyoHcQABgAAADDAAAACAAAAAQAAAA6AAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3N5bmMvb25jZS5yc9B3EABMAAAA0AAAABQAAAAAAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9jb3JlL3NyYy9udW0vbW9kLnJzAAAAAABhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvAAAAAAAAAGF0dGVtcHQgdG8gY2FsY3VsYXRlIHRoZSByZW1haW5kZXIgd2l0aCBhIGRpdmlzb3Igb2YgemVybwAAADB4EABLAAAAkQQAAAUAAAAweBAASwAAAKkEAAAFAAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZWNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAAMUAAAAEAAAABAAAAMYAAABNaXNtYXRjaCBiZXR3ZWVuIGVxdWl2YWxlbnQgTHdlRGltZW5zaW9uIG9mIGlucHV0IGNpcGhlcnRleHQgYW5kIG91dHB1dCBjaXBoZXJ0ZXh0LiBHb3QgIGZvciBpbnB1dCBhbmQgIGZvciBvdXRwdXQuAGR5EABYAAAAvHkQAA8AAADLeRAADAAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2FsZ29yaXRobXMvZ2x3ZV9zYW1wbGVfZXh0cmFjdGlvbi5ycwAAAPB5EAA5AAAAagAAAAUAAABNaXNtYXRjaGVkIG1vZHVsaSBiZXR3ZWVuIGlucHV0X2dsd2UgKCkgYW5kIG91dHB1dF9sd2UgKCkAAAA8ehAAJgAAAGJ6EAASAAAAdHoQAAEAAADweRAAOQAAAHAAAAAFAAAA8HkQADkAAAB9AAAAFgAAAPB5EAA5AAAAgAAAABcAAADweRAAOQAAAI4AAAA6AAAAVGhpcyBvcGVyYXRpb24gb25seSBzdXBwb3J0cyBuYXRpdmUgbW9kdWxpAADQehAAKgAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2FsZ29yaXRobXMvbHdlX2NvbXBhY3RfcHVibGljX2tleV9nZW5lcmF0aW9uLnJzBHsQAEQAAAAhAAAABQAAAE1pc21hdGNoZWQgTHdlRGltZW5zaW9uIGJldHdlZW4gaW5wdXQgTHdlU2VjcmV0S2V5ICBhbmQgb3V0cHV0IEx3ZUNvbXBhY3RQdWJsaWNLZXkgAFh7EAAzAAAAi3sQACAAAAAEexAARAAAACYAAAAFAAAABHsQAEQAAAByAAAABQAAAAR7EABEAAAAdwAAAAUAAAAsIGlucHV0OiB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL2x3ZV9rZXlzd2l0Y2hfa2V5X2dlbmVyYXRpb24ucnMsIG91dHB1dDogYXNzZXJ0aW9uIGZhaWxlZDogY2lwaGVydGV4dF9tb2R1bHVzLmlzX2NvbXBhdGlibGVfd2l0aF9uYXRpdmVfbW9kdWx1cygpVGhlIGRlc3RpbmF0aW9uIFNlZWRlZEx3ZUtleXN3aXRjaEtleSBpbnB1dCBMd2VEaW1lbnNpb24gaXMgbm90IGVxdWFsIHRvIHRoZSBpbnB1dCBMd2VTZWNyZXRLZXkgTHdlRGltZW5zaW9uLiBEZXN0aW5hdGlvbjogAAAAhnwQAHsAAADsexAACQAAAPV7EAA/AAAAAwEAAAUAAABUaGUgZGVzdGluYXRpb24gU2VlZGVkTHdlS2V5c3dpdGNoS2V5IG91dHB1dCBMd2VEaW1lbnNpb24gaXMgbm90IGVxdWFsIHRvIHRoZSBvdXRwdXQgTHdlU2VjcmV0S2V5IEx3ZURpbWVuc2lvbi4gRGVzdGluYXRpb246IAAAACR9EAB9AAAANHwQAAoAAAD1exAAPwAAAAoBAAAFAAAA9XsQAD8AAAAVAQAABQAAAPV7EAA/AAAAMQEAADIAAABsaHMgKGxlbjogKSBhbmQgcmhzIChsZW46ICkg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M2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3N5bmMvbXBtYy9tb2QucnMkhRAAUAAAAIUAAAAtAAAAdGhyZWFkIG5hbWUgbWF5IG5vdCBjb250YWluIGludGVyaW9yIG51bGwgYnl0ZXMAzgAAABAAAAAEAAAAzwAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbW9kLnJzAAAAxIUQAE0AAADcAQAAIAAAANAAAAAkAAAABAAAANEAAADSAAAAKAAAAAQAAADTAAAATnVsRXJyb3LUAAAABAAAAAQAAADVAAAA1AAAAAQAAAAEAAAA1gAAAFV0ZjhFcnJvcnZhbGlkX3VwX3RvZXJyb3JfbGVuAAAA1AAAAAQAAAAEAAAA1wAAAESGEAAAAAAAT3BlcmF0aW9uIEZhaWxlZEVycm9ya2luZAAAANQAAAAEAAAABAAAANgAAABTZW5kRXJyb3JQb2lzb25FcnJvctkAAAAMAAAABAAAANoAAADbAAAAHgAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkA3AAAAAAAAAABAAAA3QAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwBEhxAASwAAADMKAAAOAAAARXJyb3IKClN0YWNrOgoKCgoAAABJbnZhbGlkIHNpemUgOiBzaXplcyBtdXN0IGZpdCBpbiBhIHVzaXplICgwIHRvICm0hxAADQAAAMGHEAAiAAAA44cQAAEAAAD/////c3RyaW5nIGlzIG5vdCB2YWxpZCB1dGY4aW52YWxpZCB1OCB3aGlsZSBkZWNvZGluZyBib29sY2hhciBpcyBub3QgdmFsaWR0YWcgZm9yIGVudW0gaXMgbm90IHZhbGlkQmluY29kZSBkb2Vzbid0IHN1cHBvcnQgc2VyZGU6OkRlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemVfYW55dGhlIHNpemUgbGltaXQgaGFzIGJlZW4gcmVhY2hlZEJpbmNvZGUgY2FuIG9ubHkgZW5jb2RlIHNlcXVlbmNlcyBhbmQgbWFwcyB0aGF0IGhhdmUgYSBrbm93YWJsZSBzaXplIGFoZWFkIG9mIHRpbWVpbyBlcnJvcjogAA2JEAAKAAAAOiAAALSHEAAAAAAAIIkQAAIAAAAsIGV4cGVjdGVkIDAgb3IgMSwgZm91bmQgAAAAtIcQAAAAAAA0iRAAGQAAALSHEAAAAAAALCBmb3VuZCC0hxAAAAAAAGiJEAAIAAAAQmluY29kZSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBzZXJkZTo6RGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZV9hbnkgbWV0aG9kgIkQAEgAAABjYW5ub3QgYWNjZXNzIGEgVGhyZWFkIExvY2FsIFN0b3JhZ2UgdmFsdWUgZHVyaW5nIG9yIGFmdGVyIGRlc3RydWN0aW9uAADiAAAAAAAAAAEAAAAOAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwAoihAATwAAAPYAAAAaAAAARXJyb3Jvc19lcnJvcgAAAOMAAAAEAAAABAAAAOQAAABkZXNjcmlwdGlvbgDjAAAACAAAAAQAAADlAAAAaW50ZXJuYWxfY29kZQAAAOMAAAAEAAAABAAAAOYAAAB1bmtub3duX2NvZGVnZXRyYW5kb206IHRoaXMgdGFyZ2V0IGlzIG5vdCBzdXBwb3J0ZWRlcnJubzogZGlkIG5vdCByZXR1cm4gYSBwb3NpdGl2ZSB2YWx1ZVNlY1JhbmRvbUNvcHlCeXRlczogaU9TIFNlY3VyaXR5IGZyYW1ld29yayBmYWlsdXJlUnRsR2VuUmFuZG9tOiBXaW5kb3dzIHN5c3RlbSBmdW5jdGlvbiBmYWlsdXJlUkRSQU5EOiBmYWlsZWQgbXVsdGlwbGUgdGltZXM6IENQVSBpc3N1ZSBsaWtlbHlSRFJBTkQ6IGluc3RydWN0aW9uIG5vdCBzdXBwb3J0ZWRXZWIgQ3J5cHRvIEFQSSBpcyB1bmF2YWlsYWJsZUNhbGxpbmcgV2ViIEFQSSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzIGZhaWxlZHJhbmRTZWN1cmU6IFZ4V29ya3MgUk5HIG1vZHVsZSBpcyBub3QgaW5pdGlhbGl6ZWROb2RlLmpzIGNyeXB0byBDb21tb25KUyBtb2R1bGUgaXMgdW5hdmFpbGFibGVDYWxsaW5nIE5vZGUuanMgQVBJIGNyeXB0by5yYW5kb21GaWxsU3luYyBmYWlsZWROb2RlLmpzIEVTIG1vZHVsZXMgYXJlIG5vdCBkaXJlY3RseSBzdXBwb3J0ZWQsIHNlZSBodHRwczovL2RvY3MucnMvZ2V0cmFuZG9tI25vZGVqcy1lcy1tb2R1bGUtc3VwcG9ydAAAAOcAAABjcnlwdG8AACcAAAAmAAAAAAAAADIAAAAtAAAALwAAACEAAAAdAAAALQBB5JrCAAszMQAAAC0AAAAwAAAAZQAAAPCKEAAXixAAAAAAAD2LEABvixAAnIsQAMuLEADsixAACYwQAEGgm8IAC8UFNowQAGeMEACUjBAAxIwQAOgAAAByZXR1cm4gdGhpc2Nhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24AAADpAAAAAAAAAAEAAAAOAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwAYjhAATwAAAPYAAAAaAAAAVHJpZWQgdG8gc2hyaW5rIHRvIGEgbGFyZ2VyIGNhcGFjaXR5eI4QACQAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjLnJzpI4QAEwAAADPAQAACQAAAGNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkSnNWYWx1ZSgpADKPEAAIAAAAOo8QAAEAAABudWxsIHBvaW50ZXIgcGFzc2VkIHRvIHJ1c3RyZWN1cnNpdmUgdXNlIG9mIGFuIG9iamVjdCBkZXRlY3RlZCB3aGljaCB3b3VsZCBsZWFkIHRvIHVuc2FmZSBhbGlhc2luZyBpbiBydXN0AABUcmllZCB0byBzaHJpbmsgdG8gYSBsYXJnZXIgY2FwYWNpdHm4jxAAJAAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMucnPkjxAATAAAAM8BAAAJAAAA9wAAAAwAAAAEAAAA+AAAAPkAAAAeAAAA+wAAAAQAAAAEAAAA/ABBgKHCAAvWHmNvbmNyZXRlLWNzcHJuZy9zcmMvZ2VuZXJhdG9ycy9hZXNfY3RyL3N0YXRlcy5yc4CQEAAwAAAAJgAAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBzdGFydF9pbmRleCA8IGJvdW5kX2luZGV4Y29uY3JldGUtY3Nwcm5nL3NyYy9nZW5lcmF0b3JzL2Flc19jdHIvZ2VuZXJpYy5yc+uQEAAxAAAASQAAAAkAAABBZXNJbmRlePsAAAAEAAAABAAAAP0AAABCeXRlSW5kZXgAAAD7AAAABAAAAAQAAAAlAAAAVGFibGVJbmRleGFlc19pbmRleAD+AAAAEAAAAAgAAAD/AAAAYnl0ZV9pbmRleAAA+wAAAAQAAAAEAAAAAAEAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Flcy0wLjguMi9zcmMvc29mdC9maXhzbGljZTMyLnJzAKCREABfAAAAiQQAABIAAACgkRAAXwAAAIkEAAA9AAAAoJEQAF8AAAAUBQAAIgAAAKCREABfAAAAFAUAAAkAAAABAQAACAAAAAQAAAACAQAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQADAQAACAAAAAQAAAAIAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmF5b24tY29yZS0xLjEyLjEvc3JjL2xhdGNoLnJzAAAAjJIQAF0AAAALAQAAKgAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JheW9uLWNvcmUtMS4xMi4xL3NyYy9yZWdpc3RyeS5yc1RoZSBnbG9iYWwgdGhyZWFkIHBvb2wgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkLvySEABgAAAAqAAAAAoAAAD8khAAYAAAAMAAAAAWAAAA/JIQAGAAAAArAQAANgAAAAQBAAD8khAAYAAAADIDAAAvAAAA/JIQAGAAAAA4AwAAKgAAAPySEABgAAAAjwMAACYAAABUaHJlYWRQb29sQnVpbGRFcnJvcmtpbmQFAQAABAAAAAQAAAAGAQAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY3Jvc3NiZWFtLWVwb2NoLTAuOS4xNC9zcmMvaW50ZXJuYWwucnMAAAAYlBAAZQAAAIIBAAA5AAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZXRocmVhZCBuYW1lIG1heSBub3QgY29udGFpbiBpbnRlcmlvciBudWxsIGJ5dGVzAAAHAQAAQAAAAAQAAAAIAQAACQEAABAAAAAEAAAACgEAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbW9kLnJzAAAADJUQAE0AAADcAQAAIAAAAE51bEVycm9yCwEAAAQAAAAEAAAADAEAAAsBAAAEAAAABAAAANYAAABvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtlJUQACgAAAAkAAAAR2xvYmFsUG9vbEFscmVhZHlJbml0aWFsaXplZEN1cnJlbnRUaHJlYWRBbHJlYWR5SW5Qb29sSU9FcnJvcgAAAA0BAAAEAAAABAAAACIAAAAAY2Fubm90IHJlY3Vyc2l2ZWx5IGFjcXVpcmUgbXV0ZXgAAAAZlhAAIAAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy9zeXMvd2FzbS8uLi91bnN1cHBvcnRlZC9sb2Nrcy9tdXRleC5ycwAARJYQAGYAAAAUAAAACQAAAGNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24AAA4BAAAAAAAAAQAAAA4AAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzABSXEABPAAAA9gAAABoAAABhc3NlcnRpb24gZmFpbGVkOiB0LmdldCgpLmVxKCYoc2VsZiBhcyAqY29uc3QgXykpL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmF5b24tY29yZS0xLjEyLjEvc3JjL3JlZ2lzdHJ5LnJzAAAApZcQAGAAAACtAgAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IHQuZ2V0KCkuaXNfbnVsbCgpAKWXEABgAAAAwAIAAA0AAACllxAAYAAAAHUDAAAjAAAADwEAAAQAAAAEAAAAJAAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAEAEAAAgAAAAEAAAACAAAAGFzc2VydGlvbiBmYWlsZWQ6IG5fdGhyZWFkcyA8PSBUSFJFQURTX01BWC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JheW9uLWNvcmUtMS4xMi4xL3NyYy9zbGVlcC9tb2QucnMA0pgQAGEAAAA+AAAACQAAANKYEABhAAAAgwAAADQAAADSmBAAYQAAAIQAAAA8AAAA0pgQAGEAAAC8AAAAQwAAANKYEABhAAAAIgEAADQAAADSmBAAYQAAACQBAAA8AAAAT25jZSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAACUmRAAKgAAAG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1heSBub3QgYmUgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5yJkQADgAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3N5bmMvb25jZS5ycwAzmhAATAAAAJUAAAAyAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQASAQAACAAAAAQAAAAIAAAAUG9pc29uRXJyb3IvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yYXlvbi1jb3JlLTEuMTIuMS9zcmMvbGF0Y2gucnPXmhAAXQAAAPgAAAAnAAAA15oQAF0AAAD6AAAAKAAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JheW9uLWNvcmUtMS4xMi4xL3NyYy9yZWdpc3RyeS5yc1SbEABgAAAAdQMAACMAAABPbmNlIGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAAMSbEAAqAAAAb25lLXRpbWUgaW5pdGlhbGl6YXRpb24gbWF5IG5vdCBiZSBwZXJmb3JtZWQgcmVjdXJzaXZlbHn4mxAAOAAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L3N0ZC9zcmMvc3luYy9vbmNlLnJzAGOcEABMAAAAlQAAADIAAAABAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY3Jvc3NiZWFtLWVwb2NoLTAuOS4xNC9zcmMvc3luYy9saXN0LnJzAADEnBAAZgAAAOIAAAARAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY3Jvc3NiZWFtLWVwb2NoLTAuOS4xNC9zcmMvc3luYy9vbmNlX2xvY2sucnMAPJ0QAGsAAABOAAAAEwAAAAAAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL3N5bmMvYXRvbWljLnJzdGhlcmUgaXMgbm8gc3VjaCB0aGluZyBhcyBhIHJlbGVhc2UgZmFpbHVyZSBvcmRlcmluZwALnhAANAAAALydEABPAAAAMA0AAB0AAAB0aGVyZSBpcyBubyBzdWNoIHRoaW5nIGFzIGFuIGFjcXVpcmUtcmVsZWFzZSBmYWlsdXJlIG9yZGVyaW5nAAAAWJ4QAD0AAAC8nRAATwAAAC8NAAAcAAAAAAAAAHVuYWxpZ25lZCBwb2ludGVyAAAAtJ4QABEAAAAvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9jcm9zc2JlYW0tZXBvY2gtMC45LjE0L3NyYy9hdG9taWMucnMA0J4QAGMAAABxAAAABQAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9jcm9zc2JlYW0tZXBvY2gtMC45LjE0L3NyYy9pbnRlcm5hbC5ycxUBAEHkv8IAC+MCb58QAGUAAAB5AAAALAAAAG+fEABlAAAAggEAADkAAAAWAQAABAAAAAQAAAAXAQAAFgEAAAQAAAAEAAAAJQAAAGNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24AABgBAAAAAAAAAQAAAA4AAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAHygEABPAAAA9gAAABoAAABhc3NlcnRpb24gZmFpbGVkOiBtaWQgPD0gc2VsZi5sZW4oKS9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvY29yZS9zcmMvdGltZS5ycwBB0MLCAAvhIWF0dGVtcHQgdG8gZGl2aWRlIGJ5IHplcm9vdmVyZmxvdyBp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AFwAAADIAAAAEQAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2NvbmNyZXRlLWZmdC0wLjQuMS9zcmMvbGliLnJziKgQAFwAAACKAAAACgAAAIioEABcAAAAxQAAABEAAACIqBAAXAAAAMYAAAARAAAAiKgQAFwAAADHAAAAEQAAAIioEABcAAAAyAAAABEAAAAvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9jb25jcmV0ZS1mZnQtMC40LjEvc3JjL2xpYi5yczSpEABcAAAAigAAAAoAAAA0qRAAXAAAAMUAAAARAAAANKkQAFwAAADGAAAAEQAAADSpEABcAAAAxwAAABEAAAA0qRAAXAAAAMgAAAARAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY29uY3JldGUtZmZ0LTAuNC4xL3NyYy9saWIucnPgqRAAXAAAAIoAAAAKAAAA4KkQAFwAAADFAAAAEQAAAOCpEABcAAAAxgAAABEAAADgqRAAXAAAAMcAAAARAAAA4KkQAFwAAADIAAAAEQAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2NvbmNyZXRlLWZmdC0wLjQuMS9zcmMvbGliLnJzjKoQAFwAAACKAAAACgAAAIyqEABcAAAAxQAAABEAAACMqhAAXAAAAMYAAAARAAAAjKoQAFwAAADHAAAAEQAAAIyqEABcAAAAyAAAABEAAAAvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9jb25jcmV0ZS1mZnQtMC40LjEvc3JjL2xpYi5yczirEABcAAAAigAAAAoAAAA4qxAAXAAAAMUAAAARAAAAOKsQAFwAAADGAAAAEQAAADirEABcAAAAxwAAABEAAAA4qxAAXAAAAMgAAAARAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY29uY3JldGUtZmZ0LTAuNC4xL3NyYy9saWIucnPkqxAAXAAAAIoAAAAKAAAA5KsQAFwAAADFAAAAEQAAAOSrEABcAAAAxgAAABEAAADkqxAAXAAAAMcAAAARAAAA5KsQAFwAAADIAAAAEQAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2NvbmNyZXRlLWZmdC0wLjQuMS9zcmMvbGliLnJzkKwQAFwAAACKAAAACgAAAJCsEABcAAAAxQAAABEAAACQrBAAXAAAAMYAAAARAAAAkKwQAFwAAADHAAAAEQAAAJCsEABcAAAAyAAAABEAAABjYW4gbm90IGNvbnZlcnQgZmxvYXQgc2Vjb25kcyB0byBEdXJhdGlvbjogdmFsdWUgaXMgbmVnYXRpdmVjYW4gbm90IGNvbnZlcnQgZmxvYXQgc2Vjb25kcyB0byBEdXJhdGlvbjogdmFsdWUgaXMgZWl0aGVyIHRvbyBiaWcgb3IgTmFOL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9jb3JlL3NyYy90aW1lLnJzAAAAwa0QAEgAAAD6AgAAFwAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUKCmJ1ZmZlciBpcyBub3QgbGFyZ2UgZW5vdWdoIHRvIGFsbG9jYXRlIGFuIGFycmF5IG9mIHR5cGUgYGAgb2YgdGhlIHJlcXVlc3RlZCBsZW5ndGg6CiAtIHJlbWFpbmluZyBidWZmZXIgbGVuZ3RoIChhZnRlciBhZGp1c3RpbmcgZm9yIGFsaWdubWVudCk6ICwKIC0gcmVxdWVzdGVkIGFycmF5IGxlbmd0aDogICggYnl0ZXMpLAoAAABIrhAAOgAAAIKuEABXAAAA2a4QAB0AAAD2rhAAAgAAAPiuEAAJAAAACmJ1ZmZlciBpcyBub3QgbGFyZ2UgZW5vdWdoIHRvIGFjY29tb2RhdGUgdGhlIHJlcXVlc3RlZCBhbGlnbm1lbnQKIC0gYnVmZmVyIGxlbmd0aDogCiAtIHJlcXVlc3RlZCBhbGlnbm1lbnQ6IAogLSBieXRlIG9mZnNldCBmb3IgYWxpZ25tZW50OiAsrxAAVAAAAICvEAAZAAAAma8QAB8AAABHrhAAAQAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2NvbmNyZXRlLWZmdC0wLjQuMS9zcmMvb3JkZXJlZC5yc9ivEABgAAAARwAAACIAAABhc3NlcnRpb24gZmFpbGVkOiBuLmlzX3Bvd2VyX29mX3R3bygpAAAA2K8QAGAAAABqAAAABQAAANivEABgAAAAcAAAACMAAADYrxAAYAAAAHEAAAAiAAAA2K8QAGAAAABzAAAAJgAAANivEABgAAAAdwAAAB0AAADYrxAAYAAAALcAAAAKAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZdivEABgAAAAhgAAABIAAABudW1fY29tcGxleDo6Q29tcGxleDxmNjQ+AAAAJLEQAAAAAACnAQAABAAAAAQAAACoAQAAPgAAACSxEAAAAAAAPLEQAAEAAAAvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9ieXRlbXVjay0xLjE2LjAvc3JjL2ludGVybmFsLnJzAABQsRAAXgAAACAAAAADAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY29uY3JldGUtZmZ0LTAuNC4xL3NyYy9mZnRfc2ltZC5ycwAAAMCxEABhAAAALwEAAA4AQcDkwgALoiVhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvAAAAwLEQAGEAAAA7AQAADQAAAMCxEABhAAAAPAEAAA0AAADAsRAAYQAAAD0BAAANAAAAwLEQAGEAAAA+AQAADQAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2R5bi1zdGFjay0wLjkuMC9zcmMvc3RhY2tfcmVxLnJzAJyyEABfAAAAFAAAABEAAABjYXBhY2l0eSBvdmVyZmxvdwAAAAyzEAARAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYWxpZ25lZC12ZWMtMC41LjAvc3JjL3Jhdy5ycwAosxAAWwAAACUAAAAFAAAAYnl0ZSBhcnJheWJvb2xlYW4gYGCesxAACQAAAKezEAABAAAAaW50ZWdlciBgAAAAuLMQAAkAAACnsxAAAQAAAGZsb2F0aW5nIHBvaW50IGDUsxAAEAAAAKezEAABAAAAY2hhcmFjdGVyIGAA9LMQAAsAAACnsxAAAQAAAHN0cmluZyAAELQQAAcAAACUsxAACgAAAHVuaXQgdmFsdWUAACi0EAAKAAAAT3B0aW9uIHZhbHVlPLQQAAwAAABuZXd0eXBlIHN0cnVjdAAAULQQAA4AAABzZXF1ZW5jZWi0EAAIAAAAbWFwAHi0EAADAAAAZW51bYS0EAAEAAAAdW5pdCB2YXJpYW50kLQQAAwAAABuZXd0eXBlIHZhcmlhbnQApLQQAA8AAAB0dXBsZSB2YXJpYW50AAAAvLQQAA0AAABzdHJ1Y3QgdmFyaWFudAAA1LQQAA4AAAB1c2l6ZQAAAPS0EAAAAAAAVGFyZ2V0QWxpZ25tZW50R3JlYXRlckFuZElucHV0Tm90QWxpZ25lZE91dHB1dFNsaWNlV291bGRIYXZlU2xvcFNpemVNaXNtYXRjaEFsaWdubWVudE1pc21hdGNoAAAAKAAAABgAAAAMAAAAEQAAAPy0EAAktRAAPLUQAEi1EAByZWVudHJhbnQgaW5pdAAAfLUQAA4AAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL2NlbGwvb25jZS5ycwAAAJS1EABNAAAA2QAAAEIAAABvdmVyZmxvdyBpbiBEdXJhdGlvbjo6bmV3AAAA9LUQABkAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL3RpbWUucnMYthAASAAAAMoAAAAVAAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZQCyAQAADAAAAAQAAACzAQAAtAEAALUBAAB0b28gbWFueSBydW5uaW5nIHRocmVhZHMgaW4gdGhyZWFkIHNjb3BltLYQACgAAABsaWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL3Njb3BlZC5yc+S2EAAgAAAAMwAAAA0AAABBY2Nlc3NFcnJvcmxpYnJhcnkvc3RkL3NyYy90aHJlYWQvbW9kLnJzZmFpbGVkIHRvIGdlbmVyYXRlIHVuaXF1ZSB0aHJlYWQgSUQ6IGJpdHNwYWNlIGV4aGF1c3RlZAA8txAANwAAAB+3EAAdAAAAmAQAAA0AAABvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtjLcQACgAAAAkAAAAfLUQAAAAAABlbnRpdHkgbm90IGZvdW5kcGVybWlzc2lvbiBkZW5pZWRjb25uZWN0aW9uIHJlZnVzZWRjb25uZWN0aW9uIHJlc2V0aG9zdCB1bnJlYWNoYWJsZW5ldHdvcmsgdW5yZWFjaGFibGVjb25uZWN0aW9uIGFib3J0ZWRub3QgY29ubmVjdGVkYWRkcmVzcyBpbiB1c2VhZGRyZXNzIG5vdCBhdmFpbGFibGVuZXR3b3JrIGRvd25icm9rZW4gcGlwZWVudGl0eSBhbHJlYWR5IGV4aXN0c29wZXJhdGlvbiB3b3VsZCBibG9ja25vdCBhIGRpcmVjdG9yeWlzIGEgZGlyZWN0b3J5ZGlyZWN0b3J5IG5vdCBlbXB0eXJlYWQtb25seSBmaWxlc3lzdGVtIG9yIHN0b3JhZ2UgbWVkaXVtZmlsZXN5c3RlbSBsb29wIG9yIGluZGlyZWN0aW9uIGxpbWl0IChlLmcuIHN5bWxpbmsgbG9vcClzdGFsZSBuZXR3b3JrIGZpbGUgaGFuZGxlaW52YWxpZCBpbnB1dCBwYXJhbWV0ZXJpbnZhbGlkIGRhdGF0aW1lZCBvdXR3cml0ZSB6ZXJvbm8gc3RvcmFnZSBzcGFjZXNlZWsgb24gdW5zZWVrYWJsZSBmaWxlZmlsZXN5c3RlbSBxdW90YSBleGNlZWRlZGZpbGUgdG9vIGxhcmdlcmVzb3VyY2UgYnVzeWV4ZWN1dGFibGUgZmlsZSBidXN5ZGVhZGxvY2tjcm9zcy1kZXZpY2UgbGluayBvciByZW5hbWV0b28gbWFueSBsaW5rc2ludmFsaWQgZmlsZW5hbWVhcmd1bWVudCBsaXN0IHRvbyBsb25nb3BlcmF0aW9uIGludGVycnVwdGVkdW5zdXBwb3J0ZWR1bmV4cGVjdGVkIGVuZCBvZiBmaWxlb3V0IG9mIG1lbW9yeW90aGVyIGVycm9ydW5jYXRlZ29yaXplZCBlcnJvck9zY29kZQC2AQAABAAAAAQAAAC3AQAAa2luZLgBAAABAAAAAQAAALkBAABtZXNzYWdlALIBAAAMAAAABAAAALoBAABLaW5kRXJyb3IAAAC2AQAACAAAAAQAAAC7AQAAQ3VzdG9tZXJyb3IAtgEAAAQAAAAEAAAAvAEAACAob3MgZXJyb3IgKXy1EAAAAAAAMLsQAAsAAAA7uxAAAQAAAG1lbW9yeSBhbGxvY2F0aW9uIG9mICBieXRlcyBmYWlsZWQAAFS7EAAVAAAAabsQAA0AAABsaWJyYXJ5L3N0ZC9zcmMvYWxsb2MucnOIuxAAGAAAAGIBAAAJAAAAY2Fubm90IG1vZGlmeSB0aGUgcGFuaWMgaG9vayBmcm9tIGEgcGFuaWNraW5nIHRocmVhZLC7EAA0AAAAbGlicmFyeS9zdGQvc3JjL3Bhbmlja2luZy5yc+y7EAAcAAAAhwAAAAkAAADsuxAAHAAAAIQCAAAeAAAAsgEAAAwAAAAEAAAAvQEAALYBAAAIAAAABAAAAL4BAAC2AQAACAAAAAQAAAC/AQAAwAEAAMEBAAAQAAAABAAAAMIBAADDAQAAxAEAAAAAAAABAAAAxQEAAMYBAAAIAAAABAAAAMcBAADIAQAAxAEAAAAAAAABAAAAyQEAAE5vdEZvdW5kUGVybWlzc2lvbkRlbmllZENvbm5lY3Rpb25SZWZ1c2VkQ29ubmVjdGlvblJlc2V0SG9zdFVucmVhY2hhYmxlTmV0d29ya1VucmVhY2hhYmxlQ29ubmVjdGlvbkFib3J0ZWROb3RDb25uZWN0ZWRBZGRySW5Vc2VBZGRyTm90QXZhaWxhYmxlTmV0d29ya0Rvd25Ccm9rZW5QaXBlQWxyZWFkeUV4aXN0c1dvdWxkQmxvY2tOb3RBRGlyZWN0b3J5SXNBRGlyZWN0b3J5RGlyZWN0b3J5Tm90RW1wdHlSZWFkT25seUZpbGVzeXN0ZW1GaWxlc3lzdGVtTG9vcFN0YWxlTmV0d29ya0ZpbGVIYW5kbGVJbnZhbGlkSW5wdXRJbnZhbGlkRGF0YVRpbWVkT3V0V3JpdGVaZXJvU3RvcmFnZUZ1bGxOb3RTZWVrYWJsZUZpbGVzeXN0ZW1RdW90YUV4Y2VlZGVkRmlsZVRvb0xhcmdlUmVzb3VyY2VCdXN5RXhlY3V0YWJsZUZpbGVCdXN5RGVhZGxvY2tDcm9zc2VzRGV2aWNlc1Rvb01hbnlMaW5rc0ludmFsaWRGaWxlbmFtZUFyZ3VtZW50TGlzdFRvb0xvbmdJbnRlcnJ1cHRlZFVuc3VwcG9ydGVkVW5leHBlY3RlZEVvZk91dE9mTWVtb3J5T3RoZXJVbmNhdGVnb3JpemVkb3BlcmF0aW9uIHN1Y2Nlc3NmdWx0aW1lIG5vdCBpbXBsZW1lbnRlZCBvbiB0aGlzIHBsYXRmb3JtANa+EAAlAAAAbGlicmFyeS9zdGQvc3JjL3N5cy93YXNtLy4uL3Vuc3VwcG9ydGVkL3RpbWUucnMABL8QAC8AAAANAAAACQAAAGNvbmR2YXIgd2FpdCBub3Qgc3VwcG9ydGVkAABEvxAAGgAAAGxpYnJhcnkvc3RkL3NyYy9zeXMvd2FzbS8uLi91bnN1cHBvcnRlZC9sb2Nrcy9jb25kdmFyLnJzaL8QADgAAAAUAAAACQAAABAAAAARAAAAEgAAABAAAAAQAAAAEwAAABIAAAANAAAADgAAABUAAAAMAAAACwAAABUAAAAVAAAADwAAAA4AAAATAAAAJgAAADgAAAAZAAAAFwAAAAwAAAAJAAAACgAAABAAAAAXAAAAGQAAAA4AAAANAAAAFAAAAAgAAAAbAAAADgAAABAAAAAWAAAAFQAAAAsAAAAWAAAADQAAAAsAAAATAAAAyLcQANi3EADptxAA+7cQAAu4EAAbuBAALrgQAEC4EABNuBAAW7gQAHC4EAB8uBAAh7gQAJy4EACxuBAAwLgQAM64EADhuBAAB7kQAD+5EABYuRAAb7kQAHu5EACEuRAAjrkQAJ65EAC1uRAAzrkQANy5EADpuRAA/bkQAAW6EAAguhAALroQAD66EABUuhAAaboQAHS6EACKuhAAl7oQAKK6EAAIAAAAEAAAABEAAAAPAAAADwAAABIAAAARAAAADAAAAAkAAAAQ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', imports)} - - let wasm; - const heap = new Array(128).fill(undefined); - heap.push(undefined, null, true, false); - let heap_next = heap.length; - function addHeapObject(obj) { - if (heap_next === heap.length) - heap.push(heap.length + 1); - const idx = heap_next; - heap_next = heap[idx]; - heap[idx] = obj; - return idx; - } - function getObject(idx) { - return heap[idx]; - } - function dropObject(idx) { - if (idx < 132) - return; - heap[idx] = heap_next; - heap_next = idx; - } - function takeObject(idx) { - const ret = getObject(idx); - dropObject(idx); - return ret; - } - const cachedTextDecoder = typeof TextDecoder !== "undefined" - ? new TextDecoder("utf-8", { ignoreBOM: true, fatal: true }) - : { - decode: () => { - throw Error("TextDecoder not available"); - }, - }; - if (typeof TextDecoder !== "undefined") { - cachedTextDecoder.decode(); - } - let cachedUint8Memory0 = null; - function getUint8Memory0() { - if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) { - cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); - } - return cachedUint8Memory0; - } - function getStringFromWasm0(ptr, len) { - ptr = ptr >>> 0; - return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); - } - function isLikeNone(x) { - return x === undefined || x === null; - } - let cachedBigInt64Memory0 = null; - function getBigInt64Memory0() { - if (cachedBigInt64Memory0 === null || - cachedBigInt64Memory0.byteLength === 0) { - cachedBigInt64Memory0 = new BigInt64Array(wasm.memory.buffer); - } - return cachedBigInt64Memory0; - } - let cachedInt32Memory0 = null; - function getInt32Memory0() { - if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) { - cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); - } - return cachedInt32Memory0; - } - function debugString(val) { - // primitive types - const type = typeof val; - if (type == "number" || type == "boolean" || val == null) { - return `${val}`; - } - if (type == "string") { - return `"${val}"`; - } - if (type == "symbol") { - const description = val.description; - if (description == null) { - return "Symbol"; - } - else { - return `Symbol(${description})`; - } - } - if (type == "function") { - const name = val.name; - if (typeof name == "string" && name.length > 0) { - return `Function(${name})`; - } - else { - return "Function"; - } - } - // objects - if (Array.isArray(val)) { - const length = val.length; - let debug = "["; - if (length > 0) { - debug += debugString(val[0]); - } - for (let i = 1; i < length; i++) { - debug += ", " + debugString(val[i]); - } - debug += "]"; - return debug; - } - // Test for built-in - const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); - let className; - if (builtInMatches.length > 1) { - className = builtInMatches[1]; - } - else { - // Failed to match the standard '[object ClassName]' - return toString.call(val); - } - if (className == "Object") { - // we're a user defined class or Object - // JSON.stringify avoids problems with cycles, and is generally much - // easier than looping through ownProperties of `val`. - try { - return "Object(" + JSON.stringify(val) + ")"; - } - catch (_) { - return "Object"; - } - } - // errors - if (val instanceof Error) { - return `${val.name}: ${val.message}\n${val.stack}`; - } - // TODO we could test for more things here, like `Set`s and `Map`s. - return className; - } - let WASM_VECTOR_LEN = 0; - const cachedTextEncoder = typeof TextEncoder !== "undefined" - ? new TextEncoder("utf-8") - : { - encode: () => { - throw Error("TextEncoder not available"); - }, - }; - const encodeString = typeof cachedTextEncoder.encodeInto === "function" - ? function (arg, view) { - return cachedTextEncoder.encodeInto(arg, view); - } - : function (arg, view) { - const buf = cachedTextEncoder.encode(arg); - view.set(buf); - return { - read: arg.length, - written: buf.length, - }; - }; - function passStringToWasm0(arg, malloc, realloc) { - if (realloc === undefined) { - const buf = cachedTextEncoder.encode(arg); - const ptr = malloc(buf.length, 1) >>> 0; - getUint8Memory0() - .subarray(ptr, ptr + buf.length) - .set(buf); - WASM_VECTOR_LEN = buf.length; - return ptr; - } - let len = arg.length; - let ptr = malloc(len, 1) >>> 0; - const mem = getUint8Memory0(); - let offset = 0; - for (; offset < len; offset++) { - const code = arg.charCodeAt(offset); - if (code > 0x7f) - break; - mem[ptr + offset] = code; - } - if (offset !== len) { - if (offset !== 0) { - arg = arg.slice(offset); - } - ptr = realloc(ptr, len, (len = offset + arg.length * 3), 1) >>> 0; - const view = getUint8Memory0().subarray(ptr + offset, ptr + len); - const ret = encodeString(arg, view); - offset += ret.written; - } - WASM_VECTOR_LEN = offset; - return ptr; - } - function _assertClass(instance, klass) { - if (!(instance instanceof klass)) { - throw new Error(`expected instance of ${klass.name}`); - } - return instance.ptr; - } - function getArrayU8FromWasm0(ptr, len) { - ptr = ptr >>> 0; - return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len); - } - function passArray8ToWasm0(arg, malloc) { - const ptr = malloc(arg.length * 1, 1) >>> 0; - getUint8Memory0().set(arg, ptr / 1); - WASM_VECTOR_LEN = arg.length; - return ptr; - } - function handleError(f, args) { - try { - return f.apply(this, args); - } - catch (e) { - wasm.__wbindgen_exn_store(addHeapObject(e)); - } - } - /** - */ - class CompactFheBool { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheBool.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfhebool_free(ptr); - } - /** - * @param {boolean} value - * @param {TfheCompactPublicKey} client_key - * @returns {CompactFheBool} - */ - static encrypt_with_compact_public_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheCompactPublicKey); - wasm.compactfhebool_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheBool.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheBool} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfhebool_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheBool.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfhebool_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheBool} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfhebool_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheBool.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfhebool_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompactFheBool} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfhebool_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheBool.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - } - /** - */ - class CompactFheUint128 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheUint128.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfheuint128_free(ptr); - } - /** - * @param {any} value - * @param {TfheCompactPublicKey} client_key - * @returns {CompactFheUint128} - */ - static encrypt_with_compact_public_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheCompactPublicKey); - wasm.compactfheuint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheUint128} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheint128_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint128_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheUint128} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint128_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompactFheUint128} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - } - /** - */ - class CompactFheUint16 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheUint16.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfheuint16_free(ptr); - } - /** - * @param {number} value - * @param {TfheCompactPublicKey} client_key - * @returns {CompactFheUint16} - */ - static encrypt_with_compact_public_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheCompactPublicKey); - wasm.compactfheuint16_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheUint16} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheint128_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint16_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheUint16} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint16_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompactFheUint16} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - } - /** - */ - class CompactFheUint160 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheUint160.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfheuint160_free(ptr); - } - /** - * @param {any} value - * @param {TfheCompactPublicKey} client_key - * @returns {CompactFheUint160} - */ - static encrypt_with_compact_public_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheCompactPublicKey); - wasm.compactfheuint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheUint160} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheint128_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint160_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheUint160} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint160_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompactFheUint160} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - } - /** - */ - class CompactFheUint256 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheUint256.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfheuint256_free(ptr); - } - /** - * @param {any} value - * @param {TfheCompactPublicKey} client_key - * @returns {CompactFheUint256} - */ - static encrypt_with_compact_public_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheCompactPublicKey); - wasm.compactfheuint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheUint256} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheint128_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint256_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheUint256} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint256_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompactFheUint256} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - } - /** - */ - class CompactFheUint32 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheUint32.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfheuint32_free(ptr); - } - /** - * @param {number} value - * @param {TfheCompactPublicKey} client_key - * @returns {CompactFheUint32} - */ - static encrypt_with_compact_public_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheCompactPublicKey); - wasm.compactfheuint32_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheUint32} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheint128_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint32_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheUint32} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint32_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompactFheUint32} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - } - /** - */ - class CompactFheUint64 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheUint64.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfheuint64_free(ptr); - } - /** - * @param {bigint} value - * @param {TfheCompactPublicKey} client_key - * @returns {CompactFheUint64} - */ - static encrypt_with_compact_public_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheCompactPublicKey); - wasm.compactfheuint64_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheUint64} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheint128_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint64_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheUint64} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint64_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompactFheUint64} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - } - /** - */ - class CompactFheUint8 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheUint8.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfheuint8_free(ptr); - } - /** - * @param {number} value - * @param {TfheCompactPublicKey} client_key - * @returns {CompactFheUint8} - */ - static encrypt_with_compact_public_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheCompactPublicKey); - wasm.compactfheuint8_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheUint8} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheint128_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint8_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheUint8} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint8_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompactFheUint8} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - } - /** - */ - class FheBool { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheBool.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fhebool_free(ptr); - } - /** - * @param {boolean} value - * @param {TfheClientKey} client_key - * @returns {FheBool} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fhebool_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheBool.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {boolean} value - * @param {TfhePublicKey} public_key - * @returns {FheBool} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fhebool_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheBool.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {boolean} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheBool} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fhebool_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheBool.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {boolean} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheBool} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fhebool_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheBool.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {boolean} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fhebool_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return r0 !== 0; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fhebool_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheBool} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fhebool_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheBool.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fhebool_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheBool} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fhebool_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheBool.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - } - /** - */ - class FheInt128 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheInt128.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheint128_free(ptr); - } - /** - * @param {any} value - * @param {TfheClientKey} client_key - * @returns {FheInt128} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint128_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfhePublicKey} public_key - * @returns {FheInt128} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheint128_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheInt128} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheint128_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheInt128} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {any} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint128_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint128_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheInt128} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint128_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheInt128} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - } - /** - */ - class FheInt16 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheInt16.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheint16_free(ptr); - } - /** - * @param {number} value - * @param {TfheClientKey} client_key - * @returns {FheInt16} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint16_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfhePublicKey} public_key - * @returns {FheInt16} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheint16_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheInt16} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheint16_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheInt16} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheint16_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {number} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint16_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return r0; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint16_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheInt16} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint16_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheInt16} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - } - /** - */ - class FheInt160 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheInt160.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheint160_free(ptr); - } - /** - * @param {any} value - * @param {TfheClientKey} client_key - * @returns {FheInt160} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint160_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfhePublicKey} public_key - * @returns {FheInt160} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheint160_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheInt160} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheint160_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheInt160} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {any} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint160_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint160_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheInt160} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint160_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheInt160} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - } - /** - */ - class FheInt256 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheInt256.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheint256_free(ptr); - } - /** - * @param {any} value - * @param {TfheClientKey} client_key - * @returns {FheInt256} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint256_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfhePublicKey} public_key - * @returns {FheInt256} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheint256_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheInt256} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheint256_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheInt256} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {any} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint256_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint256_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheInt256} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint256_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheInt256} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - } - /** - */ - class FheInt32 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheInt32.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheint32_free(ptr); - } - /** - * @param {number} value - * @param {TfheClientKey} client_key - * @returns {FheInt32} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint32_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfhePublicKey} public_key - * @returns {FheInt32} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheint32_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheInt32} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheint32_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheInt32} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheint32_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {number} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint32_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return r0; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint32_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheInt32} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint32_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheInt32} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - } - /** - */ - class FheInt64 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheInt64.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheint64_free(ptr); - } - /** - * @param {bigint} value - * @param {TfheClientKey} client_key - * @returns {FheInt64} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint64_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} value - * @param {TfhePublicKey} public_key - * @returns {FheInt64} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheint64_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheInt64} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheint64_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheInt64} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheint64_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {bigint} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint64_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getBigInt64Memory0()[retptr / 8 + 0]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - return r0; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint64_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheInt64} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint64_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheInt64} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - } - /** - */ - class FheInt8 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheInt8.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheint8_free(ptr); - } - /** - * @param {number} value - * @param {TfheClientKey} client_key - * @returns {FheInt8} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint8_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfhePublicKey} public_key - * @returns {FheInt8} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheint8_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheInt8} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheint8_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheInt8} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheint8_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {number} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint8_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return r0; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint8_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheInt8} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint8_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheInt8} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - } - /** - */ - class FheUint128 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheUint128.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheuint128_free(ptr); - } - /** - * @param {any} value - * @param {TfheClientKey} client_key - * @returns {FheUint128} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint128_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfhePublicKey} public_key - * @returns {FheUint128} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheuint128_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheUint128} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheuint128_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheUint128} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheuint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {any} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint128_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint128_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheUint128} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint128_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheUint128} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - } - /** - */ - class FheUint16 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheUint16.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheuint16_free(ptr); - } - /** - * @param {number} value - * @param {TfheClientKey} client_key - * @returns {FheUint16} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint16_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfhePublicKey} public_key - * @returns {FheUint16} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheuint16_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheUint16} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheuint16_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheUint16} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheuint16_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {number} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint16_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return r0; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint16_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheUint16} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint16_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheUint16} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - } - /** - */ - class FheUint160 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheUint160.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheuint160_free(ptr); - } - /** - * @param {any} value - * @param {TfheClientKey} client_key - * @returns {FheUint160} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint160_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfhePublicKey} public_key - * @returns {FheUint160} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheuint160_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheUint160} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheuint160_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheUint160} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheuint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {any} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint160_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint160_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheUint160} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint160_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheUint160} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - } - /** - */ - class FheUint256 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheUint256.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheuint256_free(ptr); - } - /** - * @param {any} value - * @param {TfheClientKey} client_key - * @returns {FheUint256} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint256_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfhePublicKey} public_key - * @returns {FheUint256} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheuint256_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheUint256} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheuint256_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheUint256} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheuint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {any} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint256_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint256_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheUint256} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint256_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheUint256} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - } - /** - */ - class FheUint32 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheUint32.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheuint32_free(ptr); - } - /** - * @param {number} value - * @param {TfheClientKey} client_key - * @returns {FheUint32} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint32_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfhePublicKey} public_key - * @returns {FheUint32} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheuint32_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheUint32} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheuint32_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheUint32} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheuint32_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {number} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint32_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return r0 >>> 0; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint32_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheUint32} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint32_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheUint32} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - } - /** - */ - class FheUint64 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheUint64.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheuint64_free(ptr); - } - /** - * @param {bigint} value - * @param {TfheClientKey} client_key - * @returns {FheUint64} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint64_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} value - * @param {TfhePublicKey} public_key - * @returns {FheUint64} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheuint64_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheUint64} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheuint64_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheUint64} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheuint64_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {bigint} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint64_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getBigInt64Memory0()[retptr / 8 + 0]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - return BigInt.asUintN(64, r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint64_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheUint64} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint64_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheUint64} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - } - /** - */ - class FheUint8 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheUint8.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheuint8_free(ptr); - } - /** - * @param {number} value - * @param {TfheClientKey} client_key - * @returns {FheUint8} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint8_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfhePublicKey} public_key - * @returns {FheUint8} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheuint8_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheUint8} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheuint8_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheUint8} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheuint8_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {number} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint8_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return r0; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint8_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheUint8} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint8_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheUint8} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - } - /** - */ - class TfheClientKey { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(TfheClientKey.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_tfheclientkey_free(ptr); - } - /** - * @param {TfheConfig} config - * @returns {TfheClientKey} - */ - static generate(config) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(config, TfheConfig); - wasm.tfheclientkey_generate(retptr, config.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfheClientKey.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheConfig} config - * @param {any} seed - * @returns {TfheClientKey} - */ - static generate_with_seed(config, seed) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(config, TfheConfig); - wasm.tfheclientkey_generate_with_seed(retptr, config.__wbg_ptr, addHeapObject(seed)); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfheClientKey.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.tfheclientkey_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {TfheClientKey} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.tfheclientkey_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfheClientKey.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - } - /** - */ - class TfheCompactPublicKey { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(TfheCompactPublicKey.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_tfhecompactpublickey_free(ptr); - } - /** - * @param {TfheClientKey} client_key - * @returns {TfheCompactPublicKey} - */ - static new(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.tfhecompactpublickey_new(retptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfheCompactPublicKey.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.tfhecompactpublickey_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {TfheCompactPublicKey} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.tfhecompactpublickey_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfheCompactPublicKey.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - } - /** - */ - class TfheCompressedPublicKey { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(TfheCompressedPublicKey.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_tfhecompressedpublickey_free(ptr); - } - /** - * @param {TfheClientKey} client_key - * @returns {TfheCompressedPublicKey} - */ - static new(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.tfhecompressedpublickey_new(retptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfheCompressedPublicKey.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {TfhePublicKey} - */ - decompress() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.tfhecompressedpublickey_decompress(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfhePublicKey.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.tfhecompressedpublickey_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {TfheCompressedPublicKey} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.tfhecompressedpublickey_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfheCompressedPublicKey.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - } - /** - */ - class TfheConfig { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(TfheConfig.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_tfheconfig_free(ptr); - } - } - /** - */ - class TfheConfigBuilder { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(TfheConfigBuilder.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_tfheconfigbuilder_free(ptr); - } - /** - * @returns {TfheConfigBuilder} - */ - static default() { - const ret = wasm.tfheconfigbuilder_default(); - return TfheConfigBuilder.__wrap(ret); - } - /** - * @returns {TfheConfigBuilder} - */ - static default_with_small_encryption() { - const ret = wasm.tfheconfigbuilder_default_with_small_encryption(); - return TfheConfigBuilder.__wrap(ret); - } - /** - * @returns {TfheConfigBuilder} - */ - static default_with_big_encryption() { - const ret = wasm.tfheconfigbuilder_default(); - return TfheConfigBuilder.__wrap(ret); - } - /** - * @returns {TfheConfig} - */ - build() { - const ptr = this.__destroy_into_raw(); - const ret = wasm.tfheconfigbuilder_build(ptr); - return TfheConfig.__wrap(ret); - } - } - /** - */ - class TfhePublicKey { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(TfhePublicKey.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_tfhepublickey_free(ptr); - } - /** - * @param {TfheClientKey} client_key - * @returns {TfhePublicKey} - */ - static new(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.tfhepublickey_new(retptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfhePublicKey.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.tfhepublickey_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {TfhePublicKey} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.tfhepublickey_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfhePublicKey.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - } - async function __wbg_load(module, imports) { - if (typeof Response === "function" && module instanceof Response) { - if (typeof WebAssembly.instantiateStreaming === "function") { - try { - return await WebAssembly.instantiateStreaming(module, imports); - } - catch (e) { - if (module.headers.get("Content-Type") != "application/wasm") { - console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); - } - else { - throw e; - } - } - } - const bytes = await module.arrayBuffer(); - return await WebAssembly.instantiate(bytes, imports); - } - else { - const instance = await WebAssembly.instantiate(module, imports); - if (instance instanceof WebAssembly.Instance) { - return { instance, module }; - } - else { - return instance; - } - } - } - function __wbg_get_imports() { - const imports = {}; - imports.wbg = {}; - imports.wbg.__wbindgen_bigint_from_u64 = function (arg0) { - const ret = BigInt.asUintN(64, arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_shr = function (arg0, arg1) { - const ret = getObject(arg0) >> getObject(arg1); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_object_drop_ref = function (arg0) { - takeObject(arg0); - }; - imports.wbg.__wbindgen_bigint_from_i64 = function (arg0) { - const ret = arg0; - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_jsval_eq = function (arg0, arg1) { - const ret = getObject(arg0) === getObject(arg1); - return ret; - }; - imports.wbg.__wbindgen_error_new = function (arg0, arg1) { - const ret = new Error(getStringFromWasm0(arg0, arg1)); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_bigint_from_i128 = function (arg0, arg1) { - const ret = (arg0 << BigInt(64)) | BigInt.asUintN(64, arg1); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_bigint_from_u128 = function (arg0, arg1) { - const ret = (BigInt.asUintN(64, arg0) << BigInt(64)) | BigInt.asUintN(64, arg1); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheuint16_new = function (arg0) { - const ret = FheUint16.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheuint160_new = function (arg0) { - const ret = FheUint160.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheuint256_new = function (arg0) { - const ret = FheUint256.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheuint32_new = function (arg0) { - const ret = FheUint32.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheuint128_new = function (arg0) { - const ret = FheUint128.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheuint8_new = function (arg0) { - const ret = FheUint8.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheuint64_new = function (arg0) { - const ret = FheUint64.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheint32_new = function (arg0) { - const ret = FheInt32.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheint64_new = function (arg0) { - const ret = FheInt64.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fhebool_new = function (arg0) { - const ret = FheBool.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheint256_new = function (arg0) { - const ret = FheInt256.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheint160_new = function (arg0) { - const ret = FheInt160.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheint16_new = function (arg0) { - const ret = FheInt16.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheint8_new = function (arg0) { - const ret = FheInt8.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheint128_new = function (arg0) { - const ret = FheInt128.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_boolean_get = function (arg0) { - const v = getObject(arg0); - const ret = typeof v === "boolean" ? (v ? 1 : 0) : 2; - return ret; - }; - imports.wbg.__wbindgen_bigint_from_str = function (arg0, arg1) { - const ret = BigInt(getStringFromWasm0(arg0, arg1)); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_bit_and = function (arg0, arg1) { - const ret = getObject(arg0) & getObject(arg1); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_number_new = function (arg0) { - const ret = arg0; - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_lt = function (arg0, arg1) { - const ret = getObject(arg0) < getObject(arg1); - return ret; - }; - imports.wbg.__wbindgen_neg = function (arg0) { - const ret = -getObject(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_shl = function (arg0, arg1) { - const ret = getObject(arg0) << getObject(arg1); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_add = function (arg0, arg1) { - const ret = getObject(arg0) + getObject(arg1); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_bit_or = function (arg0, arg1) { - const ret = getObject(arg0) | getObject(arg1); - return addHeapObject(ret); - }; - imports.wbg.__wbg_new_abda76e883ba8a5f = function () { - const ret = new Error(); - return addHeapObject(ret); - }; - imports.wbg.__wbg_stack_658279fe44541cf6 = function (arg0, arg1) { - const ret = getObject(arg1).stack; - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }; - imports.wbg.__wbg_error_f851667af71bcfc6 = function (arg0, arg1) { - let deferred0_0; - let deferred0_1; - try { - deferred0_0 = arg0; - deferred0_1 = arg1; - console.error(getStringFromWasm0(arg0, arg1)); - } - finally { - wasm.__wbindgen_free(deferred0_0, deferred0_1, 1); - } - }; - imports.wbg.__wbg_crypto_70a96de3b6b73dac = function (arg0) { - const ret = getObject(arg0).crypto; - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_is_object = function (arg0) { - const val = getObject(arg0); - const ret = typeof val === "object" && val !== null; - return ret; - }; - imports.wbg.__wbg_process_dd1577445152112e = function (arg0) { - const ret = getObject(arg0).process; - return addHeapObject(ret); - }; - imports.wbg.__wbg_versions_58036bec3add9e6f = function (arg0) { - const ret = getObject(arg0).versions; - return addHeapObject(ret); - }; - imports.wbg.__wbg_node_6a9d28205ed5b0d8 = function (arg0) { - const ret = getObject(arg0).node; - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_is_string = function (arg0) { - const ret = typeof getObject(arg0) === "string"; - return ret; - }; - imports.wbg.__wbg_require_f05d779769764e82 = function () { - return handleError(function () { - const ret = module.require; - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbindgen_string_new = function (arg0, arg1) { - const ret = getStringFromWasm0(arg0, arg1); - return addHeapObject(ret); - }; - imports.wbg.__wbg_msCrypto_adbc770ec9eca9c7 = function (arg0) { - const ret = getObject(arg0).msCrypto; - return addHeapObject(ret); - }; - imports.wbg.__wbg_randomFillSync_e950366c42764a07 = function () { - return handleError(function (arg0, arg1) { - getObject(arg0).randomFillSync(takeObject(arg1)); - }, arguments); - }; - imports.wbg.__wbg_getRandomValues_3774744e221a22ad = function () { - return handleError(function (arg0, arg1) { - getObject(arg0).getRandomValues(getObject(arg1)); - }, arguments); - }; - imports.wbg.__wbindgen_is_function = function (arg0) { - const ret = typeof getObject(arg0) === "function"; - return ret; - }; - imports.wbg.__wbg_newnoargs_e643855c6572a4a8 = function (arg0, arg1) { - const ret = new Function(getStringFromWasm0(arg0, arg1)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_call_f96b398515635514 = function () { - return handleError(function (arg0, arg1) { - const ret = getObject(arg0).call(getObject(arg1)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_self_b9aad7f1c618bfaf = function () { - return handleError(function () { - const ret = self.self; - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_window_55e469842c98b086 = function () { - return handleError(function () { - const ret = window.window; - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_globalThis_d0957e302752547e = function () { - return handleError(function () { - const ret = globalThis.globalThis; - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_global_ae2f87312b8987fb = function () { - return handleError(function () { - const ret = global.global; - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbindgen_is_undefined = function (arg0) { - const ret = getObject(arg0) === undefined; - return ret; - }; - imports.wbg.__wbg_call_35782e9a1aa5e091 = function () { - return handleError(function (arg0, arg1, arg2) { - const ret = getObject(arg0).call(getObject(arg1), getObject(arg2)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_buffer_fcbfb6d88b2732e9 = function (arg0) { - const ret = getObject(arg0).buffer; - return addHeapObject(ret); - }; - imports.wbg.__wbg_newwithbyteoffsetandlength_92c251989c485785 = function (arg0, arg1, arg2) { - const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_new_bc5d9aad3f9ac80e = function (arg0) { - const ret = new Uint8Array(getObject(arg0)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_set_4b3aa8445ac1e91c = function (arg0, arg1, arg2) { - getObject(arg0).set(getObject(arg1), arg2 >>> 0); - }; - imports.wbg.__wbg_newwithlength_89eca18f2603a999 = function (arg0) { - const ret = new Uint8Array(arg0 >>> 0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_subarray_7649d027b2b141b3 = function (arg0, arg1, arg2) { - const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_object_clone_ref = function (arg0) { - const ret = getObject(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_bigint_get_as_i64 = function (arg0, arg1) { - const v = getObject(arg1); - const ret = typeof v === "bigint" ? v : undefined; - getBigInt64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? BigInt(0) : ret; - getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret); - }; - imports.wbg.__wbindgen_debug_string = function (arg0, arg1) { - const ret = debugString(getObject(arg1)); - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }; - imports.wbg.__wbindgen_throw = function (arg0, arg1) { - throw new Error(getStringFromWasm0(arg0, arg1)); - }; - imports.wbg.__wbindgen_memory = function () { - const ret = wasm.memory; - return addHeapObject(ret); - }; - return imports; - } - function __wbg_finalize_init(instance, module) { - wasm = instance.exports; - __wbg_init.__wbindgen_wasm_module = module; - cachedBigInt64Memory0 = null; - cachedInt32Memory0 = null; - cachedUint8Memory0 = null; - return wasm; - } - async function __wbg_init(input) { - if (wasm !== undefined) - return wasm; - // FHENIX: disabling this because it fucks with frameworks that try to resolve it - // if (typeof input === 'undefined') { - // input = new URL('tfhe_bg.wasm', import.meta.url); - // } - const imports = __wbg_get_imports(); - if (typeof input === "string" || - (typeof Request === "function" && input instanceof Request) || - (typeof URL === "function" && input instanceof URL)) { - input = fetch(input); - } - const { instance, module } = await __wbg_load(await input, imports); - return __wbg_finalize_init(instance, module); - } - - let initialized; - const initFhevm = async () => { - if (!initialized) { - try { - initialized = await __wbg_init(wasm$1); - } - catch (_) { - initialized = await __wbg_init(wasm$1()); - } - } - return initialized; - }; - const asyncInitFhevm = async () => { - try { - await initFhevm(); - } - catch (err) { - throw new Error(`Error initializing FhenixClient ${err}`); - } - }; - - function assertIs(is, expected, value) { - if (!is) { - throw new Error(`Expected value which is \`${expected}\`, received value of type \`${typeof value}\`.`); - } - } - function isString(value) { - const is = typeof value === "string"; - assertIs(is, "string", value); - } - function isPlainObject$1(value) { - // From: https://github.com/sindresorhus/is-plain-obj/blob/main/index.js - if (typeof value !== "object" || value === null) { - return false; - } - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - const prototype = Object.getPrototypeOf(value); - const is = (prototype === null || - prototype === Object.prototype || - Object.getPrototypeOf(prototype) === null) && - !(Symbol.toStringTag in value) && - !(Symbol.iterator in value); - assertIs(is, "plain object", value); - return true; - } - function isBigIntOrHexString(value) { - const is = typeof value === "bigint" || typeof value === "string"; - assertIs(is, "bigint or hex string", value); - } - function isNumber(value) { - const is = typeof value === "number" && !Number.isNaN(value); - assertIs(is, "number", value); - } - function isBigIntOrNumber(value) { - const is = typeof value === "bigint"; - if (!is) { - try { - isNumber(value); - } - catch (e) { - throw new Error(`Value ${value} is not a number or bigint: ${typeof value}`); - } - } - } - - const ValidateUintInRange = (value, max, min) => { - isNumber(value); - if (value > max || value < min) { - throw new Error(`Value out of range: ${max} - ${min}, try a different uint type`); - } - }; - const fromHexString = (hexString) => { - const cleanString = hexString.length % 2 === 1 ? `0${hexString}` : hexString; - const arr = cleanString.replace(/^0x/, "").match(/.{1,2}/g); - if (!arr) - return new Uint8Array(); - return new Uint8Array(arr.map((byte) => parseInt(byte, 16))); - }; - const toHexString$1 = (bytes) => bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, "0"), ""); - function toBigInt(value) { - return ethersToBigInt(value); - } - function toBeArray(value) { - return ethersToBeArray(value); - } - function isAddress$1(address) { - if (!_isAddress(address)) { - throw new Error(`Address ${address} is not valid EVM address`); - } - } - function _isAddress(value) { - try { - if (!value.startsWith("0x")) { - return false; - } - else if (value.length !== 42) { - return false; - } - return true; - } - catch (error) { - return false; - } - } - const Nibbles = "0123456789abcdef"; - // IEEE 754 support 53-bits of mantissa - const maxValue = 0x1fffffffffffff; - const BN_0$1 = BigInt(0); - /* - * Converts %%value%% to a BigInt. If %%value%% is a Uint8Array, it - * is treated as Big Endian data. - */ - function ethersToBigInt(value) { - if (value instanceof Uint8Array) { - let result = "0x0"; - for (const v of value) { - result += Nibbles[v >> 4]; - result += Nibbles[v & 0x0f]; - } - return BigInt(result); - } - return getBigInt(value); - } - function ethersToBeArray(_value) { - const value = getUint(_value); - if (value === BN_0$1) { - return new Uint8Array([]); - } - let hex = value.toString(16); - if (hex.length % 2) { - hex = "0" + hex; - } - const result = new Uint8Array(hex.length / 2); - for (let i = 0; i < result.length; i++) { - const offset = i * 2; - result[i] = parseInt(hex.substring(offset, offset + 2), 16); - } - return result; - } - /** - * Returns %%value%% as a bigint, validating it is valid as a bigint - * value and that it is positive. - */ - function getUint(value) { - const result = getBigInt(value); - assertArgument$1(result >= BN_0$1, "unsigned value cannot be negative"); - return result; - } - /** - * Gets a BigInt from %%value%%. If it is an invalid value for - * a BigInt, then an ArgumentError will be thrown for %%name%%. - */ - function getBigInt(value) { - switch (typeof value) { - case "bigint": - return value; - case "number": - assertArgument$1(Number.isInteger(value), "underflow"); - assertArgument$1(value >= -maxValue && value <= maxValue, "overflow"); - return BigInt(value); - case "string": - try { - if (value === "") { - throw new Error("empty string"); - } - if (value[0] === "-" && value[1] !== "-") { - return -BigInt(value.substring(1)); - } - return BigInt(value); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - } - catch (e) { - assertArgument$1(false, `invalid BigNumberish string: ${e.message}`); - } - } - assertArgument$1(false, "invalid BigNumberish value"); - } - function assertArgument$1(check, message) { - if (!check) { - throw new Error(message); - } - } - function toABIEncodedUint32(value) { - // Ensure the number is a valid unsigned 32-bit integer - if (value < 0 || value > 0xffffffff) { - throw new RangeError("Number must be between 0 and 2^32 - 1."); - } - // Convert the number to a hexadecimal string and pad it to 64 characters (32 bytes) - return value.toString(16).padStart(64, "0"); - } - // Uint8Array conversions - const stringToUint8Array = (value) => { - return new Uint8Array(value.split("").map((c) => c.charCodeAt(0))); - }; - function bigintToUint8Array(bigNum) { - const byteLength = 32; - const byteArray = new Uint8Array(byteLength); - // Create a BigInt mask for each byte - const mask = BigInt(0xff); - // Initialize an index to start from the end of the array - for (let i = 0; i < byteLength; i++) { - // Extract the last byte and assign it to the corresponding position in the array - byteArray[byteLength - 1 - i] = Number(bigNum & mask); - // Shift bigint right by 8 bits to process the next byte in the next iteration - bigNum >>= BigInt(8); - } - return byteArray; - } - // HARDHAT MOCKS - // Mock FHE operations are automatically injected on the hardhat network - // The utility functions allow the client / sdk to interact with the mocked FHE ops - const chainIsHardhat = (chainId) => { - if (chainId == null) - return false; - return parseInt(chainId) === 31337; - }; - const hardhatMockUnseal = (value) => { - let result = BigInt(0); - for (const byteArrayItem of stringToUint8Array(value)) { - result = (result << BigInt(8)) + BigInt(byteArrayItem); - } - return result; - }; - const hardhatMockEncrypt = (value, securityZone = 0) => ({ - data: bigintToUint8Array(BigInt(value)), - securityZone: securityZone || 0, - }); - - /** - * An enumeration of supported encryption types. - * uint8, uint16, and uint32 represent the different sizes of integers that can be encrypted. - */ - exports.EncryptionTypes = void 0; - (function (EncryptionTypes) { - EncryptionTypes["bool"] = "bool"; - EncryptionTypes["uint8"] = "uint8"; - EncryptionTypes["uint16"] = "uint16"; - EncryptionTypes["uint32"] = "uint32"; - EncryptionTypes["uint64"] = "uint64"; - EncryptionTypes["uint128"] = "uint128"; - EncryptionTypes["uint256"] = "uint256"; - EncryptionTypes["address"] = "address"; - })(exports.EncryptionTypes || (exports.EncryptionTypes = {})); - /** - * Determines the request method for a given provider. - * Checks if the provider has a 'request' method typical for Eip1193Providers, or a 'send' method for others. - * Throws an error if neither method is found. - * @param {SupportedProvider} provider - The provider to determine the request method for. - * @returns {Function} - The determined request function. - */ - // eslint-disable-next-line @typescript-eslint/ban-types - function determineRequestMethod(provider) { - if ("request" in provider && typeof provider.request === "function") { - return (p, method, params) => p.request({ method, params }); - } - else if ("send" in provider && typeof provider.send === "function") { - return (p, method, params) => p.send(method, params); - } - else { - throw new Error("Received unsupported provider. 'send' or 'request' method not found"); - } - } - /** - * Determines the request signer function for a given provider. - * Checks if the provider has a 'getSigner' method and returns it if available. - * Throws an error if no 'getSigner' method is found. - * @param {SupportedProvider} provider - The provider to determine the request signer for. - * @returns {Function} - The determined request signer function. - */ - // eslint-disable-next-line @typescript-eslint/ban-types - function determineRequestSigner(provider) { - if ("getSigner" in provider && typeof provider.getSigner === "function") { - return (p) => p.getSigner(); - } - else { - throw new Error("The supplied provider cannot get a signer"); - } - } - - var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - - function getAugmentedNamespace(n) { - if (n.__esModule) return n; - var f = n.default; - if (typeof f == "function") { - var a = function a () { - if (this instanceof a) { - return Reflect.construct(f, arguments, this.constructor); - } - return f.apply(this, arguments); - }; - a.prototype = f.prototype; - } else a = {}; - Object.defineProperty(a, '__esModule', {value: true}); - Object.keys(n).forEach(function (k) { - var d = Object.getOwnPropertyDescriptor(n, k); - Object.defineProperty(a, k, d.get ? d : { - enumerable: true, - get: function () { - return n[k]; - } - }); - }); - return a; - } - - function commonjsRequire(path) { - throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.'); - } - - var naclFast = {exports: {}}; - - var _nodeResolve_empty = {}; - - var _nodeResolve_empty$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - default: _nodeResolve_empty - }); - - var require$$0 = /*@__PURE__*/getAugmentedNamespace(_nodeResolve_empty$1); - - (function (module) { - (function(nacl) { - - // Ported in 2014 by Dmitry Chestnykh and Devi Mandiri. - // Public domain. - // - // Implementation derived from TweetNaCl version 20140427. - // See for details: http://tweetnacl.cr.yp.to/ - - var gf = function(init) { - var i, r = new Float64Array(16); - if (init) for (i = 0; i < init.length; i++) r[i] = init[i]; - return r; - }; - - // Pluggable, initialized in high-level API below. - var randombytes = function(/* x, n */) { throw new Error('no PRNG'); }; - - var _0 = new Uint8Array(16); - var _9 = new Uint8Array(32); _9[0] = 9; - - var gf0 = gf(), - gf1 = gf([1]), - _121665 = gf([0xdb41, 1]), - D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]), - D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]), - X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]), - Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]), - I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]); - - function ts64(x, i, h, l) { - x[i] = (h >> 24) & 0xff; - x[i+1] = (h >> 16) & 0xff; - x[i+2] = (h >> 8) & 0xff; - x[i+3] = h & 0xff; - x[i+4] = (l >> 24) & 0xff; - x[i+5] = (l >> 16) & 0xff; - x[i+6] = (l >> 8) & 0xff; - x[i+7] = l & 0xff; - } - - function vn(x, xi, y, yi, n) { - var i,d = 0; - for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i]; - return (1 & ((d - 1) >>> 8)) - 1; - } - - function crypto_verify_16(x, xi, y, yi) { - return vn(x,xi,y,yi,16); - } - - function crypto_verify_32(x, xi, y, yi) { - return vn(x,xi,y,yi,32); - } - - function core_salsa20(o, p, k, c) { - var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, - j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, - j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, - j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, - j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, - j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, - j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, - j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, - j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, - j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, - j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, - j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, - j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, - j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, - j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, - j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; - - var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, - x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, - x15 = j15, u; - - for (var i = 0; i < 20; i += 2) { - u = x0 + x12 | 0; - x4 ^= u<<7 | u>>>(32-7); - u = x4 + x0 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x4 | 0; - x12 ^= u<<13 | u>>>(32-13); - u = x12 + x8 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x1 | 0; - x9 ^= u<<7 | u>>>(32-7); - u = x9 + x5 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x9 | 0; - x1 ^= u<<13 | u>>>(32-13); - u = x1 + x13 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x6 | 0; - x14 ^= u<<7 | u>>>(32-7); - u = x14 + x10 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x14 | 0; - x6 ^= u<<13 | u>>>(32-13); - u = x6 + x2 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x11 | 0; - x3 ^= u<<7 | u>>>(32-7); - u = x3 + x15 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x3 | 0; - x11 ^= u<<13 | u>>>(32-13); - u = x11 + x7 | 0; - x15 ^= u<<18 | u>>>(32-18); - - u = x0 + x3 | 0; - x1 ^= u<<7 | u>>>(32-7); - u = x1 + x0 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x1 | 0; - x3 ^= u<<13 | u>>>(32-13); - u = x3 + x2 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x4 | 0; - x6 ^= u<<7 | u>>>(32-7); - u = x6 + x5 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x6 | 0; - x4 ^= u<<13 | u>>>(32-13); - u = x4 + x7 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x9 | 0; - x11 ^= u<<7 | u>>>(32-7); - u = x11 + x10 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x11 | 0; - x9 ^= u<<13 | u>>>(32-13); - u = x9 + x8 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x14 | 0; - x12 ^= u<<7 | u>>>(32-7); - u = x12 + x15 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x12 | 0; - x14 ^= u<<13 | u>>>(32-13); - u = x14 + x13 | 0; - x15 ^= u<<18 | u>>>(32-18); - } - x0 = x0 + j0 | 0; - x1 = x1 + j1 | 0; - x2 = x2 + j2 | 0; - x3 = x3 + j3 | 0; - x4 = x4 + j4 | 0; - x5 = x5 + j5 | 0; - x6 = x6 + j6 | 0; - x7 = x7 + j7 | 0; - x8 = x8 + j8 | 0; - x9 = x9 + j9 | 0; - x10 = x10 + j10 | 0; - x11 = x11 + j11 | 0; - x12 = x12 + j12 | 0; - x13 = x13 + j13 | 0; - x14 = x14 + j14 | 0; - x15 = x15 + j15 | 0; - - o[ 0] = x0 >>> 0 & 0xff; - o[ 1] = x0 >>> 8 & 0xff; - o[ 2] = x0 >>> 16 & 0xff; - o[ 3] = x0 >>> 24 & 0xff; - - o[ 4] = x1 >>> 0 & 0xff; - o[ 5] = x1 >>> 8 & 0xff; - o[ 6] = x1 >>> 16 & 0xff; - o[ 7] = x1 >>> 24 & 0xff; - - o[ 8] = x2 >>> 0 & 0xff; - o[ 9] = x2 >>> 8 & 0xff; - o[10] = x2 >>> 16 & 0xff; - o[11] = x2 >>> 24 & 0xff; - - o[12] = x3 >>> 0 & 0xff; - o[13] = x3 >>> 8 & 0xff; - o[14] = x3 >>> 16 & 0xff; - o[15] = x3 >>> 24 & 0xff; - - o[16] = x4 >>> 0 & 0xff; - o[17] = x4 >>> 8 & 0xff; - o[18] = x4 >>> 16 & 0xff; - o[19] = x4 >>> 24 & 0xff; - - o[20] = x5 >>> 0 & 0xff; - o[21] = x5 >>> 8 & 0xff; - o[22] = x5 >>> 16 & 0xff; - o[23] = x5 >>> 24 & 0xff; - - o[24] = x6 >>> 0 & 0xff; - o[25] = x6 >>> 8 & 0xff; - o[26] = x6 >>> 16 & 0xff; - o[27] = x6 >>> 24 & 0xff; - - o[28] = x7 >>> 0 & 0xff; - o[29] = x7 >>> 8 & 0xff; - o[30] = x7 >>> 16 & 0xff; - o[31] = x7 >>> 24 & 0xff; - - o[32] = x8 >>> 0 & 0xff; - o[33] = x8 >>> 8 & 0xff; - o[34] = x8 >>> 16 & 0xff; - o[35] = x8 >>> 24 & 0xff; - - o[36] = x9 >>> 0 & 0xff; - o[37] = x9 >>> 8 & 0xff; - o[38] = x9 >>> 16 & 0xff; - o[39] = x9 >>> 24 & 0xff; - - o[40] = x10 >>> 0 & 0xff; - o[41] = x10 >>> 8 & 0xff; - o[42] = x10 >>> 16 & 0xff; - o[43] = x10 >>> 24 & 0xff; - - o[44] = x11 >>> 0 & 0xff; - o[45] = x11 >>> 8 & 0xff; - o[46] = x11 >>> 16 & 0xff; - o[47] = x11 >>> 24 & 0xff; - - o[48] = x12 >>> 0 & 0xff; - o[49] = x12 >>> 8 & 0xff; - o[50] = x12 >>> 16 & 0xff; - o[51] = x12 >>> 24 & 0xff; - - o[52] = x13 >>> 0 & 0xff; - o[53] = x13 >>> 8 & 0xff; - o[54] = x13 >>> 16 & 0xff; - o[55] = x13 >>> 24 & 0xff; - - o[56] = x14 >>> 0 & 0xff; - o[57] = x14 >>> 8 & 0xff; - o[58] = x14 >>> 16 & 0xff; - o[59] = x14 >>> 24 & 0xff; - - o[60] = x15 >>> 0 & 0xff; - o[61] = x15 >>> 8 & 0xff; - o[62] = x15 >>> 16 & 0xff; - o[63] = x15 >>> 24 & 0xff; - } - - function core_hsalsa20(o,p,k,c) { - var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, - j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, - j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, - j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, - j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, - j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, - j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, - j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, - j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, - j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, - j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, - j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, - j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, - j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, - j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, - j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; - - var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, - x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, - x15 = j15, u; - - for (var i = 0; i < 20; i += 2) { - u = x0 + x12 | 0; - x4 ^= u<<7 | u>>>(32-7); - u = x4 + x0 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x4 | 0; - x12 ^= u<<13 | u>>>(32-13); - u = x12 + x8 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x1 | 0; - x9 ^= u<<7 | u>>>(32-7); - u = x9 + x5 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x9 | 0; - x1 ^= u<<13 | u>>>(32-13); - u = x1 + x13 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x6 | 0; - x14 ^= u<<7 | u>>>(32-7); - u = x14 + x10 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x14 | 0; - x6 ^= u<<13 | u>>>(32-13); - u = x6 + x2 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x11 | 0; - x3 ^= u<<7 | u>>>(32-7); - u = x3 + x15 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x3 | 0; - x11 ^= u<<13 | u>>>(32-13); - u = x11 + x7 | 0; - x15 ^= u<<18 | u>>>(32-18); - - u = x0 + x3 | 0; - x1 ^= u<<7 | u>>>(32-7); - u = x1 + x0 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x1 | 0; - x3 ^= u<<13 | u>>>(32-13); - u = x3 + x2 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x4 | 0; - x6 ^= u<<7 | u>>>(32-7); - u = x6 + x5 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x6 | 0; - x4 ^= u<<13 | u>>>(32-13); - u = x4 + x7 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x9 | 0; - x11 ^= u<<7 | u>>>(32-7); - u = x11 + x10 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x11 | 0; - x9 ^= u<<13 | u>>>(32-13); - u = x9 + x8 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x14 | 0; - x12 ^= u<<7 | u>>>(32-7); - u = x12 + x15 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x12 | 0; - x14 ^= u<<13 | u>>>(32-13); - u = x14 + x13 | 0; - x15 ^= u<<18 | u>>>(32-18); - } - - o[ 0] = x0 >>> 0 & 0xff; - o[ 1] = x0 >>> 8 & 0xff; - o[ 2] = x0 >>> 16 & 0xff; - o[ 3] = x0 >>> 24 & 0xff; - - o[ 4] = x5 >>> 0 & 0xff; - o[ 5] = x5 >>> 8 & 0xff; - o[ 6] = x5 >>> 16 & 0xff; - o[ 7] = x5 >>> 24 & 0xff; - - o[ 8] = x10 >>> 0 & 0xff; - o[ 9] = x10 >>> 8 & 0xff; - o[10] = x10 >>> 16 & 0xff; - o[11] = x10 >>> 24 & 0xff; - - o[12] = x15 >>> 0 & 0xff; - o[13] = x15 >>> 8 & 0xff; - o[14] = x15 >>> 16 & 0xff; - o[15] = x15 >>> 24 & 0xff; - - o[16] = x6 >>> 0 & 0xff; - o[17] = x6 >>> 8 & 0xff; - o[18] = x6 >>> 16 & 0xff; - o[19] = x6 >>> 24 & 0xff; - - o[20] = x7 >>> 0 & 0xff; - o[21] = x7 >>> 8 & 0xff; - o[22] = x7 >>> 16 & 0xff; - o[23] = x7 >>> 24 & 0xff; - - o[24] = x8 >>> 0 & 0xff; - o[25] = x8 >>> 8 & 0xff; - o[26] = x8 >>> 16 & 0xff; - o[27] = x8 >>> 24 & 0xff; - - o[28] = x9 >>> 0 & 0xff; - o[29] = x9 >>> 8 & 0xff; - o[30] = x9 >>> 16 & 0xff; - o[31] = x9 >>> 24 & 0xff; - } - - function crypto_core_salsa20(out,inp,k,c) { - core_salsa20(out,inp,k,c); - } - - function crypto_core_hsalsa20(out,inp,k,c) { - core_hsalsa20(out,inp,k,c); - } - - var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]); - // "expand 32-byte k" - - function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) { - var z = new Uint8Array(16), x = new Uint8Array(64); - var u, i; - for (i = 0; i < 16; i++) z[i] = 0; - for (i = 0; i < 8; i++) z[i] = n[i]; - while (b >= 64) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i]; - u = 1; - for (i = 8; i < 16; i++) { - u = u + (z[i] & 0xff) | 0; - z[i] = u & 0xff; - u >>>= 8; - } - b -= 64; - cpos += 64; - mpos += 64; - } - if (b > 0) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i]; - } - return 0; - } - - function crypto_stream_salsa20(c,cpos,b,n,k) { - var z = new Uint8Array(16), x = new Uint8Array(64); - var u, i; - for (i = 0; i < 16; i++) z[i] = 0; - for (i = 0; i < 8; i++) z[i] = n[i]; - while (b >= 64) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < 64; i++) c[cpos+i] = x[i]; - u = 1; - for (i = 8; i < 16; i++) { - u = u + (z[i] & 0xff) | 0; - z[i] = u & 0xff; - u >>>= 8; - } - b -= 64; - cpos += 64; - } - if (b > 0) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < b; i++) c[cpos+i] = x[i]; - } - return 0; - } - - function crypto_stream(c,cpos,d,n,k) { - var s = new Uint8Array(32); - crypto_core_hsalsa20(s,n,k,sigma); - var sn = new Uint8Array(8); - for (var i = 0; i < 8; i++) sn[i] = n[i+16]; - return crypto_stream_salsa20(c,cpos,d,sn,s); - } - - function crypto_stream_xor(c,cpos,m,mpos,d,n,k) { - var s = new Uint8Array(32); - crypto_core_hsalsa20(s,n,k,sigma); - var sn = new Uint8Array(8); - for (var i = 0; i < 8; i++) sn[i] = n[i+16]; - return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s); - } - - /* - * Port of Andrew Moon's Poly1305-donna-16. Public domain. - * https://github.com/floodyberry/poly1305-donna - */ - - var poly1305 = function(key) { - this.buffer = new Uint8Array(16); - this.r = new Uint16Array(10); - this.h = new Uint16Array(10); - this.pad = new Uint16Array(8); - this.leftover = 0; - this.fin = 0; - - var t0, t1, t2, t3, t4, t5, t6, t7; - - t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff; - t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff; - t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03; - t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff; - t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff; - this.r[5] = ((t4 >>> 1)) & 0x1ffe; - t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff; - t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81; - t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff; - this.r[9] = ((t7 >>> 5)) & 0x007f; - - this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8; - this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8; - this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8; - this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8; - this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8; - this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8; - this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8; - this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8; - }; - - poly1305.prototype.blocks = function(m, mpos, bytes) { - var hibit = this.fin ? 0 : (1 << 11); - var t0, t1, t2, t3, t4, t5, t6, t7, c; - var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9; - - var h0 = this.h[0], - h1 = this.h[1], - h2 = this.h[2], - h3 = this.h[3], - h4 = this.h[4], - h5 = this.h[5], - h6 = this.h[6], - h7 = this.h[7], - h8 = this.h[8], - h9 = this.h[9]; - - var r0 = this.r[0], - r1 = this.r[1], - r2 = this.r[2], - r3 = this.r[3], - r4 = this.r[4], - r5 = this.r[5], - r6 = this.r[6], - r7 = this.r[7], - r8 = this.r[8], - r9 = this.r[9]; - - while (bytes >= 16) { - t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff; - t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff; - t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff; - t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff; - t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff; - h5 += ((t4 >>> 1)) & 0x1fff; - t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff; - t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff; - t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff; - h9 += ((t7 >>> 5)) | hibit; - - c = 0; - - d0 = c; - d0 += h0 * r0; - d0 += h1 * (5 * r9); - d0 += h2 * (5 * r8); - d0 += h3 * (5 * r7); - d0 += h4 * (5 * r6); - c = (d0 >>> 13); d0 &= 0x1fff; - d0 += h5 * (5 * r5); - d0 += h6 * (5 * r4); - d0 += h7 * (5 * r3); - d0 += h8 * (5 * r2); - d0 += h9 * (5 * r1); - c += (d0 >>> 13); d0 &= 0x1fff; - - d1 = c; - d1 += h0 * r1; - d1 += h1 * r0; - d1 += h2 * (5 * r9); - d1 += h3 * (5 * r8); - d1 += h4 * (5 * r7); - c = (d1 >>> 13); d1 &= 0x1fff; - d1 += h5 * (5 * r6); - d1 += h6 * (5 * r5); - d1 += h7 * (5 * r4); - d1 += h8 * (5 * r3); - d1 += h9 * (5 * r2); - c += (d1 >>> 13); d1 &= 0x1fff; - - d2 = c; - d2 += h0 * r2; - d2 += h1 * r1; - d2 += h2 * r0; - d2 += h3 * (5 * r9); - d2 += h4 * (5 * r8); - c = (d2 >>> 13); d2 &= 0x1fff; - d2 += h5 * (5 * r7); - d2 += h6 * (5 * r6); - d2 += h7 * (5 * r5); - d2 += h8 * (5 * r4); - d2 += h9 * (5 * r3); - c += (d2 >>> 13); d2 &= 0x1fff; - - d3 = c; - d3 += h0 * r3; - d3 += h1 * r2; - d3 += h2 * r1; - d3 += h3 * r0; - d3 += h4 * (5 * r9); - c = (d3 >>> 13); d3 &= 0x1fff; - d3 += h5 * (5 * r8); - d3 += h6 * (5 * r7); - d3 += h7 * (5 * r6); - d3 += h8 * (5 * r5); - d3 += h9 * (5 * r4); - c += (d3 >>> 13); d3 &= 0x1fff; - - d4 = c; - d4 += h0 * r4; - d4 += h1 * r3; - d4 += h2 * r2; - d4 += h3 * r1; - d4 += h4 * r0; - c = (d4 >>> 13); d4 &= 0x1fff; - d4 += h5 * (5 * r9); - d4 += h6 * (5 * r8); - d4 += h7 * (5 * r7); - d4 += h8 * (5 * r6); - d4 += h9 * (5 * r5); - c += (d4 >>> 13); d4 &= 0x1fff; - - d5 = c; - d5 += h0 * r5; - d5 += h1 * r4; - d5 += h2 * r3; - d5 += h3 * r2; - d5 += h4 * r1; - c = (d5 >>> 13); d5 &= 0x1fff; - d5 += h5 * r0; - d5 += h6 * (5 * r9); - d5 += h7 * (5 * r8); - d5 += h8 * (5 * r7); - d5 += h9 * (5 * r6); - c += (d5 >>> 13); d5 &= 0x1fff; - - d6 = c; - d6 += h0 * r6; - d6 += h1 * r5; - d6 += h2 * r4; - d6 += h3 * r3; - d6 += h4 * r2; - c = (d6 >>> 13); d6 &= 0x1fff; - d6 += h5 * r1; - d6 += h6 * r0; - d6 += h7 * (5 * r9); - d6 += h8 * (5 * r8); - d6 += h9 * (5 * r7); - c += (d6 >>> 13); d6 &= 0x1fff; - - d7 = c; - d7 += h0 * r7; - d7 += h1 * r6; - d7 += h2 * r5; - d7 += h3 * r4; - d7 += h4 * r3; - c = (d7 >>> 13); d7 &= 0x1fff; - d7 += h5 * r2; - d7 += h6 * r1; - d7 += h7 * r0; - d7 += h8 * (5 * r9); - d7 += h9 * (5 * r8); - c += (d7 >>> 13); d7 &= 0x1fff; - - d8 = c; - d8 += h0 * r8; - d8 += h1 * r7; - d8 += h2 * r6; - d8 += h3 * r5; - d8 += h4 * r4; - c = (d8 >>> 13); d8 &= 0x1fff; - d8 += h5 * r3; - d8 += h6 * r2; - d8 += h7 * r1; - d8 += h8 * r0; - d8 += h9 * (5 * r9); - c += (d8 >>> 13); d8 &= 0x1fff; - - d9 = c; - d9 += h0 * r9; - d9 += h1 * r8; - d9 += h2 * r7; - d9 += h3 * r6; - d9 += h4 * r5; - c = (d9 >>> 13); d9 &= 0x1fff; - d9 += h5 * r4; - d9 += h6 * r3; - d9 += h7 * r2; - d9 += h8 * r1; - d9 += h9 * r0; - c += (d9 >>> 13); d9 &= 0x1fff; - - c = (((c << 2) + c)) | 0; - c = (c + d0) | 0; - d0 = c & 0x1fff; - c = (c >>> 13); - d1 += c; - - h0 = d0; - h1 = d1; - h2 = d2; - h3 = d3; - h4 = d4; - h5 = d5; - h6 = d6; - h7 = d7; - h8 = d8; - h9 = d9; - - mpos += 16; - bytes -= 16; - } - this.h[0] = h0; - this.h[1] = h1; - this.h[2] = h2; - this.h[3] = h3; - this.h[4] = h4; - this.h[5] = h5; - this.h[6] = h6; - this.h[7] = h7; - this.h[8] = h8; - this.h[9] = h9; - }; - - poly1305.prototype.finish = function(mac, macpos) { - var g = new Uint16Array(10); - var c, mask, f, i; - - if (this.leftover) { - i = this.leftover; - this.buffer[i++] = 1; - for (; i < 16; i++) this.buffer[i] = 0; - this.fin = 1; - this.blocks(this.buffer, 0, 16); - } - - c = this.h[1] >>> 13; - this.h[1] &= 0x1fff; - for (i = 2; i < 10; i++) { - this.h[i] += c; - c = this.h[i] >>> 13; - this.h[i] &= 0x1fff; - } - this.h[0] += (c * 5); - c = this.h[0] >>> 13; - this.h[0] &= 0x1fff; - this.h[1] += c; - c = this.h[1] >>> 13; - this.h[1] &= 0x1fff; - this.h[2] += c; - - g[0] = this.h[0] + 5; - c = g[0] >>> 13; - g[0] &= 0x1fff; - for (i = 1; i < 10; i++) { - g[i] = this.h[i] + c; - c = g[i] >>> 13; - g[i] &= 0x1fff; - } - g[9] -= (1 << 13); - - mask = (c ^ 1) - 1; - for (i = 0; i < 10; i++) g[i] &= mask; - mask = ~mask; - for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i]; - - this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff; - this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff; - this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff; - this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff; - this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff; - this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff; - this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff; - this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff; - - f = this.h[0] + this.pad[0]; - this.h[0] = f & 0xffff; - for (i = 1; i < 8; i++) { - f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0; - this.h[i] = f & 0xffff; - } - - mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff; - mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff; - mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff; - mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff; - mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff; - mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff; - mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff; - mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff; - mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff; - mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff; - mac[macpos+10] = (this.h[5] >>> 0) & 0xff; - mac[macpos+11] = (this.h[5] >>> 8) & 0xff; - mac[macpos+12] = (this.h[6] >>> 0) & 0xff; - mac[macpos+13] = (this.h[6] >>> 8) & 0xff; - mac[macpos+14] = (this.h[7] >>> 0) & 0xff; - mac[macpos+15] = (this.h[7] >>> 8) & 0xff; - }; - - poly1305.prototype.update = function(m, mpos, bytes) { - var i, want; - - if (this.leftover) { - want = (16 - this.leftover); - if (want > bytes) - want = bytes; - for (i = 0; i < want; i++) - this.buffer[this.leftover + i] = m[mpos+i]; - bytes -= want; - mpos += want; - this.leftover += want; - if (this.leftover < 16) - return; - this.blocks(this.buffer, 0, 16); - this.leftover = 0; - } - - if (bytes >= 16) { - want = bytes - (bytes % 16); - this.blocks(m, mpos, want); - mpos += want; - bytes -= want; - } - - if (bytes) { - for (i = 0; i < bytes; i++) - this.buffer[this.leftover + i] = m[mpos+i]; - this.leftover += bytes; - } - }; - - function crypto_onetimeauth(out, outpos, m, mpos, n, k) { - var s = new poly1305(k); - s.update(m, mpos, n); - s.finish(out, outpos); - return 0; - } - - function crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) { - var x = new Uint8Array(16); - crypto_onetimeauth(x,0,m,mpos,n,k); - return crypto_verify_16(h,hpos,x,0); - } - - function crypto_secretbox(c,m,d,n,k) { - var i; - if (d < 32) return -1; - crypto_stream_xor(c,0,m,0,d,n,k); - crypto_onetimeauth(c, 16, c, 32, d - 32, c); - for (i = 0; i < 16; i++) c[i] = 0; - return 0; - } - - function crypto_secretbox_open(m,c,d,n,k) { - var i; - var x = new Uint8Array(32); - if (d < 32) return -1; - crypto_stream(x,0,32,n,k); - if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1; - crypto_stream_xor(m,0,c,0,d,n,k); - for (i = 0; i < 32; i++) m[i] = 0; - return 0; - } - - function set25519(r, a) { - var i; - for (i = 0; i < 16; i++) r[i] = a[i]|0; - } - - function car25519(o) { - var i, v, c = 1; - for (i = 0; i < 16; i++) { - v = o[i] + c + 65535; - c = Math.floor(v / 65536); - o[i] = v - c * 65536; - } - o[0] += c-1 + 37 * (c-1); - } - - function sel25519(p, q, b) { - var t, c = ~(b-1); - for (var i = 0; i < 16; i++) { - t = c & (p[i] ^ q[i]); - p[i] ^= t; - q[i] ^= t; - } - } - - function pack25519(o, n) { - var i, j, b; - var m = gf(), t = gf(); - for (i = 0; i < 16; i++) t[i] = n[i]; - car25519(t); - car25519(t); - car25519(t); - for (j = 0; j < 2; j++) { - m[0] = t[0] - 0xffed; - for (i = 1; i < 15; i++) { - m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1); - m[i-1] &= 0xffff; - } - m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1); - b = (m[15]>>16) & 1; - m[14] &= 0xffff; - sel25519(t, m, 1-b); - } - for (i = 0; i < 16; i++) { - o[2*i] = t[i] & 0xff; - o[2*i+1] = t[i]>>8; - } - } - - function neq25519(a, b) { - var c = new Uint8Array(32), d = new Uint8Array(32); - pack25519(c, a); - pack25519(d, b); - return crypto_verify_32(c, 0, d, 0); - } - - function par25519(a) { - var d = new Uint8Array(32); - pack25519(d, a); - return d[0] & 1; - } - - function unpack25519(o, n) { - var i; - for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8); - o[15] &= 0x7fff; - } - - function A(o, a, b) { - for (var i = 0; i < 16; i++) o[i] = a[i] + b[i]; - } - - function Z(o, a, b) { - for (var i = 0; i < 16; i++) o[i] = a[i] - b[i]; - } - - function M(o, a, b) { - var v, c, - t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, - t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, - t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, - t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, - b0 = b[0], - b1 = b[1], - b2 = b[2], - b3 = b[3], - b4 = b[4], - b5 = b[5], - b6 = b[6], - b7 = b[7], - b8 = b[8], - b9 = b[9], - b10 = b[10], - b11 = b[11], - b12 = b[12], - b13 = b[13], - b14 = b[14], - b15 = b[15]; - - v = a[0]; - t0 += v * b0; - t1 += v * b1; - t2 += v * b2; - t3 += v * b3; - t4 += v * b4; - t5 += v * b5; - t6 += v * b6; - t7 += v * b7; - t8 += v * b8; - t9 += v * b9; - t10 += v * b10; - t11 += v * b11; - t12 += v * b12; - t13 += v * b13; - t14 += v * b14; - t15 += v * b15; - v = a[1]; - t1 += v * b0; - t2 += v * b1; - t3 += v * b2; - t4 += v * b3; - t5 += v * b4; - t6 += v * b5; - t7 += v * b6; - t8 += v * b7; - t9 += v * b8; - t10 += v * b9; - t11 += v * b10; - t12 += v * b11; - t13 += v * b12; - t14 += v * b13; - t15 += v * b14; - t16 += v * b15; - v = a[2]; - t2 += v * b0; - t3 += v * b1; - t4 += v * b2; - t5 += v * b3; - t6 += v * b4; - t7 += v * b5; - t8 += v * b6; - t9 += v * b7; - t10 += v * b8; - t11 += v * b9; - t12 += v * b10; - t13 += v * b11; - t14 += v * b12; - t15 += v * b13; - t16 += v * b14; - t17 += v * b15; - v = a[3]; - t3 += v * b0; - t4 += v * b1; - t5 += v * b2; - t6 += v * b3; - t7 += v * b4; - t8 += v * b5; - t9 += v * b6; - t10 += v * b7; - t11 += v * b8; - t12 += v * b9; - t13 += v * b10; - t14 += v * b11; - t15 += v * b12; - t16 += v * b13; - t17 += v * b14; - t18 += v * b15; - v = a[4]; - t4 += v * b0; - t5 += v * b1; - t6 += v * b2; - t7 += v * b3; - t8 += v * b4; - t9 += v * b5; - t10 += v * b6; - t11 += v * b7; - t12 += v * b8; - t13 += v * b9; - t14 += v * b10; - t15 += v * b11; - t16 += v * b12; - t17 += v * b13; - t18 += v * b14; - t19 += v * b15; - v = a[5]; - t5 += v * b0; - t6 += v * b1; - t7 += v * b2; - t8 += v * b3; - t9 += v * b4; - t10 += v * b5; - t11 += v * b6; - t12 += v * b7; - t13 += v * b8; - t14 += v * b9; - t15 += v * b10; - t16 += v * b11; - t17 += v * b12; - t18 += v * b13; - t19 += v * b14; - t20 += v * b15; - v = a[6]; - t6 += v * b0; - t7 += v * b1; - t8 += v * b2; - t9 += v * b3; - t10 += v * b4; - t11 += v * b5; - t12 += v * b6; - t13 += v * b7; - t14 += v * b8; - t15 += v * b9; - t16 += v * b10; - t17 += v * b11; - t18 += v * b12; - t19 += v * b13; - t20 += v * b14; - t21 += v * b15; - v = a[7]; - t7 += v * b0; - t8 += v * b1; - t9 += v * b2; - t10 += v * b3; - t11 += v * b4; - t12 += v * b5; - t13 += v * b6; - t14 += v * b7; - t15 += v * b8; - t16 += v * b9; - t17 += v * b10; - t18 += v * b11; - t19 += v * b12; - t20 += v * b13; - t21 += v * b14; - t22 += v * b15; - v = a[8]; - t8 += v * b0; - t9 += v * b1; - t10 += v * b2; - t11 += v * b3; - t12 += v * b4; - t13 += v * b5; - t14 += v * b6; - t15 += v * b7; - t16 += v * b8; - t17 += v * b9; - t18 += v * b10; - t19 += v * b11; - t20 += v * b12; - t21 += v * b13; - t22 += v * b14; - t23 += v * b15; - v = a[9]; - t9 += v * b0; - t10 += v * b1; - t11 += v * b2; - t12 += v * b3; - t13 += v * b4; - t14 += v * b5; - t15 += v * b6; - t16 += v * b7; - t17 += v * b8; - t18 += v * b9; - t19 += v * b10; - t20 += v * b11; - t21 += v * b12; - t22 += v * b13; - t23 += v * b14; - t24 += v * b15; - v = a[10]; - t10 += v * b0; - t11 += v * b1; - t12 += v * b2; - t13 += v * b3; - t14 += v * b4; - t15 += v * b5; - t16 += v * b6; - t17 += v * b7; - t18 += v * b8; - t19 += v * b9; - t20 += v * b10; - t21 += v * b11; - t22 += v * b12; - t23 += v * b13; - t24 += v * b14; - t25 += v * b15; - v = a[11]; - t11 += v * b0; - t12 += v * b1; - t13 += v * b2; - t14 += v * b3; - t15 += v * b4; - t16 += v * b5; - t17 += v * b6; - t18 += v * b7; - t19 += v * b8; - t20 += v * b9; - t21 += v * b10; - t22 += v * b11; - t23 += v * b12; - t24 += v * b13; - t25 += v * b14; - t26 += v * b15; - v = a[12]; - t12 += v * b0; - t13 += v * b1; - t14 += v * b2; - t15 += v * b3; - t16 += v * b4; - t17 += v * b5; - t18 += v * b6; - t19 += v * b7; - t20 += v * b8; - t21 += v * b9; - t22 += v * b10; - t23 += v * b11; - t24 += v * b12; - t25 += v * b13; - t26 += v * b14; - t27 += v * b15; - v = a[13]; - t13 += v * b0; - t14 += v * b1; - t15 += v * b2; - t16 += v * b3; - t17 += v * b4; - t18 += v * b5; - t19 += v * b6; - t20 += v * b7; - t21 += v * b8; - t22 += v * b9; - t23 += v * b10; - t24 += v * b11; - t25 += v * b12; - t26 += v * b13; - t27 += v * b14; - t28 += v * b15; - v = a[14]; - t14 += v * b0; - t15 += v * b1; - t16 += v * b2; - t17 += v * b3; - t18 += v * b4; - t19 += v * b5; - t20 += v * b6; - t21 += v * b7; - t22 += v * b8; - t23 += v * b9; - t24 += v * b10; - t25 += v * b11; - t26 += v * b12; - t27 += v * b13; - t28 += v * b14; - t29 += v * b15; - v = a[15]; - t15 += v * b0; - t16 += v * b1; - t17 += v * b2; - t18 += v * b3; - t19 += v * b4; - t20 += v * b5; - t21 += v * b6; - t22 += v * b7; - t23 += v * b8; - t24 += v * b9; - t25 += v * b10; - t26 += v * b11; - t27 += v * b12; - t28 += v * b13; - t29 += v * b14; - t30 += v * b15; - - t0 += 38 * t16; - t1 += 38 * t17; - t2 += 38 * t18; - t3 += 38 * t19; - t4 += 38 * t20; - t5 += 38 * t21; - t6 += 38 * t22; - t7 += 38 * t23; - t8 += 38 * t24; - t9 += 38 * t25; - t10 += 38 * t26; - t11 += 38 * t27; - t12 += 38 * t28; - t13 += 38 * t29; - t14 += 38 * t30; - // t15 left as is - - // first car - c = 1; - v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; - v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; - v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; - v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; - v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; - v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; - v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; - v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; - v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; - v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; - v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; - v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; - v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; - v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; - v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; - v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; - t0 += c-1 + 37 * (c-1); - - // second car - c = 1; - v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; - v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; - v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; - v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; - v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; - v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; - v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; - v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; - v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; - v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; - v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; - v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; - v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; - v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; - v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; - v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; - t0 += c-1 + 37 * (c-1); - - o[ 0] = t0; - o[ 1] = t1; - o[ 2] = t2; - o[ 3] = t3; - o[ 4] = t4; - o[ 5] = t5; - o[ 6] = t6; - o[ 7] = t7; - o[ 8] = t8; - o[ 9] = t9; - o[10] = t10; - o[11] = t11; - o[12] = t12; - o[13] = t13; - o[14] = t14; - o[15] = t15; - } - - function S(o, a) { - M(o, a, a); - } - - function inv25519(o, i) { - var c = gf(); - var a; - for (a = 0; a < 16; a++) c[a] = i[a]; - for (a = 253; a >= 0; a--) { - S(c, c); - if(a !== 2 && a !== 4) M(c, c, i); - } - for (a = 0; a < 16; a++) o[a] = c[a]; - } - - function pow2523(o, i) { - var c = gf(); - var a; - for (a = 0; a < 16; a++) c[a] = i[a]; - for (a = 250; a >= 0; a--) { - S(c, c); - if(a !== 1) M(c, c, i); - } - for (a = 0; a < 16; a++) o[a] = c[a]; - } - - function crypto_scalarmult(q, n, p) { - var z = new Uint8Array(32); - var x = new Float64Array(80), r, i; - var a = gf(), b = gf(), c = gf(), - d = gf(), e = gf(), f = gf(); - for (i = 0; i < 31; i++) z[i] = n[i]; - z[31]=(n[31]&127)|64; - z[0]&=248; - unpack25519(x,p); - for (i = 0; i < 16; i++) { - b[i]=x[i]; - d[i]=a[i]=c[i]=0; - } - a[0]=d[0]=1; - for (i=254; i>=0; --i) { - r=(z[i>>>3]>>>(i&7))&1; - sel25519(a,b,r); - sel25519(c,d,r); - A(e,a,c); - Z(a,a,c); - A(c,b,d); - Z(b,b,d); - S(d,e); - S(f,a); - M(a,c,a); - M(c,b,e); - A(e,a,c); - Z(a,a,c); - S(b,a); - Z(c,d,f); - M(a,c,_121665); - A(a,a,d); - M(c,c,a); - M(a,d,f); - M(d,b,x); - S(b,e); - sel25519(a,b,r); - sel25519(c,d,r); - } - for (i = 0; i < 16; i++) { - x[i+16]=a[i]; - x[i+32]=c[i]; - x[i+48]=b[i]; - x[i+64]=d[i]; - } - var x32 = x.subarray(32); - var x16 = x.subarray(16); - inv25519(x32,x32); - M(x16,x16,x32); - pack25519(q,x16); - return 0; - } - - function crypto_scalarmult_base(q, n) { - return crypto_scalarmult(q, n, _9); - } - - function crypto_box_keypair(y, x) { - randombytes(x, 32); - return crypto_scalarmult_base(y, x); - } - - function crypto_box_beforenm(k, y, x) { - var s = new Uint8Array(32); - crypto_scalarmult(s, x, y); - return crypto_core_hsalsa20(k, _0, s, sigma); - } - - var crypto_box_afternm = crypto_secretbox; - var crypto_box_open_afternm = crypto_secretbox_open; - - function crypto_box(c, m, d, n, y, x) { - var k = new Uint8Array(32); - crypto_box_beforenm(k, y, x); - return crypto_box_afternm(c, m, d, n, k); - } - - function crypto_box_open(m, c, d, n, y, x) { - var k = new Uint8Array(32); - crypto_box_beforenm(k, y, x); - return crypto_box_open_afternm(m, c, d, n, k); - } - - var K = [ - 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, - 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, - 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, - 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, - 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, - 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, - 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, - 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, - 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, - 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, - 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, - 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, - 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, - 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, - 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, - 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, - 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, - 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, - 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, - 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, - 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, - 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, - 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, - 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, - 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, - 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, - 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, - 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, - 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, - 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, - 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, - 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, - 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, - 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, - 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, - 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, - 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, - 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, - 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, - 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 - ]; - - function crypto_hashblocks_hl(hh, hl, m, n) { - var wh = new Int32Array(16), wl = new Int32Array(16), - bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, - bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, - th, tl, i, j, h, l, a, b, c, d; - - var ah0 = hh[0], - ah1 = hh[1], - ah2 = hh[2], - ah3 = hh[3], - ah4 = hh[4], - ah5 = hh[5], - ah6 = hh[6], - ah7 = hh[7], - - al0 = hl[0], - al1 = hl[1], - al2 = hl[2], - al3 = hl[3], - al4 = hl[4], - al5 = hl[5], - al6 = hl[6], - al7 = hl[7]; - - var pos = 0; - while (n >= 128) { - for (i = 0; i < 16; i++) { - j = 8 * i + pos; - wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3]; - wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7]; - } - for (i = 0; i < 80; i++) { - bh0 = ah0; - bh1 = ah1; - bh2 = ah2; - bh3 = ah3; - bh4 = ah4; - bh5 = ah5; - bh6 = ah6; - bh7 = ah7; - - bl0 = al0; - bl1 = al1; - bl2 = al2; - bl3 = al3; - bl4 = al4; - bl5 = al5; - bl6 = al6; - bl7 = al7; - - // add - h = ah7; - l = al7; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - // Sigma1 - h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32)))); - l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32)))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // Ch - h = (ah4 & ah5) ^ (~ah4 & ah6); - l = (al4 & al5) ^ (~al4 & al6); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // K - h = K[i*2]; - l = K[i*2+1]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // w - h = wh[i%16]; - l = wl[i%16]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - th = c & 0xffff | d << 16; - tl = a & 0xffff | b << 16; - - // add - h = th; - l = tl; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - // Sigma0 - h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32)))); - l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32)))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // Maj - h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2); - l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - bh7 = (c & 0xffff) | (d << 16); - bl7 = (a & 0xffff) | (b << 16); - - // add - h = bh3; - l = bl3; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = th; - l = tl; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - bh3 = (c & 0xffff) | (d << 16); - bl3 = (a & 0xffff) | (b << 16); - - ah1 = bh0; - ah2 = bh1; - ah3 = bh2; - ah4 = bh3; - ah5 = bh4; - ah6 = bh5; - ah7 = bh6; - ah0 = bh7; - - al1 = bl0; - al2 = bl1; - al3 = bl2; - al4 = bl3; - al5 = bl4; - al6 = bl5; - al7 = bl6; - al0 = bl7; - - if (i%16 === 15) { - for (j = 0; j < 16; j++) { - // add - h = wh[j]; - l = wl[j]; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = wh[(j+9)%16]; - l = wl[(j+9)%16]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // sigma0 - th = wh[(j+1)%16]; - tl = wl[(j+1)%16]; - h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7); - l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // sigma1 - th = wh[(j+14)%16]; - tl = wl[(j+14)%16]; - h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6); - l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - wh[j] = (c & 0xffff) | (d << 16); - wl[j] = (a & 0xffff) | (b << 16); - } - } - } - - // add - h = ah0; - l = al0; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[0]; - l = hl[0]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[0] = ah0 = (c & 0xffff) | (d << 16); - hl[0] = al0 = (a & 0xffff) | (b << 16); - - h = ah1; - l = al1; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[1]; - l = hl[1]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[1] = ah1 = (c & 0xffff) | (d << 16); - hl[1] = al1 = (a & 0xffff) | (b << 16); - - h = ah2; - l = al2; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[2]; - l = hl[2]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[2] = ah2 = (c & 0xffff) | (d << 16); - hl[2] = al2 = (a & 0xffff) | (b << 16); - - h = ah3; - l = al3; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[3]; - l = hl[3]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[3] = ah3 = (c & 0xffff) | (d << 16); - hl[3] = al3 = (a & 0xffff) | (b << 16); - - h = ah4; - l = al4; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[4]; - l = hl[4]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[4] = ah4 = (c & 0xffff) | (d << 16); - hl[4] = al4 = (a & 0xffff) | (b << 16); - - h = ah5; - l = al5; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[5]; - l = hl[5]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[5] = ah5 = (c & 0xffff) | (d << 16); - hl[5] = al5 = (a & 0xffff) | (b << 16); - - h = ah6; - l = al6; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[6]; - l = hl[6]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[6] = ah6 = (c & 0xffff) | (d << 16); - hl[6] = al6 = (a & 0xffff) | (b << 16); - - h = ah7; - l = al7; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[7]; - l = hl[7]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[7] = ah7 = (c & 0xffff) | (d << 16); - hl[7] = al7 = (a & 0xffff) | (b << 16); - - pos += 128; - n -= 128; - } - - return n; - } - - function crypto_hash(out, m, n) { - var hh = new Int32Array(8), - hl = new Int32Array(8), - x = new Uint8Array(256), - i, b = n; - - hh[0] = 0x6a09e667; - hh[1] = 0xbb67ae85; - hh[2] = 0x3c6ef372; - hh[3] = 0xa54ff53a; - hh[4] = 0x510e527f; - hh[5] = 0x9b05688c; - hh[6] = 0x1f83d9ab; - hh[7] = 0x5be0cd19; - - hl[0] = 0xf3bcc908; - hl[1] = 0x84caa73b; - hl[2] = 0xfe94f82b; - hl[3] = 0x5f1d36f1; - hl[4] = 0xade682d1; - hl[5] = 0x2b3e6c1f; - hl[6] = 0xfb41bd6b; - hl[7] = 0x137e2179; - - crypto_hashblocks_hl(hh, hl, m, n); - n %= 128; - - for (i = 0; i < n; i++) x[i] = m[b-n+i]; - x[n] = 128; - - n = 256-128*(n<112?1:0); - x[n-9] = 0; - ts64(x, n-8, (b / 0x20000000) | 0, b << 3); - crypto_hashblocks_hl(hh, hl, x, n); - - for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]); - - return 0; - } - - function add(p, q) { - var a = gf(), b = gf(), c = gf(), - d = gf(), e = gf(), f = gf(), - g = gf(), h = gf(), t = gf(); - - Z(a, p[1], p[0]); - Z(t, q[1], q[0]); - M(a, a, t); - A(b, p[0], p[1]); - A(t, q[0], q[1]); - M(b, b, t); - M(c, p[3], q[3]); - M(c, c, D2); - M(d, p[2], q[2]); - A(d, d, d); - Z(e, b, a); - Z(f, d, c); - A(g, d, c); - A(h, b, a); - - M(p[0], e, f); - M(p[1], h, g); - M(p[2], g, f); - M(p[3], e, h); - } - - function cswap(p, q, b) { - var i; - for (i = 0; i < 4; i++) { - sel25519(p[i], q[i], b); - } - } - - function pack(r, p) { - var tx = gf(), ty = gf(), zi = gf(); - inv25519(zi, p[2]); - M(tx, p[0], zi); - M(ty, p[1], zi); - pack25519(r, ty); - r[31] ^= par25519(tx) << 7; - } - - function scalarmult(p, q, s) { - var b, i; - set25519(p[0], gf0); - set25519(p[1], gf1); - set25519(p[2], gf1); - set25519(p[3], gf0); - for (i = 255; i >= 0; --i) { - b = (s[(i/8)|0] >> (i&7)) & 1; - cswap(p, q, b); - add(q, p); - add(p, p); - cswap(p, q, b); - } - } - - function scalarbase(p, s) { - var q = [gf(), gf(), gf(), gf()]; - set25519(q[0], X); - set25519(q[1], Y); - set25519(q[2], gf1); - M(q[3], X, Y); - scalarmult(p, q, s); - } - - function crypto_sign_keypair(pk, sk, seeded) { - var d = new Uint8Array(64); - var p = [gf(), gf(), gf(), gf()]; - var i; - - if (!seeded) randombytes(sk, 32); - crypto_hash(d, sk, 32); - d[0] &= 248; - d[31] &= 127; - d[31] |= 64; - - scalarbase(p, d); - pack(pk, p); - - for (i = 0; i < 32; i++) sk[i+32] = pk[i]; - return 0; - } - - var L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]); - - function modL(r, x) { - var carry, i, j, k; - for (i = 63; i >= 32; --i) { - carry = 0; - for (j = i - 32, k = i - 12; j < k; ++j) { - x[j] += carry - 16 * x[i] * L[j - (i - 32)]; - carry = Math.floor((x[j] + 128) / 256); - x[j] -= carry * 256; - } - x[j] += carry; - x[i] = 0; - } - carry = 0; - for (j = 0; j < 32; j++) { - x[j] += carry - (x[31] >> 4) * L[j]; - carry = x[j] >> 8; - x[j] &= 255; - } - for (j = 0; j < 32; j++) x[j] -= carry * L[j]; - for (i = 0; i < 32; i++) { - x[i+1] += x[i] >> 8; - r[i] = x[i] & 255; - } - } - - function reduce(r) { - var x = new Float64Array(64), i; - for (i = 0; i < 64; i++) x[i] = r[i]; - for (i = 0; i < 64; i++) r[i] = 0; - modL(r, x); - } - - // Note: difference from C - smlen returned, not passed as argument. - function crypto_sign(sm, m, n, sk) { - var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64); - var i, j, x = new Float64Array(64); - var p = [gf(), gf(), gf(), gf()]; - - crypto_hash(d, sk, 32); - d[0] &= 248; - d[31] &= 127; - d[31] |= 64; - - var smlen = n + 64; - for (i = 0; i < n; i++) sm[64 + i] = m[i]; - for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i]; - - crypto_hash(r, sm.subarray(32), n+32); - reduce(r); - scalarbase(p, r); - pack(sm, p); - - for (i = 32; i < 64; i++) sm[i] = sk[i]; - crypto_hash(h, sm, n + 64); - reduce(h); - - for (i = 0; i < 64; i++) x[i] = 0; - for (i = 0; i < 32; i++) x[i] = r[i]; - for (i = 0; i < 32; i++) { - for (j = 0; j < 32; j++) { - x[i+j] += h[i] * d[j]; - } - } - - modL(sm.subarray(32), x); - return smlen; - } - - function unpackneg(r, p) { - var t = gf(), chk = gf(), num = gf(), - den = gf(), den2 = gf(), den4 = gf(), - den6 = gf(); - - set25519(r[2], gf1); - unpack25519(r[1], p); - S(num, r[1]); - M(den, num, D); - Z(num, num, r[2]); - A(den, r[2], den); - - S(den2, den); - S(den4, den2); - M(den6, den4, den2); - M(t, den6, num); - M(t, t, den); - - pow2523(t, t); - M(t, t, num); - M(t, t, den); - M(t, t, den); - M(r[0], t, den); - - S(chk, r[0]); - M(chk, chk, den); - if (neq25519(chk, num)) M(r[0], r[0], I); - - S(chk, r[0]); - M(chk, chk, den); - if (neq25519(chk, num)) return -1; - - if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]); - - M(r[3], r[0], r[1]); - return 0; - } - - function crypto_sign_open(m, sm, n, pk) { - var i; - var t = new Uint8Array(32), h = new Uint8Array(64); - var p = [gf(), gf(), gf(), gf()], - q = [gf(), gf(), gf(), gf()]; - - if (n < 64) return -1; - - if (unpackneg(q, pk)) return -1; - - for (i = 0; i < n; i++) m[i] = sm[i]; - for (i = 0; i < 32; i++) m[i+32] = pk[i]; - crypto_hash(h, m, n); - reduce(h); - scalarmult(p, q, h); - - scalarbase(q, sm.subarray(32)); - add(p, q); - pack(t, p); - - n -= 64; - if (crypto_verify_32(sm, 0, t, 0)) { - for (i = 0; i < n; i++) m[i] = 0; - return -1; - } - - for (i = 0; i < n; i++) m[i] = sm[i + 64]; - return n; - } - - var crypto_secretbox_KEYBYTES = 32, - crypto_secretbox_NONCEBYTES = 24, - crypto_secretbox_ZEROBYTES = 32, - crypto_secretbox_BOXZEROBYTES = 16, - crypto_scalarmult_BYTES = 32, - crypto_scalarmult_SCALARBYTES = 32, - crypto_box_PUBLICKEYBYTES = 32, - crypto_box_SECRETKEYBYTES = 32, - crypto_box_BEFORENMBYTES = 32, - crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES, - crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES, - crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES, - crypto_sign_BYTES = 64, - crypto_sign_PUBLICKEYBYTES = 32, - crypto_sign_SECRETKEYBYTES = 64, - crypto_sign_SEEDBYTES = 32, - crypto_hash_BYTES = 64; - - nacl.lowlevel = { - crypto_core_hsalsa20: crypto_core_hsalsa20, - crypto_stream_xor: crypto_stream_xor, - crypto_stream: crypto_stream, - crypto_stream_salsa20_xor: crypto_stream_salsa20_xor, - crypto_stream_salsa20: crypto_stream_salsa20, - crypto_onetimeauth: crypto_onetimeauth, - crypto_onetimeauth_verify: crypto_onetimeauth_verify, - crypto_verify_16: crypto_verify_16, - crypto_verify_32: crypto_verify_32, - crypto_secretbox: crypto_secretbox, - crypto_secretbox_open: crypto_secretbox_open, - crypto_scalarmult: crypto_scalarmult, - crypto_scalarmult_base: crypto_scalarmult_base, - crypto_box_beforenm: crypto_box_beforenm, - crypto_box_afternm: crypto_box_afternm, - crypto_box: crypto_box, - crypto_box_open: crypto_box_open, - crypto_box_keypair: crypto_box_keypair, - crypto_hash: crypto_hash, - crypto_sign: crypto_sign, - crypto_sign_keypair: crypto_sign_keypair, - crypto_sign_open: crypto_sign_open, - - crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES, - crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES, - crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES, - crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES, - crypto_scalarmult_BYTES: crypto_scalarmult_BYTES, - crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES, - crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES, - crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES, - crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES, - crypto_box_NONCEBYTES: crypto_box_NONCEBYTES, - crypto_box_ZEROBYTES: crypto_box_ZEROBYTES, - crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES, - crypto_sign_BYTES: crypto_sign_BYTES, - crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES, - crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES, - crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES, - crypto_hash_BYTES: crypto_hash_BYTES, - - gf: gf, - D: D, - L: L, - pack25519: pack25519, - unpack25519: unpack25519, - M: M, - A: A, - S: S, - Z: Z, - pow2523: pow2523, - add: add, - set25519: set25519, - modL: modL, - scalarmult: scalarmult, - scalarbase: scalarbase, - }; - - /* High-level API */ - - function checkLengths(k, n) { - if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size'); - if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size'); - } - - function checkBoxLengths(pk, sk) { - if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size'); - if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size'); - } - - function checkArrayTypes() { - for (var i = 0; i < arguments.length; i++) { - if (!(arguments[i] instanceof Uint8Array)) - throw new TypeError('unexpected type, use Uint8Array'); - } - } - - function cleanup(arr) { - for (var i = 0; i < arr.length; i++) arr[i] = 0; - } - - nacl.randomBytes = function(n) { - var b = new Uint8Array(n); - randombytes(b, n); - return b; - }; - - nacl.secretbox = function(msg, nonce, key) { - checkArrayTypes(msg, nonce, key); - checkLengths(key, nonce); - var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length); - var c = new Uint8Array(m.length); - for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i]; - crypto_secretbox(c, m, m.length, nonce, key); - return c.subarray(crypto_secretbox_BOXZEROBYTES); - }; - - nacl.secretbox.open = function(box, nonce, key) { - checkArrayTypes(box, nonce, key); - checkLengths(key, nonce); - var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length); - var m = new Uint8Array(c.length); - for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i]; - if (c.length < 32) return null; - if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null; - return m.subarray(crypto_secretbox_ZEROBYTES); - }; - - nacl.secretbox.keyLength = crypto_secretbox_KEYBYTES; - nacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES; - nacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES; - - nacl.scalarMult = function(n, p) { - checkArrayTypes(n, p); - if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); - if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size'); - var q = new Uint8Array(crypto_scalarmult_BYTES); - crypto_scalarmult(q, n, p); - return q; - }; - - nacl.scalarMult.base = function(n) { - checkArrayTypes(n); - if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); - var q = new Uint8Array(crypto_scalarmult_BYTES); - crypto_scalarmult_base(q, n); - return q; - }; - - nacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES; - nacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES; - - nacl.box = function(msg, nonce, publicKey, secretKey) { - var k = nacl.box.before(publicKey, secretKey); - return nacl.secretbox(msg, nonce, k); - }; - - nacl.box.before = function(publicKey, secretKey) { - checkArrayTypes(publicKey, secretKey); - checkBoxLengths(publicKey, secretKey); - var k = new Uint8Array(crypto_box_BEFORENMBYTES); - crypto_box_beforenm(k, publicKey, secretKey); - return k; - }; - - nacl.box.after = nacl.secretbox; - - nacl.box.open = function(msg, nonce, publicKey, secretKey) { - var k = nacl.box.before(publicKey, secretKey); - return nacl.secretbox.open(msg, nonce, k); - }; - - nacl.box.open.after = nacl.secretbox.open; - - nacl.box.keyPair = function() { - var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_box_SECRETKEYBYTES); - crypto_box_keypair(pk, sk); - return {publicKey: pk, secretKey: sk}; - }; - - nacl.box.keyPair.fromSecretKey = function(secretKey) { - checkArrayTypes(secretKey); - if (secretKey.length !== crypto_box_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); - crypto_scalarmult_base(pk, secretKey); - return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; - }; - - nacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES; - nacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES; - nacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES; - nacl.box.nonceLength = crypto_box_NONCEBYTES; - nacl.box.overheadLength = nacl.secretbox.overheadLength; - - nacl.sign = function(msg, secretKey) { - checkArrayTypes(msg, secretKey); - if (secretKey.length !== crypto_sign_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length); - crypto_sign(signedMsg, msg, msg.length, secretKey); - return signedMsg; - }; - - nacl.sign.open = function(signedMsg, publicKey) { - checkArrayTypes(signedMsg, publicKey); - if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) - throw new Error('bad public key size'); - var tmp = new Uint8Array(signedMsg.length); - var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey); - if (mlen < 0) return null; - var m = new Uint8Array(mlen); - for (var i = 0; i < m.length; i++) m[i] = tmp[i]; - return m; - }; - - nacl.sign.detached = function(msg, secretKey) { - var signedMsg = nacl.sign(msg, secretKey); - var sig = new Uint8Array(crypto_sign_BYTES); - for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i]; - return sig; - }; - - nacl.sign.detached.verify = function(msg, sig, publicKey) { - checkArrayTypes(msg, sig, publicKey); - if (sig.length !== crypto_sign_BYTES) - throw new Error('bad signature size'); - if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) - throw new Error('bad public key size'); - var sm = new Uint8Array(crypto_sign_BYTES + msg.length); - var m = new Uint8Array(crypto_sign_BYTES + msg.length); - var i; - for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i]; - for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i]; - return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0); - }; - - nacl.sign.keyPair = function() { - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); - crypto_sign_keypair(pk, sk); - return {publicKey: pk, secretKey: sk}; - }; - - nacl.sign.keyPair.fromSecretKey = function(secretKey) { - checkArrayTypes(secretKey); - if (secretKey.length !== crypto_sign_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i]; - return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; - }; - - nacl.sign.keyPair.fromSeed = function(seed) { - checkArrayTypes(seed); - if (seed.length !== crypto_sign_SEEDBYTES) - throw new Error('bad seed size'); - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); - for (var i = 0; i < 32; i++) sk[i] = seed[i]; - crypto_sign_keypair(pk, sk, true); - return {publicKey: pk, secretKey: sk}; - }; - - nacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES; - nacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES; - nacl.sign.seedLength = crypto_sign_SEEDBYTES; - nacl.sign.signatureLength = crypto_sign_BYTES; - - nacl.hash = function(msg) { - checkArrayTypes(msg); - var h = new Uint8Array(crypto_hash_BYTES); - crypto_hash(h, msg, msg.length); - return h; - }; - - nacl.hash.hashLength = crypto_hash_BYTES; - - nacl.verify = function(x, y) { - checkArrayTypes(x, y); - // Zero length arguments are considered not equal. - if (x.length === 0 || y.length === 0) return false; - if (x.length !== y.length) return false; - return (vn(x, 0, y, 0, x.length) === 0) ? true : false; - }; - - nacl.setPRNG = function(fn) { - randombytes = fn; - }; - - (function() { - // Initialize PRNG if environment provides CSPRNG. - // If not, methods calling randombytes will throw. - var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null; - if (crypto && crypto.getRandomValues) { - // Browsers. - var QUOTA = 65536; - nacl.setPRNG(function(x, n) { - var i, v = new Uint8Array(n); - for (i = 0; i < n; i += QUOTA) { - crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA))); - } - for (i = 0; i < n; i++) x[i] = v[i]; - cleanup(v); - }); - } else if (typeof commonjsRequire !== 'undefined') { - // Node.js. - crypto = require$$0; - if (crypto && crypto.randomBytes) { - nacl.setPRNG(function(x, n) { - var i, v = crypto.randomBytes(n); - for (i = 0; i < n; i++) x[i] = v[i]; - cleanup(v); - }); - } - } - })(); - - })(module.exports ? module.exports : (self.nacl = self.nacl || {})); - } (naclFast)); - - var naclFastExports = naclFast.exports; - - var naclUtil = {exports: {}}; - - (function (module) { - // Written in 2014-2016 by Dmitry Chestnykh and Devi Mandiri. - // Public domain. - (function(root, f) { - if (module.exports) module.exports = f(); - else if (root.nacl) root.nacl.util = f(); - else { - root.nacl = {}; - root.nacl.util = f(); - } - }(commonjsGlobal, function() { - - var util = {}; - - function validateBase64(s) { - if (!(/^(?:[A-Za-z0-9+\/]{2}[A-Za-z0-9+\/]{2})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/.test(s))) { - throw new TypeError('invalid encoding'); - } - } - - util.decodeUTF8 = function(s) { - if (typeof s !== 'string') throw new TypeError('expected string'); - var i, d = unescape(encodeURIComponent(s)), b = new Uint8Array(d.length); - for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i); - return b; - }; - - util.encodeUTF8 = function(arr) { - var i, s = []; - for (i = 0; i < arr.length; i++) s.push(String.fromCharCode(arr[i])); - return decodeURIComponent(escape(s.join(''))); - }; - - if (typeof atob === 'undefined') { - // Node.js - - if (typeof Buffer.from !== 'undefined') { - // Node v6 and later - util.encodeBase64 = function (arr) { // v6 and later - return Buffer.from(arr).toString('base64'); - }; - - util.decodeBase64 = function (s) { - validateBase64(s); - return new Uint8Array(Array.prototype.slice.call(Buffer.from(s, 'base64'), 0)); - }; - - } else { - // Node earlier than v6 - util.encodeBase64 = function (arr) { // v6 and later - return (new Buffer(arr)).toString('base64'); - }; - - util.decodeBase64 = function(s) { - validateBase64(s); - return new Uint8Array(Array.prototype.slice.call(new Buffer(s, 'base64'), 0)); - }; - } - - } else { - // Browsers - - util.encodeBase64 = function(arr) { - var i, s = [], len = arr.length; - for (i = 0; i < len; i++) s.push(String.fromCharCode(arr[i])); - return btoa(s.join('')); - }; - - util.decodeBase64 = function(s) { - validateBase64(s); - var i, d = atob(s), b = new Uint8Array(d.length); - for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i); - return b; - }; - - } - - return util; - - })); - } (naclUtil)); - - var naclUtilExports = naclUtil.exports; - - const PRIVATE_KEY_LENGTH = 64; - const PUBLIC_KEY_LENGTH = 64; - /** - * A class representing a SealingKey which provides cryptographic sealing (encryption) - * and unsealing (decryption) capabilities. - */ - class SealingKey { - /** - * Constructs a SealingKey instance with the given private and public keys. - * - * @param {string} privateKey - The private key used for decryption. - * @param {string} publicKey - The public key used for encryption. - * @throws Will throw an error if the provided keys lengths do not match - * the required lengths for private and public keys. - */ - constructor(privateKey, publicKey) { - /** - * Unseals (decrypts) the provided ciphertext using the instance's private key. - * - * @param {string | Uint8Array} ciphertext - The encrypted data to be decrypted. - * @returns BigInt - The decrypted message as a bigint. - * @throws Will throw an error if the decryption process fails. - */ - this.unseal = (ciphertext) => { - let parsedData = undefined; - try { - if (typeof ciphertext === "string") { - parsedData = JSON.parse(ciphertext); - } - } - catch { - // ignore errors - } - if (!parsedData) { - const toDecrypt = typeof ciphertext === "string" ? fromHexString(ciphertext) : ciphertext; - // decode json structure that gets returned from the chain - const jsonString = Buffer.from(toDecrypt).toString("utf8"); - parsedData = JSON.parse(jsonString); - } - if (!parsedData) { - throw new Error("Failed to parse sealed data"); - } - // assemble decryption parameters - const nonce = naclUtilExports.decodeBase64(parsedData.nonce); - const ephemPublicKey = naclUtilExports.decodeBase64(parsedData.ephemPublicKey); - const dataToDecrypt = naclUtilExports.decodeBase64(parsedData.ciphertext); - // call the nacl box function to decrypt the data - const decryptedMessage = naclFastExports.box.open(dataToDecrypt, nonce, ephemPublicKey, fromHexString(this.privateKey)); - if (!decryptedMessage) { - throw new Error("Failed to decrypt message"); - } - return toBigInt(decryptedMessage); - }; - if (privateKey.length !== PRIVATE_KEY_LENGTH) { - throw new Error(`Private key must be of length ${PRIVATE_KEY_LENGTH}`); - } - if (publicKey.length !== PUBLIC_KEY_LENGTH) { - throw new Error(`Private key must be of length ${PUBLIC_KEY_LENGTH}`); - } - this.privateKey = privateKey; - this.publicKey = publicKey; - } - } - /** - * Seals (encrypts) the provided message for a receiver with the specified public key. - * - * @param {bigint | number} value - The message to be encrypted. - * @param {string} publicKey - The public key of the intended recipient. - * @returns string - The encrypted message in hexadecimal format. - * @static - * @throws Will throw if the provided publicKey or value do not meet defined preconditions. - */ - SealingKey.seal = (value, publicKey) => { - isString(publicKey); - isBigIntOrNumber(value); - // generate ephemeral keypair - const ephemeralKeyPair = naclFastExports.box.keyPair(); - const nonce = naclFastExports.randomBytes(naclFastExports.box.nonceLength); - const encryptedMessage = naclFastExports.box(toBeArray(value), nonce, fromHexString(publicKey), ephemeralKeyPair.secretKey); - // handle encrypted data - const output = { - version: "x25519-xsalsa20-poly1305", - nonce: naclUtilExports.encodeBase64(nonce), - ephemPublicKey: naclUtilExports.encodeBase64(ephemeralKeyPair.publicKey), - ciphertext: naclUtilExports.encodeBase64(encryptedMessage), - }; - // mimicking encoding from the chain - return toHexString$1(Buffer.from(JSON.stringify(output))); - }; - /** - * Asynchronously generates a new SealingKey. - * This function uses the 'nacl' library to create a new public/private key pair for sealing purposes. - * A sealing key is used to encrypt data such that it can only be unsealed (decrypted) by the owner of the corresponding private key. - * @returns {Promise} - A promise that resolves to a new SealingKey object containing the hexadecimal strings of the public and private keys. - */ - const GenerateSealingKey = async () => { - const sodiumKeypair = naclFastExports.box.keyPair(); - return new SealingKey(toHexString$1(sodiumKeypair.secretKey), toHexString$1(sodiumKeypair.publicKey)); - }; - - const PERMIT_PREFIX = "Fhenix_saved_permit_"; - const parsePermit = (savedPermit) => { - const o = JSON.parse(savedPermit); - if (o) { - return { - contractAddress: o.contractAddress, - sealingKey: new SealingKey(o.sealingKey.privateKey, o.sealingKey.publicKey), - signature: o.signature, - publicKey: `0x${o.sealingKey.publicKey}`, - }; - } - throw new Error(`Cannot parse permit`); - }; - const getPermit$2 = async (contract, provider, autoGenerate = true) => { - isAddress$1(contract); - if (!provider) { - throw new Error(`Missing provider`); - } - const getSigner = determineRequestSigner(provider); - const signer = await getSigner(provider); - const savedPermit = getPermitFromLocalstorage(contract, await signer.getAddress()); - if (savedPermit != null) - return savedPermit; - return autoGenerate ? generatePermit(contract, provider) : null; - }; - const getAllExistingPermits = (account) => { - const permits = {}; - const search = new RegExp(`${PERMIT_PREFIX}(.*?)_${account}`); - Object.keys(window.localStorage).forEach((key) => { - const matchArray = key.match(search); - if (matchArray == null) - return; - const contract = matchArray[1]; - const permitRaw = window.localStorage.getItem(key); - if (permitRaw == null) - return; - try { - const permit = parsePermit(permitRaw); - permits[contract] = permit; - } - catch (err) { - console.warn(err); - } - }); - return permits; - }; - const getAllPermits$1 = () => { - const permits = new Map(); - for (let i = 0; i < window.localStorage.length; i++) { - const key = window.localStorage.key(i); - if (key && key.includes(PERMIT_PREFIX)) { - const contract = key.replace(PERMIT_PREFIX, ""); - // Not sure if needed, code placeholder: - // const noPrefixPermit = key.replace(PERMIT_PREFIX, ""); - // let contract = ""; - // if (noPrefixPermit.includes("_")) { - // const tmp = noPrefixPermit.split("_"); - // contract = tmp[0]; - // } else { - // contract = noPrefixPermit; - // } - try { - const permit = parsePermit(window.localStorage.getItem(key)); - permits.set(contract, permit); - } - catch (err) { - console.warn(err); - } - } - } - return permits; - }; - const sign = async (signer, domain, types, value) => { - if ("_signTypedData" in signer && - typeof signer._signTypedData == "function") { - return await signer._signTypedData(domain, types, value); - } - else if ("signTypedData" in signer && - typeof signer.signTypedData == "function") { - return await signer.signTypedData(domain, types, value); - } - throw new Error("Unsupported signer"); - }; - const generatePermit = async (contract, provider, customSigner) => { - if (!provider) { - throw new Error("Provider is undefined"); - } - const requestMethod = determineRequestMethod(provider); - let signer; - if (!customSigner) { - const getSigner = determineRequestSigner(provider); - signer = await getSigner(provider); - } - else { - signer = customSigner; - } - const chainId = await requestMethod(provider, "eth_chainId", []); - const keypair = await GenerateSealingKey(); - const msgParams = { - types: { - // This refers to the domain the contract is hosted on. - EIP712Domain: [ - { name: "name", type: "string" }, - { name: "version", type: "string" }, - { name: "chainId", type: "uint256" }, - { name: "verifyingContract", type: "address" }, - ], - // Refer to primaryType. - Permissioned: [{ name: "publicKey", type: "bytes32" }], - }, - // This defines the message you're proposing the user to sign, is dapp-specific, and contains - // anything you want. There are no required fields. Be as explicit as possible when building out - // the message schema. - // This refers to the keys of the following types object. - primaryType: "Permissioned", - domain: { - // Give a user-friendly name to the specific contract you're signing for. - name: "Fhenix Permission", // params.name - // This identifies the latest version. - version: "1.0", //params.version || - // This defines the network, in this case, Mainnet. - chainId: chainId, - // // Add a verifying contract to make sure you're establishing contracts with the proper entity. - verifyingContract: contract, //params.verifyingContract, - }, - message: { - publicKey: `0x${keypair.publicKey}`, - }, - }; - const msgSig = await sign(signer, msgParams.domain, { Permissioned: msgParams.types.Permissioned }, msgParams.message); - const permit = { - contractAddress: contract, - sealingKey: keypair, - signature: msgSig, - publicKey: `0x${keypair.publicKey}`, - //permit: msgParams, - //msgSig - }; - storePermitInLocalStorage(permit, await signer.getAddress()); - return permit; - }; - const removePermit$1 = (contract, account) => { - if (!account) { - // Backward compatibility - window.localStorage.removeItem(`${PERMIT_PREFIX}${contract}`); - } - else { - window.localStorage.removeItem(`${PERMIT_PREFIX}${contract}_${account}`); - } - }; - const getPermitFromLocalstorage = (contract, account) => { - let savedPermit = null; - if (typeof window !== "undefined" && window.localStorage) { - savedPermit = window.localStorage.getItem(`${PERMIT_PREFIX}${contract}_${account}`); - if (!account) { - // Backward compatibility - savedPermit = window.localStorage.getItem(`${PERMIT_PREFIX}${contract}`); - } - else { - savedPermit = window.localStorage.getItem(`${PERMIT_PREFIX}${contract}_${account}`); - } - } - if (!savedPermit) { - return undefined; - } - return parsePermit(savedPermit); - }; - const storePermitInLocalStorage = (permit, account) => { - if (typeof window !== "undefined" && window.localStorage) { - // Sealing key is a class, and will include methods in the JSON - const serialized = { - contractAddress: permit.contractAddress, - sealingKey: { - publicKey: permit.sealingKey.publicKey, - privateKey: permit.sealingKey.privateKey, - }, - signature: permit.signature, - }; - window.localStorage.setItem(`${PERMIT_PREFIX}${permit.contractAddress}_${account}`, JSON.stringify(serialized)); - } - }; - const removePermitFromLocalstorage = (contract, account) => { - if (typeof window !== "undefined" && window.localStorage) { - window.localStorage.removeItem(`${PERMIT_PREFIX}${contract}_${account}`); - } - }; - - const MAX_UINT8 = 255; - const MAX_UINT16 = 65535; - const MAX_UINT32 = 4294967295; - const FheOpsAddress = "0x0000000000000000000000000000000000000080"; - const PUBLIC_KEY_LENGTH_MIN = 15000; - - /** - * Encrypts a Uint8 value using TFHE (Fast Fully Homomorphic Encryption over the Torus). - * @param {boolean} value - The Boolean value to encrypt. - * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. - * @param securityZone - The security zone to encrypt the value on. - * @returns {EncryptedBool} - The encrypted value serialized as Uint8Array. - */ - const encrypt_bool = (value, publicKey, securityZone = 0) => { - const encrypted = CompactFheBool.encrypt_with_compact_public_key(value, publicKey); - return { - data: encrypted.serialize(), - securityZone, - }; - }; - /** - * Encrypts a Uint8 value using TFHE (Fast Fully Homomorphic Encryption over the Torus). - * @param {number} value - The Uint8 value to encrypt. - * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. - * @param securityZone - The security zone to encrypt the value on. - * @returns {EncryptedUint8} - The encrypted value serialized as Uint8Array. - */ - const encrypt_uint8 = (value, publicKey, securityZone = 0) => { - const encrypted = CompactFheUint8.encrypt_with_compact_public_key(value, publicKey); - return { - data: encrypted.serialize(), - securityZone, - }; - }; - /** - * Encrypts a Uint16 value using TFHE. - * @param {number} value - The Uint16 value to encrypt. - * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. - * @param securityZone - The security zone to encrypt the value on. - * @returns {EncryptedUint16} - The encrypted value serialized as Uint8Array. - */ - const encrypt_uint16 = (value, publicKey, securityZone = 0) => { - const encrypted = CompactFheUint16.encrypt_with_compact_public_key(value, publicKey); - return { - data: encrypted.serialize(), - securityZone, - }; - }; - /** - * Encrypts a Uint32 value using TFHE. - * @param {number} value - The Uint32 value to encrypt. - * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. - * @param securityZone - The security zone to encrypt the value on. - * @returns {EncryptedUint32} - The encrypted value serialized as Uint8Array. - */ - const encrypt_uint32 = (value, publicKey, securityZone = 0) => { - const encrypted = CompactFheUint32.encrypt_with_compact_public_key(value, publicKey); - return { - data: encrypted.serialize(), - securityZone, - }; - }; - /** - * Encrypts a Uint64 value using TFHE. - * @param {number} value - The Uint64 value to encrypt. - * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. - * @param securityZone - The security zone to encrypt the value on. - * @returns {EncryptedUint64} - The encrypted value serialized as Uint8Array. - */ - const encrypt_uint64 = (value, publicKey, securityZone = 0) => { - if (typeof value === "string") { - value = toBigInt(fromHexString(value)); - } - else { - value = value; - } - const encrypted = CompactFheUint64.encrypt_with_compact_public_key(value, publicKey); - return { - data: encrypted.serialize(), - securityZone, - }; - }; - /** - * Encrypts a Uint128 value using TFHE. - * @param {bigint} value - The Uint128 value to encrypt. - * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. - * @param securityZone - The security zone to encrypt the value on. - * @returns {EncryptedUint128} - The encrypted value serialized as Uint8Array. - */ - const encrypt_uint128 = (value, publicKey, securityZone = 0) => { - if (typeof value === "string") { - value = toBigInt(fromHexString(value)); - } - else { - value = value; - } - const encrypted = CompactFheUint128.encrypt_with_compact_public_key(value, publicKey); - return { - data: encrypted.serialize(), - securityZone, - }; - }; - /** - * Encrypts a Uint256 value using TFHE. - * @param {bigint} value - The Uint256 value to encrypt. - * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. - * @param securityZone - The security zone to encrypt the value on. - * @returns {EncryptedUint256} - The encrypted value serialized as Uint8Array. - */ - const encrypt_uint256 = (value, publicKey, securityZone = 0) => { - if (typeof value === "string") { - value = toBigInt(fromHexString(value)); - } - else { - value = value; - } - const encrypted = CompactFheUint256.encrypt_with_compact_public_key(value, publicKey); - return { - data: encrypted.serialize(), - securityZone, - }; - }; - /** - * Encrypts a Address value using TFHE. - * @param {bigint} value - The Address (Uint160) value to encrypt. - * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. - * @param securityZone - The security zone to encrypt the address on. - * @returns {EncryptedAddress} - The encrypted value serialized as Uint8Array. - */ - const encrypt_address = (value, publicKey, securityZone = 0) => { - if (typeof value === "string") { - value = toBigInt(fromHexString(value)); - } - else { - value = value; - } - const encrypted = CompactFheUint160.encrypt_with_compact_public_key(value, publicKey); - return { - data: encrypted.serialize(), - securityZone, - }; - }; - /** - * Encrypts a numeric value using TFHE according to the specified encryption type. - * @param {number} value - The numeric value to encrypt. - * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. - * @param {EncryptionTypes} type - The encryption type (uint8, uint16, uint32). - * @param securityZone - The security zone to encrypt the value on. - * @returns {Uint8Array} - The encrypted value serialized as Uint8Array. - * @throws {Error} - Throws an error if an invalid type is specified. - */ - const encrypt$1 = (value, publicKey, type = exports.EncryptionTypes.uint8, securityZone = 0) => { - switch (type) { - case exports.EncryptionTypes.bool: - return encrypt_bool(!!value, publicKey, securityZone); - case exports.EncryptionTypes.uint8: - return encrypt_uint8(value, publicKey, securityZone); - case exports.EncryptionTypes.uint16: - return encrypt_uint16(value, publicKey, securityZone); - case exports.EncryptionTypes.uint32: - return encrypt_uint32(value, publicKey, securityZone); - case exports.EncryptionTypes.uint64: - return encrypt_uint64(value.toString(16), publicKey, securityZone); - case exports.EncryptionTypes.uint128: - return encrypt_uint128(value.toString(16), publicKey, securityZone); - case exports.EncryptionTypes.uint256: - return encrypt_uint256(value.toString(16), publicKey, securityZone); - case exports.EncryptionTypes.address: - return encrypt_address(value.toString(16), publicKey, securityZone); - default: - throw new Error("Invalid type"); - } - }; - - // INFO: The existing `GetFhePublicKey` function has been replaced with `InitFhevm` - // `GetFhePublicKey` didn't allow security zones to be set, and was overloaded with initializing the Fhevm - // Public key fetching has been moved to the Async and Sync FhenixClient constructors (they handle it slightly differently) - // - arch 2024-08-28 - const InitFhevm = async () => { - // `asyncInitFhevm` in `/sdk/fhe/fhe.ts` in node env (noop) - // `asyncInitFhevm` in `/sdk/fhe/fhe-browser.ts` in browser env (init wasm) - await asyncInitFhevm(); - }; - - class FhenixClientBase { - /** - * Creates an instance of FhenixClient. - * Initializes the fhevm library if needed and retrieves the public key for encryption from the provider. - * @param {InstanceParams} params - Parameters to initialize the client. - */ - constructor(params) { - this.permits = {}; - isPlainObject$1(params); - const { provider } = params; - this.provider = provider; - if (!this.provider) { - throw new Error("Failed to initialize Fhenix Client - must include a web3 provider"); - } - } - // Unsealing Method - /** - * Unseals an encrypted message using the stored permit for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} ciphertext - The encrypted message to unseal. - * @param {string} account - The account attached to existing permits. - * @returns bigint - The unsealed message. - */ - unseal(contractAddress, ciphertext, account) { - isAddress$1(contractAddress); - isString(ciphertext); - const permit = this.getPermit(contractAddress, account); - if (permit == null) { - throw new Error(`Missing keypair for ${contractAddress}`); - } - return this.permits[contractAddress].sealingKey.unseal(ciphertext); - } - // Permit Management Methods - /** - * Creates a new permit for a specific contract address. Also saves the permit to localstorage (if available) - * @param {string} contractAddress - The address of the contract. - * @param {SupportedProvider} provider - The provider from which to sign the permit - must container a signer. - * @param signer - the signer to use to sign the permit if provider does not support signing (e.g. hardhat) - * @returns Permit - The permit associated with the contract address. - * - * @throws {Error} - If the provider does not contain a signer, or if a provider is not set - */ - async generatePermit(contractAddress, provider, signer) { - if (!provider && this.provider === undefined) { - throw new Error("error getting provider"); - } - const permit = await generatePermit(contractAddress, provider || this.provider, signer); - // Permit has already been put into local storage, it can be inserted directly into `this.permits` - this.permits[contractAddress] = permit; - return permit; - } - /** - * Reusable permit loading and storing from local storage - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The address of the user account. - * @returns {Permit | undefined} - The permit loaded from local storage - */ - _loadPermitFromLocalStorage(contractAddress, account) { - const fromLs = getPermitFromLocalstorage(contractAddress, account); - if (fromLs == null) - return undefined; - this.permits[contractAddress] = fromLs; - return fromLs; - } - /** - * Retrieves the stored permit for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The address of the user account. - * @returns {Permit} - The permit associated with the contract address. - */ - getPermit(contractAddress, account) { - const permitFromLs = this._loadPermitFromLocalStorage(contractAddress, account); - if (permitFromLs != null) - return permitFromLs; - return this.permits[contractAddress]; - } - /** - * Retrieves all stored permits for a specific account. - * @param {string} account - The address of the user account. - * @returns {Record} - The permits associated with each contract address. - */ - loadAllPermitsFromLocalStorage(account) { - const existingPermits = getAllExistingPermits(account); - Object.keys(existingPermits).forEach((contractAddress) => { - this.permits[contractAddress] = existingPermits[contractAddress]; - }); - return this.permits; - } - /** - * Stores a permit for a specific contract address. Will overwrite any existing permit for the same contract address. - * Does not store the permit in localstorage (should it?) - * @param {Permit} permit - The permit to store. - */ - storePermit(permit, account) { - storePermitInLocalStorage(permit, account); - this.permits[permit.contractAddress] = permit; - } - /** - * Removes a stored permit for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The account address of the permit. - */ - removePermit(contractAddress, account) { - if (this.hasPermit(contractAddress, account)) { - removePermitFromLocalstorage(contractAddress, account); - delete this.permits[contractAddress]; - } - } - /** - * Checks if a permit exists for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The account address attached to the stored permits - * @returns {boolean} - True if a permit exists, false otherwise. - */ - hasPermit(contractAddress, account) { - const permitFromLs = this._loadPermitFromLocalStorage(contractAddress, account); - if (permitFromLs != null) - return true; - return this.permits[contractAddress] != null; - } - /** - * Exports all stored permits. - * @returns {ContractPermits} - All stored permits. - */ - exportPermits() { - return this.permits; - } - extractPermitPermission(permit) { - return { - signature: permit.signature, - publicKey: permit.publicKey, - }; - } - // Private helper methods - /** - * Retrieves the FHE public key from the provider. - * @param {SupportedProvider} provider - The provider from which to retrieve the key. - * @param securityZone - The security zone for which to retrieve the key (default 0). - * @returns {Promise} - The retrieved public key. - */ - static async getFheKeyFromProvider(provider, securityZone = 0) { - const requestMethod = determineRequestMethod(provider); - const funcSig = "0x1b1b484e"; // cast sig "getNetworkPublicKey(int32)" - const callData = funcSig + toABIEncodedUint32(securityZone); - const callParams = [{ to: FheOpsAddress, data: callData }, "latest"]; - const publicKeyP = requestMethod(provider, "eth_call", callParams).catch((err) => { - throw Error(`Error while requesting network public key from provider for security zone ${securityZone}: ${JSON.stringify(err)}`); - }); - const publicKey = await publicKeyP; - if (typeof publicKey !== "string") { - throw new Error("Error using publicKey from provider: expected string"); - } - if (publicKey.length < PUBLIC_KEY_LENGTH_MIN) { - throw new Error(`Error initializing fhenixjs; got shorter than expected public key: ${publicKey.length}`); - } - // magically know how to decode rlp or w/e returns from the evm json-rpc - const buff = fromHexString(publicKey.slice(130)); - try { - return TfheCompactPublicKey.deserialize(buff); - } - catch (err) { - throw new Error(`Error deserializing public key ${err}`); - } - } - } - /** - * The FhenixClient class provides functionalities to interact with a FHE (Fully Homomorphic Encryption) system. - * It includes methods for encryption, unsealing, and managing permits. - */ - class FhenixClient extends FhenixClientBase { - /** - * Creates an instance of FhenixClient. - * Initializes the fhevm library if needed and retrieves the public key for encryption from the provider. - * @param {InstanceParams} params - Parameters to initialize the client. - */ - constructor(params) { - super(params); - this.defaultSecurityZone = 0; - this.fhePublicKeys = []; - InitFhevm().catch((err) => { - if (params.ignoreErrors) { - return undefined; - } - else { - throw new Error(`Failed to initialize fhenixjs - is the network FHE-enabled? ${err}`); - } - }); - // In the future the default array can be updated to include additional security zones - // This is not strictly necessary, as the pubKey for additional zones can also be fetched during an encryption. - // By default, doesn't skip fetching the public key - if (params.skipPubKeyFetch !== true) { - this.fhePublicKeys = [this.defaultSecurityZone].map((securityZone) => FhenixClientBase.getFheKeyFromProvider(params.provider, securityZone)); - } - } - async _getPublicKey(securityZone) { - let fhePublicKey = await this.fhePublicKeys[securityZone]; - if (!fhePublicKey) { - this.fhePublicKeys[securityZone] = FhenixClientBase.getFheKeyFromProvider(this.provider, securityZone); - fhePublicKey = await this.fhePublicKeys[securityZone]; - if (!fhePublicKey) { - throw new Error(`Public key for security zone ${securityZone} somehow not initialized`); - } - } - return fhePublicKey; - } - async encrypt_bool(value, securityZone = 0) { - const fhePublicKey = await this._getPublicKey(securityZone); - return encrypt_bool(value, fhePublicKey, securityZone); - } - async encrypt_uint8(value, securityZone = 0) { - isNumber(value); - const fhePublicKey = await this._getPublicKey(securityZone); - ValidateUintInRange(value, MAX_UINT8, 0); - return encrypt_uint8(value, fhePublicKey, securityZone); - } - async encrypt_uint16(value, securityZone = 0) { - isNumber(value); - const fhePublicKey = await this._getPublicKey(securityZone); - ValidateUintInRange(value, MAX_UINT16, 0); - return encrypt_uint16(value, fhePublicKey, securityZone); - } - async encrypt_uint32(value, securityZone = 0) { - isNumber(value); - const fhePublicKey = await this._getPublicKey(securityZone); - ValidateUintInRange(value, MAX_UINT32, 0); - return encrypt_uint32(value, fhePublicKey, securityZone); - } - async encrypt_uint64(value, securityZone = 0) { - isBigIntOrHexString(value); - const fhePublicKey = await this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return encrypt_uint64(value, fhePublicKey, securityZone); - } - async encrypt_uint128(value, securityZone = 0) { - isBigIntOrHexString(value); - const fhePublicKey = await this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return encrypt_uint128(value, fhePublicKey, securityZone); - } - async encrypt_uint256(value, securityZone = 0) { - isBigIntOrHexString(value); - const fhePublicKey = await this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return encrypt_uint256(value, fhePublicKey, securityZone); - } - async encrypt_address(value, securityZone = 0) { - isBigIntOrHexString(value); - const fhePublicKey = await this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return encrypt_address(value, fhePublicKey, securityZone); - } - async encrypt(value, type, securityZone = 0) { - isNumber(value); - let outputSize = type; - const fhePublicKey = await this._getPublicKey(securityZone); - // choose the most efficient ciphertext size if not selected - if (!outputSize) { - if (value < MAX_UINT8) { - outputSize = exports.EncryptionTypes.uint8; - } - else if (value < MAX_UINT16) { - outputSize = exports.EncryptionTypes.uint16; - } - else if (value < MAX_UINT32) { - outputSize = exports.EncryptionTypes.uint32; - } - else { - throw new Error(`Encryption input must be smaller than ${MAX_UINT32}`); - } - } - switch (outputSize) { - case exports.EncryptionTypes.uint8: - ValidateUintInRange(value, MAX_UINT8, 0); - break; - case exports.EncryptionTypes.uint16: - ValidateUintInRange(value, MAX_UINT16, 0); - break; - case exports.EncryptionTypes.uint32: - ValidateUintInRange(value, MAX_UINT32, 0); - break; - } - return encrypt$1(value, fhePublicKey, type, securityZone); - } - } - /** - * The FhenixClientSync class provides functionalities to interact with a FHE (Fully Homomorphic Encryption) system. - * It includes methods for encryption, unsealing, and managing permits. - * - * The Sync FhenixClient allows the `client.encrypt_()` functions to be performed synchronously - * - * @Note The Sync FhenixClient must be created using `await FhenixClientSync.create({provider})` instead of `new FhenixClient({provider})` - */ - class FhenixClientSync extends FhenixClientBase { - constructor(params) { - super(params); - this.fhePublicKeys = []; - this.fhePublicKeys = params.fhePublicKeys; - } - static async create(params) { - isPlainObject$1(params); - if (params.skipPubKeyFetch === true) { - console.warn("warning: FhenixClientSync doesn't support skipping public key fetching on creation"); - } - const { provider, ignoreErrors, securityZones = [0] } = params; - if (!provider) { - throw new Error("Failed to initialize Fhenix Client - must include a web3 provider"); - } - await InitFhevm().catch((err) => { - if (ignoreErrors) { - return undefined; - } - else { - throw new Error(`Failed to initialize fhenixjs - is the network FHE-enabled? ${err}`); - } - }); - const fhePublicKeys = await Promise.all(securityZones.map((securityZone) => FhenixClientBase.getFheKeyFromProvider(params.provider, securityZone))); - return new FhenixClientSync({ ...params, fhePublicKeys }); - } - // Encryption Methods - _getPublicKey(securityZone) { - const fhePublicKey = this.fhePublicKeys[securityZone]; - if (!fhePublicKey) { - throw new Error(`Public key for security zone ${securityZone} not initialized`); - } - return fhePublicKey; - } - encrypt_bool(value, securityZone = 0) { - const fhePublicKey = this._getPublicKey(securityZone); - return encrypt_bool(value, fhePublicKey, securityZone); - } - encrypt_uint8(value, securityZone = 0) { - isNumber(value); - const fhePublicKey = this._getPublicKey(securityZone); - ValidateUintInRange(value, MAX_UINT8, 0); - return encrypt_uint8(value, fhePublicKey, securityZone); - } - encrypt_uint16(value, securityZone = 0) { - isNumber(value); - const fhePublicKey = this._getPublicKey(securityZone); - ValidateUintInRange(value, MAX_UINT16, 0); - return encrypt_uint16(value, fhePublicKey, securityZone); - } - encrypt_uint32(value, securityZone = 0) { - isNumber(value); - const fhePublicKey = this._getPublicKey(securityZone); - ValidateUintInRange(value, MAX_UINT32, 0); - return encrypt_uint32(value, fhePublicKey, securityZone); - } - encrypt_uint64(value, securityZone = 0) { - isBigIntOrHexString(value); - const fhePublicKey = this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return encrypt_uint64(value, fhePublicKey, securityZone); - } - encrypt_uint128(value, securityZone = 0) { - isBigIntOrHexString(value); - const fhePublicKey = this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return encrypt_uint128(value, fhePublicKey, securityZone); - } - encrypt_uint256(value, securityZone = 0) { - isBigIntOrHexString(value); - const fhePublicKey = this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return encrypt_uint256(value, fhePublicKey, securityZone); - } - encrypt_address(value, securityZone = 0) { - isBigIntOrHexString(value); - const fhePublicKey = this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return encrypt_address(value, fhePublicKey, securityZone); - } - encrypt(value, type, securityZone = 0) { - isNumber(value); - let outputSize = type; - const fhePublicKey = this._getPublicKey(securityZone); - // choose the most efficient ciphertext size if not selected - if (!outputSize) { - if (value < MAX_UINT8) { - outputSize = exports.EncryptionTypes.uint8; - } - else if (value < MAX_UINT16) { - outputSize = exports.EncryptionTypes.uint16; - } - else if (value < MAX_UINT32) { - outputSize = exports.EncryptionTypes.uint32; - } - else { - throw new Error(`Encryption input must be smaller than ${MAX_UINT32}`); - } - } - switch (outputSize) { - case exports.EncryptionTypes.uint8: - ValidateUintInRange(value, MAX_UINT8, 0); - break; - case exports.EncryptionTypes.uint16: - ValidateUintInRange(value, MAX_UINT16, 0); - break; - case exports.EncryptionTypes.uint32: - ValidateUintInRange(value, MAX_UINT32, 0); - break; - } - return encrypt$1(value, fhePublicKey, type, securityZone); - } - } - - const createTfheKeypair = () => { - // const block_params = new ShortintParameters( - // ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS, - // ); - const config = TfheConfigBuilder.default() - //..(block_params) - .build(); - const clientKey = TfheClientKey.generate(config); - let publicKey = TfheCompactPublicKey.new(clientKey); - publicKey = TfheCompactPublicKey.deserialize(publicKey.serialize()); - return { clientKey, publicKey }; - }; - const createTfhePublicKey = () => { - const { publicKey } = createTfheKeypair(); - return toHexString(publicKey.serialize()); - }; - const toHexString = (bytes) => bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, "0"), ""); - - /* Do NOT modify this file; see /src.ts/_admin/update-version.ts */ - /** - * The current version of Ethers. - */ - const version = "6.13.1"; - - /** - * Property helper functions. - * - * @_subsection api/utils:Properties [about-properties] - */ - /** - * Assigns the %%values%% to %%target%% as read-only values. - * - * It %%types%% is specified, the values are checked. - */ - function defineProperties(target, values, types) { - for (let key in values) { - let value = values[key]; - Object.defineProperty(target, key, { enumerable: true, value, writable: false }); - } - } - - /** - * All errors in ethers include properties to ensure they are both - * human-readable (i.e. ``.message``) and machine-readable (i.e. ``.code``). - * - * The [[isError]] function can be used to check the error ``code`` and - * provide a type guard for the properties present on that error interface. - * - * @_section: api/utils/errors:Errors [about-errors] - */ - function stringify(value) { - if (value == null) { - return "null"; - } - if (Array.isArray(value)) { - return "[ " + (value.map(stringify)).join(", ") + " ]"; - } - if (value instanceof Uint8Array) { - const HEX = "0123456789abcdef"; - let result = "0x"; - for (let i = 0; i < value.length; i++) { - result += HEX[value[i] >> 4]; - result += HEX[value[i] & 0xf]; - } - return result; - } - if (typeof (value) === "object" && typeof (value.toJSON) === "function") { - return stringify(value.toJSON()); - } - switch (typeof (value)) { - case "boolean": - case "symbol": - return value.toString(); - case "bigint": - return BigInt(value).toString(); - case "number": - return (value).toString(); - case "string": - return JSON.stringify(value); - case "object": { - const keys = Object.keys(value); - keys.sort(); - return "{ " + keys.map((k) => `${stringify(k)}: ${stringify(value[k])}`).join(", ") + " }"; - } - } - return `[ COULD NOT SERIALIZE ]`; - } - /** - * Returns a new Error configured to the format ethers emits errors, with - * the %%message%%, [[api:ErrorCode]] %%code%% and additional properties - * for the corresponding EthersError. - * - * Each error in ethers includes the version of ethers, a - * machine-readable [[ErrorCode]], and depending on %%code%%, additional - * required properties. The error message will also include the %%message%%, - * ethers version, %%code%% and all additional properties, serialized. - */ - function makeError(message, code, info) { - let shortMessage = message; - { - const details = []; - if (info) { - if ("message" in info || "code" in info || "name" in info) { - throw new Error(`value will overwrite populated values: ${stringify(info)}`); - } - for (const key in info) { - if (key === "shortMessage") { - continue; - } - const value = (info[key]); - // try { - details.push(key + "=" + stringify(value)); - // } catch (error: any) { - // console.log("MMM", error.message); - // details.push(key + "=[could not serialize object]"); - // } - } - } - details.push(`code=${code}`); - details.push(`version=${version}`); - if (details.length) { - message += " (" + details.join(", ") + ")"; - } - } - let error; - switch (code) { - case "INVALID_ARGUMENT": - error = new TypeError(message); - break; - case "NUMERIC_FAULT": - case "BUFFER_OVERRUN": - error = new RangeError(message); - break; - default: - error = new Error(message); - } - defineProperties(error, { code }); - if (info) { - Object.assign(error, info); - } - if (error.shortMessage == null) { - defineProperties(error, { shortMessage }); - } - return error; - } - /** - * Throws an EthersError with %%message%%, %%code%% and additional error - * %%info%% when %%check%% is falsish.. - * - * @see [[api:makeError]] - */ - function assert(check, message, code, info) { - if (!check) { - throw makeError(message, code, info); - } - } - /** - * A simple helper to simply ensuring provided arguments match expected - * constraints, throwing if not. - * - * In TypeScript environments, the %%check%% has been asserted true, so - * any further code does not need additional compile-time checks. - */ - function assertArgument(check, message, name, value) { - assert(check, message, "INVALID_ARGUMENT", { argument: name, value: value }); - } - ["NFD", "NFC", "NFKD", "NFKC"].reduce((accum, form) => { - try { - // General test for normalize - /* c8 ignore start */ - if ("test".normalize(form) !== "test") { - throw new Error("bad"); - } - ; - /* c8 ignore stop */ - if (form === "NFD") { - const check = String.fromCharCode(0xe9).normalize("NFD"); - const expected = String.fromCharCode(0x65, 0x0301); - /* c8 ignore start */ - if (check !== expected) { - throw new Error("broken"); - } - /* c8 ignore stop */ - } - accum.push(form); - } - catch (error) { } - return accum; - }, []); - - /** - * Some data helpers. - * - * - * @_subsection api/utils:Data Helpers [about-data] - */ - function _getBytes(value, name, copy) { - if (value instanceof Uint8Array) { - return value; - } - if (typeof (value) === "string" && value.match(/^0x(?:[0-9a-f][0-9a-f])*$/i)) { - const result = new Uint8Array((value.length - 2) / 2); - let offset = 2; - for (let i = 0; i < result.length; i++) { - result[i] = parseInt(value.substring(offset, offset + 2), 16); - offset += 2; - } - return result; - } - assertArgument(false, "invalid BytesLike value", name || "value", value); - } - /** - * Get a typed Uint8Array for %%value%%. If already a Uint8Array - * the original %%value%% is returned; if a copy is required use - * [[getBytesCopy]]. - * - * @see: getBytesCopy - */ - function getBytes(value, name) { - return _getBytes(value, name); - } - const HexCharacters = "0123456789abcdef"; - /** - * Returns a [[DataHexString]] representation of %%data%%. - */ - function hexlify(data) { - const bytes = getBytes(data); - let result = "0x"; - for (let i = 0; i < bytes.length; i++) { - const v = bytes[i]; - result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f]; - } - return result; - } - - /** - * Using strings in Ethereum (or any security-basd system) requires - * additional care. These utilities attempt to mitigate some of the - * safety issues as well as provide the ability to recover and analyse - * strings. - * - * @_subsection api/utils:Strings and UTF-8 [about-strings] - */ - // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array - /** - * Returns the UTF-8 byte representation of %%str%%. - * - * If %%form%% is specified, the string is normalized. - */ - function toUtf8Bytes(str, form) { - assertArgument(typeof (str) === "string", "invalid string value", "str", str); - let result = []; - for (let i = 0; i < str.length; i++) { - const c = str.charCodeAt(i); - if (c < 0x80) { - result.push(c); - } - else if (c < 0x800) { - result.push((c >> 6) | 0xc0); - result.push((c & 0x3f) | 0x80); - } - else if ((c & 0xfc00) == 0xd800) { - i++; - const c2 = str.charCodeAt(i); - assertArgument(i < str.length && ((c2 & 0xfc00) === 0xdc00), "invalid surrogate pair", "str", str); - // Surrogate Pair - const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff); - result.push((pair >> 18) | 0xf0); - result.push(((pair >> 12) & 0x3f) | 0x80); - result.push(((pair >> 6) & 0x3f) | 0x80); - result.push((pair & 0x3f) | 0x80); - } - else { - result.push((c >> 12) | 0xe0); - result.push(((c >> 6) & 0x3f) | 0x80); - result.push((c & 0x3f) | 0x80); - } - } - return new Uint8Array(result); - } - - function number(n) { - if (!Number.isSafeInteger(n) || n < 0) - throw new Error(`Wrong positive integer: ${n}`); - } - function bytes(b, ...lengths) { - if (!(b instanceof Uint8Array)) - throw new Error('Expected Uint8Array'); - if (lengths.length > 0 && !lengths.includes(b.length)) - throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`); - } - function exists(instance, checkFinished = true) { - if (instance.destroyed) - throw new Error('Hash instance has been destroyed'); - if (checkFinished && instance.finished) - throw new Error('Hash#digest() has already been called'); - } - function output(out, instance) { - bytes(out); - const min = instance.outputLen; - if (out.length < min) { - throw new Error(`digestInto() expects output buffer of length at least ${min}`); - } - } - - /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */ - // We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+. - // node.js versions earlier than v19 don't declare it in global scope. - // For node.js, package.json#exports field mapping rewrites import - // from `crypto` to `cryptoNode`, which imports native module. - // Makes the utils un-importable in browsers without a bundler. - // Once node.js 18 is deprecated, we can just drop the import. - const u8a = (a) => a instanceof Uint8Array; - const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4)); - // big-endian hardware is rare. Just in case someone still decides to run hashes: - // early-throw an error because we don't support BE yet. - const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44; - if (!isLE) - throw new Error('Non little-endian hardware is not supported'); - /** - * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99]) - */ - function utf8ToBytes(str) { - if (typeof str !== 'string') - throw new Error(`utf8ToBytes expected string, got ${typeof str}`); - return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809 - } - /** - * Normalizes (non-hex) string or Uint8Array to Uint8Array. - * Warning: when Uint8Array is passed, it would NOT get copied. - * Keep in mind for future mutable operations. - */ - function toBytes(data) { - if (typeof data === 'string') - data = utf8ToBytes(data); - if (!u8a(data)) - throw new Error(`expected Uint8Array, got ${typeof data}`); - return data; - } - // For runtime check if class implements interface - class Hash { - // Safe version that clones internal state - clone() { - return this._cloneInto(); - } - } - function wrapConstructor(hashCons) { - const hashC = (msg) => hashCons().update(toBytes(msg)).digest(); - const tmp = hashCons(); - hashC.outputLen = tmp.outputLen; - hashC.blockLen = tmp.blockLen; - hashC.create = () => hashCons(); - return hashC; - } - - const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1); - const _32n = /* @__PURE__ */ BigInt(32); - // We are not using BigUint64Array, because they are extremely slow as per 2022 - function fromBig(n, le = false) { - if (le) - return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) }; - return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 }; - } - function split(lst, le = false) { - let Ah = new Uint32Array(lst.length); - let Al = new Uint32Array(lst.length); - for (let i = 0; i < lst.length; i++) { - const { h, l } = fromBig(lst[i], le); - [Ah[i], Al[i]] = [h, l]; - } - return [Ah, Al]; - } - // Left rotate for Shift in [1, 32) - const rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s)); - const rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s)); - // Left rotate for Shift in (32, 64), NOTE: 32 is special case. - const rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s)); - const rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s)); - - // SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size. - // It's called a sponge function. - // Various per round constants calculations - const [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []]; - const _0n = /* @__PURE__ */ BigInt(0); - const _1n = /* @__PURE__ */ BigInt(1); - const _2n = /* @__PURE__ */ BigInt(2); - const _7n = /* @__PURE__ */ BigInt(7); - const _256n = /* @__PURE__ */ BigInt(256); - const _0x71n = /* @__PURE__ */ BigInt(0x71); - for (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) { - // Pi - [x, y] = [y, (2 * x + 3 * y) % 5]; - SHA3_PI.push(2 * (5 * y + x)); - // Rotational - SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64); - // Iota - let t = _0n; - for (let j = 0; j < 7; j++) { - R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n; - if (R & _2n) - t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n); - } - _SHA3_IOTA.push(t); - } - const [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true); - // Left rotation (without 0, 32, 64) - const rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s)); - const rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s)); - // Same as keccakf1600, but allows to skip some rounds - function keccakP(s, rounds = 24) { - const B = new Uint32Array(5 * 2); - // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js) - for (let round = 24 - rounds; round < 24; round++) { - // Theta θ - for (let x = 0; x < 10; x++) - B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40]; - for (let x = 0; x < 10; x += 2) { - const idx1 = (x + 8) % 10; - const idx0 = (x + 2) % 10; - const B0 = B[idx0]; - const B1 = B[idx0 + 1]; - const Th = rotlH(B0, B1, 1) ^ B[idx1]; - const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1]; - for (let y = 0; y < 50; y += 10) { - s[x + y] ^= Th; - s[x + y + 1] ^= Tl; - } - } - // Rho (ρ) and Pi (π) - let curH = s[2]; - let curL = s[3]; - for (let t = 0; t < 24; t++) { - const shift = SHA3_ROTL[t]; - const Th = rotlH(curH, curL, shift); - const Tl = rotlL(curH, curL, shift); - const PI = SHA3_PI[t]; - curH = s[PI]; - curL = s[PI + 1]; - s[PI] = Th; - s[PI + 1] = Tl; - } - // Chi (χ) - for (let y = 0; y < 50; y += 10) { - for (let x = 0; x < 10; x++) - B[x] = s[y + x]; - for (let x = 0; x < 10; x++) - s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10]; - } - // Iota (ι) - s[0] ^= SHA3_IOTA_H[round]; - s[1] ^= SHA3_IOTA_L[round]; - } - B.fill(0); - } - class Keccak extends Hash { - // NOTE: we accept arguments in bytes instead of bits here. - constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) { - super(); - this.blockLen = blockLen; - this.suffix = suffix; - this.outputLen = outputLen; - this.enableXOF = enableXOF; - this.rounds = rounds; - this.pos = 0; - this.posOut = 0; - this.finished = false; - this.destroyed = false; - // Can be passed from user as dkLen - number(outputLen); - // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes - if (0 >= this.blockLen || this.blockLen >= 200) - throw new Error('Sha3 supports only keccak-f1600 function'); - this.state = new Uint8Array(200); - this.state32 = u32(this.state); - } - keccak() { - keccakP(this.state32, this.rounds); - this.posOut = 0; - this.pos = 0; - } - update(data) { - exists(this); - const { blockLen, state } = this; - data = toBytes(data); - const len = data.length; - for (let pos = 0; pos < len;) { - const take = Math.min(blockLen - this.pos, len - pos); - for (let i = 0; i < take; i++) - state[this.pos++] ^= data[pos++]; - if (this.pos === blockLen) - this.keccak(); - } - return this; - } - finish() { - if (this.finished) - return; - this.finished = true; - const { state, suffix, pos, blockLen } = this; - // Do the padding - state[pos] ^= suffix; - if ((suffix & 0x80) !== 0 && pos === blockLen - 1) - this.keccak(); - state[blockLen - 1] ^= 0x80; - this.keccak(); - } - writeInto(out) { - exists(this, false); - bytes(out); - this.finish(); - const bufferOut = this.state; - const { blockLen } = this; - for (let pos = 0, len = out.length; pos < len;) { - if (this.posOut >= blockLen) - this.keccak(); - const take = Math.min(blockLen - this.posOut, len - pos); - out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos); - this.posOut += take; - pos += take; - } - return out; - } - xofInto(out) { - // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF - if (!this.enableXOF) - throw new Error('XOF is not possible for this instance'); - return this.writeInto(out); - } - xof(bytes) { - number(bytes); - return this.xofInto(new Uint8Array(bytes)); - } - digestInto(out) { - output(out, this); - if (this.finished) - throw new Error('digest() was already called'); - this.writeInto(out); - this.destroy(); - return out; - } - digest() { - return this.digestInto(new Uint8Array(this.outputLen)); - } - destroy() { - this.destroyed = true; - this.state.fill(0); - } - _cloneInto(to) { - const { blockLen, suffix, outputLen, rounds, enableXOF } = this; - to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds)); - to.state32.set(this.state32); - to.pos = this.pos; - to.posOut = this.posOut; - to.finished = this.finished; - to.rounds = rounds; - // Suffix can change in cSHAKE - to.suffix = suffix; - to.outputLen = outputLen; - to.enableXOF = enableXOF; - to.destroyed = this.destroyed; - return to; - } - } - const gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen)); - /** - * keccak-256 hash function. Different from SHA3-256. - * @param message - that would be hashed - */ - const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8); - - /** - * Cryptographic hashing functions - * - * @_subsection: api/crypto:Hash Functions [about-crypto-hashing] - */ - let locked = false; - const _keccak256 = function (data) { - return keccak_256(data); - }; - let __keccak256 = _keccak256; - /** - * Compute the cryptographic KECCAK256 hash of %%data%%. - * - * The %%data%% **must** be a data representation, to compute the - * hash of UTF-8 data use the [[id]] function. - * - * @returns DataHexstring - * @example: - * keccak256("0x") - * //_result: - * - * keccak256("0x1337") - * //_result: - * - * keccak256(new Uint8Array([ 0x13, 0x37 ])) - * //_result: - * - * // Strings are assumed to be DataHexString, otherwise it will - * // throw. To hash UTF-8 data, see the note above. - * keccak256("Hello World") - * //_error: - */ - function keccak256(_data) { - const data = getBytes(_data, "data"); - return hexlify(__keccak256(data)); - } - keccak256._ = _keccak256; - keccak256.lock = function () { locked = true; }; - keccak256.register = function (func) { - if (locked) { - throw new TypeError("keccak256 is locked"); - } - __keccak256 = func; - }; - Object.freeze(keccak256); - - /** - * A constant for the zero address. - * - * (**i.e.** ``"0x0000000000000000000000000000000000000000"``) - */ - const ZeroAddress = "0x0000000000000000000000000000000000000000"; - - const BN_0 = BigInt(0); - const BN_36 = BigInt(36); - function getChecksumAddress(address) { - // if (!isHexString(address, 20)) { - // logger.throwArgumentError("invalid address", "address", address); - // } - address = address.toLowerCase(); - const chars = address.substring(2).split(""); - const expanded = new Uint8Array(40); - for (let i = 0; i < 40; i++) { - expanded[i] = chars[i].charCodeAt(0); - } - const hashed = getBytes(keccak256(expanded)); - for (let i = 0; i < 40; i += 2) { - if ((hashed[i >> 1] >> 4) >= 8) { - chars[i] = chars[i].toUpperCase(); - } - if ((hashed[i >> 1] & 0x0f) >= 8) { - chars[i + 1] = chars[i + 1].toUpperCase(); - } - } - return "0x" + chars.join(""); - } - // See: https://en.wikipedia.org/wiki/International_Bank_Account_Number - // Create lookup table - const ibanLookup = {}; - for (let i = 0; i < 10; i++) { - ibanLookup[String(i)] = String(i); - } - for (let i = 0; i < 26; i++) { - ibanLookup[String.fromCharCode(65 + i)] = String(10 + i); - } - // How many decimal digits can we process? (for 64-bit float, this is 15) - // i.e. Math.floor(Math.log10(Number.MAX_SAFE_INTEGER)); - const safeDigits = 15; - function ibanChecksum(address) { - address = address.toUpperCase(); - address = address.substring(4) + address.substring(0, 2) + "00"; - let expanded = address.split("").map((c) => { return ibanLookup[c]; }).join(""); - // Javascript can handle integers safely up to 15 (decimal) digits - while (expanded.length >= safeDigits) { - let block = expanded.substring(0, safeDigits); - expanded = parseInt(block, 10) % 97 + expanded.substring(block.length); - } - let checksum = String(98 - (parseInt(expanded, 10) % 97)); - while (checksum.length < 2) { - checksum = "0" + checksum; - } - return checksum; - } - const Base36 = (function () { - const result = {}; - for (let i = 0; i < 36; i++) { - const key = "0123456789abcdefghijklmnopqrstuvwxyz"[i]; - result[key] = BigInt(i); - } - return result; - })(); - function fromBase36(value) { - value = value.toLowerCase(); - let result = BN_0; - for (let i = 0; i < value.length; i++) { - result = result * BN_36 + Base36[value[i]]; - } - return result; - } - /** - * Returns a normalized and checksumed address for %%address%%. - * This accepts non-checksum addresses, checksum addresses and - * [[getIcapAddress]] formats. - * - * The checksum in Ethereum uses the capitalization (upper-case - * vs lower-case) of the characters within an address to encode - * its checksum, which offers, on average, a checksum of 15-bits. - * - * If %%address%% contains both upper-case and lower-case, it is - * assumed to already be a checksum address and its checksum is - * validated, and if the address fails its expected checksum an - * error is thrown. - * - * If you wish the checksum of %%address%% to be ignore, it should - * be converted to lower-case (i.e. ``.toLowercase()``) before - * being passed in. This should be a very rare situation though, - * that you wish to bypass the safegaurds in place to protect - * against an address that has been incorrectly copied from another - * source. - * - * @example: - * // Adds the checksum (via upper-casing specific letters) - * getAddress("0x8ba1f109551bd432803012645ac136ddd64dba72") - * //_result: - * - * // Converts ICAP address and adds checksum - * getAddress("XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36"); - * //_result: - * - * // Throws an error if an address contains mixed case, - * // but the checksum fails - * getAddress("0x8Ba1f109551bD432803012645Ac136ddd64DBA72") - * //_error: - */ - function getAddress(address) { - assertArgument(typeof (address) === "string", "invalid address", "address", address); - if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) { - // Missing the 0x prefix - if (!address.startsWith("0x")) { - address = "0x" + address; - } - const result = getChecksumAddress(address); - // It is a checksummed address with a bad checksum - assertArgument(!address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) || result === address, "bad address checksum", "address", address); - return result; - } - // Maybe ICAP? (we only support direct mode) - if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) { - // It is an ICAP address with a bad checksum - assertArgument(address.substring(2, 4) === ibanChecksum(address), "bad icap checksum", "address", address); - let result = fromBase36(address.substring(4)).toString(16); - while (result.length < 40) { - result = "0" + result; - } - return getChecksumAddress("0x" + result); - } - assertArgument(false, "invalid address", "address", address); - } - - /** - * Returns true if %%value%% is a valid address. - * - * @example: - * // Valid address - * isAddress("0x8ba1f109551bD432803012645Ac136ddd64DBA72") - * //_result: - * - * // Valid ICAP address - * isAddress("XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36") - * //_result: - * - * // Invalid checksum - * isAddress("0x8Ba1f109551bD432803012645Ac136ddd64DBa72") - * //_result: - * - * // Invalid ICAP checksum - * isAddress("0x8Ba1f109551bD432803012645Ac136ddd64DBA72") - * //_result: - * - * // Not an address (an ENS name requires a provided and an - * // asynchronous API to access) - * isAddress("ricmoo.eth") - * //_result: - */ - function isAddress(value) { - try { - getAddress(value); - return true; - } - catch (error) { } - return false; - } - - /** - * A simple hashing function which operates on UTF-8 strings to - * compute an 32-byte identifier. - * - * This simply computes the [UTF-8 bytes](toUtf8Bytes) and computes - * the [[keccak256]]. - * - * @example: - * id("hello world") - * //_result: - */ - function id(value) { - return keccak256(toUtf8Bytes(value)); - } - - var FheUType; - (function (FheUType) { - FheUType[FheUType["bool"] = 13] = "bool"; - FheUType[FheUType["uint8"] = 0] = "uint8"; - FheUType[FheUType["uint16"] = 1] = "uint16"; - FheUType[FheUType["uint32"] = 2] = "uint32"; - FheUType[FheUType["uint64"] = 3] = "uint64"; - FheUType[FheUType["uint128"] = 4] = "uint128"; - FheUType[FheUType["uint256"] = 5] = "uint256"; - FheUType[FheUType["address"] = 12] = "address"; - })(FheUType || (FheUType = {})); - const FheUintUTypes = [ - FheUType.uint8, - FheUType.uint16, - FheUType.uint32, - FheUType.uint64, - FheUType.uint128, - FheUType.uint256, - ]; - const FheAllUTypes = [ - FheUType.bool, - FheUType.uint8, - FheUType.uint16, - FheUType.uint32, - FheUType.uint64, - FheUType.uint128, - FheUType.uint256, - FheUType.address, - ]; - const Encryptable = { - bool: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.bool }), - uint8: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint8 }), - uint16: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint16 }), - uint32: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint32 }), - uint64: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint64 }), - uint128: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint128 }), - uint256: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint256 }), - address: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.address }), - }; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - function isEncryptableItem(value) { - return (typeof value === "object" && - value !== null && - ["string", "number", "bigint", "boolean"].includes(typeof value.data) && - typeof value.securityZone === "number" && - FheAllUTypes.includes(value.utype)); - } - // Determine if `value` is an instance of a `sealedItem` { data: string, utype: 0-5 | 12 | 13 } - // eslint-disable-next-line @typescript-eslint/no-explicit-any - function getAsSealedItem(value) { - if (Array.isArray(value) && - value.length === 2 && - typeof value[0] === "string" && - FheAllUTypes.includes(parseInt(`${value[1]}`))) - return { - data: value[0], - utype: value[1], - }; - if (typeof value === "object" && - value !== null && - typeof value.data === "string" && - FheAllUTypes.includes(value.utype)) - return value; - return undefined; - } - function isSealedBool(value) { - return parseInt(`${value.utype}`) === FheUType.bool; - } - function isSealedUint(value) { - return FheUintUTypes.includes(parseInt(`${value.utype}`)); - } - function isSealedAddress(value) { - return parseInt(`${value.utype}`) === FheUType.address; - } - const ResultErr = (error) => ({ - success: false, - data: null, - error, - }); - const ResultOk = (data) => ({ - success: true, - data, - error: null, - }); - - const PermitV2SignatureAllFields = [ - { name: "issuer", type: "address" }, - { name: "expiration", type: "uint64" }, - { name: "contracts", type: "address[]" }, - { name: "projects", type: "string[]" }, - { name: "recipient", type: "address" }, - { name: "validatorId", type: "uint256" }, - { name: "validatorContract", type: "address" }, - { name: "sealingKey", type: "bytes32" }, - { name: "issuerSignature", type: "bytes" }, - ]; - const SignatureTypes = { - PermissionedV2IssuerSelf: [ - "issuer", - "expiration", - "contracts", - "projects", - "recipient", - "validatorId", - "validatorContract", - "sealingKey", - ], - PermissionedV2IssuerShared: [ - "issuer", - "expiration", - "contracts", - "projects", - "recipient", - "validatorId", - "validatorContract", - ], - PermissionedV2Recipient: [ - "sealingKey", - "issuerSignature", - ], - }; - const getSignatureTypesAndMessage = (primaryType, fields, values) => { - const types = { - [primaryType]: PermitV2SignatureAllFields.filter((fieldType) => fields.includes(fieldType.name)), - }; - const message = {}; - fields.forEach((field) => { - if (field in values) { - message[field] = values[field]; - } - }); - return { types, primaryType, message: message }; - }; - const getSignatureDomain = (chainId) => ({ - name: "Fhenix Permission v2.0.0", - version: "v2.0.0", - chainId: parseInt(chainId), - verifyingContract: ZeroAddress, - }); - - var util; - (function (util) { - util.assertEqual = (val) => val; - function assertIs(_arg) { } - util.assertIs = assertIs; - function assertNever(_x) { - throw new Error(); - } - util.assertNever = assertNever; - util.arrayToEnum = (items) => { - const obj = {}; - for (const item of items) { - obj[item] = item; - } - return obj; - }; - util.getValidEnumValues = (obj) => { - const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== "number"); - const filtered = {}; - for (const k of validKeys) { - filtered[k] = obj[k]; - } - return util.objectValues(filtered); - }; - util.objectValues = (obj) => { - return util.objectKeys(obj).map(function (e) { - return obj[e]; - }); - }; - util.objectKeys = typeof Object.keys === "function" // eslint-disable-line ban/ban - ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban - : (object) => { - const keys = []; - for (const key in object) { - if (Object.prototype.hasOwnProperty.call(object, key)) { - keys.push(key); - } - } - return keys; - }; - util.find = (arr, checker) => { - for (const item of arr) { - if (checker(item)) - return item; - } - return undefined; - }; - util.isInteger = typeof Number.isInteger === "function" - ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban - : (val) => typeof val === "number" && isFinite(val) && Math.floor(val) === val; - function joinValues(array, separator = " | ") { - return array - .map((val) => (typeof val === "string" ? `'${val}'` : val)) - .join(separator); - } - util.joinValues = joinValues; - util.jsonStringifyReplacer = (_, value) => { - if (typeof value === "bigint") { - return value.toString(); - } - return value; - }; - })(util || (util = {})); - var objectUtil; - (function (objectUtil) { - objectUtil.mergeShapes = (first, second) => { - return { - ...first, - ...second, // second overwrites first - }; - }; - })(objectUtil || (objectUtil = {})); - const ZodParsedType = util.arrayToEnum([ - "string", - "nan", - "number", - "integer", - "float", - "boolean", - "date", - "bigint", - "symbol", - "function", - "undefined", - "null", - "array", - "object", - "unknown", - "promise", - "void", - "never", - "map", - "set", - ]); - const getParsedType = (data) => { - const t = typeof data; - switch (t) { - case "undefined": - return ZodParsedType.undefined; - case "string": - return ZodParsedType.string; - case "number": - return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number; - case "boolean": - return ZodParsedType.boolean; - case "function": - return ZodParsedType.function; - case "bigint": - return ZodParsedType.bigint; - case "symbol": - return ZodParsedType.symbol; - case "object": - if (Array.isArray(data)) { - return ZodParsedType.array; - } - if (data === null) { - return ZodParsedType.null; - } - if (data.then && - typeof data.then === "function" && - data.catch && - typeof data.catch === "function") { - return ZodParsedType.promise; - } - if (typeof Map !== "undefined" && data instanceof Map) { - return ZodParsedType.map; - } - if (typeof Set !== "undefined" && data instanceof Set) { - return ZodParsedType.set; - } - if (typeof Date !== "undefined" && data instanceof Date) { - return ZodParsedType.date; - } - return ZodParsedType.object; - default: - return ZodParsedType.unknown; - } - }; - - const ZodIssueCode = util.arrayToEnum([ - "invalid_type", - "invalid_literal", - "custom", - "invalid_union", - "invalid_union_discriminator", - "invalid_enum_value", - "unrecognized_keys", - "invalid_arguments", - "invalid_return_type", - "invalid_date", - "invalid_string", - "too_small", - "too_big", - "invalid_intersection_types", - "not_multiple_of", - "not_finite", - ]); - const quotelessJson = (obj) => { - const json = JSON.stringify(obj, null, 2); - return json.replace(/"([^"]+)":/g, "$1:"); - }; - class ZodError extends Error { - constructor(issues) { - super(); - this.issues = []; - this.addIssue = (sub) => { - this.issues = [...this.issues, sub]; - }; - this.addIssues = (subs = []) => { - this.issues = [...this.issues, ...subs]; - }; - const actualProto = new.target.prototype; - if (Object.setPrototypeOf) { - // eslint-disable-next-line ban/ban - Object.setPrototypeOf(this, actualProto); - } - else { - this.__proto__ = actualProto; - } - this.name = "ZodError"; - this.issues = issues; - } - get errors() { - return this.issues; - } - format(_mapper) { - const mapper = _mapper || - function (issue) { - return issue.message; - }; - const fieldErrors = { _errors: [] }; - const processError = (error) => { - for (const issue of error.issues) { - if (issue.code === "invalid_union") { - issue.unionErrors.map(processError); - } - else if (issue.code === "invalid_return_type") { - processError(issue.returnTypeError); - } - else if (issue.code === "invalid_arguments") { - processError(issue.argumentsError); - } - else if (issue.path.length === 0) { - fieldErrors._errors.push(mapper(issue)); - } - else { - let curr = fieldErrors; - let i = 0; - while (i < issue.path.length) { - const el = issue.path[i]; - const terminal = i === issue.path.length - 1; - if (!terminal) { - curr[el] = curr[el] || { _errors: [] }; - // if (typeof el === "string") { - // curr[el] = curr[el] || { _errors: [] }; - // } else if (typeof el === "number") { - // const errorArray: any = []; - // errorArray._errors = []; - // curr[el] = curr[el] || errorArray; - // } - } - else { - curr[el] = curr[el] || { _errors: [] }; - curr[el]._errors.push(mapper(issue)); - } - curr = curr[el]; - i++; - } - } - } - }; - processError(this); - return fieldErrors; - } - static assert(value) { - if (!(value instanceof ZodError)) { - throw new Error(`Not a ZodError: ${value}`); - } - } - toString() { - return this.message; - } - get message() { - return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2); - } - get isEmpty() { - return this.issues.length === 0; - } - flatten(mapper = (issue) => issue.message) { - const fieldErrors = {}; - const formErrors = []; - for (const sub of this.issues) { - if (sub.path.length > 0) { - fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || []; - fieldErrors[sub.path[0]].push(mapper(sub)); - } - else { - formErrors.push(mapper(sub)); - } - } - return { formErrors, fieldErrors }; - } - get formErrors() { - return this.flatten(); - } - } - ZodError.create = (issues) => { - const error = new ZodError(issues); - return error; - }; - - const errorMap = (issue, _ctx) => { - let message; - switch (issue.code) { - case ZodIssueCode.invalid_type: - if (issue.received === ZodParsedType.undefined) { - message = "Required"; - } - else { - message = `Expected ${issue.expected}, received ${issue.received}`; - } - break; - case ZodIssueCode.invalid_literal: - message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`; - break; - case ZodIssueCode.unrecognized_keys: - message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, ", ")}`; - break; - case ZodIssueCode.invalid_union: - message = `Invalid input`; - break; - case ZodIssueCode.invalid_union_discriminator: - message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`; - break; - case ZodIssueCode.invalid_enum_value: - message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`; - break; - case ZodIssueCode.invalid_arguments: - message = `Invalid function arguments`; - break; - case ZodIssueCode.invalid_return_type: - message = `Invalid function return type`; - break; - case ZodIssueCode.invalid_date: - message = `Invalid date`; - break; - case ZodIssueCode.invalid_string: - if (typeof issue.validation === "object") { - if ("includes" in issue.validation) { - message = `Invalid input: must include "${issue.validation.includes}"`; - if (typeof issue.validation.position === "number") { - message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`; - } - } - else if ("startsWith" in issue.validation) { - message = `Invalid input: must start with "${issue.validation.startsWith}"`; - } - else if ("endsWith" in issue.validation) { - message = `Invalid input: must end with "${issue.validation.endsWith}"`; - } - else { - util.assertNever(issue.validation); - } - } - else if (issue.validation !== "regex") { - message = `Invalid ${issue.validation}`; - } - else { - message = "Invalid"; - } - break; - case ZodIssueCode.too_small: - if (issue.type === "array") - message = `Array must contain ${issue.exact ? "exactly" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`; - else if (issue.type === "string") - message = `String must contain ${issue.exact ? "exactly" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`; - else if (issue.type === "number") - message = `Number must be ${issue.exact - ? `exactly equal to ` - : issue.inclusive - ? `greater than or equal to ` - : `greater than `}${issue.minimum}`; - else if (issue.type === "date") - message = `Date must be ${issue.exact - ? `exactly equal to ` - : issue.inclusive - ? `greater than or equal to ` - : `greater than `}${new Date(Number(issue.minimum))}`; - else - message = "Invalid input"; - break; - case ZodIssueCode.too_big: - if (issue.type === "array") - message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`; - else if (issue.type === "string") - message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`; - else if (issue.type === "number") - message = `Number must be ${issue.exact - ? `exactly` - : issue.inclusive - ? `less than or equal to` - : `less than`} ${issue.maximum}`; - else if (issue.type === "bigint") - message = `BigInt must be ${issue.exact - ? `exactly` - : issue.inclusive - ? `less than or equal to` - : `less than`} ${issue.maximum}`; - else if (issue.type === "date") - message = `Date must be ${issue.exact - ? `exactly` - : issue.inclusive - ? `smaller than or equal to` - : `smaller than`} ${new Date(Number(issue.maximum))}`; - else - message = "Invalid input"; - break; - case ZodIssueCode.custom: - message = `Invalid input`; - break; - case ZodIssueCode.invalid_intersection_types: - message = `Intersection results could not be merged`; - break; - case ZodIssueCode.not_multiple_of: - message = `Number must be a multiple of ${issue.multipleOf}`; - break; - case ZodIssueCode.not_finite: - message = "Number must be finite"; - break; - default: - message = _ctx.defaultError; - util.assertNever(issue); - } - return { message }; - }; - - let overrideErrorMap = errorMap; - function setErrorMap(map) { - overrideErrorMap = map; - } - function getErrorMap() { - return overrideErrorMap; - } - - const makeIssue = (params) => { - const { data, path, errorMaps, issueData } = params; - const fullPath = [...path, ...(issueData.path || [])]; - const fullIssue = { - ...issueData, - path: fullPath, - }; - if (issueData.message !== undefined) { - return { - ...issueData, - path: fullPath, - message: issueData.message, - }; - } - let errorMessage = ""; - const maps = errorMaps - .filter((m) => !!m) - .slice() - .reverse(); - for (const map of maps) { - errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message; - } - return { - ...issueData, - path: fullPath, - message: errorMessage, - }; - }; - const EMPTY_PATH = []; - function addIssueToContext(ctx, issueData) { - const overrideMap = getErrorMap(); - const issue = makeIssue({ - issueData: issueData, - data: ctx.data, - path: ctx.path, - errorMaps: [ - ctx.common.contextualErrorMap, - ctx.schemaErrorMap, - overrideMap, - overrideMap === errorMap ? undefined : errorMap, // then global default map - ].filter((x) => !!x), - }); - ctx.common.issues.push(issue); - } - class ParseStatus { - constructor() { - this.value = "valid"; - } - dirty() { - if (this.value === "valid") - this.value = "dirty"; - } - abort() { - if (this.value !== "aborted") - this.value = "aborted"; - } - static mergeArray(status, results) { - const arrayValue = []; - for (const s of results) { - if (s.status === "aborted") - return INVALID; - if (s.status === "dirty") - status.dirty(); - arrayValue.push(s.value); - } - return { status: status.value, value: arrayValue }; - } - static async mergeObjectAsync(status, pairs) { - const syncPairs = []; - for (const pair of pairs) { - const key = await pair.key; - const value = await pair.value; - syncPairs.push({ - key, - value, - }); - } - return ParseStatus.mergeObjectSync(status, syncPairs); - } - static mergeObjectSync(status, pairs) { - const finalObject = {}; - for (const pair of pairs) { - const { key, value } = pair; - if (key.status === "aborted") - return INVALID; - if (value.status === "aborted") - return INVALID; - if (key.status === "dirty") - status.dirty(); - if (value.status === "dirty") - status.dirty(); - if (key.value !== "__proto__" && - (typeof value.value !== "undefined" || pair.alwaysSet)) { - finalObject[key.value] = value.value; - } - } - return { status: status.value, value: finalObject }; - } - } - const INVALID = Object.freeze({ - status: "aborted", - }); - const DIRTY = (value) => ({ status: "dirty", value }); - const OK = (value) => ({ status: "valid", value }); - const isAborted = (x) => x.status === "aborted"; - const isDirty = (x) => x.status === "dirty"; - const isValid = (x) => x.status === "valid"; - const isAsync = (x) => typeof Promise !== "undefined" && x instanceof Promise; - - /****************************************************************************** - Copyright (c) Microsoft Corporation. - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. - ***************************************************************************** */ - - function __classPrivateFieldGet(receiver, state, kind, f) { - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); - return state.get(receiver); - } - - function __classPrivateFieldSet(receiver, state, value, kind, f) { - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); - return (state.set(receiver, value)), value; - } - - typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { - var e = new Error(message); - return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; - }; - - var errorUtil; - (function (errorUtil) { - errorUtil.errToObj = (message) => typeof message === "string" ? { message } : message || {}; - errorUtil.toString = (message) => typeof message === "string" ? message : message === null || message === void 0 ? void 0 : message.message; - })(errorUtil || (errorUtil = {})); - - var _ZodEnum_cache, _ZodNativeEnum_cache; - class ParseInputLazyPath { - constructor(parent, value, path, key) { - this._cachedPath = []; - this.parent = parent; - this.data = value; - this._path = path; - this._key = key; - } - get path() { - if (!this._cachedPath.length) { - if (this._key instanceof Array) { - this._cachedPath.push(...this._path, ...this._key); - } - else { - this._cachedPath.push(...this._path, this._key); - } - } - return this._cachedPath; - } - } - const handleResult = (ctx, result) => { - if (isValid(result)) { - return { success: true, data: result.value }; - } - else { - if (!ctx.common.issues.length) { - throw new Error("Validation failed but no issues detected."); - } - return { - success: false, - get error() { - if (this._error) - return this._error; - const error = new ZodError(ctx.common.issues); - this._error = error; - return this._error; - }, - }; - } - }; - function processCreateParams(params) { - if (!params) - return {}; - const { errorMap, invalid_type_error, required_error, description } = params; - if (errorMap && (invalid_type_error || required_error)) { - throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`); - } - if (errorMap) - return { errorMap: errorMap, description }; - const customMap = (iss, ctx) => { - var _a, _b; - const { message } = params; - if (iss.code === "invalid_enum_value") { - return { message: message !== null && message !== void 0 ? message : ctx.defaultError }; - } - if (typeof ctx.data === "undefined") { - return { message: (_a = message !== null && message !== void 0 ? message : required_error) !== null && _a !== void 0 ? _a : ctx.defaultError }; - } - if (iss.code !== "invalid_type") - return { message: ctx.defaultError }; - return { message: (_b = message !== null && message !== void 0 ? message : invalid_type_error) !== null && _b !== void 0 ? _b : ctx.defaultError }; - }; - return { errorMap: customMap, description }; - } - class ZodType { - constructor(def) { - /** Alias of safeParseAsync */ - this.spa = this.safeParseAsync; - this._def = def; - this.parse = this.parse.bind(this); - this.safeParse = this.safeParse.bind(this); - this.parseAsync = this.parseAsync.bind(this); - this.safeParseAsync = this.safeParseAsync.bind(this); - this.spa = this.spa.bind(this); - this.refine = this.refine.bind(this); - this.refinement = this.refinement.bind(this); - this.superRefine = this.superRefine.bind(this); - this.optional = this.optional.bind(this); - this.nullable = this.nullable.bind(this); - this.nullish = this.nullish.bind(this); - this.array = this.array.bind(this); - this.promise = this.promise.bind(this); - this.or = this.or.bind(this); - this.and = this.and.bind(this); - this.transform = this.transform.bind(this); - this.brand = this.brand.bind(this); - this.default = this.default.bind(this); - this.catch = this.catch.bind(this); - this.describe = this.describe.bind(this); - this.pipe = this.pipe.bind(this); - this.readonly = this.readonly.bind(this); - this.isNullable = this.isNullable.bind(this); - this.isOptional = this.isOptional.bind(this); - } - get description() { - return this._def.description; - } - _getType(input) { - return getParsedType(input.data); - } - _getOrReturnCtx(input, ctx) { - return (ctx || { - common: input.parent.common, - data: input.data, - parsedType: getParsedType(input.data), - schemaErrorMap: this._def.errorMap, - path: input.path, - parent: input.parent, - }); - } - _processInputParams(input) { - return { - status: new ParseStatus(), - ctx: { - common: input.parent.common, - data: input.data, - parsedType: getParsedType(input.data), - schemaErrorMap: this._def.errorMap, - path: input.path, - parent: input.parent, - }, - }; - } - _parseSync(input) { - const result = this._parse(input); - if (isAsync(result)) { - throw new Error("Synchronous parse encountered promise."); - } - return result; - } - _parseAsync(input) { - const result = this._parse(input); - return Promise.resolve(result); - } - parse(data, params) { - const result = this.safeParse(data, params); - if (result.success) - return result.data; - throw result.error; - } - safeParse(data, params) { - var _a; - const ctx = { - common: { - issues: [], - async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false, - contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap, - }, - path: (params === null || params === void 0 ? void 0 : params.path) || [], - schemaErrorMap: this._def.errorMap, - parent: null, - data, - parsedType: getParsedType(data), - }; - const result = this._parseSync({ data, path: ctx.path, parent: ctx }); - return handleResult(ctx, result); - } - async parseAsync(data, params) { - const result = await this.safeParseAsync(data, params); - if (result.success) - return result.data; - throw result.error; - } - async safeParseAsync(data, params) { - const ctx = { - common: { - issues: [], - contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap, - async: true, - }, - path: (params === null || params === void 0 ? void 0 : params.path) || [], - schemaErrorMap: this._def.errorMap, - parent: null, - data, - parsedType: getParsedType(data), - }; - const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx }); - const result = await (isAsync(maybeAsyncResult) - ? maybeAsyncResult - : Promise.resolve(maybeAsyncResult)); - return handleResult(ctx, result); - } - refine(check, message) { - const getIssueProperties = (val) => { - if (typeof message === "string" || typeof message === "undefined") { - return { message }; - } - else if (typeof message === "function") { - return message(val); - } - else { - return message; - } - }; - return this._refinement((val, ctx) => { - const result = check(val); - const setError = () => ctx.addIssue({ - code: ZodIssueCode.custom, - ...getIssueProperties(val), - }); - if (typeof Promise !== "undefined" && result instanceof Promise) { - return result.then((data) => { - if (!data) { - setError(); - return false; - } - else { - return true; - } - }); - } - if (!result) { - setError(); - return false; - } - else { - return true; - } - }); - } - refinement(check, refinementData) { - return this._refinement((val, ctx) => { - if (!check(val)) { - ctx.addIssue(typeof refinementData === "function" - ? refinementData(val, ctx) - : refinementData); - return false; - } - else { - return true; - } - }); - } - _refinement(refinement) { - return new ZodEffects({ - schema: this, - typeName: ZodFirstPartyTypeKind.ZodEffects, - effect: { type: "refinement", refinement }, - }); - } - superRefine(refinement) { - return this._refinement(refinement); - } - optional() { - return ZodOptional.create(this, this._def); - } - nullable() { - return ZodNullable.create(this, this._def); - } - nullish() { - return this.nullable().optional(); - } - array() { - return ZodArray.create(this, this._def); - } - promise() { - return ZodPromise.create(this, this._def); - } - or(option) { - return ZodUnion.create([this, option], this._def); - } - and(incoming) { - return ZodIntersection.create(this, incoming, this._def); - } - transform(transform) { - return new ZodEffects({ - ...processCreateParams(this._def), - schema: this, - typeName: ZodFirstPartyTypeKind.ZodEffects, - effect: { type: "transform", transform }, - }); - } - default(def) { - const defaultValueFunc = typeof def === "function" ? def : () => def; - return new ZodDefault({ - ...processCreateParams(this._def), - innerType: this, - defaultValue: defaultValueFunc, - typeName: ZodFirstPartyTypeKind.ZodDefault, - }); - } - brand() { - return new ZodBranded({ - typeName: ZodFirstPartyTypeKind.ZodBranded, - type: this, - ...processCreateParams(this._def), - }); - } - catch(def) { - const catchValueFunc = typeof def === "function" ? def : () => def; - return new ZodCatch({ - ...processCreateParams(this._def), - innerType: this, - catchValue: catchValueFunc, - typeName: ZodFirstPartyTypeKind.ZodCatch, - }); - } - describe(description) { - const This = this.constructor; - return new This({ - ...this._def, - description, - }); - } - pipe(target) { - return ZodPipeline.create(this, target); - } - readonly() { - return ZodReadonly.create(this); - } - isOptional() { - return this.safeParse(undefined).success; - } - isNullable() { - return this.safeParse(null).success; - } - } - const cuidRegex = /^c[^\s-]{8,}$/i; - const cuid2Regex = /^[0-9a-z]+$/; - const ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/; - // const uuidRegex = - // /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i; - const uuidRegex = /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i; - const nanoidRegex = /^[a-z0-9_-]{21}$/i; - const durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/; - // from https://stackoverflow.com/a/46181/1550155 - // old version: too slow, didn't support unicode - // const emailRegex = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i; - //old email regex - // const emailRegex = /^(([^<>()[\].,;:\s@"]+(\.[^<>()[\].,;:\s@"]+)*)|(".+"))@((?!-)([^<>()[\].,;:\s@"]+\.)+[^<>()[\].,;:\s@"]{1,})[^-<>()[\].,;:\s@"]$/i; - // eslint-disable-next-line - // const emailRegex = - // /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\])|(\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\.[A-Za-z]{2,})+))$/; - // const emailRegex = - // /^[a-zA-Z0-9\.\!\#\$\%\&\'\*\+\/\=\?\^\_\`\{\|\}\~\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/; - // const emailRegex = - // /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/i; - const emailRegex = /^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i; - // const emailRegex = - // /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\.[a-z0-9\-]+)*$/i; - // from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression - const _emojiRegex = `^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`; - let emojiRegex; - // faster, simpler, safer - const ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/; - const ipv6Regex = /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/; - // https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript - const base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/; - // simple - // const dateRegexSource = `\\d{4}-\\d{2}-\\d{2}`; - // no leap year validation - // const dateRegexSource = `\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\d|2\\d))`; - // with leap year validation - const dateRegexSource = `((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`; - const dateRegex = new RegExp(`^${dateRegexSource}$`); - function timeRegexSource(args) { - // let regex = `\\d{2}:\\d{2}:\\d{2}`; - let regex = `([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d`; - if (args.precision) { - regex = `${regex}\\.\\d{${args.precision}}`; - } - else if (args.precision == null) { - regex = `${regex}(\\.\\d+)?`; - } - return regex; - } - function timeRegex(args) { - return new RegExp(`^${timeRegexSource(args)}$`); - } - // Adapted from https://stackoverflow.com/a/3143231 - function datetimeRegex(args) { - let regex = `${dateRegexSource}T${timeRegexSource(args)}`; - const opts = []; - opts.push(args.local ? `Z?` : `Z`); - if (args.offset) - opts.push(`([+-]\\d{2}:?\\d{2})`); - regex = `${regex}(${opts.join("|")})`; - return new RegExp(`^${regex}$`); - } - function isValidIP(ip, version) { - if ((version === "v4" || !version) && ipv4Regex.test(ip)) { - return true; - } - if ((version === "v6" || !version) && ipv6Regex.test(ip)) { - return true; - } - return false; - } - class ZodString extends ZodType { - _parse(input) { - if (this._def.coerce) { - input.data = String(input.data); - } - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.string) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.string, - received: ctx.parsedType, - }); - return INVALID; - } - const status = new ParseStatus(); - let ctx = undefined; - for (const check of this._def.checks) { - if (check.kind === "min") { - if (input.data.length < check.value) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.too_small, - minimum: check.value, - type: "string", - inclusive: true, - exact: false, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "max") { - if (input.data.length > check.value) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.too_big, - maximum: check.value, - type: "string", - inclusive: true, - exact: false, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "length") { - const tooBig = input.data.length > check.value; - const tooSmall = input.data.length < check.value; - if (tooBig || tooSmall) { - ctx = this._getOrReturnCtx(input, ctx); - if (tooBig) { - addIssueToContext(ctx, { - code: ZodIssueCode.too_big, - maximum: check.value, - type: "string", - inclusive: true, - exact: true, - message: check.message, - }); - } - else if (tooSmall) { - addIssueToContext(ctx, { - code: ZodIssueCode.too_small, - minimum: check.value, - type: "string", - inclusive: true, - exact: true, - message: check.message, - }); - } - status.dirty(); - } - } - else if (check.kind === "email") { - if (!emailRegex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "email", - code: ZodIssueCode.invalid_string, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "emoji") { - if (!emojiRegex) { - emojiRegex = new RegExp(_emojiRegex, "u"); - } - if (!emojiRegex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "emoji", - code: ZodIssueCode.invalid_string, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "uuid") { - if (!uuidRegex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "uuid", - code: ZodIssueCode.invalid_string, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "nanoid") { - if (!nanoidRegex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "nanoid", - code: ZodIssueCode.invalid_string, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "cuid") { - if (!cuidRegex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "cuid", - code: ZodIssueCode.invalid_string, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "cuid2") { - if (!cuid2Regex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "cuid2", - code: ZodIssueCode.invalid_string, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "ulid") { - if (!ulidRegex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "ulid", - code: ZodIssueCode.invalid_string, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "url") { - try { - new URL(input.data); - } - catch (_a) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "url", - code: ZodIssueCode.invalid_string, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "regex") { - check.regex.lastIndex = 0; - const testResult = check.regex.test(input.data); - if (!testResult) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "regex", - code: ZodIssueCode.invalid_string, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "trim") { - input.data = input.data.trim(); - } - else if (check.kind === "includes") { - if (!input.data.includes(check.value, check.position)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_string, - validation: { includes: check.value, position: check.position }, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "toLowerCase") { - input.data = input.data.toLowerCase(); - } - else if (check.kind === "toUpperCase") { - input.data = input.data.toUpperCase(); - } - else if (check.kind === "startsWith") { - if (!input.data.startsWith(check.value)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_string, - validation: { startsWith: check.value }, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "endsWith") { - if (!input.data.endsWith(check.value)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_string, - validation: { endsWith: check.value }, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "datetime") { - const regex = datetimeRegex(check); - if (!regex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_string, - validation: "datetime", - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "date") { - const regex = dateRegex; - if (!regex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_string, - validation: "date", - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "time") { - const regex = timeRegex(check); - if (!regex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_string, - validation: "time", - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "duration") { - if (!durationRegex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "duration", - code: ZodIssueCode.invalid_string, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "ip") { - if (!isValidIP(input.data, check.version)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "ip", - code: ZodIssueCode.invalid_string, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "base64") { - if (!base64Regex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "base64", - code: ZodIssueCode.invalid_string, - message: check.message, - }); - status.dirty(); - } - } - else { - util.assertNever(check); - } - } - return { status: status.value, value: input.data }; - } - _regex(regex, validation, message) { - return this.refinement((data) => regex.test(data), { - validation, - code: ZodIssueCode.invalid_string, - ...errorUtil.errToObj(message), - }); - } - _addCheck(check) { - return new ZodString({ - ...this._def, - checks: [...this._def.checks, check], - }); - } - email(message) { - return this._addCheck({ kind: "email", ...errorUtil.errToObj(message) }); - } - url(message) { - return this._addCheck({ kind: "url", ...errorUtil.errToObj(message) }); - } - emoji(message) { - return this._addCheck({ kind: "emoji", ...errorUtil.errToObj(message) }); - } - uuid(message) { - return this._addCheck({ kind: "uuid", ...errorUtil.errToObj(message) }); - } - nanoid(message) { - return this._addCheck({ kind: "nanoid", ...errorUtil.errToObj(message) }); - } - cuid(message) { - return this._addCheck({ kind: "cuid", ...errorUtil.errToObj(message) }); - } - cuid2(message) { - return this._addCheck({ kind: "cuid2", ...errorUtil.errToObj(message) }); - } - ulid(message) { - return this._addCheck({ kind: "ulid", ...errorUtil.errToObj(message) }); - } - base64(message) { - return this._addCheck({ kind: "base64", ...errorUtil.errToObj(message) }); - } - ip(options) { - return this._addCheck({ kind: "ip", ...errorUtil.errToObj(options) }); - } - datetime(options) { - var _a, _b; - if (typeof options === "string") { - return this._addCheck({ - kind: "datetime", - precision: null, - offset: false, - local: false, - message: options, - }); - } - return this._addCheck({ - kind: "datetime", - precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === "undefined" ? null : options === null || options === void 0 ? void 0 : options.precision, - offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false, - local: (_b = options === null || options === void 0 ? void 0 : options.local) !== null && _b !== void 0 ? _b : false, - ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message), - }); - } - date(message) { - return this._addCheck({ kind: "date", message }); - } - time(options) { - if (typeof options === "string") { - return this._addCheck({ - kind: "time", - precision: null, - message: options, - }); - } - return this._addCheck({ - kind: "time", - precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === "undefined" ? null : options === null || options === void 0 ? void 0 : options.precision, - ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message), - }); - } - duration(message) { - return this._addCheck({ kind: "duration", ...errorUtil.errToObj(message) }); - } - regex(regex, message) { - return this._addCheck({ - kind: "regex", - regex: regex, - ...errorUtil.errToObj(message), - }); - } - includes(value, options) { - return this._addCheck({ - kind: "includes", - value: value, - position: options === null || options === void 0 ? void 0 : options.position, - ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message), - }); - } - startsWith(value, message) { - return this._addCheck({ - kind: "startsWith", - value: value, - ...errorUtil.errToObj(message), - }); - } - endsWith(value, message) { - return this._addCheck({ - kind: "endsWith", - value: value, - ...errorUtil.errToObj(message), - }); - } - min(minLength, message) { - return this._addCheck({ - kind: "min", - value: minLength, - ...errorUtil.errToObj(message), - }); - } - max(maxLength, message) { - return this._addCheck({ - kind: "max", - value: maxLength, - ...errorUtil.errToObj(message), - }); - } - length(len, message) { - return this._addCheck({ - kind: "length", - value: len, - ...errorUtil.errToObj(message), - }); - } - /** - * @deprecated Use z.string().min(1) instead. - * @see {@link ZodString.min} - */ - nonempty(message) { - return this.min(1, errorUtil.errToObj(message)); - } - trim() { - return new ZodString({ - ...this._def, - checks: [...this._def.checks, { kind: "trim" }], - }); - } - toLowerCase() { - return new ZodString({ - ...this._def, - checks: [...this._def.checks, { kind: "toLowerCase" }], - }); - } - toUpperCase() { - return new ZodString({ - ...this._def, - checks: [...this._def.checks, { kind: "toUpperCase" }], - }); - } - get isDatetime() { - return !!this._def.checks.find((ch) => ch.kind === "datetime"); - } - get isDate() { - return !!this._def.checks.find((ch) => ch.kind === "date"); - } - get isTime() { - return !!this._def.checks.find((ch) => ch.kind === "time"); - } - get isDuration() { - return !!this._def.checks.find((ch) => ch.kind === "duration"); - } - get isEmail() { - return !!this._def.checks.find((ch) => ch.kind === "email"); - } - get isURL() { - return !!this._def.checks.find((ch) => ch.kind === "url"); - } - get isEmoji() { - return !!this._def.checks.find((ch) => ch.kind === "emoji"); - } - get isUUID() { - return !!this._def.checks.find((ch) => ch.kind === "uuid"); - } - get isNANOID() { - return !!this._def.checks.find((ch) => ch.kind === "nanoid"); - } - get isCUID() { - return !!this._def.checks.find((ch) => ch.kind === "cuid"); - } - get isCUID2() { - return !!this._def.checks.find((ch) => ch.kind === "cuid2"); - } - get isULID() { - return !!this._def.checks.find((ch) => ch.kind === "ulid"); - } - get isIP() { - return !!this._def.checks.find((ch) => ch.kind === "ip"); - } - get isBase64() { - return !!this._def.checks.find((ch) => ch.kind === "base64"); - } - get minLength() { - let min = null; - for (const ch of this._def.checks) { - if (ch.kind === "min") { - if (min === null || ch.value > min) - min = ch.value; - } - } - return min; - } - get maxLength() { - let max = null; - for (const ch of this._def.checks) { - if (ch.kind === "max") { - if (max === null || ch.value < max) - max = ch.value; - } - } - return max; - } - } - ZodString.create = (params) => { - var _a; - return new ZodString({ - checks: [], - typeName: ZodFirstPartyTypeKind.ZodString, - coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false, - ...processCreateParams(params), - }); - }; - // https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034 - function floatSafeRemainder(val, step) { - const valDecCount = (val.toString().split(".")[1] || "").length; - const stepDecCount = (step.toString().split(".")[1] || "").length; - const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount; - const valInt = parseInt(val.toFixed(decCount).replace(".", "")); - const stepInt = parseInt(step.toFixed(decCount).replace(".", "")); - return (valInt % stepInt) / Math.pow(10, decCount); - } - class ZodNumber extends ZodType { - constructor() { - super(...arguments); - this.min = this.gte; - this.max = this.lte; - this.step = this.multipleOf; - } - _parse(input) { - if (this._def.coerce) { - input.data = Number(input.data); - } - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.number) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.number, - received: ctx.parsedType, - }); - return INVALID; - } - let ctx = undefined; - const status = new ParseStatus(); - for (const check of this._def.checks) { - if (check.kind === "int") { - if (!util.isInteger(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: "integer", - received: "float", - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "min") { - const tooSmall = check.inclusive - ? input.data < check.value - : input.data <= check.value; - if (tooSmall) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.too_small, - minimum: check.value, - type: "number", - inclusive: check.inclusive, - exact: false, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "max") { - const tooBig = check.inclusive - ? input.data > check.value - : input.data >= check.value; - if (tooBig) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.too_big, - maximum: check.value, - type: "number", - inclusive: check.inclusive, - exact: false, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "multipleOf") { - if (floatSafeRemainder(input.data, check.value) !== 0) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.not_multiple_of, - multipleOf: check.value, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "finite") { - if (!Number.isFinite(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.not_finite, - message: check.message, - }); - status.dirty(); - } - } - else { - util.assertNever(check); - } - } - return { status: status.value, value: input.data }; - } - gte(value, message) { - return this.setLimit("min", value, true, errorUtil.toString(message)); - } - gt(value, message) { - return this.setLimit("min", value, false, errorUtil.toString(message)); - } - lte(value, message) { - return this.setLimit("max", value, true, errorUtil.toString(message)); - } - lt(value, message) { - return this.setLimit("max", value, false, errorUtil.toString(message)); - } - setLimit(kind, value, inclusive, message) { - return new ZodNumber({ - ...this._def, - checks: [ - ...this._def.checks, - { - kind, - value, - inclusive, - message: errorUtil.toString(message), - }, - ], - }); - } - _addCheck(check) { - return new ZodNumber({ - ...this._def, - checks: [...this._def.checks, check], - }); - } - int(message) { - return this._addCheck({ - kind: "int", - message: errorUtil.toString(message), - }); - } - positive(message) { - return this._addCheck({ - kind: "min", - value: 0, - inclusive: false, - message: errorUtil.toString(message), - }); - } - negative(message) { - return this._addCheck({ - kind: "max", - value: 0, - inclusive: false, - message: errorUtil.toString(message), - }); - } - nonpositive(message) { - return this._addCheck({ - kind: "max", - value: 0, - inclusive: true, - message: errorUtil.toString(message), - }); - } - nonnegative(message) { - return this._addCheck({ - kind: "min", - value: 0, - inclusive: true, - message: errorUtil.toString(message), - }); - } - multipleOf(value, message) { - return this._addCheck({ - kind: "multipleOf", - value: value, - message: errorUtil.toString(message), - }); - } - finite(message) { - return this._addCheck({ - kind: "finite", - message: errorUtil.toString(message), - }); - } - safe(message) { - return this._addCheck({ - kind: "min", - inclusive: true, - value: Number.MIN_SAFE_INTEGER, - message: errorUtil.toString(message), - })._addCheck({ - kind: "max", - inclusive: true, - value: Number.MAX_SAFE_INTEGER, - message: errorUtil.toString(message), - }); - } - get minValue() { - let min = null; - for (const ch of this._def.checks) { - if (ch.kind === "min") { - if (min === null || ch.value > min) - min = ch.value; - } - } - return min; - } - get maxValue() { - let max = null; - for (const ch of this._def.checks) { - if (ch.kind === "max") { - if (max === null || ch.value < max) - max = ch.value; - } - } - return max; - } - get isInt() { - return !!this._def.checks.find((ch) => ch.kind === "int" || - (ch.kind === "multipleOf" && util.isInteger(ch.value))); - } - get isFinite() { - let max = null, min = null; - for (const ch of this._def.checks) { - if (ch.kind === "finite" || - ch.kind === "int" || - ch.kind === "multipleOf") { - return true; - } - else if (ch.kind === "min") { - if (min === null || ch.value > min) - min = ch.value; - } - else if (ch.kind === "max") { - if (max === null || ch.value < max) - max = ch.value; - } - } - return Number.isFinite(min) && Number.isFinite(max); - } - } - ZodNumber.create = (params) => { - return new ZodNumber({ - checks: [], - typeName: ZodFirstPartyTypeKind.ZodNumber, - coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false, - ...processCreateParams(params), - }); - }; - class ZodBigInt extends ZodType { - constructor() { - super(...arguments); - this.min = this.gte; - this.max = this.lte; - } - _parse(input) { - if (this._def.coerce) { - input.data = BigInt(input.data); - } - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.bigint) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.bigint, - received: ctx.parsedType, - }); - return INVALID; - } - let ctx = undefined; - const status = new ParseStatus(); - for (const check of this._def.checks) { - if (check.kind === "min") { - const tooSmall = check.inclusive - ? input.data < check.value - : input.data <= check.value; - if (tooSmall) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.too_small, - type: "bigint", - minimum: check.value, - inclusive: check.inclusive, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "max") { - const tooBig = check.inclusive - ? input.data > check.value - : input.data >= check.value; - if (tooBig) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.too_big, - type: "bigint", - maximum: check.value, - inclusive: check.inclusive, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "multipleOf") { - if (input.data % check.value !== BigInt(0)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.not_multiple_of, - multipleOf: check.value, - message: check.message, - }); - status.dirty(); - } - } - else { - util.assertNever(check); - } - } - return { status: status.value, value: input.data }; - } - gte(value, message) { - return this.setLimit("min", value, true, errorUtil.toString(message)); - } - gt(value, message) { - return this.setLimit("min", value, false, errorUtil.toString(message)); - } - lte(value, message) { - return this.setLimit("max", value, true, errorUtil.toString(message)); - } - lt(value, message) { - return this.setLimit("max", value, false, errorUtil.toString(message)); - } - setLimit(kind, value, inclusive, message) { - return new ZodBigInt({ - ...this._def, - checks: [ - ...this._def.checks, - { - kind, - value, - inclusive, - message: errorUtil.toString(message), - }, - ], - }); - } - _addCheck(check) { - return new ZodBigInt({ - ...this._def, - checks: [...this._def.checks, check], - }); - } - positive(message) { - return this._addCheck({ - kind: "min", - value: BigInt(0), - inclusive: false, - message: errorUtil.toString(message), - }); - } - negative(message) { - return this._addCheck({ - kind: "max", - value: BigInt(0), - inclusive: false, - message: errorUtil.toString(message), - }); - } - nonpositive(message) { - return this._addCheck({ - kind: "max", - value: BigInt(0), - inclusive: true, - message: errorUtil.toString(message), - }); - } - nonnegative(message) { - return this._addCheck({ - kind: "min", - value: BigInt(0), - inclusive: true, - message: errorUtil.toString(message), - }); - } - multipleOf(value, message) { - return this._addCheck({ - kind: "multipleOf", - value, - message: errorUtil.toString(message), - }); - } - get minValue() { - let min = null; - for (const ch of this._def.checks) { - if (ch.kind === "min") { - if (min === null || ch.value > min) - min = ch.value; - } - } - return min; - } - get maxValue() { - let max = null; - for (const ch of this._def.checks) { - if (ch.kind === "max") { - if (max === null || ch.value < max) - max = ch.value; - } - } - return max; - } - } - ZodBigInt.create = (params) => { - var _a; - return new ZodBigInt({ - checks: [], - typeName: ZodFirstPartyTypeKind.ZodBigInt, - coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false, - ...processCreateParams(params), - }); - }; - class ZodBoolean extends ZodType { - _parse(input) { - if (this._def.coerce) { - input.data = Boolean(input.data); - } - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.boolean) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.boolean, - received: ctx.parsedType, - }); - return INVALID; - } - return OK(input.data); - } - } - ZodBoolean.create = (params) => { - return new ZodBoolean({ - typeName: ZodFirstPartyTypeKind.ZodBoolean, - coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false, - ...processCreateParams(params), - }); - }; - class ZodDate extends ZodType { - _parse(input) { - if (this._def.coerce) { - input.data = new Date(input.data); - } - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.date) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.date, - received: ctx.parsedType, - }); - return INVALID; - } - if (isNaN(input.data.getTime())) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_date, - }); - return INVALID; - } - const status = new ParseStatus(); - let ctx = undefined; - for (const check of this._def.checks) { - if (check.kind === "min") { - if (input.data.getTime() < check.value) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.too_small, - message: check.message, - inclusive: true, - exact: false, - minimum: check.value, - type: "date", - }); - status.dirty(); - } - } - else if (check.kind === "max") { - if (input.data.getTime() > check.value) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.too_big, - message: check.message, - inclusive: true, - exact: false, - maximum: check.value, - type: "date", - }); - status.dirty(); - } - } - else { - util.assertNever(check); - } - } - return { - status: status.value, - value: new Date(input.data.getTime()), - }; - } - _addCheck(check) { - return new ZodDate({ - ...this._def, - checks: [...this._def.checks, check], - }); - } - min(minDate, message) { - return this._addCheck({ - kind: "min", - value: minDate.getTime(), - message: errorUtil.toString(message), - }); - } - max(maxDate, message) { - return this._addCheck({ - kind: "max", - value: maxDate.getTime(), - message: errorUtil.toString(message), - }); - } - get minDate() { - let min = null; - for (const ch of this._def.checks) { - if (ch.kind === "min") { - if (min === null || ch.value > min) - min = ch.value; - } - } - return min != null ? new Date(min) : null; - } - get maxDate() { - let max = null; - for (const ch of this._def.checks) { - if (ch.kind === "max") { - if (max === null || ch.value < max) - max = ch.value; - } - } - return max != null ? new Date(max) : null; - } - } - ZodDate.create = (params) => { - return new ZodDate({ - checks: [], - coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false, - typeName: ZodFirstPartyTypeKind.ZodDate, - ...processCreateParams(params), - }); - }; - class ZodSymbol extends ZodType { - _parse(input) { - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.symbol) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.symbol, - received: ctx.parsedType, - }); - return INVALID; - } - return OK(input.data); - } - } - ZodSymbol.create = (params) => { - return new ZodSymbol({ - typeName: ZodFirstPartyTypeKind.ZodSymbol, - ...processCreateParams(params), - }); - }; - class ZodUndefined extends ZodType { - _parse(input) { - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.undefined) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.undefined, - received: ctx.parsedType, - }); - return INVALID; - } - return OK(input.data); - } - } - ZodUndefined.create = (params) => { - return new ZodUndefined({ - typeName: ZodFirstPartyTypeKind.ZodUndefined, - ...processCreateParams(params), - }); - }; - class ZodNull extends ZodType { - _parse(input) { - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.null) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.null, - received: ctx.parsedType, - }); - return INVALID; - } - return OK(input.data); - } - } - ZodNull.create = (params) => { - return new ZodNull({ - typeName: ZodFirstPartyTypeKind.ZodNull, - ...processCreateParams(params), - }); - }; - class ZodAny extends ZodType { - constructor() { - super(...arguments); - // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject. - this._any = true; - } - _parse(input) { - return OK(input.data); - } - } - ZodAny.create = (params) => { - return new ZodAny({ - typeName: ZodFirstPartyTypeKind.ZodAny, - ...processCreateParams(params), - }); - }; - class ZodUnknown extends ZodType { - constructor() { - super(...arguments); - // required - this._unknown = true; - } - _parse(input) { - return OK(input.data); - } - } - ZodUnknown.create = (params) => { - return new ZodUnknown({ - typeName: ZodFirstPartyTypeKind.ZodUnknown, - ...processCreateParams(params), - }); - }; - class ZodNever extends ZodType { - _parse(input) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.never, - received: ctx.parsedType, - }); - return INVALID; - } - } - ZodNever.create = (params) => { - return new ZodNever({ - typeName: ZodFirstPartyTypeKind.ZodNever, - ...processCreateParams(params), - }); - }; - class ZodVoid extends ZodType { - _parse(input) { - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.undefined) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.void, - received: ctx.parsedType, - }); - return INVALID; - } - return OK(input.data); - } - } - ZodVoid.create = (params) => { - return new ZodVoid({ - typeName: ZodFirstPartyTypeKind.ZodVoid, - ...processCreateParams(params), - }); - }; - class ZodArray extends ZodType { - _parse(input) { - const { ctx, status } = this._processInputParams(input); - const def = this._def; - if (ctx.parsedType !== ZodParsedType.array) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.array, - received: ctx.parsedType, - }); - return INVALID; - } - if (def.exactLength !== null) { - const tooBig = ctx.data.length > def.exactLength.value; - const tooSmall = ctx.data.length < def.exactLength.value; - if (tooBig || tooSmall) { - addIssueToContext(ctx, { - code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small, - minimum: (tooSmall ? def.exactLength.value : undefined), - maximum: (tooBig ? def.exactLength.value : undefined), - type: "array", - inclusive: true, - exact: true, - message: def.exactLength.message, - }); - status.dirty(); - } - } - if (def.minLength !== null) { - if (ctx.data.length < def.minLength.value) { - addIssueToContext(ctx, { - code: ZodIssueCode.too_small, - minimum: def.minLength.value, - type: "array", - inclusive: true, - exact: false, - message: def.minLength.message, - }); - status.dirty(); - } - } - if (def.maxLength !== null) { - if (ctx.data.length > def.maxLength.value) { - addIssueToContext(ctx, { - code: ZodIssueCode.too_big, - maximum: def.maxLength.value, - type: "array", - inclusive: true, - exact: false, - message: def.maxLength.message, - }); - status.dirty(); - } - } - if (ctx.common.async) { - return Promise.all([...ctx.data].map((item, i) => { - return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i)); - })).then((result) => { - return ParseStatus.mergeArray(status, result); - }); - } - const result = [...ctx.data].map((item, i) => { - return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i)); - }); - return ParseStatus.mergeArray(status, result); - } - get element() { - return this._def.type; - } - min(minLength, message) { - return new ZodArray({ - ...this._def, - minLength: { value: minLength, message: errorUtil.toString(message) }, - }); - } - max(maxLength, message) { - return new ZodArray({ - ...this._def, - maxLength: { value: maxLength, message: errorUtil.toString(message) }, - }); - } - length(len, message) { - return new ZodArray({ - ...this._def, - exactLength: { value: len, message: errorUtil.toString(message) }, - }); - } - nonempty(message) { - return this.min(1, message); - } - } - ZodArray.create = (schema, params) => { - return new ZodArray({ - type: schema, - minLength: null, - maxLength: null, - exactLength: null, - typeName: ZodFirstPartyTypeKind.ZodArray, - ...processCreateParams(params), - }); - }; - function deepPartialify(schema) { - if (schema instanceof ZodObject) { - const newShape = {}; - for (const key in schema.shape) { - const fieldSchema = schema.shape[key]; - newShape[key] = ZodOptional.create(deepPartialify(fieldSchema)); - } - return new ZodObject({ - ...schema._def, - shape: () => newShape, - }); - } - else if (schema instanceof ZodArray) { - return new ZodArray({ - ...schema._def, - type: deepPartialify(schema.element), - }); - } - else if (schema instanceof ZodOptional) { - return ZodOptional.create(deepPartialify(schema.unwrap())); - } - else if (schema instanceof ZodNullable) { - return ZodNullable.create(deepPartialify(schema.unwrap())); - } - else if (schema instanceof ZodTuple) { - return ZodTuple.create(schema.items.map((item) => deepPartialify(item))); - } - else { - return schema; - } - } - class ZodObject extends ZodType { - constructor() { - super(...arguments); - this._cached = null; - /** - * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped. - * If you want to pass through unknown properties, use `.passthrough()` instead. - */ - this.nonstrict = this.passthrough; - // extend< - // Augmentation extends ZodRawShape, - // NewOutput extends util.flatten<{ - // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation - // ? Augmentation[k]["_output"] - // : k extends keyof Output - // ? Output[k] - // : never; - // }>, - // NewInput extends util.flatten<{ - // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation - // ? Augmentation[k]["_input"] - // : k extends keyof Input - // ? Input[k] - // : never; - // }> - // >( - // augmentation: Augmentation - // ): ZodObject< - // extendShape, - // UnknownKeys, - // Catchall, - // NewOutput, - // NewInput - // > { - // return new ZodObject({ - // ...this._def, - // shape: () => ({ - // ...this._def.shape(), - // ...augmentation, - // }), - // }) as any; - // } - /** - * @deprecated Use `.extend` instead - * */ - this.augment = this.extend; - } - _getCached() { - if (this._cached !== null) - return this._cached; - const shape = this._def.shape(); - const keys = util.objectKeys(shape); - return (this._cached = { shape, keys }); - } - _parse(input) { - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.object) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.object, - received: ctx.parsedType, - }); - return INVALID; - } - const { status, ctx } = this._processInputParams(input); - const { shape, keys: shapeKeys } = this._getCached(); - const extraKeys = []; - if (!(this._def.catchall instanceof ZodNever && - this._def.unknownKeys === "strip")) { - for (const key in ctx.data) { - if (!shapeKeys.includes(key)) { - extraKeys.push(key); - } - } - } - const pairs = []; - for (const key of shapeKeys) { - const keyValidator = shape[key]; - const value = ctx.data[key]; - pairs.push({ - key: { status: "valid", value: key }, - value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)), - alwaysSet: key in ctx.data, - }); - } - if (this._def.catchall instanceof ZodNever) { - const unknownKeys = this._def.unknownKeys; - if (unknownKeys === "passthrough") { - for (const key of extraKeys) { - pairs.push({ - key: { status: "valid", value: key }, - value: { status: "valid", value: ctx.data[key] }, - }); - } - } - else if (unknownKeys === "strict") { - if (extraKeys.length > 0) { - addIssueToContext(ctx, { - code: ZodIssueCode.unrecognized_keys, - keys: extraKeys, - }); - status.dirty(); - } - } - else if (unknownKeys === "strip") ; - else { - throw new Error(`Internal ZodObject error: invalid unknownKeys value.`); - } - } - else { - // run catchall validation - const catchall = this._def.catchall; - for (const key of extraKeys) { - const value = ctx.data[key]; - pairs.push({ - key: { status: "valid", value: key }, - value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value) - ), - alwaysSet: key in ctx.data, - }); - } - } - if (ctx.common.async) { - return Promise.resolve() - .then(async () => { - const syncPairs = []; - for (const pair of pairs) { - const key = await pair.key; - const value = await pair.value; - syncPairs.push({ - key, - value, - alwaysSet: pair.alwaysSet, - }); - } - return syncPairs; - }) - .then((syncPairs) => { - return ParseStatus.mergeObjectSync(status, syncPairs); - }); - } - else { - return ParseStatus.mergeObjectSync(status, pairs); - } - } - get shape() { - return this._def.shape(); - } - strict(message) { - errorUtil.errToObj; - return new ZodObject({ - ...this._def, - unknownKeys: "strict", - ...(message !== undefined - ? { - errorMap: (issue, ctx) => { - var _a, _b, _c, _d; - const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError; - if (issue.code === "unrecognized_keys") - return { - message: (_d = errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : defaultError, - }; - return { - message: defaultError, - }; - }, - } - : {}), - }); - } - strip() { - return new ZodObject({ - ...this._def, - unknownKeys: "strip", - }); - } - passthrough() { - return new ZodObject({ - ...this._def, - unknownKeys: "passthrough", - }); - } - // const AugmentFactory = - // (def: Def) => - // ( - // augmentation: Augmentation - // ): ZodObject< - // extendShape, Augmentation>, - // Def["unknownKeys"], - // Def["catchall"] - // > => { - // return new ZodObject({ - // ...def, - // shape: () => ({ - // ...def.shape(), - // ...augmentation, - // }), - // }) as any; - // }; - extend(augmentation) { - return new ZodObject({ - ...this._def, - shape: () => ({ - ...this._def.shape(), - ...augmentation, - }), - }); - } - /** - * Prior to zod@1.0.12 there was a bug in the - * inferred type of merged objects. Please - * upgrade if you are experiencing issues. - */ - merge(merging) { - const merged = new ZodObject({ - unknownKeys: merging._def.unknownKeys, - catchall: merging._def.catchall, - shape: () => ({ - ...this._def.shape(), - ...merging._def.shape(), - }), - typeName: ZodFirstPartyTypeKind.ZodObject, - }); - return merged; - } - // merge< - // Incoming extends AnyZodObject, - // Augmentation extends Incoming["shape"], - // NewOutput extends { - // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation - // ? Augmentation[k]["_output"] - // : k extends keyof Output - // ? Output[k] - // : never; - // }, - // NewInput extends { - // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation - // ? Augmentation[k]["_input"] - // : k extends keyof Input - // ? Input[k] - // : never; - // } - // >( - // merging: Incoming - // ): ZodObject< - // extendShape>, - // Incoming["_def"]["unknownKeys"], - // Incoming["_def"]["catchall"], - // NewOutput, - // NewInput - // > { - // const merged: any = new ZodObject({ - // unknownKeys: merging._def.unknownKeys, - // catchall: merging._def.catchall, - // shape: () => - // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()), - // typeName: ZodFirstPartyTypeKind.ZodObject, - // }) as any; - // return merged; - // } - setKey(key, schema) { - return this.augment({ [key]: schema }); - } - // merge( - // merging: Incoming - // ): //ZodObject = (merging) => { - // ZodObject< - // extendShape>, - // Incoming["_def"]["unknownKeys"], - // Incoming["_def"]["catchall"] - // > { - // // const mergedShape = objectUtil.mergeShapes( - // // this._def.shape(), - // // merging._def.shape() - // // ); - // const merged: any = new ZodObject({ - // unknownKeys: merging._def.unknownKeys, - // catchall: merging._def.catchall, - // shape: () => - // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()), - // typeName: ZodFirstPartyTypeKind.ZodObject, - // }) as any; - // return merged; - // } - catchall(index) { - return new ZodObject({ - ...this._def, - catchall: index, - }); - } - pick(mask) { - const shape = {}; - util.objectKeys(mask).forEach((key) => { - if (mask[key] && this.shape[key]) { - shape[key] = this.shape[key]; - } - }); - return new ZodObject({ - ...this._def, - shape: () => shape, - }); - } - omit(mask) { - const shape = {}; - util.objectKeys(this.shape).forEach((key) => { - if (!mask[key]) { - shape[key] = this.shape[key]; - } - }); - return new ZodObject({ - ...this._def, - shape: () => shape, - }); - } - /** - * @deprecated - */ - deepPartial() { - return deepPartialify(this); - } - partial(mask) { - const newShape = {}; - util.objectKeys(this.shape).forEach((key) => { - const fieldSchema = this.shape[key]; - if (mask && !mask[key]) { - newShape[key] = fieldSchema; - } - else { - newShape[key] = fieldSchema.optional(); - } - }); - return new ZodObject({ - ...this._def, - shape: () => newShape, - }); - } - required(mask) { - const newShape = {}; - util.objectKeys(this.shape).forEach((key) => { - if (mask && !mask[key]) { - newShape[key] = this.shape[key]; - } - else { - const fieldSchema = this.shape[key]; - let newField = fieldSchema; - while (newField instanceof ZodOptional) { - newField = newField._def.innerType; - } - newShape[key] = newField; - } - }); - return new ZodObject({ - ...this._def, - shape: () => newShape, - }); - } - keyof() { - return createZodEnum(util.objectKeys(this.shape)); - } - } - ZodObject.create = (shape, params) => { - return new ZodObject({ - shape: () => shape, - unknownKeys: "strip", - catchall: ZodNever.create(), - typeName: ZodFirstPartyTypeKind.ZodObject, - ...processCreateParams(params), - }); - }; - ZodObject.strictCreate = (shape, params) => { - return new ZodObject({ - shape: () => shape, - unknownKeys: "strict", - catchall: ZodNever.create(), - typeName: ZodFirstPartyTypeKind.ZodObject, - ...processCreateParams(params), - }); - }; - ZodObject.lazycreate = (shape, params) => { - return new ZodObject({ - shape, - unknownKeys: "strip", - catchall: ZodNever.create(), - typeName: ZodFirstPartyTypeKind.ZodObject, - ...processCreateParams(params), - }); - }; - class ZodUnion extends ZodType { - _parse(input) { - const { ctx } = this._processInputParams(input); - const options = this._def.options; - function handleResults(results) { - // return first issue-free validation if it exists - for (const result of results) { - if (result.result.status === "valid") { - return result.result; - } - } - for (const result of results) { - if (result.result.status === "dirty") { - // add issues from dirty option - ctx.common.issues.push(...result.ctx.common.issues); - return result.result; - } - } - // return invalid - const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues)); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_union, - unionErrors, - }); - return INVALID; - } - if (ctx.common.async) { - return Promise.all(options.map(async (option) => { - const childCtx = { - ...ctx, - common: { - ...ctx.common, - issues: [], - }, - parent: null, - }; - return { - result: await option._parseAsync({ - data: ctx.data, - path: ctx.path, - parent: childCtx, - }), - ctx: childCtx, - }; - })).then(handleResults); - } - else { - let dirty = undefined; - const issues = []; - for (const option of options) { - const childCtx = { - ...ctx, - common: { - ...ctx.common, - issues: [], - }, - parent: null, - }; - const result = option._parseSync({ - data: ctx.data, - path: ctx.path, - parent: childCtx, - }); - if (result.status === "valid") { - return result; - } - else if (result.status === "dirty" && !dirty) { - dirty = { result, ctx: childCtx }; - } - if (childCtx.common.issues.length) { - issues.push(childCtx.common.issues); - } - } - if (dirty) { - ctx.common.issues.push(...dirty.ctx.common.issues); - return dirty.result; - } - const unionErrors = issues.map((issues) => new ZodError(issues)); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_union, - unionErrors, - }); - return INVALID; - } - } - get options() { - return this._def.options; - } - } - ZodUnion.create = (types, params) => { - return new ZodUnion({ - options: types, - typeName: ZodFirstPartyTypeKind.ZodUnion, - ...processCreateParams(params), - }); - }; - ///////////////////////////////////////////////////// - ///////////////////////////////////////////////////// - ////////// ////////// - ////////// ZodDiscriminatedUnion ////////// - ////////// ////////// - ///////////////////////////////////////////////////// - ///////////////////////////////////////////////////// - const getDiscriminator = (type) => { - if (type instanceof ZodLazy) { - return getDiscriminator(type.schema); - } - else if (type instanceof ZodEffects) { - return getDiscriminator(type.innerType()); - } - else if (type instanceof ZodLiteral) { - return [type.value]; - } - else if (type instanceof ZodEnum) { - return type.options; - } - else if (type instanceof ZodNativeEnum) { - // eslint-disable-next-line ban/ban - return util.objectValues(type.enum); - } - else if (type instanceof ZodDefault) { - return getDiscriminator(type._def.innerType); - } - else if (type instanceof ZodUndefined) { - return [undefined]; - } - else if (type instanceof ZodNull) { - return [null]; - } - else if (type instanceof ZodOptional) { - return [undefined, ...getDiscriminator(type.unwrap())]; - } - else if (type instanceof ZodNullable) { - return [null, ...getDiscriminator(type.unwrap())]; - } - else if (type instanceof ZodBranded) { - return getDiscriminator(type.unwrap()); - } - else if (type instanceof ZodReadonly) { - return getDiscriminator(type.unwrap()); - } - else if (type instanceof ZodCatch) { - return getDiscriminator(type._def.innerType); - } - else { - return []; - } - }; - class ZodDiscriminatedUnion extends ZodType { - _parse(input) { - const { ctx } = this._processInputParams(input); - if (ctx.parsedType !== ZodParsedType.object) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.object, - received: ctx.parsedType, - }); - return INVALID; - } - const discriminator = this.discriminator; - const discriminatorValue = ctx.data[discriminator]; - const option = this.optionsMap.get(discriminatorValue); - if (!option) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_union_discriminator, - options: Array.from(this.optionsMap.keys()), - path: [discriminator], - }); - return INVALID; - } - if (ctx.common.async) { - return option._parseAsync({ - data: ctx.data, - path: ctx.path, - parent: ctx, - }); - } - else { - return option._parseSync({ - data: ctx.data, - path: ctx.path, - parent: ctx, - }); - } - } - get discriminator() { - return this._def.discriminator; - } - get options() { - return this._def.options; - } - get optionsMap() { - return this._def.optionsMap; - } - /** - * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor. - * However, it only allows a union of objects, all of which need to share a discriminator property. This property must - * have a different value for each object in the union. - * @param discriminator the name of the discriminator property - * @param types an array of object schemas - * @param params - */ - static create(discriminator, options, params) { - // Get all the valid discriminator values - const optionsMap = new Map(); - // try { - for (const type of options) { - const discriminatorValues = getDiscriminator(type.shape[discriminator]); - if (!discriminatorValues.length) { - throw new Error(`A discriminator value for key \`${discriminator}\` could not be extracted from all schema options`); - } - for (const value of discriminatorValues) { - if (optionsMap.has(value)) { - throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`); - } - optionsMap.set(value, type); - } - } - return new ZodDiscriminatedUnion({ - typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion, - discriminator, - options, - optionsMap, - ...processCreateParams(params), - }); - } - } - function mergeValues(a, b) { - const aType = getParsedType(a); - const bType = getParsedType(b); - if (a === b) { - return { valid: true, data: a }; - } - else if (aType === ZodParsedType.object && bType === ZodParsedType.object) { - const bKeys = util.objectKeys(b); - const sharedKeys = util - .objectKeys(a) - .filter((key) => bKeys.indexOf(key) !== -1); - const newObj = { ...a, ...b }; - for (const key of sharedKeys) { - const sharedValue = mergeValues(a[key], b[key]); - if (!sharedValue.valid) { - return { valid: false }; - } - newObj[key] = sharedValue.data; - } - return { valid: true, data: newObj }; - } - else if (aType === ZodParsedType.array && bType === ZodParsedType.array) { - if (a.length !== b.length) { - return { valid: false }; - } - const newArray = []; - for (let index = 0; index < a.length; index++) { - const itemA = a[index]; - const itemB = b[index]; - const sharedValue = mergeValues(itemA, itemB); - if (!sharedValue.valid) { - return { valid: false }; - } - newArray.push(sharedValue.data); - } - return { valid: true, data: newArray }; - } - else if (aType === ZodParsedType.date && - bType === ZodParsedType.date && - +a === +b) { - return { valid: true, data: a }; - } - else { - return { valid: false }; + /** + * Seals (encrypts) the provided message for a receiver with the specified public key. + * + * @param {bigint | number} value - The message to be encrypted. + * @param {string} publicKey - The public key of the intended recipient. + * @returns string - The encrypted message in hexadecimal format. + * @static + * @throws Will throw if the provided publicKey or value do not meet defined preconditions. + */ + SealingKey.seal = (value, publicKey) => { + isString(publicKey); + isBigIntOrNumber(value); + // generate ephemeral keypair + const ephemeralKeyPair = naclFastExports.box.keyPair(); + const nonce = naclFastExports.randomBytes(naclFastExports.box.nonceLength); + const encryptedMessage = naclFastExports.box(toBeArray(value), nonce, fromHexString(publicKey), ephemeralKeyPair.secretKey); + // handle encrypted data + const output = { + version: "x25519-xsalsa20-poly1305", + nonce: naclUtilExports.encodeBase64(nonce), + ephemPublicKey: naclUtilExports.encodeBase64(ephemeralKeyPair.publicKey), + ciphertext: naclUtilExports.encodeBase64(encryptedMessage), + }; + // mimicking encoding from the chain + return toHexString$1(Buffer.from(JSON.stringify(output))); + }; + /** + * Asynchronously generates a new SealingKey. + * This function uses the 'nacl' library to create a new public/private key pair for sealing purposes. + * A sealing key is used to encrypt data such that it can only be unsealed (decrypted) by the owner of the corresponding private key. + * @returns {Promise} - A promise that resolves to a new SealingKey object containing the hexadecimal strings of the public and private keys. + */ + const GenerateSealingKey = async () => { + const sodiumKeypair = naclFastExports.box.keyPair(); + return new SealingKey(toHexString$1(sodiumKeypair.secretKey), toHexString$1(sodiumKeypair.publicKey)); + }; + + let wasm$1; + const heap = new Array(128).fill(undefined); + heap.push(undefined, null, true, false); + let heap_next = heap.length; + function addHeapObject(obj) { + if (heap_next === heap.length) + heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + heap[idx] = obj; + return idx; + } + function getObject(idx) { + return heap[idx]; + } + function dropObject(idx) { + if (idx < 132) + return; + heap[idx] = heap_next; + heap_next = idx; + } + function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; + } + const cachedTextDecoder = typeof TextDecoder !== "undefined" + ? new TextDecoder("utf-8", { ignoreBOM: true, fatal: true }) + : { + decode: () => { + throw Error("TextDecoder not available"); + }, + }; + if (typeof TextDecoder !== "undefined") { + cachedTextDecoder.decode(); + } + let cachedUint8Memory0 = null; + function getUint8Memory0() { + if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) { + cachedUint8Memory0 = new Uint8Array(wasm$1.memory.buffer); + } + return cachedUint8Memory0; + } + function getStringFromWasm0(ptr, len) { + ptr = ptr >>> 0; + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); + } + function isLikeNone(x) { + return x === undefined || x === null; + } + let cachedBigInt64Memory0 = null; + function getBigInt64Memory0() { + if (cachedBigInt64Memory0 === null || + cachedBigInt64Memory0.byteLength === 0) { + cachedBigInt64Memory0 = new BigInt64Array(wasm$1.memory.buffer); + } + return cachedBigInt64Memory0; + } + let cachedInt32Memory0 = null; + function getInt32Memory0() { + if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) { + cachedInt32Memory0 = new Int32Array(wasm$1.memory.buffer); + } + return cachedInt32Memory0; + } + function debugString(val) { + // primitive types + const type = typeof val; + if (type == "number" || type == "boolean" || val == null) { + return `${val}`; + } + if (type == "string") { + return `"${val}"`; + } + if (type == "symbol") { + const description = val.description; + if (description == null) { + return "Symbol"; + } + else { + return `Symbol(${description})`; + } + } + if (type == "function") { + const name = val.name; + if (typeof name == "string" && name.length > 0) { + return `Function(${name})`; + } + else { + return "Function"; + } + } + // objects + if (Array.isArray(val)) { + const length = val.length; + let debug = "["; + if (length > 0) { + debug += debugString(val[0]); + } + for (let i = 1; i < length; i++) { + debug += ", " + debugString(val[i]); + } + debug += "]"; + return debug; + } + // Test for built-in + const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); + let className; + if (builtInMatches.length > 1) { + className = builtInMatches[1]; + } + else { + // Failed to match the standard '[object ClassName]' + return toString.call(val); + } + if (className == "Object") { + // we're a user defined class or Object + // JSON.stringify avoids problems with cycles, and is generally much + // easier than looping through ownProperties of `val`. + try { + return "Object(" + JSON.stringify(val) + ")"; + } + catch (_) { + return "Object"; + } + } + // errors + if (val instanceof Error) { + return `${val.name}: ${val.message}\n${val.stack}`; + } + // TODO we could test for more things here, like `Set`s and `Map`s. + return className; + } + let WASM_VECTOR_LEN = 0; + const cachedTextEncoder = typeof TextEncoder !== "undefined" + ? new TextEncoder("utf-8") + : { + encode: () => { + throw Error("TextEncoder not available"); + }, + }; + const encodeString = typeof cachedTextEncoder.encodeInto === "function" + ? function (arg, view) { + return cachedTextEncoder.encodeInto(arg, view); + } + : function (arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length, + }; + }; + function passStringToWasm0(arg, malloc, realloc) { + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length, 1) >>> 0; + getUint8Memory0() + .subarray(ptr, ptr + buf.length) + .set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + let len = arg.length; + let ptr = malloc(len, 1) >>> 0; + const mem = getUint8Memory0(); + let offset = 0; + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 0x7f) + break; + mem[ptr + offset] = code; + } + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr = realloc(ptr, len, (len = offset + arg.length * 3), 1) >>> 0; + const view = getUint8Memory0().subarray(ptr + offset, ptr + len); + const ret = encodeString(arg, view); + offset += ret.written; + } + WASM_VECTOR_LEN = offset; + return ptr; + } + function _assertClass(instance, klass) { + if (!(instance instanceof klass)) { + throw new Error(`expected instance of ${klass.name}`); + } + return instance.ptr; + } + function getArrayU8FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len); + } + function passArray8ToWasm0(arg, malloc) { + const ptr = malloc(arg.length * 1, 1) >>> 0; + getUint8Memory0().set(arg, ptr / 1); + WASM_VECTOR_LEN = arg.length; + return ptr; + } + function handleError(f, args) { + try { + return f.apply(this, args); + } + catch (e) { + wasm$1.__wbindgen_exn_store(addHeapObject(e)); + } + } + /** + */ + class CompactFheBool { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(CompactFheBool.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_compactfhebool_free(ptr); + } + /** + * @param {boolean} value + * @param {TfheCompactPublicKey} client_key + * @returns {CompactFheBool} + */ + static encrypt_with_compact_public_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheCompactPublicKey); + wasm$1.compactfhebool_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheBool.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {FheBool} + */ + expand() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfhebool_expand(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheBool.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfhebool_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {CompactFheBool} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfhebool_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheBool.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfhebool_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {CompactFheBool} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfhebool_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheBool.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + } + /** + */ + class CompactFheUint128 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(CompactFheUint128.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_compactfheuint128_free(ptr); + } + /** + * @param {any} value + * @param {TfheCompactPublicKey} client_key + * @returns {CompactFheUint128} + */ + static encrypt_with_compact_public_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheCompactPublicKey); + wasm$1.compactfheuint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {FheUint128} + */ + expand() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheint128_expand(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint128_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {CompactFheUint128} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint128_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {CompactFheUint128} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + } + /** + */ + class CompactFheUint16 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(CompactFheUint16.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_compactfheuint16_free(ptr); + } + /** + * @param {number} value + * @param {TfheCompactPublicKey} client_key + * @returns {CompactFheUint16} + */ + static encrypt_with_compact_public_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheCompactPublicKey); + wasm$1.compactfheuint16_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {FheUint16} + */ + expand() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheint128_expand(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint16_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {CompactFheUint16} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint16_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {CompactFheUint16} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + } + /** + */ + class CompactFheUint160 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(CompactFheUint160.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_compactfheuint160_free(ptr); + } + /** + * @param {any} value + * @param {TfheCompactPublicKey} client_key + * @returns {CompactFheUint160} + */ + static encrypt_with_compact_public_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheCompactPublicKey); + wasm$1.compactfheuint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {FheUint160} + */ + expand() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheint128_expand(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint160_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {CompactFheUint160} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint160_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {CompactFheUint160} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + } + /** + */ + class CompactFheUint256 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(CompactFheUint256.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_compactfheuint256_free(ptr); + } + /** + * @param {any} value + * @param {TfheCompactPublicKey} client_key + * @returns {CompactFheUint256} + */ + static encrypt_with_compact_public_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheCompactPublicKey); + wasm$1.compactfheuint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {FheUint256} + */ + expand() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheint128_expand(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint256_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {CompactFheUint256} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint256_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {CompactFheUint256} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + } + /** + */ + class CompactFheUint32 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(CompactFheUint32.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_compactfheuint32_free(ptr); + } + /** + * @param {number} value + * @param {TfheCompactPublicKey} client_key + * @returns {CompactFheUint32} + */ + static encrypt_with_compact_public_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheCompactPublicKey); + wasm$1.compactfheuint32_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {FheUint32} + */ + expand() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheint128_expand(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint32_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {CompactFheUint32} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint32_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {CompactFheUint32} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + } + /** + */ + class CompactFheUint64 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(CompactFheUint64.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_compactfheuint64_free(ptr); + } + /** + * @param {bigint} value + * @param {TfheCompactPublicKey} client_key + * @returns {CompactFheUint64} + */ + static encrypt_with_compact_public_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheCompactPublicKey); + wasm$1.compactfheuint64_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {FheUint64} + */ + expand() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheint128_expand(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint64_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {CompactFheUint64} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint64_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {CompactFheUint64} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + } + /** + */ + class CompactFheUint8 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(CompactFheUint8.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_compactfheuint8_free(ptr); + } + /** + * @param {number} value + * @param {TfheCompactPublicKey} client_key + * @returns {CompactFheUint8} + */ + static encrypt_with_compact_public_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheCompactPublicKey); + wasm$1.compactfheuint8_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {FheUint8} + */ + expand() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheint128_expand(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint8_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {CompactFheUint8} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint8_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.compactfheuint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {CompactFheUint8} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.compactfheuint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return CompactFheUint8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + } + /** + */ + class FheBool { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheBool.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fhebool_free(ptr); + } + /** + * @param {boolean} value + * @param {TfheClientKey} client_key + * @returns {FheBool} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fhebool_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheBool.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {boolean} value + * @param {TfhePublicKey} public_key + * @returns {FheBool} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fhebool_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheBool.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {boolean} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheBool} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fhebool_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheBool.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {boolean} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheBool} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fhebool_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheBool.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {boolean} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fhebool_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return r0 !== 0; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fhebool_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheBool} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fhebool_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheBool.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fhebool_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheBool} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fhebool_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheBool.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + } + /** + */ + class FheInt128 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheInt128.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheint128_free(ptr); + } + /** + * @param {any} value + * @param {TfheClientKey} client_key + * @returns {FheInt128} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint128_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfhePublicKey} public_key + * @returns {FheInt128} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheint128_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheInt128} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheint128_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheInt128} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {any} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint128_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint128_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheInt128} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint128_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheInt128} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + } + /** + */ + class FheInt16 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheInt16.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheint16_free(ptr); + } + /** + * @param {number} value + * @param {TfheClientKey} client_key + * @returns {FheInt16} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint16_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfhePublicKey} public_key + * @returns {FheInt16} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheint16_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheInt16} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheint16_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheInt16} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheint16_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {number} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint16_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return r0; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint16_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheInt16} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint16_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheInt16} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + } + /** + */ + class FheInt160 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheInt160.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheint160_free(ptr); + } + /** + * @param {any} value + * @param {TfheClientKey} client_key + * @returns {FheInt160} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint160_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfhePublicKey} public_key + * @returns {FheInt160} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheint160_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheInt160} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheint160_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheInt160} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {any} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint160_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint160_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheInt160} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint160_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheInt160} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + } + /** + */ + class FheInt256 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheInt256.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheint256_free(ptr); + } + /** + * @param {any} value + * @param {TfheClientKey} client_key + * @returns {FheInt256} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint256_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfhePublicKey} public_key + * @returns {FheInt256} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheint256_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheInt256} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheint256_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheInt256} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {any} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint256_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint256_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheInt256} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint256_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheInt256} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + } + /** + */ + class FheInt32 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheInt32.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheint32_free(ptr); + } + /** + * @param {number} value + * @param {TfheClientKey} client_key + * @returns {FheInt32} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint32_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfhePublicKey} public_key + * @returns {FheInt32} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheint32_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheInt32} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheint32_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheInt32} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheint32_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {number} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint32_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return r0; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint32_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheInt32} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint32_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheInt32} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + } + /** + */ + class FheInt64 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheInt64.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheint64_free(ptr); + } + /** + * @param {bigint} value + * @param {TfheClientKey} client_key + * @returns {FheInt64} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint64_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} value + * @param {TfhePublicKey} public_key + * @returns {FheInt64} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheint64_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheInt64} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheint64_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheInt64} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheint64_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {bigint} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint64_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getBigInt64Memory0()[retptr / 8 + 0]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + return r0; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint64_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheInt64} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint64_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheInt64} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + } + /** + */ + class FheInt8 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheInt8.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheint8_free(ptr); + } + /** + * @param {number} value + * @param {TfheClientKey} client_key + * @returns {FheInt8} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint8_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfhePublicKey} public_key + * @returns {FheInt8} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheint8_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheInt8} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheint8_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheInt8} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheint8_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {number} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheint8_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return r0; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint8_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheInt8} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint8_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheInt8} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheInt8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + } + /** + */ + class FheUint128 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheUint128.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheuint128_free(ptr); + } + /** + * @param {any} value + * @param {TfheClientKey} client_key + * @returns {FheUint128} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint128_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfhePublicKey} public_key + * @returns {FheUint128} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheuint128_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheUint128} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheuint128_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheUint128} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheuint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {any} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint128_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint128_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheUint128} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint128_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheUint128} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint128.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + } + /** + */ + class FheUint16 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheUint16.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheuint16_free(ptr); + } + /** + * @param {number} value + * @param {TfheClientKey} client_key + * @returns {FheUint16} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint16_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfhePublicKey} public_key + * @returns {FheUint16} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheuint16_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheUint16} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheuint16_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheUint16} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheuint16_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {number} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint16_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return r0; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint16_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheUint16} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint16_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheUint16} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint16.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + } + /** + */ + class FheUint160 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheUint160.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheuint160_free(ptr); + } + /** + * @param {any} value + * @param {TfheClientKey} client_key + * @returns {FheUint160} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint160_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfhePublicKey} public_key + * @returns {FheUint160} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheuint160_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheUint160} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheuint160_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheUint160} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheuint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {any} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint160_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint160_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheUint160} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint160_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheUint160} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint160.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + } + /** + */ + class FheUint256 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheUint256.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheuint256_free(ptr); + } + /** + * @param {any} value + * @param {TfheClientKey} client_key + * @returns {FheUint256} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint256_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfhePublicKey} public_key + * @returns {FheUint256} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheuint256_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheUint256} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheuint256_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheUint256} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheuint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {any} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint256_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint256_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheUint256} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint256_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheUint256} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint256.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + } + /** + */ + class FheUint32 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheUint32.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheuint32_free(ptr); + } + /** + * @param {number} value + * @param {TfheClientKey} client_key + * @returns {FheUint32} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint32_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfhePublicKey} public_key + * @returns {FheUint32} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheuint32_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheUint32} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheuint32_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheUint32} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheuint32_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {number} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint32_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return r0 >>> 0; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint32_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheUint32} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint32_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheUint32} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint32.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + } + /** + */ + class FheUint64 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheUint64.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheuint64_free(ptr); + } + /** + * @param {bigint} value + * @param {TfheClientKey} client_key + * @returns {FheUint64} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint64_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} value + * @param {TfhePublicKey} public_key + * @returns {FheUint64} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheuint64_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheUint64} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheuint64_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheUint64} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheuint64_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {bigint} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint64_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getBigInt64Memory0()[retptr / 8 + 0]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + return BigInt.asUintN(64, r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint64_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheUint64} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint64_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheUint64} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint64.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + } + /** + */ + class FheUint8 { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(FheUint8.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_fheuint8_free(ptr); + } + /** + * @param {number} value + * @param {TfheClientKey} client_key + * @returns {FheUint8} + */ + static encrypt_with_client_key(value, client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint8_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfhePublicKey} public_key + * @returns {FheUint8} + */ + static encrypt_with_public_key(value, public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(public_key, TfhePublicKey); + wasm$1.fheuint8_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfheCompressedPublicKey} compressed_public_key + * @returns {FheUint8} + */ + static encrypt_with_compressed_public_key(value, compressed_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compressed_public_key, TfheCompressedPublicKey); + wasm$1.fheuint8_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {number} value + * @param {TfheCompactPublicKey} compact_public_key + * @returns {FheUint8} + */ + static encrypt_with_compact_public_key(value, compact_public_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(compact_public_key, TfheCompactPublicKey); + wasm$1.fheuint8_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheClientKey} client_key + * @returns {number} + */ + decrypt(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.fheuint8_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return r0; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint8_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {FheUint8} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint8_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {bigint} serialized_size_limit + * @returns {Uint8Array} + */ + safe_serialize(serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.fheuint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @param {bigint} serialized_size_limit + * @returns {FheUint8} + */ + static safe_deserialize(buffer, serialized_size_limit) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.fheuint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return FheUint8.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + } + /** + */ + class TfheClientKey { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(TfheClientKey.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_tfheclientkey_free(ptr); + } + /** + * @param {TfheConfig} config + * @returns {TfheClientKey} + */ + static generate(config) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(config, TfheConfig); + wasm$1.tfheclientkey_generate(retptr, config.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return TfheClientKey.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {TfheConfig} config + * @param {any} seed + * @returns {TfheClientKey} + */ + static generate_with_seed(config, seed) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(config, TfheConfig); + wasm$1.tfheclientkey_generate_with_seed(retptr, config.__wbg_ptr, addHeapObject(seed)); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return TfheClientKey.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.tfheclientkey_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {TfheClientKey} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.tfheclientkey_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return TfheClientKey.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + } + /** + */ + class TfheCompactPublicKey { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(TfheCompactPublicKey.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_tfhecompactpublickey_free(ptr); + } + /** + * @param {TfheClientKey} client_key + * @returns {TfheCompactPublicKey} + */ + static new(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.tfhecompactpublickey_new(retptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return TfheCompactPublicKey.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.tfhecompactpublickey_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {TfheCompactPublicKey} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.tfhecompactpublickey_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return TfheCompactPublicKey.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + } + /** + */ + class TfheCompressedPublicKey { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(TfheCompressedPublicKey.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_tfhecompressedpublickey_free(ptr); + } + /** + * @param {TfheClientKey} client_key + * @returns {TfheCompressedPublicKey} + */ + static new(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.tfhecompressedpublickey_new(retptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return TfheCompressedPublicKey.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {TfhePublicKey} + */ + decompress() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.tfhecompressedpublickey_decompress(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return TfhePublicKey.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.tfhecompressedpublickey_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {TfheCompressedPublicKey} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.tfhecompressedpublickey_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return TfheCompressedPublicKey.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + } + /** + */ + class TfheConfig { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(TfheConfig.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_tfheconfig_free(ptr); + } + } + /** + */ + class TfheConfigBuilder { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(TfheConfigBuilder.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_tfheconfigbuilder_free(ptr); + } + /** + * @returns {TfheConfigBuilder} + */ + static default() { + const ret = wasm$1.tfheconfigbuilder_default(); + return TfheConfigBuilder.__wrap(ret); + } + /** + * @returns {TfheConfigBuilder} + */ + static default_with_small_encryption() { + const ret = wasm$1.tfheconfigbuilder_default_with_small_encryption(); + return TfheConfigBuilder.__wrap(ret); + } + /** + * @returns {TfheConfigBuilder} + */ + static default_with_big_encryption() { + const ret = wasm$1.tfheconfigbuilder_default(); + return TfheConfigBuilder.__wrap(ret); + } + /** + * @returns {TfheConfig} + */ + build() { + const ptr = this.__destroy_into_raw(); + const ret = wasm$1.tfheconfigbuilder_build(ptr); + return TfheConfig.__wrap(ret); + } + } + /** + */ + class TfhePublicKey { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(TfhePublicKey.prototype); + obj.__wbg_ptr = ptr; + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm$1.__wbg_tfhepublickey_free(ptr); + } + /** + * @param {TfheClientKey} client_key + * @returns {TfhePublicKey} + */ + static new(client_key) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + _assertClass(client_key, TfheClientKey); + wasm$1.tfhepublickey_new(retptr, client_key.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return TfhePublicKey.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @returns {Uint8Array} + */ + serialize() { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + wasm$1.tfhepublickey_serialize(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm$1.__wbindgen_free(r0, r1 * 1); + return v1; + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {Uint8Array} buffer + * @returns {TfhePublicKey} + */ + static deserialize(buffer) { + try { + const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(buffer, wasm$1.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm$1.tfhepublickey_deserialize(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return TfhePublicKey.__wrap(r0); + } + finally { + wasm$1.__wbindgen_add_to_stack_pointer(16); + } + } + } + async function __wbg_load(module, imports) { + if (typeof Response === "function" && module instanceof Response) { + if (typeof WebAssembly.instantiateStreaming === "function") { + try { + return await WebAssembly.instantiateStreaming(module, imports); + } + catch (e) { + if (module.headers.get("Content-Type") != "application/wasm") { + console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); + } + else { + throw e; + } + } + } + const bytes = await module.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); + } + else { + const instance = await WebAssembly.instantiate(module, imports); + if (instance instanceof WebAssembly.Instance) { + return { instance, module }; + } + else { + return instance; + } + } + } + function __wbg_get_imports() { + const imports = {}; + imports.wbg = {}; + imports.wbg.__wbindgen_bigint_from_u64 = function (arg0) { + const ret = BigInt.asUintN(64, arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_shr = function (arg0, arg1) { + const ret = getObject(arg0) >> getObject(arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_object_drop_ref = function (arg0) { + takeObject(arg0); + }; + imports.wbg.__wbindgen_bigint_from_i64 = function (arg0) { + const ret = arg0; + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_jsval_eq = function (arg0, arg1) { + const ret = getObject(arg0) === getObject(arg1); + return ret; + }; + imports.wbg.__wbindgen_error_new = function (arg0, arg1) { + const ret = new Error(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_bigint_from_i128 = function (arg0, arg1) { + const ret = (arg0 << BigInt(64)) | BigInt.asUintN(64, arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_bigint_from_u128 = function (arg0, arg1) { + const ret = (BigInt.asUintN(64, arg0) << BigInt(64)) | BigInt.asUintN(64, arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheuint16_new = function (arg0) { + const ret = FheUint16.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheuint160_new = function (arg0) { + const ret = FheUint160.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheuint256_new = function (arg0) { + const ret = FheUint256.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheuint32_new = function (arg0) { + const ret = FheUint32.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheuint128_new = function (arg0) { + const ret = FheUint128.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheuint8_new = function (arg0) { + const ret = FheUint8.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheuint64_new = function (arg0) { + const ret = FheUint64.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheint32_new = function (arg0) { + const ret = FheInt32.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheint64_new = function (arg0) { + const ret = FheInt64.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fhebool_new = function (arg0) { + const ret = FheBool.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheint256_new = function (arg0) { + const ret = FheInt256.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheint160_new = function (arg0) { + const ret = FheInt160.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheint16_new = function (arg0) { + const ret = FheInt16.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheint8_new = function (arg0) { + const ret = FheInt8.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_fheint128_new = function (arg0) { + const ret = FheInt128.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_boolean_get = function (arg0) { + const v = getObject(arg0); + const ret = typeof v === "boolean" ? (v ? 1 : 0) : 2; + return ret; + }; + imports.wbg.__wbindgen_bigint_from_str = function (arg0, arg1) { + const ret = BigInt(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_bit_and = function (arg0, arg1) { + const ret = getObject(arg0) & getObject(arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_number_new = function (arg0) { + const ret = arg0; + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_lt = function (arg0, arg1) { + const ret = getObject(arg0) < getObject(arg1); + return ret; + }; + imports.wbg.__wbindgen_neg = function (arg0) { + const ret = -getObject(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_shl = function (arg0, arg1) { + const ret = getObject(arg0) << getObject(arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_add = function (arg0, arg1) { + const ret = getObject(arg0) + getObject(arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_bit_or = function (arg0, arg1) { + const ret = getObject(arg0) | getObject(arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbg_new_abda76e883ba8a5f = function () { + const ret = new Error(); + return addHeapObject(ret); + }; + imports.wbg.__wbg_stack_658279fe44541cf6 = function (arg0, arg1) { + const ret = getObject(arg1).stack; + const ptr1 = passStringToWasm0(ret, wasm$1.__wbindgen_malloc, wasm$1.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; + imports.wbg.__wbg_error_f851667af71bcfc6 = function (arg0, arg1) { + let deferred0_0; + let deferred0_1; + try { + deferred0_0 = arg0; + deferred0_1 = arg1; + console.error(getStringFromWasm0(arg0, arg1)); + } + finally { + wasm$1.__wbindgen_free(deferred0_0, deferred0_1, 1); + } + }; + imports.wbg.__wbg_crypto_70a96de3b6b73dac = function (arg0) { + const ret = getObject(arg0).crypto; + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_is_object = function (arg0) { + const val = getObject(arg0); + const ret = typeof val === "object" && val !== null; + return ret; + }; + imports.wbg.__wbg_process_dd1577445152112e = function (arg0) { + const ret = getObject(arg0).process; + return addHeapObject(ret); + }; + imports.wbg.__wbg_versions_58036bec3add9e6f = function (arg0) { + const ret = getObject(arg0).versions; + return addHeapObject(ret); + }; + imports.wbg.__wbg_node_6a9d28205ed5b0d8 = function (arg0) { + const ret = getObject(arg0).node; + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_is_string = function (arg0) { + const ret = typeof getObject(arg0) === "string"; + return ret; + }; + imports.wbg.__wbg_require_f05d779769764e82 = function () { + return handleError(function () { + const ret = module.require; + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbindgen_string_new = function (arg0, arg1) { + const ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbg_msCrypto_adbc770ec9eca9c7 = function (arg0) { + const ret = getObject(arg0).msCrypto; + return addHeapObject(ret); + }; + imports.wbg.__wbg_randomFillSync_e950366c42764a07 = function () { + return handleError(function (arg0, arg1) { + getObject(arg0).randomFillSync(takeObject(arg1)); + }, arguments); + }; + imports.wbg.__wbg_getRandomValues_3774744e221a22ad = function () { + return handleError(function (arg0, arg1) { + getObject(arg0).getRandomValues(getObject(arg1)); + }, arguments); + }; + imports.wbg.__wbindgen_is_function = function (arg0) { + const ret = typeof getObject(arg0) === "function"; + return ret; + }; + imports.wbg.__wbg_newnoargs_e643855c6572a4a8 = function (arg0, arg1) { + const ret = new Function(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_call_f96b398515635514 = function () { + return handleError(function (arg0, arg1) { + const ret = getObject(arg0).call(getObject(arg1)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_self_b9aad7f1c618bfaf = function () { + return handleError(function () { + const ret = self.self; + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_window_55e469842c98b086 = function () { + return handleError(function () { + const ret = window.window; + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_globalThis_d0957e302752547e = function () { + return handleError(function () { + const ret = globalThis.globalThis; + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_global_ae2f87312b8987fb = function () { + return handleError(function () { + const ret = global.global; + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbindgen_is_undefined = function (arg0) { + const ret = getObject(arg0) === undefined; + return ret; + }; + imports.wbg.__wbg_call_35782e9a1aa5e091 = function () { + return handleError(function (arg0, arg1, arg2) { + const ret = getObject(arg0).call(getObject(arg1), getObject(arg2)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_buffer_fcbfb6d88b2732e9 = function (arg0) { + const ret = getObject(arg0).buffer; + return addHeapObject(ret); + }; + imports.wbg.__wbg_newwithbyteoffsetandlength_92c251989c485785 = function (arg0, arg1, arg2) { + const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_new_bc5d9aad3f9ac80e = function (arg0) { + const ret = new Uint8Array(getObject(arg0)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_set_4b3aa8445ac1e91c = function (arg0, arg1, arg2) { + getObject(arg0).set(getObject(arg1), arg2 >>> 0); + }; + imports.wbg.__wbg_newwithlength_89eca18f2603a999 = function (arg0) { + const ret = new Uint8Array(arg0 >>> 0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_subarray_7649d027b2b141b3 = function (arg0, arg1, arg2) { + const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_object_clone_ref = function (arg0) { + const ret = getObject(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_bigint_get_as_i64 = function (arg0, arg1) { + const v = getObject(arg1); + const ret = typeof v === "bigint" ? v : undefined; + getBigInt64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? BigInt(0) : ret; + getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret); + }; + imports.wbg.__wbindgen_debug_string = function (arg0, arg1) { + const ret = debugString(getObject(arg1)); + const ptr1 = passStringToWasm0(ret, wasm$1.__wbindgen_malloc, wasm$1.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; + imports.wbg.__wbindgen_throw = function (arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + }; + imports.wbg.__wbindgen_memory = function () { + const ret = wasm$1.memory; + return addHeapObject(ret); + }; + return imports; + } + function __wbg_finalize_init(instance, module) { + wasm$1 = instance.exports; + __wbg_init.__wbindgen_wasm_module = module; + cachedBigInt64Memory0 = null; + cachedInt32Memory0 = null; + cachedUint8Memory0 = null; + return wasm$1; + } + async function __wbg_init(input) { + if (wasm$1 !== undefined) + return wasm$1; + // FHENIX: disabling this because it fucks with frameworks that try to resolve it + // if (typeof input === 'undefined') { + // input = new URL('tfhe_bg.wasm', import.meta.url); + // } + const imports = __wbg_get_imports(); + if (typeof input === "string" || + (typeof Request === "function" && input instanceof Request) || + (typeof URL === "function" && input instanceof URL)) { + input = fetch(input); + } + const { instance, module } = await __wbg_load(await input, imports); + return __wbg_finalize_init(instance, module); + } + + const createTfheKeypair = () => { + // const block_params = new ShortintParameters( + // ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS, + // ); + const config = TfheConfigBuilder.default() + //..(block_params) + .build(); + const clientKey = TfheClientKey.generate(config); + let publicKey = TfheCompactPublicKey.new(clientKey); + publicKey = TfheCompactPublicKey.deserialize(publicKey.serialize()); + return { clientKey, publicKey }; + }; + const createTfhePublicKey = () => { + const { publicKey } = createTfheKeypair(); + return toHexString(publicKey.serialize()); + }; + const toHexString = (bytes) => bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, "0"), ""); + + /** + * An enumeration of supported encryption types. + * uint8, uint16, and uint32 represent the different sizes of integers that can be encrypted. + */ + exports.EncryptionTypes = void 0; + (function (EncryptionTypes) { + EncryptionTypes["bool"] = "bool"; + EncryptionTypes["uint8"] = "uint8"; + EncryptionTypes["uint16"] = "uint16"; + EncryptionTypes["uint32"] = "uint32"; + EncryptionTypes["uint64"] = "uint64"; + EncryptionTypes["uint128"] = "uint128"; + EncryptionTypes["uint256"] = "uint256"; + EncryptionTypes["address"] = "address"; + })(exports.EncryptionTypes || (exports.EncryptionTypes = {})); + /** + * Mapping of encryption types to their utype integer + */ + exports.FheUType = void 0; + (function (FheUType) { + FheUType[FheUType["bool"] = 13] = "bool"; + FheUType[FheUType["uint8"] = 0] = "uint8"; + FheUType[FheUType["uint16"] = 1] = "uint16"; + FheUType[FheUType["uint32"] = 2] = "uint32"; + FheUType[FheUType["uint64"] = 3] = "uint64"; + FheUType[FheUType["uint128"] = 4] = "uint128"; + FheUType[FheUType["uint256"] = 5] = "uint256"; + FheUType[FheUType["address"] = 12] = "address"; + })(exports.FheUType || (exports.FheUType = {})); + /** + * List of All FHE uint types (excludes bool and address) + */ + const FheUintUTypes = [ + exports.FheUType.uint8, + exports.FheUType.uint16, + exports.FheUType.uint32, + exports.FheUType.uint64, + exports.FheUType.uint128, + exports.FheUType.uint256, + ]; + /** + * List of All FHE types (uints, bool, and address) + */ + const FheAllUTypes = [ + exports.FheUType.bool, + exports.FheUType.uint8, + exports.FheUType.uint16, + exports.FheUType.uint32, + exports.FheUType.uint64, + exports.FheUType.uint128, + exports.FheUType.uint256, + exports.FheUType.address, + ]; + + const Encryptable = { + bool: (data, securityZone = 0) => ({ data, securityZone, utype: exports.FheUType.bool }), + uint8: (data, securityZone = 0) => ({ data, securityZone, utype: exports.FheUType.uint8 }), + uint16: (data, securityZone = 0) => ({ data, securityZone, utype: exports.FheUType.uint16 }), + uint32: (data, securityZone = 0) => ({ data, securityZone, utype: exports.FheUType.uint32 }), + uint64: (data, securityZone = 0) => ({ data, securityZone, utype: exports.FheUType.uint64 }), + uint128: (data, securityZone = 0) => ({ data, securityZone, utype: exports.FheUType.uint128 }), + uint256: (data, securityZone = 0) => ({ data, securityZone, utype: exports.FheUType.uint256 }), + address: (data, securityZone = 0) => ({ data, securityZone, utype: exports.FheUType.address }), + }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + function isEncryptableItem(value) { + return (typeof value === "object" && + value !== null && + ["string", "number", "bigint", "boolean"].includes(typeof value.data) && + typeof value.securityZone === "number" && + FheAllUTypes.includes(value.utype)); + } + + const ResultErr = (error) => ({ + success: false, + data: null, + error, + }); + const ResultOk = (data) => ({ + success: true, + data, + error: null, + }); + + // Determine if `value` is an instance of a `sealedItem` { data: string, utype: 0-5 | 12 | 13 } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + function getAsSealedItem(value) { + if (Array.isArray(value) && + value.length === 2 && + typeof value[0] === "string" && + FheAllUTypes.includes(parseInt(`${value[1]}`))) + return { + data: value[0], + utype: value[1], + }; + if (typeof value === "object" && + value !== null && + typeof value.data === "string" && + FheAllUTypes.includes(value.utype)) + return value; + return undefined; + } + function isSealedBool(value) { + return parseInt(`${value.utype}`) === exports.FheUType.bool; + } + function isSealedUint(value) { + return FheUintUTypes.includes(parseInt(`${value.utype}`)); + } + function isSealedAddress(value) { + return parseInt(`${value.utype}`) === exports.FheUType.address; + } + + const createStoreImpl = (createState) => { + let state; + const listeners = /* @__PURE__ */ new Set(); + const setState = (partial, replace) => { + const nextState = typeof partial === "function" ? partial(state) : partial; + if (!Object.is(nextState, state)) { + const previousState = state; + state = (replace != null ? replace : typeof nextState !== "object" || nextState === null) ? nextState : Object.assign({}, state, nextState); + listeners.forEach((listener) => listener(state, previousState)); + } + }; + const getState = () => state; + const getInitialState = () => initialState; + const subscribe = (listener) => { + listeners.add(listener); + return () => listeners.delete(listener); + }; + const api = { setState, getState, getInitialState, subscribe }; + const initialState = state = createState(setState, getState, api); + return api; + }; + const createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl; + + function createJSONStorage(getStorage, options) { + let storage; + try { + storage = getStorage(); + } catch (e) { + return; } - } - class ZodIntersection extends ZodType { - _parse(input) { - const { status, ctx } = this._processInputParams(input); - const handleParsed = (parsedLeft, parsedRight) => { - if (isAborted(parsedLeft) || isAborted(parsedRight)) { - return INVALID; - } - const merged = mergeValues(parsedLeft.value, parsedRight.value); - if (!merged.valid) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_intersection_types, - }); - return INVALID; - } - if (isDirty(parsedLeft) || isDirty(parsedRight)) { - status.dirty(); - } - return { status: status.value, value: merged.data }; + const persistStorage = { + getItem: (name) => { + var _a; + const parse = (str2) => { + if (str2 === null) { + return null; + } + return JSON.parse(str2, void 0 ); }; - if (ctx.common.async) { - return Promise.all([ - this._def.left._parseAsync({ - data: ctx.data, - path: ctx.path, - parent: ctx, - }), - this._def.right._parseAsync({ - data: ctx.data, - path: ctx.path, - parent: ctx, - }), - ]).then(([left, right]) => handleParsed(left, right)); - } - else { - return handleParsed(this._def.left._parseSync({ - data: ctx.data, - path: ctx.path, - parent: ctx, - }), this._def.right._parseSync({ - data: ctx.data, - path: ctx.path, - parent: ctx, - })); - } - } - } - ZodIntersection.create = (left, right, params) => { - return new ZodIntersection({ - left: left, - right: right, - typeName: ZodFirstPartyTypeKind.ZodIntersection, - ...processCreateParams(params), - }); - }; - class ZodTuple extends ZodType { - _parse(input) { - const { status, ctx } = this._processInputParams(input); - if (ctx.parsedType !== ZodParsedType.array) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.array, - received: ctx.parsedType, - }); - return INVALID; - } - if (ctx.data.length < this._def.items.length) { - addIssueToContext(ctx, { - code: ZodIssueCode.too_small, - minimum: this._def.items.length, - inclusive: true, - exact: false, - type: "array", - }); - return INVALID; - } - const rest = this._def.rest; - if (!rest && ctx.data.length > this._def.items.length) { - addIssueToContext(ctx, { - code: ZodIssueCode.too_big, - maximum: this._def.items.length, - inclusive: true, - exact: false, - type: "array", - }); - status.dirty(); - } - const items = [...ctx.data] - .map((item, itemIndex) => { - const schema = this._def.items[itemIndex] || this._def.rest; - if (!schema) - return null; - return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex)); - }) - .filter((x) => !!x); // filter nulls - if (ctx.common.async) { - return Promise.all(items).then((results) => { - return ParseStatus.mergeArray(status, results); - }); - } - else { - return ParseStatus.mergeArray(status, items); - } - } - get items() { - return this._def.items; - } - rest(rest) { - return new ZodTuple({ - ...this._def, - rest, - }); - } - } - ZodTuple.create = (schemas, params) => { - if (!Array.isArray(schemas)) { - throw new Error("You must pass an array of schemas to z.tuple([ ... ])"); - } - return new ZodTuple({ - items: schemas, - typeName: ZodFirstPartyTypeKind.ZodTuple, - rest: null, - ...processCreateParams(params), - }); - }; - class ZodRecord extends ZodType { - get keySchema() { - return this._def.keyType; - } - get valueSchema() { - return this._def.valueType; - } - _parse(input) { - const { status, ctx } = this._processInputParams(input); - if (ctx.parsedType !== ZodParsedType.object) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.object, - received: ctx.parsedType, - }); - return INVALID; - } - const pairs = []; - const keyType = this._def.keyType; - const valueType = this._def.valueType; - for (const key in ctx.data) { - pairs.push({ - key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)), - value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)), - alwaysSet: key in ctx.data, - }); - } - if (ctx.common.async) { - return ParseStatus.mergeObjectAsync(status, pairs); - } - else { - return ParseStatus.mergeObjectSync(status, pairs); - } - } - get element() { - return this._def.valueType; - } - static create(first, second, third) { - if (second instanceof ZodType) { - return new ZodRecord({ - keyType: first, - valueType: second, - typeName: ZodFirstPartyTypeKind.ZodRecord, - ...processCreateParams(third), - }); - } - return new ZodRecord({ - keyType: ZodString.create(), - valueType: first, - typeName: ZodFirstPartyTypeKind.ZodRecord, - ...processCreateParams(second), - }); - } - } - class ZodMap extends ZodType { - get keySchema() { - return this._def.keyType; - } - get valueSchema() { - return this._def.valueType; - } - _parse(input) { - const { status, ctx } = this._processInputParams(input); - if (ctx.parsedType !== ZodParsedType.map) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.map, - received: ctx.parsedType, - }); - return INVALID; - } - const keyType = this._def.keyType; - const valueType = this._def.valueType; - const pairs = [...ctx.data.entries()].map(([key, value], index) => { - return { - key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, "key"])), - value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, "value"])), - }; - }); - if (ctx.common.async) { - const finalMap = new Map(); - return Promise.resolve().then(async () => { - for (const pair of pairs) { - const key = await pair.key; - const value = await pair.value; - if (key.status === "aborted" || value.status === "aborted") { - return INVALID; - } - if (key.status === "dirty" || value.status === "dirty") { - status.dirty(); - } - finalMap.set(key.value, value.value); - } - return { status: status.value, value: finalMap }; - }); - } - else { - const finalMap = new Map(); - for (const pair of pairs) { - const key = pair.key; - const value = pair.value; - if (key.status === "aborted" || value.status === "aborted") { - return INVALID; - } - if (key.status === "dirty" || value.status === "dirty") { - status.dirty(); - } - finalMap.set(key.value, value.value); - } - return { status: status.value, value: finalMap }; - } - } - } - ZodMap.create = (keyType, valueType, params) => { - return new ZodMap({ - valueType, - keyType, - typeName: ZodFirstPartyTypeKind.ZodMap, - ...processCreateParams(params), - }); - }; - class ZodSet extends ZodType { - _parse(input) { - const { status, ctx } = this._processInputParams(input); - if (ctx.parsedType !== ZodParsedType.set) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.set, - received: ctx.parsedType, - }); - return INVALID; - } - const def = this._def; - if (def.minSize !== null) { - if (ctx.data.size < def.minSize.value) { - addIssueToContext(ctx, { - code: ZodIssueCode.too_small, - minimum: def.minSize.value, - type: "set", - inclusive: true, - exact: false, - message: def.minSize.message, - }); - status.dirty(); - } - } - if (def.maxSize !== null) { - if (ctx.data.size > def.maxSize.value) { - addIssueToContext(ctx, { - code: ZodIssueCode.too_big, - maximum: def.maxSize.value, - type: "set", - inclusive: true, - exact: false, - message: def.maxSize.message, - }); - status.dirty(); - } - } - const valueType = this._def.valueType; - function finalizeSet(elements) { - const parsedSet = new Set(); - for (const element of elements) { - if (element.status === "aborted") - return INVALID; - if (element.status === "dirty") - status.dirty(); - parsedSet.add(element.value); - } - return { status: status.value, value: parsedSet }; - } - const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i))); - if (ctx.common.async) { - return Promise.all(elements).then((elements) => finalizeSet(elements)); - } - else { - return finalizeSet(elements); - } - } - min(minSize, message) { - return new ZodSet({ - ...this._def, - minSize: { value: minSize, message: errorUtil.toString(message) }, - }); - } - max(maxSize, message) { - return new ZodSet({ - ...this._def, - maxSize: { value: maxSize, message: errorUtil.toString(message) }, - }); - } - size(size, message) { - return this.min(size, message).max(size, message); - } - nonempty(message) { - return this.min(1, message); - } - } - ZodSet.create = (valueType, params) => { - return new ZodSet({ - valueType, - minSize: null, - maxSize: null, - typeName: ZodFirstPartyTypeKind.ZodSet, - ...processCreateParams(params), - }); - }; - class ZodFunction extends ZodType { - constructor() { - super(...arguments); - this.validate = this.implement; - } - _parse(input) { - const { ctx } = this._processInputParams(input); - if (ctx.parsedType !== ZodParsedType.function) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.function, - received: ctx.parsedType, - }); - return INVALID; - } - function makeArgsIssue(args, error) { - return makeIssue({ - data: args, - path: ctx.path, - errorMaps: [ - ctx.common.contextualErrorMap, - ctx.schemaErrorMap, - getErrorMap(), - errorMap, - ].filter((x) => !!x), - issueData: { - code: ZodIssueCode.invalid_arguments, - argumentsError: error, - }, - }); - } - function makeReturnsIssue(returns, error) { - return makeIssue({ - data: returns, - path: ctx.path, - errorMaps: [ - ctx.common.contextualErrorMap, - ctx.schemaErrorMap, - getErrorMap(), - errorMap, - ].filter((x) => !!x), - issueData: { - code: ZodIssueCode.invalid_return_type, - returnTypeError: error, - }, - }); - } - const params = { errorMap: ctx.common.contextualErrorMap }; - const fn = ctx.data; - if (this._def.returns instanceof ZodPromise) { - // Would love a way to avoid disabling this rule, but we need - // an alias (using an arrow function was what caused 2651). - // eslint-disable-next-line @typescript-eslint/no-this-alias - const me = this; - return OK(async function (...args) { - const error = new ZodError([]); - const parsedArgs = await me._def.args - .parseAsync(args, params) - .catch((e) => { - error.addIssue(makeArgsIssue(args, e)); - throw error; - }); - const result = await Reflect.apply(fn, this, parsedArgs); - const parsedReturns = await me._def.returns._def.type - .parseAsync(result, params) - .catch((e) => { - error.addIssue(makeReturnsIssue(result, e)); - throw error; - }); - return parsedReturns; - }); - } - else { - // Would love a way to avoid disabling this rule, but we need - // an alias (using an arrow function was what caused 2651). - // eslint-disable-next-line @typescript-eslint/no-this-alias - const me = this; - return OK(function (...args) { - const parsedArgs = me._def.args.safeParse(args, params); - if (!parsedArgs.success) { - throw new ZodError([makeArgsIssue(args, parsedArgs.error)]); - } - const result = Reflect.apply(fn, this, parsedArgs.data); - const parsedReturns = me._def.returns.safeParse(result, params); - if (!parsedReturns.success) { - throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]); - } - return parsedReturns.data; - }); - } - } - parameters() { - return this._def.args; - } - returnType() { - return this._def.returns; - } - args(...items) { - return new ZodFunction({ - ...this._def, - args: ZodTuple.create(items).rest(ZodUnknown.create()), - }); - } - returns(returnType) { - return new ZodFunction({ - ...this._def, - returns: returnType, - }); - } - implement(func) { - const validatedFunc = this.parse(func); - return validatedFunc; - } - strictImplement(func) { - const validatedFunc = this.parse(func); - return validatedFunc; - } - static create(args, returns, params) { - return new ZodFunction({ - args: (args - ? args - : ZodTuple.create([]).rest(ZodUnknown.create())), - returns: returns || ZodUnknown.create(), - typeName: ZodFirstPartyTypeKind.ZodFunction, - ...processCreateParams(params), - }); - } - } - class ZodLazy extends ZodType { - get schema() { - return this._def.getter(); - } - _parse(input) { - const { ctx } = this._processInputParams(input); - const lazySchema = this._def.getter(); - return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx }); - } - } - ZodLazy.create = (getter, params) => { - return new ZodLazy({ - getter: getter, - typeName: ZodFirstPartyTypeKind.ZodLazy, - ...processCreateParams(params), - }); - }; - class ZodLiteral extends ZodType { - _parse(input) { - if (input.data !== this._def.value) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - received: ctx.data, - code: ZodIssueCode.invalid_literal, - expected: this._def.value, - }); - return INVALID; - } - return { status: "valid", value: input.data }; - } - get value() { - return this._def.value; - } - } - ZodLiteral.create = (value, params) => { - return new ZodLiteral({ - value: value, - typeName: ZodFirstPartyTypeKind.ZodLiteral, - ...processCreateParams(params), - }); - }; - function createZodEnum(values, params) { - return new ZodEnum({ - values, - typeName: ZodFirstPartyTypeKind.ZodEnum, - ...processCreateParams(params), - }); - } - class ZodEnum extends ZodType { - constructor() { - super(...arguments); - _ZodEnum_cache.set(this, void 0); - } - _parse(input) { - if (typeof input.data !== "string") { - const ctx = this._getOrReturnCtx(input); - const expectedValues = this._def.values; - addIssueToContext(ctx, { - expected: util.joinValues(expectedValues), - received: ctx.parsedType, - code: ZodIssueCode.invalid_type, - }); - return INVALID; - } - if (!__classPrivateFieldGet(this, _ZodEnum_cache)) { - __classPrivateFieldSet(this, _ZodEnum_cache, new Set(this._def.values)); - } - if (!__classPrivateFieldGet(this, _ZodEnum_cache).has(input.data)) { - const ctx = this._getOrReturnCtx(input); - const expectedValues = this._def.values; - addIssueToContext(ctx, { - received: ctx.data, - code: ZodIssueCode.invalid_enum_value, - options: expectedValues, - }); - return INVALID; - } - return OK(input.data); - } - get options() { - return this._def.values; - } - get enum() { - const enumValues = {}; - for (const val of this._def.values) { - enumValues[val] = val; - } - return enumValues; - } - get Values() { - const enumValues = {}; - for (const val of this._def.values) { - enumValues[val] = val; - } - return enumValues; - } - get Enum() { - const enumValues = {}; - for (const val of this._def.values) { - enumValues[val] = val; - } - return enumValues; - } - extract(values, newDef = this._def) { - return ZodEnum.create(values, { - ...this._def, - ...newDef, - }); - } - exclude(values, newDef = this._def) { - return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), { - ...this._def, - ...newDef, - }); - } - } - _ZodEnum_cache = new WeakMap(); - ZodEnum.create = createZodEnum; - class ZodNativeEnum extends ZodType { - constructor() { - super(...arguments); - _ZodNativeEnum_cache.set(this, void 0); - } - _parse(input) { - const nativeEnumValues = util.getValidEnumValues(this._def.values); - const ctx = this._getOrReturnCtx(input); - if (ctx.parsedType !== ZodParsedType.string && - ctx.parsedType !== ZodParsedType.number) { - const expectedValues = util.objectValues(nativeEnumValues); - addIssueToContext(ctx, { - expected: util.joinValues(expectedValues), - received: ctx.parsedType, - code: ZodIssueCode.invalid_type, - }); - return INVALID; + const str = (_a = storage.getItem(name)) != null ? _a : null; + if (str instanceof Promise) { + return str.then(parse); } - if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache)) { - __classPrivateFieldSet(this, _ZodNativeEnum_cache, new Set(util.getValidEnumValues(this._def.values))); + return parse(str); + }, + setItem: (name, newValue) => storage.setItem( + name, + JSON.stringify(newValue, void 0 ) + ), + removeItem: (name) => storage.removeItem(name) + }; + return persistStorage; + } + const toThenable = (fn) => (input) => { + try { + const result = fn(input); + if (result instanceof Promise) { + return result; + } + return { + then(onFulfilled) { + return toThenable(onFulfilled)(result); + }, + catch(_onRejected) { + return this; } - if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache).has(input.data)) { - const expectedValues = util.objectValues(nativeEnumValues); - addIssueToContext(ctx, { - received: ctx.data, - code: ZodIssueCode.invalid_enum_value, - options: expectedValues, - }); - return INVALID; + }; + } catch (e) { + return { + then(_onFulfilled) { + return this; + }, + catch(onRejected) { + return toThenable(onRejected)(e); } - return OK(input.data); - } - get enum() { - return this._def.values; + }; } - } - _ZodNativeEnum_cache = new WeakMap(); - ZodNativeEnum.create = (values, params) => { - return new ZodNativeEnum({ - values: values, - typeName: ZodFirstPartyTypeKind.ZodNativeEnum, - ...processCreateParams(params), - }); - }; - class ZodPromise extends ZodType { - unwrap() { - return this._def.type; + }; + const persistImpl = (config, baseOptions) => (set, get, api) => { + let options = { + storage: createJSONStorage(() => localStorage), + partialize: (state) => state, + version: 0, + merge: (persistedState, currentState) => ({ + ...currentState, + ...persistedState + }), + ...baseOptions + }; + let hasHydrated = false; + const hydrationListeners = /* @__PURE__ */ new Set(); + const finishHydrationListeners = /* @__PURE__ */ new Set(); + let storage = options.storage; + if (!storage) { + return config( + (...args) => { + console.warn( + `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.` + ); + set(...args); + }, + get, + api + ); } - _parse(input) { - const { ctx } = this._processInputParams(input); - if (ctx.parsedType !== ZodParsedType.promise && - ctx.common.async === false) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.promise, - received: ctx.parsedType, - }); - return INVALID; + const setItem = () => { + const state = options.partialize({ ...get() }); + return storage.setItem(options.name, { + state, + version: options.version + }); + }; + const savedSetState = api.setState; + api.setState = (state, replace) => { + savedSetState(state, replace); + void setItem(); + }; + const configResult = config( + (...args) => { + set(...args); + void setItem(); + }, + get, + api + ); + api.getInitialState = () => configResult; + let stateFromStorage; + const hydrate = () => { + var _a, _b; + if (!storage) return; + hasHydrated = false; + hydrationListeners.forEach((cb) => { + var _a2; + return cb((_a2 = get()) != null ? _a2 : configResult); + }); + const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0; + return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => { + if (deserializedStorageValue) { + if (typeof deserializedStorageValue.version === "number" && deserializedStorageValue.version !== options.version) { + if (options.migrate) { + return [ + true, + options.migrate( + deserializedStorageValue.state, + deserializedStorageValue.version + ) + ]; + } + console.error( + `State loaded from storage couldn't be migrated since no migrate function was provided` + ); + } else { + return [false, deserializedStorageValue.state]; + } } - const promisified = ctx.parsedType === ZodParsedType.promise - ? ctx.data - : Promise.resolve(ctx.data); - return OK(promisified.then((data) => { - return this._def.type.parseAsync(data, { - path: ctx.path, - errorMap: ctx.common.contextualErrorMap, - }); - })); - } - } - ZodPromise.create = (schema, params) => { - return new ZodPromise({ - type: schema, - typeName: ZodFirstPartyTypeKind.ZodPromise, - ...processCreateParams(params), - }); - }; - class ZodEffects extends ZodType { - innerType() { - return this._def.schema; - } - sourceType() { - return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects - ? this._def.schema.sourceType() - : this._def.schema; - } - _parse(input) { - const { status, ctx } = this._processInputParams(input); - const effect = this._def.effect || null; - const checkCtx = { - addIssue: (arg) => { - addIssueToContext(ctx, arg); - if (arg.fatal) { - status.abort(); - } - else { - status.dirty(); - } - }, - get path() { - return ctx.path; - }, + return [false, void 0]; + }).then((migrationResult) => { + var _a2; + const [migrated, migratedState] = migrationResult; + stateFromStorage = options.merge( + migratedState, + (_a2 = get()) != null ? _a2 : configResult + ); + set(stateFromStorage, true); + if (migrated) { + return setItem(); + } + }).then(() => { + postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0); + stateFromStorage = get(); + hasHydrated = true; + finishHydrationListeners.forEach((cb) => cb(stateFromStorage)); + }).catch((e) => { + postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e); + }); + }; + api.persist = { + setOptions: (newOptions) => { + options = { + ...options, + ...newOptions }; - checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx); - if (effect.type === "preprocess") { - const processed = effect.transform(ctx.data, checkCtx); - if (ctx.common.async) { - return Promise.resolve(processed).then(async (processed) => { - if (status.value === "aborted") - return INVALID; - const result = await this._def.schema._parseAsync({ - data: processed, - path: ctx.path, - parent: ctx, - }); - if (result.status === "aborted") - return INVALID; - if (result.status === "dirty") - return DIRTY(result.value); - if (status.value === "dirty") - return DIRTY(result.value); - return result; - }); - } - else { - if (status.value === "aborted") - return INVALID; - const result = this._def.schema._parseSync({ - data: processed, - path: ctx.path, - parent: ctx, - }); - if (result.status === "aborted") - return INVALID; - if (result.status === "dirty") - return DIRTY(result.value); - if (status.value === "dirty") - return DIRTY(result.value); - return result; - } - } - if (effect.type === "refinement") { - const executeRefinement = (acc) => { - const result = effect.refinement(acc, checkCtx); - if (ctx.common.async) { - return Promise.resolve(result); - } - if (result instanceof Promise) { - throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead."); - } - return acc; - }; - if (ctx.common.async === false) { - const inner = this._def.schema._parseSync({ - data: ctx.data, - path: ctx.path, - parent: ctx, - }); - if (inner.status === "aborted") - return INVALID; - if (inner.status === "dirty") - status.dirty(); - // return value is ignored - executeRefinement(inner.value); - return { status: status.value, value: inner.value }; - } - else { - return this._def.schema - ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }) - .then((inner) => { - if (inner.status === "aborted") - return INVALID; - if (inner.status === "dirty") - status.dirty(); - return executeRefinement(inner.value).then(() => { - return { status: status.value, value: inner.value }; - }); - }); - } - } - if (effect.type === "transform") { - if (ctx.common.async === false) { - const base = this._def.schema._parseSync({ - data: ctx.data, - path: ctx.path, - parent: ctx, - }); - if (!isValid(base)) - return base; - const result = effect.transform(base.value, checkCtx); - if (result instanceof Promise) { - throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`); - } - return { status: status.value, value: result }; - } - else { - return this._def.schema - ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }) - .then((base) => { - if (!isValid(base)) - return base; - return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ status: status.value, value: result })); - }); - } + if (newOptions.storage) { + storage = newOptions.storage; } - util.assertNever(effect); + }, + clearStorage: () => { + storage == null ? void 0 : storage.removeItem(options.name); + }, + getOptions: () => options, + rehydrate: () => hydrate(), + hasHydrated: () => hasHydrated, + onHydrate: (cb) => { + hydrationListeners.add(cb); + return () => { + hydrationListeners.delete(cb); + }; + }, + onFinishHydration: (cb) => { + finishHydrationListeners.add(cb); + return () => { + finishHydrationListeners.delete(cb); + }; + } + }; + if (!options.skipHydration) { + hydrate(); } - } - ZodEffects.create = (schema, effect, params) => { - return new ZodEffects({ - schema, - typeName: ZodFirstPartyTypeKind.ZodEffects, - effect, - ...processCreateParams(params), - }); - }; - ZodEffects.createWithPreprocess = (preprocess, schema, params) => { - return new ZodEffects({ - schema, - effect: { type: "preprocess", transform: preprocess }, - typeName: ZodFirstPartyTypeKind.ZodEffects, - ...processCreateParams(params), - }); - }; - class ZodOptional extends ZodType { - _parse(input) { - const parsedType = this._getType(input); - if (parsedType === ZodParsedType.undefined) { - return OK(undefined); - } - return this._def.innerType._parse(input); + return stateFromStorage || configResult; + }; + const persist = persistImpl; + + // src/utils/env.ts + var NOTHING = Symbol.for("immer-nothing"); + var DRAFTABLE = Symbol.for("immer-draftable"); + var DRAFT_STATE = Symbol.for("immer-state"); + + // src/utils/errors.ts + var errors = process.env.NODE_ENV !== "production" ? [ + // All error codes, starting by 0: + function(plugin) { + return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \`enable${plugin}()\` when initializing your application.`; + }, + function(thing) { + return `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`; + }, + "This object has been frozen and should not be mutated", + function(data) { + return "Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? " + data; + }, + "An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.", + "Immer forbids circular references", + "The first or second argument to `produce` must be a function", + "The third argument to `produce` must be a function or undefined", + "First argument to `createDraft` must be a plain object, an array, or an immerable object", + "First argument to `finishDraft` must be a draft returned by `createDraft`", + function(thing) { + return `'current' expects a draft, got: ${thing}`; + }, + "Object.defineProperty() cannot be used on an Immer draft", + "Object.setPrototypeOf() cannot be used on an Immer draft", + "Immer only supports deleting array indices", + "Immer only supports setting array indices and the 'length' property", + function(thing) { + return `'original' expects a draft, got: ${thing}`; + } + // Note: if more errors are added, the errorOffset in Patches.ts should be increased + // See Patches.ts for additional errors + ] : []; + function die(error, ...args) { + if (process.env.NODE_ENV !== "production") { + const e = errors[error]; + const msg = typeof e === "function" ? e.apply(null, args) : e; + throw new Error(`[Immer] ${msg}`); + } + throw new Error( + `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf` + ); + } + + // src/utils/common.ts + var getPrototypeOf = Object.getPrototypeOf; + function isDraft(value) { + return !!value && !!value[DRAFT_STATE]; + } + function isDraftable(value) { + if (!value) + return false; + return isPlainObject(value) || Array.isArray(value) || !!value[DRAFTABLE] || !!value.constructor?.[DRAFTABLE] || isMap(value) || isSet(value); + } + var objectCtorString = Object.prototype.constructor.toString(); + function isPlainObject(value) { + if (!value || typeof value !== "object") + return false; + const proto = getPrototypeOf(value); + if (proto === null) { + return true; } - unwrap() { - return this._def.innerType; + const Ctor = Object.hasOwnProperty.call(proto, "constructor") && proto.constructor; + if (Ctor === Object) + return true; + return typeof Ctor == "function" && Function.toString.call(Ctor) === objectCtorString; + } + function each(obj, iter) { + if (getArchtype(obj) === 0 /* Object */) { + Reflect.ownKeys(obj).forEach((key) => { + iter(key, obj[key], obj); + }); + } else { + obj.forEach((entry, index) => iter(index, entry, obj)); } - } - ZodOptional.create = (type, params) => { - return new ZodOptional({ - innerType: type, - typeName: ZodFirstPartyTypeKind.ZodOptional, - ...processCreateParams(params), - }); - }; - class ZodNullable extends ZodType { - _parse(input) { - const parsedType = this._getType(input); - if (parsedType === ZodParsedType.null) { - return OK(null); - } - return this._def.innerType._parse(input); + } + function getArchtype(thing) { + const state = thing[DRAFT_STATE]; + return state ? state.type_ : Array.isArray(thing) ? 1 /* Array */ : isMap(thing) ? 2 /* Map */ : isSet(thing) ? 3 /* Set */ : 0 /* Object */; + } + function has(thing, prop) { + return getArchtype(thing) === 2 /* Map */ ? thing.has(prop) : Object.prototype.hasOwnProperty.call(thing, prop); + } + function set(thing, propOrOldValue, value) { + const t = getArchtype(thing); + if (t === 2 /* Map */) + thing.set(propOrOldValue, value); + else if (t === 3 /* Set */) { + thing.add(value); + } else + thing[propOrOldValue] = value; + } + function is(x, y) { + if (x === y) { + return x !== 0 || 1 / x === 1 / y; + } else { + return x !== x && y !== y; } - unwrap() { - return this._def.innerType; + } + function isMap(target) { + return target instanceof Map; + } + function isSet(target) { + return target instanceof Set; + } + function latest(state) { + return state.copy_ || state.base_; + } + function shallowCopy(base, strict) { + if (isMap(base)) { + return new Map(base); + } + if (isSet(base)) { + return new Set(base); + } + if (Array.isArray(base)) + return Array.prototype.slice.call(base); + const isPlain = isPlainObject(base); + if (strict === true || strict === "class_only" && !isPlain) { + const descriptors = Object.getOwnPropertyDescriptors(base); + delete descriptors[DRAFT_STATE]; + let keys = Reflect.ownKeys(descriptors); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const desc = descriptors[key]; + if (desc.writable === false) { + desc.writable = true; + desc.configurable = true; + } + if (desc.get || desc.set) + descriptors[key] = { + configurable: true, + writable: true, + // could live with !!desc.set as well here... + enumerable: desc.enumerable, + value: base[key] + }; + } + return Object.create(getPrototypeOf(base), descriptors); + } else { + const proto = getPrototypeOf(base); + if (proto !== null && isPlain) { + return { ...base }; + } + const obj = Object.create(proto); + return Object.assign(obj, base); } - } - ZodNullable.create = (type, params) => { - return new ZodNullable({ - innerType: type, - typeName: ZodFirstPartyTypeKind.ZodNullable, - ...processCreateParams(params), - }); - }; - class ZodDefault extends ZodType { - _parse(input) { - const { ctx } = this._processInputParams(input); - let data = ctx.data; - if (ctx.parsedType === ZodParsedType.undefined) { - data = this._def.defaultValue(); - } - return this._def.innerType._parse({ - data, - path: ctx.path, - parent: ctx, - }); + } + function freeze(obj, deep = false) { + if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) + return obj; + if (getArchtype(obj) > 1) { + obj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections; + } + Object.freeze(obj); + if (deep) + Object.entries(obj).forEach(([key, value]) => freeze(value, true)); + return obj; + } + function dontMutateFrozenCollections() { + die(2); + } + function isFrozen(obj) { + return Object.isFrozen(obj); + } + + // src/utils/plugins.ts + var plugins = {}; + function getPlugin(pluginKey) { + const plugin = plugins[pluginKey]; + if (!plugin) { + die(0, pluginKey); } - removeDefault() { - return this._def.innerType; + return plugin; + } + + // src/core/scope.ts + var currentScope; + function getCurrentScope() { + return currentScope; + } + function createScope(parent_, immer_) { + return { + drafts_: [], + parent_, + immer_, + // Whenever the modified draft contains a draft from another scope, we + // need to prevent auto-freezing so the unowned draft can be finalized. + canAutoFreeze_: true, + unfinalizedDrafts_: 0 + }; + } + function usePatchesInScope(scope, patchListener) { + if (patchListener) { + getPlugin("Patches"); + scope.patches_ = []; + scope.inversePatches_ = []; + scope.patchListener_ = patchListener; } - } - ZodDefault.create = (type, params) => { - return new ZodDefault({ - innerType: type, - typeName: ZodFirstPartyTypeKind.ZodDefault, - defaultValue: typeof params.default === "function" - ? params.default - : () => params.default, - ...processCreateParams(params), - }); - }; - class ZodCatch extends ZodType { - _parse(input) { - const { ctx } = this._processInputParams(input); - // newCtx is used to not collect issues from inner types in ctx - const newCtx = { - ...ctx, - common: { - ...ctx.common, - issues: [], - }, - }; - const result = this._def.innerType._parse({ - data: newCtx.data, - path: newCtx.path, - parent: { - ...newCtx, - }, - }); - if (isAsync(result)) { - return result.then((result) => { - return { - status: "valid", - value: result.status === "valid" - ? result.value - : this._def.catchValue({ - get error() { - return new ZodError(newCtx.common.issues); - }, - input: newCtx.data, - }), - }; - }); - } - else { - return { - status: "valid", - value: result.status === "valid" - ? result.value - : this._def.catchValue({ - get error() { - return new ZodError(newCtx.common.issues); - }, - input: newCtx.data, - }), - }; - } + } + function revokeScope(scope) { + leaveScope(scope); + scope.drafts_.forEach(revokeDraft); + scope.drafts_ = null; + } + function leaveScope(scope) { + if (scope === currentScope) { + currentScope = scope.parent_; } - removeCatch() { - return this._def.innerType; + } + function enterScope(immer2) { + return currentScope = createScope(currentScope, immer2); + } + function revokeDraft(draft) { + const state = draft[DRAFT_STATE]; + if (state.type_ === 0 /* Object */ || state.type_ === 1 /* Array */) + state.revoke_(); + else + state.revoked_ = true; + } + + // src/core/finalize.ts + function processResult(result, scope) { + scope.unfinalizedDrafts_ = scope.drafts_.length; + const baseDraft = scope.drafts_[0]; + const isReplaced = result !== void 0 && result !== baseDraft; + if (isReplaced) { + if (baseDraft[DRAFT_STATE].modified_) { + revokeScope(scope); + die(4); + } + if (isDraftable(result)) { + result = finalize(scope, result); + if (!scope.parent_) + maybeFreeze(scope, result); + } + if (scope.patches_) { + getPlugin("Patches").generateReplacementPatches_( + baseDraft[DRAFT_STATE].base_, + result, + scope.patches_, + scope.inversePatches_ + ); + } + } else { + result = finalize(scope, baseDraft, []); } - } - ZodCatch.create = (type, params) => { - return new ZodCatch({ - innerType: type, - typeName: ZodFirstPartyTypeKind.ZodCatch, - catchValue: typeof params.catch === "function" ? params.catch : () => params.catch, - ...processCreateParams(params), - }); - }; - class ZodNaN extends ZodType { - _parse(input) { - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.nan) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.nan, - received: ctx.parsedType, - }); - return INVALID; - } - return { status: "valid", value: input.data }; + revokeScope(scope); + if (scope.patches_) { + scope.patchListener_(scope.patches_, scope.inversePatches_); } - } - ZodNaN.create = (params) => { - return new ZodNaN({ - typeName: ZodFirstPartyTypeKind.ZodNaN, - ...processCreateParams(params), - }); - }; - const BRAND = Symbol("zod_brand"); - class ZodBranded extends ZodType { - _parse(input) { - const { ctx } = this._processInputParams(input); - const data = ctx.data; - return this._def.type._parse({ - data, - path: ctx.path, - parent: ctx, - }); + return result !== NOTHING ? result : void 0; + } + function finalize(rootScope, value, path) { + if (isFrozen(value)) + return value; + const state = value[DRAFT_STATE]; + if (!state) { + each( + value, + (key, childValue) => finalizeProperty(rootScope, state, value, key, childValue, path) + ); + return value; } - unwrap() { - return this._def.type; + if (state.scope_ !== rootScope) + return value; + if (!state.modified_) { + maybeFreeze(rootScope, state.base_, true); + return state.base_; } - } - class ZodPipeline extends ZodType { - _parse(input) { - const { status, ctx } = this._processInputParams(input); - if (ctx.common.async) { - const handleAsync = async () => { - const inResult = await this._def.in._parseAsync({ - data: ctx.data, - path: ctx.path, - parent: ctx, - }); - if (inResult.status === "aborted") - return INVALID; - if (inResult.status === "dirty") { - status.dirty(); - return DIRTY(inResult.value); - } - else { - return this._def.out._parseAsync({ - data: inResult.value, - path: ctx.path, - parent: ctx, - }); - } - }; - return handleAsync(); - } - else { - const inResult = this._def.in._parseSync({ - data: ctx.data, - path: ctx.path, - parent: ctx, - }); - if (inResult.status === "aborted") - return INVALID; - if (inResult.status === "dirty") { - status.dirty(); - return { - status: "dirty", - value: inResult.value, - }; - } - else { - return this._def.out._parseSync({ - data: inResult.value, - path: ctx.path, - parent: ctx, - }); - } - } + if (!state.finalized_) { + state.finalized_ = true; + state.scope_.unfinalizedDrafts_--; + const result = state.copy_; + let resultEach = result; + let isSet2 = false; + if (state.type_ === 3 /* Set */) { + resultEach = new Set(result); + result.clear(); + isSet2 = true; + } + each( + resultEach, + (key, childValue) => finalizeProperty(rootScope, state, result, key, childValue, path, isSet2) + ); + maybeFreeze(rootScope, result, false); + if (path && rootScope.patches_) { + getPlugin("Patches").generatePatches_( + state, + path, + rootScope.patches_, + rootScope.inversePatches_ + ); + } } - static create(a, b) { - return new ZodPipeline({ - in: a, - out: b, - typeName: ZodFirstPartyTypeKind.ZodPipeline, - }); + return state.copy_; + } + function finalizeProperty(rootScope, parentState, targetObject, prop, childValue, rootPath, targetIsSet) { + if (process.env.NODE_ENV !== "production" && childValue === targetObject) + die(5); + if (isDraft(childValue)) { + const path = rootPath && parentState && parentState.type_ !== 3 /* Set */ && // Set objects are atomic since they have no keys. + !has(parentState.assigned_, prop) ? rootPath.concat(prop) : void 0; + const res = finalize(rootScope, childValue, path); + set(targetObject, prop, res); + if (isDraft(res)) { + rootScope.canAutoFreeze_ = false; + } else + return; + } else if (targetIsSet) { + targetObject.add(childValue); } - } - class ZodReadonly extends ZodType { - _parse(input) { - const result = this._def.innerType._parse(input); - const freeze = (data) => { - if (isValid(data)) { - data.value = Object.freeze(data.value); - } - return data; - }; - return isAsync(result) - ? result.then((data) => freeze(data)) - : freeze(result); + if (isDraftable(childValue) && !isFrozen(childValue)) { + if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) { + return; + } + finalize(rootScope, childValue); + if ((!parentState || !parentState.scope_.parent_) && typeof prop !== "symbol" && Object.prototype.propertyIsEnumerable.call(targetObject, prop)) + maybeFreeze(rootScope, childValue); } - unwrap() { - return this._def.innerType; + } + function maybeFreeze(scope, value, deep = false) { + if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) { + freeze(value, deep); } - } - ZodReadonly.create = (type, params) => { - return new ZodReadonly({ - innerType: type, - typeName: ZodFirstPartyTypeKind.ZodReadonly, - ...processCreateParams(params), - }); - }; - function custom(check, params = {}, - /** - * @deprecated - * - * Pass `fatal` into the params object instead: - * - * ```ts - * z.string().custom((val) => val.length > 5, { fatal: false }) - * ``` - * - */ - fatal) { - if (check) - return ZodAny.create().superRefine((data, ctx) => { - var _a, _b; - if (!check(data)) { - const p = typeof params === "function" - ? params(data) - : typeof params === "string" - ? { message: params } - : params; - const _fatal = (_b = (_a = p.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true; - const p2 = typeof p === "string" ? { message: p } : p; - ctx.addIssue({ code: "custom", ...p2, fatal: _fatal }); - } - }); - return ZodAny.create(); - } - const late = { - object: ZodObject.lazycreate, - }; - var ZodFirstPartyTypeKind; - (function (ZodFirstPartyTypeKind) { - ZodFirstPartyTypeKind["ZodString"] = "ZodString"; - ZodFirstPartyTypeKind["ZodNumber"] = "ZodNumber"; - ZodFirstPartyTypeKind["ZodNaN"] = "ZodNaN"; - ZodFirstPartyTypeKind["ZodBigInt"] = "ZodBigInt"; - ZodFirstPartyTypeKind["ZodBoolean"] = "ZodBoolean"; - ZodFirstPartyTypeKind["ZodDate"] = "ZodDate"; - ZodFirstPartyTypeKind["ZodSymbol"] = "ZodSymbol"; - ZodFirstPartyTypeKind["ZodUndefined"] = "ZodUndefined"; - ZodFirstPartyTypeKind["ZodNull"] = "ZodNull"; - ZodFirstPartyTypeKind["ZodAny"] = "ZodAny"; - ZodFirstPartyTypeKind["ZodUnknown"] = "ZodUnknown"; - ZodFirstPartyTypeKind["ZodNever"] = "ZodNever"; - ZodFirstPartyTypeKind["ZodVoid"] = "ZodVoid"; - ZodFirstPartyTypeKind["ZodArray"] = "ZodArray"; - ZodFirstPartyTypeKind["ZodObject"] = "ZodObject"; - ZodFirstPartyTypeKind["ZodUnion"] = "ZodUnion"; - ZodFirstPartyTypeKind["ZodDiscriminatedUnion"] = "ZodDiscriminatedUnion"; - ZodFirstPartyTypeKind["ZodIntersection"] = "ZodIntersection"; - ZodFirstPartyTypeKind["ZodTuple"] = "ZodTuple"; - ZodFirstPartyTypeKind["ZodRecord"] = "ZodRecord"; - ZodFirstPartyTypeKind["ZodMap"] = "ZodMap"; - ZodFirstPartyTypeKind["ZodSet"] = "ZodSet"; - ZodFirstPartyTypeKind["ZodFunction"] = "ZodFunction"; - ZodFirstPartyTypeKind["ZodLazy"] = "ZodLazy"; - ZodFirstPartyTypeKind["ZodLiteral"] = "ZodLiteral"; - ZodFirstPartyTypeKind["ZodEnum"] = "ZodEnum"; - ZodFirstPartyTypeKind["ZodEffects"] = "ZodEffects"; - ZodFirstPartyTypeKind["ZodNativeEnum"] = "ZodNativeEnum"; - ZodFirstPartyTypeKind["ZodOptional"] = "ZodOptional"; - ZodFirstPartyTypeKind["ZodNullable"] = "ZodNullable"; - ZodFirstPartyTypeKind["ZodDefault"] = "ZodDefault"; - ZodFirstPartyTypeKind["ZodCatch"] = "ZodCatch"; - ZodFirstPartyTypeKind["ZodPromise"] = "ZodPromise"; - ZodFirstPartyTypeKind["ZodBranded"] = "ZodBranded"; - ZodFirstPartyTypeKind["ZodPipeline"] = "ZodPipeline"; - ZodFirstPartyTypeKind["ZodReadonly"] = "ZodReadonly"; - })(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {})); - const instanceOfType = ( - // const instanceOfType = any>( - cls, params = { - message: `Input not instance of ${cls.name}`, - }) => custom((data) => data instanceof cls, params); - const stringType = ZodString.create; - const numberType = ZodNumber.create; - const nanType = ZodNaN.create; - const bigIntType = ZodBigInt.create; - const booleanType = ZodBoolean.create; - const dateType = ZodDate.create; - const symbolType = ZodSymbol.create; - const undefinedType = ZodUndefined.create; - const nullType = ZodNull.create; - const anyType = ZodAny.create; - const unknownType = ZodUnknown.create; - const neverType = ZodNever.create; - const voidType = ZodVoid.create; - const arrayType = ZodArray.create; - const objectType = ZodObject.create; - const strictObjectType = ZodObject.strictCreate; - const unionType = ZodUnion.create; - const discriminatedUnionType = ZodDiscriminatedUnion.create; - const intersectionType = ZodIntersection.create; - const tupleType = ZodTuple.create; - const recordType = ZodRecord.create; - const mapType = ZodMap.create; - const setType = ZodSet.create; - const functionType = ZodFunction.create; - const lazyType = ZodLazy.create; - const literalType = ZodLiteral.create; - const enumType = ZodEnum.create; - const nativeEnumType = ZodNativeEnum.create; - const promiseType = ZodPromise.create; - const effectsType = ZodEffects.create; - const optionalType = ZodOptional.create; - const nullableType = ZodNullable.create; - const preprocessType = ZodEffects.createWithPreprocess; - const pipelineType = ZodPipeline.create; - const ostring = () => stringType().optional(); - const onumber = () => numberType().optional(); - const oboolean = () => booleanType().optional(); - const coerce = { - string: ((arg) => ZodString.create({ ...arg, coerce: true })), - number: ((arg) => ZodNumber.create({ ...arg, coerce: true })), - boolean: ((arg) => ZodBoolean.create({ - ...arg, - coerce: true, - })), - bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })), - date: ((arg) => ZodDate.create({ ...arg, coerce: true })), - }; - const NEVER = INVALID; - - var z = /*#__PURE__*/Object.freeze({ - __proto__: null, - defaultErrorMap: errorMap, - setErrorMap: setErrorMap, - getErrorMap: getErrorMap, - makeIssue: makeIssue, - EMPTY_PATH: EMPTY_PATH, - addIssueToContext: addIssueToContext, - ParseStatus: ParseStatus, - INVALID: INVALID, - DIRTY: DIRTY, - OK: OK, - isAborted: isAborted, - isDirty: isDirty, - isValid: isValid, - isAsync: isAsync, - get util () { return util; }, - get objectUtil () { return objectUtil; }, - ZodParsedType: ZodParsedType, - getParsedType: getParsedType, - ZodType: ZodType, - datetimeRegex: datetimeRegex, - ZodString: ZodString, - ZodNumber: ZodNumber, - ZodBigInt: ZodBigInt, - ZodBoolean: ZodBoolean, - ZodDate: ZodDate, - ZodSymbol: ZodSymbol, - ZodUndefined: ZodUndefined, - ZodNull: ZodNull, - ZodAny: ZodAny, - ZodUnknown: ZodUnknown, - ZodNever: ZodNever, - ZodVoid: ZodVoid, - ZodArray: ZodArray, - ZodObject: ZodObject, - ZodUnion: ZodUnion, - ZodDiscriminatedUnion: ZodDiscriminatedUnion, - ZodIntersection: ZodIntersection, - ZodTuple: ZodTuple, - ZodRecord: ZodRecord, - ZodMap: ZodMap, - ZodSet: ZodSet, - ZodFunction: ZodFunction, - ZodLazy: ZodLazy, - ZodLiteral: ZodLiteral, - ZodEnum: ZodEnum, - ZodNativeEnum: ZodNativeEnum, - ZodPromise: ZodPromise, - ZodEffects: ZodEffects, - ZodTransformer: ZodEffects, - ZodOptional: ZodOptional, - ZodNullable: ZodNullable, - ZodDefault: ZodDefault, - ZodCatch: ZodCatch, - ZodNaN: ZodNaN, - BRAND: BRAND, - ZodBranded: ZodBranded, - ZodPipeline: ZodPipeline, - ZodReadonly: ZodReadonly, - custom: custom, - Schema: ZodType, - ZodSchema: ZodType, - late: late, - get ZodFirstPartyTypeKind () { return ZodFirstPartyTypeKind; }, - coerce: coerce, - any: anyType, - array: arrayType, - bigint: bigIntType, - boolean: booleanType, - date: dateType, - discriminatedUnion: discriminatedUnionType, - effect: effectsType, - 'enum': enumType, - 'function': functionType, - 'instanceof': instanceOfType, - intersection: intersectionType, - lazy: lazyType, - literal: literalType, - map: mapType, - nan: nanType, - nativeEnum: nativeEnumType, - never: neverType, - 'null': nullType, - nullable: nullableType, - number: numberType, - object: objectType, - oboolean: oboolean, - onumber: onumber, - optional: optionalType, - ostring: ostring, - pipeline: pipelineType, - preprocess: preprocessType, - promise: promiseType, - record: recordType, - set: setType, - strictObject: strictObjectType, - string: stringType, - symbol: symbolType, - transformer: effectsType, - tuple: tupleType, - 'undefined': undefinedType, - union: unionType, - unknown: unknownType, - 'void': voidType, - NEVER: NEVER, - ZodIssueCode: ZodIssueCode, - quotelessJson: quotelessJson, - ZodError: ZodError - }); - - const SerializedSealingPair = z.object({ - privateKey: z.string(), - publicKey: z.string(), - }); - const zPermitV2WithDefaults = z.object({ - name: z.string().optional().default("Unnamed Permit"), - type: z.enum(["self", "sharing", "recipient"]), - issuer: z - .string() - .refine((val) => isAddress(val), { - message: "PermitV2 issuer :: invalid address", - }) - .refine((val) => val !== ZeroAddress, { - message: "PermitV2 issuer :: must not be zeroAddress", - }), - expiration: z.number().optional().default(1000000000000), - contracts: z.array(z.string()).optional().default([]), - projects: z.array(z.string()).optional().default([]), - recipient: z - .string() - .optional() - .default(ZeroAddress) - .refine((val) => isAddress(val), { - message: "PermitV2 recipient :: invalid address", - }), - validatorId: z.number().optional().default(0), - validatorContract: z - .string() - .optional() - .default(ZeroAddress) - .refine((val) => isAddress(val), { - message: "PermitV2 validatorContract :: invalid address", - }), - sealingPair: SerializedSealingPair.optional(), - issuerSignature: z.string().optional().default("0x"), - recipientSignature: z.string().optional().default("0x"), - }); - /** - * Ensures that this Permit will provide access to a non-zero amount of contracts - * by ensuring that `contracts` and `projects` aren't both empty arrays. - */ - const PermitV2RefineAccess = [ - (data) => { - return data.contracts.length + data.projects.length > 0; + } + + // src/core/proxy.ts + function createProxyProxy(base, parent) { + const isArray = Array.isArray(base); + const state = { + type_: isArray ? 1 /* Array */ : 0 /* Object */, + // Track which produce call this is associated with. + scope_: parent ? parent.scope_ : getCurrentScope(), + // True for both shallow and deep changes. + modified_: false, + // Used during finalization. + finalized_: false, + // Track which properties have been assigned (true) or deleted (false). + assigned_: {}, + // The parent draft state. + parent_: parent, + // The base state. + base_: base, + // The base proxy. + draft_: null, + // set below + // The base copy with any updated values. + copy_: null, + // Called by the `produce` function. + revoke_: null, + isManual_: false + }; + let target = state; + let traps = objectTraps; + if (isArray) { + target = [state]; + traps = arrayTraps; + } + const { revoke, proxy } = Proxy.revocable(target, traps); + state.draft_ = proxy; + state.revoke_ = revoke; + return proxy; + } + var objectTraps = { + get(state, prop) { + if (prop === DRAFT_STATE) + return state; + const source = latest(state); + if (!has(source, prop)) { + return readPropFromProto(state, source, prop); + } + const value = source[prop]; + if (state.finalized_ || !isDraftable(value)) { + return value; + } + if (value === peek(state.base_, prop)) { + prepareCopy(state); + return state.copy_[prop] = createProxy(value, state); + } + return value; }, - { - message: "PermitV2 access :: at least one contract or project must be accessible.", - path: ["contracts", "projects"], + has(state, prop) { + return prop in latest(state); }, - ]; - /** - * Permits allow a hook into an optional external validator contract, - * this check ensures that IF an external validator is applied, that both `validatorId` and `validatorContract` are populated, - * ELSE ensures that both `validatorId` and `validatorContract` are empty - */ - const PermitV2RefineValidator = [ - (data) => (data.validatorId !== 0 && data.validatorContract !== ZeroAddress) || - (data.validatorId === 0 && data.validatorContract === ZeroAddress), - { - message: "PermitV2 external validator :: validatorId and validatorContract must either both be set or both be unset.", - path: ["validatorId", "validatorContract"], + ownKeys(state) { + return Reflect.ownKeys(latest(state)); }, - ]; - /** - * SuperRefinement that checks a PermitV2s signatures - * checkRecipient - whether to validate that `recipient` is empty for permit with type , and populated for - * checkSealingPair - only the fully formed permit requires the sealing pair, it can be optional for permitV2 create params - * checkExistingSignatures - not optional - checks that the permit's type matches the populated signature fields - * checkSigned - checks that the active user's signature has been signed and added. -> issuerSignature, -> recipientSignature - */ - const PermitV2SignaturesSuperRefinement = (options) => { - return (data, ctx) => { - // Check Recipient - // If type , `PermitV2.recipient` must be zeroAddress - // If type , `PermitV2.recipient` must not be zeroAddress - if (options.checkRecipient) { - if (data.type === "self" && data.recipient !== ZeroAddress) - ctx.addIssue({ - code: z.ZodIssueCode.custom, - path: ["recipient"], - message: `PermitV2 (type '${data.type}') recipient :: must be empty (zeroAddress)`, - }); - if ((data.type === "recipient" || data.type === "sharing") && - data.recipient === ZeroAddress) { - ctx.addIssue({ - code: z.ZodIssueCode.custom, - path: ["recipient"], - message: `PermitV2 (type '${data.type}') recipient :: must not be empty`, - }); - } - } - // Check Sealing Pair - if (options.checkSealingPair && data.sealingPair == null) - ctx.addIssue({ - code: z.ZodIssueCode.custom, - path: ["sealingPair"], - message: `PermitV2 sealingPair :: must not be empty`, - }); - // Check existing signatures match type (not checking this user's signature, but the other signature) - // If type , `PermitV2.recipientSignature` must be empty - // If type , `PermitV2.issuerSignature` must not be empty - if ((data.type === "self" || data.type === "sharing") && - data.recipientSignature !== "0x") { - ctx.addIssue({ - code: z.ZodIssueCode.custom, - path: ["recipientSignature"], - message: `PermitV2 (type '${data.type}') recipientSignature :: should not be populated by the issuer`, - }); - } - if (data.type === "recipient" && data.issuerSignature === "0x") { - ctx.addIssue({ - code: z.ZodIssueCode.custom, - path: ["issuerSignature"], - message: `PermitV2 (type 'recipient') issuerSignature :: \`issuer\` must sign the PermitV2 before sharing it with \`recipient\``, - }); - } - // Check Signed - // If type , `PermitV2.issuerSignature` must not be empty - // If type , `PermitV2.recipientSignature` must not be empty - if (options.checkSigned) { - if ((data.type === "self" || data.type === "sharing") && - data.issuerSignature === "0x") - ctx.addIssue({ - code: z.ZodIssueCode.custom, - path: ["issuerSignature"], - message: `PermitV2 (type '${data.type}') issuerSignature :: must be populated with issuer's signature. Use \`PermitV2.sign\` or create permit with \`PermitV2.createAndSign\``, - }); - if (data.type === "recipient" && data.recipientSignature === "0x") { - ctx.addIssue({ - code: z.ZodIssueCode.custom, - path: ["recipientSignature"], - message: `PermitV2 (type 'recipient') recipientSignature :: must be populated with recipient's signature. Use \`PermitV2.sign\` or create permit with \`PermitV2.createAndSign\``, - }); - } - } - return; + set(state, prop, value) { + const desc = getDescriptorFromProto(latest(state), prop); + if (desc?.set) { + desc.set.call(state.draft_, value); + return true; + } + if (!state.modified_) { + const current2 = peek(latest(state), prop); + const currentState = current2?.[DRAFT_STATE]; + if (currentState && currentState.base_ === value) { + state.copy_[prop] = value; + state.assigned_[prop] = false; + return true; + } + if (is(value, current2) && (value !== void 0 || has(state.base_, prop))) + return true; + prepareCopy(state); + markChanged(state); + } + if (state.copy_[prop] === value && // special case: handle new props with value 'undefined' + (value !== void 0 || prop in state.copy_) || // special case: NaN + Number.isNaN(value) && Number.isNaN(state.copy_[prop])) + return true; + state.copy_[prop] = value; + state.assigned_[prop] = true; + return true; + }, + deleteProperty(state, prop) { + if (peek(state.base_, prop) !== void 0 || prop in state.base_) { + state.assigned_[prop] = false; + prepareCopy(state); + markChanged(state); + } else { + delete state.assigned_[prop]; + } + if (state.copy_) { + delete state.copy_[prop]; + } + return true; + }, + // Note: We never coerce `desc.value` into an Immer draft, because we can't make + // the same guarantee in ES5 mode. + getOwnPropertyDescriptor(state, prop) { + const owner = latest(state); + const desc = Reflect.getOwnPropertyDescriptor(owner, prop); + if (!desc) + return desc; + return { + writable: true, + configurable: state.type_ !== 1 /* Array */ || prop !== "length", + enumerable: desc.enumerable, + value: owner[prop] + }; + }, + defineProperty() { + die(11); + }, + getPrototypeOf(state) { + return getPrototypeOf(state.base_); + }, + setPrototypeOf() { + die(12); + } + }; + var arrayTraps = {}; + each(objectTraps, (key, fn) => { + arrayTraps[key] = function() { + arguments[0] = arguments[0][0]; + return fn.apply(this, arguments); }; - }; - /** - * Validator for the params used when creating a fresh PermitV2 - * Has defaults added that will be populated in the options object - * Signatures superRefinement checks only the recipient, sealingPair and signatures are not necessary in the Permit params - */ - const PermitV2ParamsValidator = zPermitV2WithDefaults - .refine(...PermitV2RefineAccess) - .refine(...PermitV2RefineValidator) - .superRefine(PermitV2SignaturesSuperRefinement({ - checkRecipient: true, - checkSealingPair: false, // SealingPair not required when creating a fresh permit - checkSigned: false, // Signature not required when creating a fresh permit - })); - /** - * Validator for a PermitV2 that is expected to be fully formed - * Does not allow optional values or offer defaults - * Validates that the correct signatures are populated - * Validates sealingPair is populated - */ - const FullyFormedPermitV2Validator = zPermitV2WithDefaults - .required() - .refine(...PermitV2RefineAccess) - .refine(...PermitV2RefineValidator) - .superRefine(PermitV2SignaturesSuperRefinement({ - checkRecipient: true, - checkSealingPair: true, - checkSigned: true, - })); - - /* eslint-disable @typescript-eslint/no-explicit-any */ - class PermitV2 { - constructor(options, metadata) { - /** - * Chain that this permit was signed on. In part used for mock encrypt/unseal on hardhat network. - * Should not be set manually, included in metadata as part of serialization flows. - */ - this._signedChainId = undefined; - this.updateName = (name) => { - this.name = name; - }; - /** - * Utility to extract the public data from a permit. - * Used in `serialize`, `getPermission`, `getHash` etc - */ - this.getInterface = () => { - return { - name: this.name, - type: this.type, - issuer: this.issuer, - expiration: this.expiration, - contracts: this.contracts, - projects: this.projects, - recipient: this.recipient, - validatorId: this.validatorId, - validatorContract: this.validatorContract, - sealingPair: this.sealingPair, - issuerSignature: this.issuerSignature, - recipientSignature: this.recipientSignature, - }; - }; - /** - * Export the necessary permit data to share a permit with another user - */ - this.export = () => { - const cleanedPermit = { - name: this.name, - type: this.type, - issuer: this.issuer, - expiration: this.expiration, - }; - if (this.contracts.length > 0) - cleanedPermit.contracts = this.contracts; - if (this.projects.length > 0) - cleanedPermit.projects = this.projects; - if (this.recipient !== ZeroAddress) - cleanedPermit.recipient = this.recipient; - if (this.validatorId !== 0) - cleanedPermit.validatorId = this.validatorId; - if (this.validatorContract !== ZeroAddress) - cleanedPermit.validatorContract = this.validatorContract; - if (this.type === "sharing" && this.issuerSignature !== "0x") - cleanedPermit.issuerSignature = this.issuerSignature; - return JSON.stringify(cleanedPermit, undefined, 2); - }; - /** - * Returns a serializable permit instance, removing classes and methods. - * NOTE: Does not return a stringified permit - */ - this.serialize = () => { - const { sealingPair, ...permit } = this.getInterface(); - return { - ...permit, - _signedChainId: this._signedChainId, - sealingPair: { - publicKey: sealingPair.publicKey, - privateKey: sealingPair.privateKey, - }, - }; - }; - /** - * Extracts a contract input ready permission from this permit. - * The permission inherits most fields from the permit, however - * `permit.sealingPair` is removed and replaced by `permit.sealingPair.publicKey` in the `sealingKey` field. - * - * @permit {boolean} skipValidation - Flag to prevent running validation on the permit before returning the extracted permission. Used internally. - * @returns {PermissionV2} - */ - this.getPermission = (skipValidation = false) => { - const permitData = this.getInterface(); - if (!skipValidation) { - const validationResult = FullyFormedPermitV2Validator.safeParse(permitData); - if (!validationResult.success) { - throw new Error(`PermitV2 :: getPermission :: permit validation failed - ${JSON.stringify(validationResult.error, null, 2)} ${JSON.stringify(permitData, null, 2)}`); - } - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { name, type, sealingPair, ...permit } = permitData; - return { - ...permit, - sealingKey: `0x${sealingPair.publicKey}`, - }; - }; - /** - * Returns a stable hash depending on the core data of the permit. - * Is used in the store as each permit's key in the permit map. - */ - this.getHash = () => keccak256(id(JSON.stringify({ - type: this.type, - issuer: this.issuer, - expiration: this.expiration, - contracts: this.contracts, - projects: this.projects, - recipient: this.recipient, - validatorId: this.validatorId, - validatorContract: this.validatorContract, - }))); - /** - * Returns the domain, types, primaryType, and message fields required to request the user's signature - * Primary type is returned to allow viem clients to more easily connect - */ - this.getSignatureParams = (chainId, primaryType) => { - return { - domain: getSignatureDomain(chainId), - ...getSignatureTypesAndMessage(primaryType, SignatureTypes[primaryType], this.getPermission(true)), - }; - }; - /** - * Determines the required signature type. - * Creates the EIP712 types and message. - * Prompts the user for their signature. - * Inserts the signature into `issuerSignature` or `recipientSignature` as necessary. - * - * @param {string} chainId - Used as part of the EIP712 domain, throws if undefined - * @param {AbstractSigner} signer - Signer responsible for signing the EIP712 permit signature, throws if undefined - */ - this.sign = async (chainId, signer) => { - if (chainId == null) - throw new Error("PermitV2 :: sign - chainId undefined, cannot sign a permit with an unknown chainId"); - if (signer == null) - throw new Error("PermitV2 :: sign - signer undefined, you must pass in a `signer` for the connected user to create a permitV2 signature"); - let primaryType = "PermissionedV2IssuerSelf"; - if (this.type === "self") - primaryType = "PermissionedV2IssuerSelf"; - if (this.type === "sharing") - primaryType = "PermissionedV2IssuerShared"; - if (this.type === "recipient") - primaryType = "PermissionedV2Recipient"; - const { domain, types, message } = this.getSignatureParams(chainId, primaryType); - const signature = await signer.signTypedData(domain, types, message); - if (this.type === "self" || this.type === "sharing") { - this.issuerSignature = signature; - } - if (this.type === "recipient") { - this.recipientSignature = signature; - } - this._signedChainId = chainId; - }; - /** - * Use the privateKey of `permit.sealingPair` to unseal `ciphertext` returned from the Fhenix chain. - * Useful when not using `SealedItem` structs and need to unseal an individual ciphertext. - */ - this.unsealCiphertext = (ciphertext) => { - // Early exit with mock unseal if interacting with hardhat network - if (chainIsHardhat(this._signedChainId)) - return hardhatMockUnseal(ciphertext); - return this.sealingPair.unseal(ciphertext); - }; - /** - * Check if permit satisfies the requirements param. - * Permit must satisfy either the contracts list or the projects list - * - * @param {{contracts?: string[], projects?: string[]}} requirements - Lists of contract and project requirements. - * @returns {satisfies: boolean, unsatisfiedContracts, unsatisfiedProjects} - satisfied if either req list is fulfilled. - */ - this.getSatisfies = (requirements) => { - let contractsSatisfied = true; - const unsatisfiedContracts = []; - for (const contract in requirements.contracts) { - if (!this.contracts.includes(contract)) { - contractsSatisfied = false; - unsatisfiedContracts.push(contract); - } - } - let projectsSatisfied = true; - const unsatisfiedProjects = []; - for (const project in requirements.projects) { - if (!this.projects.includes(project)) { - projectsSatisfied = false; - unsatisfiedProjects.push(project); - } - } - if (contractsSatisfied || projectsSatisfied) - return { - satisfies: true, - unsatisfiedContracts: null, - unsatisfiedProjects: null, - }; - return { - satisfies: false, - unsatisfiedContracts, - unsatisfiedProjects, - }; - }; - /** - * Returns whether the active party has created their signature. - * If `permit.type` is self or sharing, the active party is `issuer`. - * If `permit.type` is recipient, the active party is `recipient` - * - * @returns {boolean} - */ - this.isSigned = () => { - if (this.type === "self" || this.type === "sharing") { - return this.issuerSignature !== "0x"; - } - if (this.type === "recipient") { - return this.recipientSignature != "0x"; - } - return false; - }; - /** - * Returns whether this permit has expired due to `permit.expiration` - * - * @returns {boolean} - */ - this.isExpired = () => { - return this.expiration < Math.floor(Date.now() / 1000); - }; - /** - * Overall validity checker of a permit, checks the signatures and expirations - * - * @returns {{valid: boolean, error: string}} - If `valid`, `error` is null, else `error` indicates which validity check failed - */ - this.isValid = () => { - if (this.isExpired()) - return { valid: false, error: "expired" }; - if (!this.isSigned()) - return { valid: false, error: "not-signed" }; - return { valid: true, error: null }; - }; - this.name = options.name; - this.type = options.type; - this.issuer = options.issuer; - this.expiration = options.expiration; - this.contracts = options.contracts; - this.projects = options.projects; - this.recipient = options.recipient; - this.validatorId = options.validatorId; - this.validatorContract = options.validatorContract; - this.sealingPair = options.sealingPair; - this.issuerSignature = options.issuerSignature; - this.recipientSignature = options.recipientSignature; - this._signedChainId = metadata?._signedChainId; + }); + arrayTraps.deleteProperty = function(state, prop) { + if (process.env.NODE_ENV !== "production" && isNaN(parseInt(prop))) + die(13); + return arrayTraps.set.call(this, state, prop, void 0); + }; + arrayTraps.set = function(state, prop, value) { + if (process.env.NODE_ENV !== "production" && prop !== "length" && isNaN(parseInt(prop))) + die(14); + return objectTraps.set.call(this, state[0], prop, value, state[0]); + }; + function peek(draft, prop) { + const state = draft[DRAFT_STATE]; + const source = state ? latest(state) : draft; + return source[prop]; + } + function readPropFromProto(state, source, prop) { + const desc = getDescriptorFromProto(source, prop); + return desc ? `value` in desc ? desc.value : ( + // This is a very special case, if the prop is a getter defined by the + // prototype, we should invoke it with the draft as context! + desc.get?.call(state.draft_) + ) : void 0; + } + function getDescriptorFromProto(source, prop) { + if (!(prop in source)) + return void 0; + let proto = getPrototypeOf(source); + while (proto) { + const desc = Object.getOwnPropertyDescriptor(proto, prop); + if (desc) + return desc; + proto = getPrototypeOf(proto); } - static async create(options) { - const { success, data: parsed, error, } = PermitV2ParamsValidator.safeParse(options); - if (!success) { - throw new Error("PermitV2 :: create :: Parsing PermitV2Options failed " + - JSON.stringify(error, null, 2)); - } - const sealingPair = parsed.sealingPair != null - ? new SealingKey(parsed.sealingPair.privateKey, parsed.sealingPair.publicKey) - : await GenerateSealingKey(); - return new PermitV2({ - ...parsed, - sealingPair, + return void 0; + } + function markChanged(state) { + if (!state.modified_) { + state.modified_ = true; + if (state.parent_) { + markChanged(state.parent_); + } + } + } + function prepareCopy(state) { + if (!state.copy_) { + state.copy_ = shallowCopy( + state.base_, + state.scope_.immer_.useStrictShallowCopy_ + ); + } + } + + // src/core/immerClass.ts + var Immer2 = class { + constructor(config) { + this.autoFreeze_ = true; + this.useStrictShallowCopy_ = false; + /** + * The `produce` function takes a value and a "recipe function" (whose + * return value often depends on the base state). The recipe function is + * free to mutate its first argument however it wants. All mutations are + * only ever applied to a __copy__ of the base state. + * + * Pass only a function to create a "curried producer" which relieves you + * from passing the recipe function every time. + * + * Only plain objects and arrays are made mutable. All other objects are + * considered uncopyable. + * + * Note: This function is __bound__ to its `Immer` instance. + * + * @param {any} base - the initial state + * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified + * @param {Function} patchListener - optional function that will be called with all the patches produced here + * @returns {any} a new state, or the initial state if nothing was modified + */ + this.produce = (base, recipe, patchListener) => { + if (typeof base === "function" && typeof recipe !== "function") { + const defaultBase = recipe; + recipe = base; + const self = this; + return function curriedProduce(base2 = defaultBase, ...args) { + return self.produce(base2, (draft) => recipe.call(this, draft, ...args)); + }; + } + if (typeof recipe !== "function") + die(6); + if (patchListener !== void 0 && typeof patchListener !== "function") + die(7); + let result; + if (isDraftable(base)) { + const scope = enterScope(this); + const proxy = createProxy(base, void 0); + let hasError = true; + try { + result = recipe(proxy); + hasError = false; + } finally { + if (hasError) + revokeScope(scope); + else + leaveScope(scope); + } + usePatchesInScope(scope, patchListener); + return processResult(result, scope); + } else if (!base || typeof base !== "object") { + result = recipe(base); + if (result === void 0) + result = base; + if (result === NOTHING) + result = void 0; + if (this.autoFreeze_) + freeze(result, true); + if (patchListener) { + const p = []; + const ip = []; + getPlugin("Patches").generateReplacementPatches_(base, result, p, ip); + patchListener(p, ip); + } + return result; + } else + die(1, base); + }; + this.produceWithPatches = (base, recipe) => { + if (typeof base === "function") { + return (state, ...args) => this.produceWithPatches(state, (draft) => base(draft, ...args)); + } + let patches, inversePatches; + const result = this.produce(base, recipe, (p, ip) => { + patches = p; + inversePatches = ip; }); + return [result, patches, inversePatches]; + }; + if (typeof config?.autoFreeze === "boolean") + this.setAutoFreeze(config.autoFreeze); + if (typeof config?.useStrictShallowCopy === "boolean") + this.setUseStrictShallowCopy(config.useStrictShallowCopy); + } + createDraft(base) { + if (!isDraftable(base)) + die(8); + if (isDraft(base)) + base = current(base); + const scope = enterScope(this); + const proxy = createProxy(base, void 0); + proxy[DRAFT_STATE].isManual_ = true; + leaveScope(scope); + return proxy; + } + finishDraft(draft, patchListener) { + const state = draft && draft[DRAFT_STATE]; + if (!state || !state.isManual_) + die(9); + const { scope_: scope } = state; + usePatchesInScope(scope, patchListener); + return processResult(void 0, scope); + } + /** + * Pass true to automatically freeze all copies created by Immer. + * + * By default, auto-freezing is enabled. + */ + setAutoFreeze(value) { + this.autoFreeze_ = value; } - static async createAndSign(options, chainId, signer) { - const permit = await PermitV2.create(options); - await permit.sign(chainId, signer); - return permit; + /** + * Pass true to enable strict shallow copy. + * + * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties. + */ + setUseStrictShallowCopy(value) { + this.useStrictShallowCopy_ = value; } - unseal(item) { - // SealedItem - const sealedItem = getAsSealedItem(item); - if (sealedItem != null) { - const bn = chainIsHardhat(this._signedChainId) - ? hardhatMockUnseal(sealedItem.data) - : this.sealingPair.unseal(sealedItem.data); - if (isSealedBool(sealedItem)) { - // Return a boolean for SealedBool - return Boolean(bn).valueOf(); - } - if (isSealedAddress(sealedItem)) { - // Return a string for SealedAddress - return getAddress(`0x${bn.toString(16).slice(-40)}`); - } - if (isSealedUint(sealedItem)) { - // Return a bigint for SealedUint - return bn; - } + applyPatches(base, patches) { + let i; + for (i = patches.length - 1; i >= 0; i--) { + const patch = patches[i]; + if (patch.path.length === 0 && patch.op === "replace") { + base = patch.value; + break; } - // Object | Array - if (typeof item === "object" && item !== null) { - if (Array.isArray(item)) { - // Array - recurse - return item.map((nestedItem) => this.unseal(nestedItem)); - } - else { - // Object - recurse - const result = {}; - for (const key in item) { - result[key] = this.unseal(item[key]); - } - return result; - } - } - // Primitive - return item; + } + if (i > -1) { + patches = patches.slice(i + 1); + } + const applyPatchesImpl = getPlugin("Patches").applyPatches_; + if (isDraft(base)) { + return applyPatchesImpl(base, patches); + } + return this.produce( + base, + (draft) => applyPatchesImpl(draft, patches) + ); + } + }; + function createProxy(value, parent) { + const draft = isMap(value) ? getPlugin("MapSet").proxyMap_(value, parent) : isSet(value) ? getPlugin("MapSet").proxySet_(value, parent) : createProxyProxy(value, parent); + const scope = parent ? parent.scope_ : getCurrentScope(); + scope.drafts_.push(draft); + return draft; + } + + // src/core/current.ts + function current(value) { + if (!isDraft(value)) + die(10, value); + return currentImpl(value); + } + function currentImpl(value) { + if (!isDraftable(value) || isFrozen(value)) + return value; + const state = value[DRAFT_STATE]; + let copy; + if (state) { + if (!state.modified_) + return state.base_; + state.finalized_ = true; + copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_); + } else { + copy = shallowCopy(value, true); } - } - /** - * Creates a `PermitV2` from a serialized permit, hydrating methods and classes - * NOTE: Does not return a stringified permit - * - * @param {SerializedPermitV2} - Permit structure excluding classes - * @returns {PermitV2} - New instance of PermitV2 class - */ - PermitV2.deserialize = ({ _signedChainId, sealingPair, ...permit }) => { - return new PermitV2({ - ...permit, - sealingPair: new SealingKey(sealingPair.privateKey, sealingPair.publicKey), - }, { - _signedChainId, + each(copy, (key, childValue) => { + set(copy, key, currentImpl(childValue)); }); - }; - PermitV2.validate = (permit) => { - return FullyFormedPermitV2Validator.safeParse(permit); - }; - - const createStoreImpl = (createState) => { - let state; - const listeners = /* @__PURE__ */ new Set(); - const setState = (partial, replace) => { - const nextState = typeof partial === "function" ? partial(state) : partial; - if (!Object.is(nextState, state)) { - const previousState = state; - state = (replace != null ? replace : typeof nextState !== "object" || nextState === null) ? nextState : Object.assign({}, state, nextState); - listeners.forEach((listener) => listener(state, previousState)); + if (state) { + state.finalized_ = false; } + return copy; + } + + // src/immer.ts + var immer = new Immer2(); + var produce = immer.produce; + immer.produceWithPatches.bind( + immer + ); + immer.setAutoFreeze.bind(immer); + immer.setUseStrictShallowCopy.bind(immer); + immer.applyPatches.bind(immer); + immer.createDraft.bind(immer); + immer.finishDraft.bind(immer); + + /* Do NOT modify this file; see /src.ts/_admin/update-version.ts */ + /** + * The current version of Ethers. + */ + const version = "6.13.1"; + + /** + * Property helper functions. + * + * @_subsection api/utils:Properties [about-properties] + */ + /** + * Assigns the %%values%% to %%target%% as read-only values. + * + * It %%types%% is specified, the values are checked. + */ + function defineProperties(target, values, types) { + for (let key in values) { + let value = values[key]; + Object.defineProperty(target, key, { enumerable: true, value, writable: false }); + } + } + + /** + * All errors in ethers include properties to ensure they are both + * human-readable (i.e. ``.message``) and machine-readable (i.e. ``.code``). + * + * The [[isError]] function can be used to check the error ``code`` and + * provide a type guard for the properties present on that error interface. + * + * @_section: api/utils/errors:Errors [about-errors] + */ + function stringify(value) { + if (value == null) { + return "null"; + } + if (Array.isArray(value)) { + return "[ " + (value.map(stringify)).join(", ") + " ]"; + } + if (value instanceof Uint8Array) { + const HEX = "0123456789abcdef"; + let result = "0x"; + for (let i = 0; i < value.length; i++) { + result += HEX[value[i] >> 4]; + result += HEX[value[i] & 0xf]; + } + return result; + } + if (typeof (value) === "object" && typeof (value.toJSON) === "function") { + return stringify(value.toJSON()); + } + switch (typeof (value)) { + case "boolean": + case "symbol": + return value.toString(); + case "bigint": + return BigInt(value).toString(); + case "number": + return (value).toString(); + case "string": + return JSON.stringify(value); + case "object": { + const keys = Object.keys(value); + keys.sort(); + return "{ " + keys.map((k) => `${stringify(k)}: ${stringify(value[k])}`).join(", ") + " }"; + } + } + return `[ COULD NOT SERIALIZE ]`; + } + /** + * Returns a new Error configured to the format ethers emits errors, with + * the %%message%%, [[api:ErrorCode]] %%code%% and additional properties + * for the corresponding EthersError. + * + * Each error in ethers includes the version of ethers, a + * machine-readable [[ErrorCode]], and depending on %%code%%, additional + * required properties. The error message will also include the %%message%%, + * ethers version, %%code%% and all additional properties, serialized. + */ + function makeError(message, code, info) { + let shortMessage = message; + { + const details = []; + if (info) { + if ("message" in info || "code" in info || "name" in info) { + throw new Error(`value will overwrite populated values: ${stringify(info)}`); + } + for (const key in info) { + if (key === "shortMessage") { + continue; + } + const value = (info[key]); + // try { + details.push(key + "=" + stringify(value)); + // } catch (error: any) { + // console.log("MMM", error.message); + // details.push(key + "=[could not serialize object]"); + // } + } + } + details.push(`code=${code}`); + details.push(`version=${version}`); + if (details.length) { + message += " (" + details.join(", ") + ")"; + } + } + let error; + switch (code) { + case "INVALID_ARGUMENT": + error = new TypeError(message); + break; + case "NUMERIC_FAULT": + case "BUFFER_OVERRUN": + error = new RangeError(message); + break; + default: + error = new Error(message); + } + defineProperties(error, { code }); + if (info) { + Object.assign(error, info); + } + if (error.shortMessage == null) { + defineProperties(error, { shortMessage }); + } + return error; + } + /** + * Throws an EthersError with %%message%%, %%code%% and additional error + * %%info%% when %%check%% is falsish.. + * + * @see [[api:makeError]] + */ + function assert(check, message, code, info) { + if (!check) { + throw makeError(message, code, info); + } + } + /** + * A simple helper to simply ensuring provided arguments match expected + * constraints, throwing if not. + * + * In TypeScript environments, the %%check%% has been asserted true, so + * any further code does not need additional compile-time checks. + */ + function assertArgument(check, message, name, value) { + assert(check, message, "INVALID_ARGUMENT", { argument: name, value: value }); + } + ["NFD", "NFC", "NFKD", "NFKC"].reduce((accum, form) => { + try { + // General test for normalize + /* c8 ignore start */ + if ("test".normalize(form) !== "test") { + throw new Error("bad"); + } + ; + /* c8 ignore stop */ + if (form === "NFD") { + const check = String.fromCharCode(0xe9).normalize("NFD"); + const expected = String.fromCharCode(0x65, 0x0301); + /* c8 ignore start */ + if (check !== expected) { + throw new Error("broken"); + } + /* c8 ignore stop */ + } + accum.push(form); + } + catch (error) { } + return accum; + }, []); + + /** + * Some data helpers. + * + * + * @_subsection api/utils:Data Helpers [about-data] + */ + function _getBytes(value, name, copy) { + if (value instanceof Uint8Array) { + return value; + } + if (typeof (value) === "string" && value.match(/^0x(?:[0-9a-f][0-9a-f])*$/i)) { + const result = new Uint8Array((value.length - 2) / 2); + let offset = 2; + for (let i = 0; i < result.length; i++) { + result[i] = parseInt(value.substring(offset, offset + 2), 16); + offset += 2; + } + return result; + } + assertArgument(false, "invalid BytesLike value", name || "value", value); + } + /** + * Get a typed Uint8Array for %%value%%. If already a Uint8Array + * the original %%value%% is returned; if a copy is required use + * [[getBytesCopy]]. + * + * @see: getBytesCopy + */ + function getBytes(value, name) { + return _getBytes(value, name); + } + const HexCharacters = "0123456789abcdef"; + /** + * Returns a [[DataHexString]] representation of %%data%%. + */ + function hexlify(data) { + const bytes = getBytes(data); + let result = "0x"; + for (let i = 0; i < bytes.length; i++) { + const v = bytes[i]; + result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f]; + } + return result; + } + + /** + * Using strings in Ethereum (or any security-basd system) requires + * additional care. These utilities attempt to mitigate some of the + * safety issues as well as provide the ability to recover and analyse + * strings. + * + * @_subsection api/utils:Strings and UTF-8 [about-strings] + */ + // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array + /** + * Returns the UTF-8 byte representation of %%str%%. + * + * If %%form%% is specified, the string is normalized. + */ + function toUtf8Bytes(str, form) { + assertArgument(typeof (str) === "string", "invalid string value", "str", str); + let result = []; + for (let i = 0; i < str.length; i++) { + const c = str.charCodeAt(i); + if (c < 0x80) { + result.push(c); + } + else if (c < 0x800) { + result.push((c >> 6) | 0xc0); + result.push((c & 0x3f) | 0x80); + } + else if ((c & 0xfc00) == 0xd800) { + i++; + const c2 = str.charCodeAt(i); + assertArgument(i < str.length && ((c2 & 0xfc00) === 0xdc00), "invalid surrogate pair", "str", str); + // Surrogate Pair + const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff); + result.push((pair >> 18) | 0xf0); + result.push(((pair >> 12) & 0x3f) | 0x80); + result.push(((pair >> 6) & 0x3f) | 0x80); + result.push((pair & 0x3f) | 0x80); + } + else { + result.push((c >> 12) | 0xe0); + result.push(((c >> 6) & 0x3f) | 0x80); + result.push((c & 0x3f) | 0x80); + } + } + return new Uint8Array(result); + } + + function number(n) { + if (!Number.isSafeInteger(n) || n < 0) + throw new Error(`Wrong positive integer: ${n}`); + } + function bytes(b, ...lengths) { + if (!(b instanceof Uint8Array)) + throw new Error('Expected Uint8Array'); + if (lengths.length > 0 && !lengths.includes(b.length)) + throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`); + } + function exists(instance, checkFinished = true) { + if (instance.destroyed) + throw new Error('Hash instance has been destroyed'); + if (checkFinished && instance.finished) + throw new Error('Hash#digest() has already been called'); + } + function output(out, instance) { + bytes(out); + const min = instance.outputLen; + if (out.length < min) { + throw new Error(`digestInto() expects output buffer of length at least ${min}`); + } + } + + /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */ + // We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+. + // node.js versions earlier than v19 don't declare it in global scope. + // For node.js, package.json#exports field mapping rewrites import + // from `crypto` to `cryptoNode`, which imports native module. + // Makes the utils un-importable in browsers without a bundler. + // Once node.js 18 is deprecated, we can just drop the import. + const u8a = (a) => a instanceof Uint8Array; + const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4)); + // big-endian hardware is rare. Just in case someone still decides to run hashes: + // early-throw an error because we don't support BE yet. + const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44; + if (!isLE) + throw new Error('Non little-endian hardware is not supported'); + /** + * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99]) + */ + function utf8ToBytes(str) { + if (typeof str !== 'string') + throw new Error(`utf8ToBytes expected string, got ${typeof str}`); + return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809 + } + /** + * Normalizes (non-hex) string or Uint8Array to Uint8Array. + * Warning: when Uint8Array is passed, it would NOT get copied. + * Keep in mind for future mutable operations. + */ + function toBytes(data) { + if (typeof data === 'string') + data = utf8ToBytes(data); + if (!u8a(data)) + throw new Error(`expected Uint8Array, got ${typeof data}`); + return data; + } + // For runtime check if class implements interface + class Hash { + // Safe version that clones internal state + clone() { + return this._cloneInto(); + } + } + function wrapConstructor(hashCons) { + const hashC = (msg) => hashCons().update(toBytes(msg)).digest(); + const tmp = hashCons(); + hashC.outputLen = tmp.outputLen; + hashC.blockLen = tmp.blockLen; + hashC.create = () => hashCons(); + return hashC; + } + + const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1); + const _32n = /* @__PURE__ */ BigInt(32); + // We are not using BigUint64Array, because they are extremely slow as per 2022 + function fromBig(n, le = false) { + if (le) + return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) }; + return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 }; + } + function split(lst, le = false) { + let Ah = new Uint32Array(lst.length); + let Al = new Uint32Array(lst.length); + for (let i = 0; i < lst.length; i++) { + const { h, l } = fromBig(lst[i], le); + [Ah[i], Al[i]] = [h, l]; + } + return [Ah, Al]; + } + // Left rotate for Shift in [1, 32) + const rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s)); + const rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s)); + // Left rotate for Shift in (32, 64), NOTE: 32 is special case. + const rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s)); + const rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s)); + + // SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size. + // It's called a sponge function. + // Various per round constants calculations + const [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []]; + const _0n = /* @__PURE__ */ BigInt(0); + const _1n = /* @__PURE__ */ BigInt(1); + const _2n = /* @__PURE__ */ BigInt(2); + const _7n = /* @__PURE__ */ BigInt(7); + const _256n = /* @__PURE__ */ BigInt(256); + const _0x71n = /* @__PURE__ */ BigInt(0x71); + for (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) { + // Pi + [x, y] = [y, (2 * x + 3 * y) % 5]; + SHA3_PI.push(2 * (5 * y + x)); + // Rotational + SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64); + // Iota + let t = _0n; + for (let j = 0; j < 7; j++) { + R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n; + if (R & _2n) + t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n); + } + _SHA3_IOTA.push(t); + } + const [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true); + // Left rotation (without 0, 32, 64) + const rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s)); + const rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s)); + // Same as keccakf1600, but allows to skip some rounds + function keccakP(s, rounds = 24) { + const B = new Uint32Array(5 * 2); + // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js) + for (let round = 24 - rounds; round < 24; round++) { + // Theta θ + for (let x = 0; x < 10; x++) + B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40]; + for (let x = 0; x < 10; x += 2) { + const idx1 = (x + 8) % 10; + const idx0 = (x + 2) % 10; + const B0 = B[idx0]; + const B1 = B[idx0 + 1]; + const Th = rotlH(B0, B1, 1) ^ B[idx1]; + const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1]; + for (let y = 0; y < 50; y += 10) { + s[x + y] ^= Th; + s[x + y + 1] ^= Tl; + } + } + // Rho (ρ) and Pi (π) + let curH = s[2]; + let curL = s[3]; + for (let t = 0; t < 24; t++) { + const shift = SHA3_ROTL[t]; + const Th = rotlH(curH, curL, shift); + const Tl = rotlL(curH, curL, shift); + const PI = SHA3_PI[t]; + curH = s[PI]; + curL = s[PI + 1]; + s[PI] = Th; + s[PI + 1] = Tl; + } + // Chi (χ) + for (let y = 0; y < 50; y += 10) { + for (let x = 0; x < 10; x++) + B[x] = s[y + x]; + for (let x = 0; x < 10; x++) + s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10]; + } + // Iota (ι) + s[0] ^= SHA3_IOTA_H[round]; + s[1] ^= SHA3_IOTA_L[round]; + } + B.fill(0); + } + class Keccak extends Hash { + // NOTE: we accept arguments in bytes instead of bits here. + constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) { + super(); + this.blockLen = blockLen; + this.suffix = suffix; + this.outputLen = outputLen; + this.enableXOF = enableXOF; + this.rounds = rounds; + this.pos = 0; + this.posOut = 0; + this.finished = false; + this.destroyed = false; + // Can be passed from user as dkLen + number(outputLen); + // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes + if (0 >= this.blockLen || this.blockLen >= 200) + throw new Error('Sha3 supports only keccak-f1600 function'); + this.state = new Uint8Array(200); + this.state32 = u32(this.state); + } + keccak() { + keccakP(this.state32, this.rounds); + this.posOut = 0; + this.pos = 0; + } + update(data) { + exists(this); + const { blockLen, state } = this; + data = toBytes(data); + const len = data.length; + for (let pos = 0; pos < len;) { + const take = Math.min(blockLen - this.pos, len - pos); + for (let i = 0; i < take; i++) + state[this.pos++] ^= data[pos++]; + if (this.pos === blockLen) + this.keccak(); + } + return this; + } + finish() { + if (this.finished) + return; + this.finished = true; + const { state, suffix, pos, blockLen } = this; + // Do the padding + state[pos] ^= suffix; + if ((suffix & 0x80) !== 0 && pos === blockLen - 1) + this.keccak(); + state[blockLen - 1] ^= 0x80; + this.keccak(); + } + writeInto(out) { + exists(this, false); + bytes(out); + this.finish(); + const bufferOut = this.state; + const { blockLen } = this; + for (let pos = 0, len = out.length; pos < len;) { + if (this.posOut >= blockLen) + this.keccak(); + const take = Math.min(blockLen - this.posOut, len - pos); + out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos); + this.posOut += take; + pos += take; + } + return out; + } + xofInto(out) { + // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF + if (!this.enableXOF) + throw new Error('XOF is not possible for this instance'); + return this.writeInto(out); + } + xof(bytes) { + number(bytes); + return this.xofInto(new Uint8Array(bytes)); + } + digestInto(out) { + output(out, this); + if (this.finished) + throw new Error('digest() was already called'); + this.writeInto(out); + this.destroy(); + return out; + } + digest() { + return this.digestInto(new Uint8Array(this.outputLen)); + } + destroy() { + this.destroyed = true; + this.state.fill(0); + } + _cloneInto(to) { + const { blockLen, suffix, outputLen, rounds, enableXOF } = this; + to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds)); + to.state32.set(this.state32); + to.pos = this.pos; + to.posOut = this.posOut; + to.finished = this.finished; + to.rounds = rounds; + // Suffix can change in cSHAKE + to.suffix = suffix; + to.outputLen = outputLen; + to.enableXOF = enableXOF; + to.destroyed = this.destroyed; + return to; + } + } + const gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen)); + /** + * keccak-256 hash function. Different from SHA3-256. + * @param message - that would be hashed + */ + const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8); + + /** + * Cryptographic hashing functions + * + * @_subsection: api/crypto:Hash Functions [about-crypto-hashing] + */ + let locked = false; + const _keccak256 = function (data) { + return keccak_256(data); + }; + let __keccak256 = _keccak256; + /** + * Compute the cryptographic KECCAK256 hash of %%data%%. + * + * The %%data%% **must** be a data representation, to compute the + * hash of UTF-8 data use the [[id]] function. + * + * @returns DataHexstring + * @example: + * keccak256("0x") + * //_result: + * + * keccak256("0x1337") + * //_result: + * + * keccak256(new Uint8Array([ 0x13, 0x37 ])) + * //_result: + * + * // Strings are assumed to be DataHexString, otherwise it will + * // throw. To hash UTF-8 data, see the note above. + * keccak256("Hello World") + * //_error: + */ + function keccak256(_data) { + const data = getBytes(_data, "data"); + return hexlify(__keccak256(data)); + } + keccak256._ = _keccak256; + keccak256.lock = function () { locked = true; }; + keccak256.register = function (func) { + if (locked) { + throw new TypeError("keccak256 is locked"); + } + __keccak256 = func; + }; + Object.freeze(keccak256); + + /** + * A constant for the zero address. + * + * (**i.e.** ``"0x0000000000000000000000000000000000000000"``) + */ + const ZeroAddress = "0x0000000000000000000000000000000000000000"; + + const BN_0 = BigInt(0); + const BN_36 = BigInt(36); + function getChecksumAddress(address) { + // if (!isHexString(address, 20)) { + // logger.throwArgumentError("invalid address", "address", address); + // } + address = address.toLowerCase(); + const chars = address.substring(2).split(""); + const expanded = new Uint8Array(40); + for (let i = 0; i < 40; i++) { + expanded[i] = chars[i].charCodeAt(0); + } + const hashed = getBytes(keccak256(expanded)); + for (let i = 0; i < 40; i += 2) { + if ((hashed[i >> 1] >> 4) >= 8) { + chars[i] = chars[i].toUpperCase(); + } + if ((hashed[i >> 1] & 0x0f) >= 8) { + chars[i + 1] = chars[i + 1].toUpperCase(); + } + } + return "0x" + chars.join(""); + } + // See: https://en.wikipedia.org/wiki/International_Bank_Account_Number + // Create lookup table + const ibanLookup = {}; + for (let i = 0; i < 10; i++) { + ibanLookup[String(i)] = String(i); + } + for (let i = 0; i < 26; i++) { + ibanLookup[String.fromCharCode(65 + i)] = String(10 + i); + } + // How many decimal digits can we process? (for 64-bit float, this is 15) + // i.e. Math.floor(Math.log10(Number.MAX_SAFE_INTEGER)); + const safeDigits = 15; + function ibanChecksum(address) { + address = address.toUpperCase(); + address = address.substring(4) + address.substring(0, 2) + "00"; + let expanded = address.split("").map((c) => { return ibanLookup[c]; }).join(""); + // Javascript can handle integers safely up to 15 (decimal) digits + while (expanded.length >= safeDigits) { + let block = expanded.substring(0, safeDigits); + expanded = parseInt(block, 10) % 97 + expanded.substring(block.length); + } + let checksum = String(98 - (parseInt(expanded, 10) % 97)); + while (checksum.length < 2) { + checksum = "0" + checksum; + } + return checksum; + } + const Base36 = (function () { + const result = {}; + for (let i = 0; i < 36; i++) { + const key = "0123456789abcdefghijklmnopqrstuvwxyz"[i]; + result[key] = BigInt(i); + } + return result; + })(); + function fromBase36(value) { + value = value.toLowerCase(); + let result = BN_0; + for (let i = 0; i < value.length; i++) { + result = result * BN_36 + Base36[value[i]]; + } + return result; + } + /** + * Returns a normalized and checksumed address for %%address%%. + * This accepts non-checksum addresses, checksum addresses and + * [[getIcapAddress]] formats. + * + * The checksum in Ethereum uses the capitalization (upper-case + * vs lower-case) of the characters within an address to encode + * its checksum, which offers, on average, a checksum of 15-bits. + * + * If %%address%% contains both upper-case and lower-case, it is + * assumed to already be a checksum address and its checksum is + * validated, and if the address fails its expected checksum an + * error is thrown. + * + * If you wish the checksum of %%address%% to be ignore, it should + * be converted to lower-case (i.e. ``.toLowercase()``) before + * being passed in. This should be a very rare situation though, + * that you wish to bypass the safegaurds in place to protect + * against an address that has been incorrectly copied from another + * source. + * + * @example: + * // Adds the checksum (via upper-casing specific letters) + * getAddress("0x8ba1f109551bd432803012645ac136ddd64dba72") + * //_result: + * + * // Converts ICAP address and adds checksum + * getAddress("XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36"); + * //_result: + * + * // Throws an error if an address contains mixed case, + * // but the checksum fails + * getAddress("0x8Ba1f109551bD432803012645Ac136ddd64DBA72") + * //_error: + */ + function getAddress(address) { + assertArgument(typeof (address) === "string", "invalid address", "address", address); + if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) { + // Missing the 0x prefix + if (!address.startsWith("0x")) { + address = "0x" + address; + } + const result = getChecksumAddress(address); + // It is a checksummed address with a bad checksum + assertArgument(!address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) || result === address, "bad address checksum", "address", address); + return result; + } + // Maybe ICAP? (we only support direct mode) + if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) { + // It is an ICAP address with a bad checksum + assertArgument(address.substring(2, 4) === ibanChecksum(address), "bad icap checksum", "address", address); + let result = fromBase36(address.substring(4)).toString(16); + while (result.length < 40) { + result = "0" + result; + } + return getChecksumAddress("0x" + result); + } + assertArgument(false, "invalid address", "address", address); + } + + /** + * Returns true if %%value%% is a valid address. + * + * @example: + * // Valid address + * isAddress("0x8ba1f109551bD432803012645Ac136ddd64DBA72") + * //_result: + * + * // Valid ICAP address + * isAddress("XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36") + * //_result: + * + * // Invalid checksum + * isAddress("0x8Ba1f109551bD432803012645Ac136ddd64DBa72") + * //_result: + * + * // Invalid ICAP checksum + * isAddress("0x8Ba1f109551bD432803012645Ac136ddd64DBA72") + * //_result: + * + * // Not an address (an ENS name requires a provided and an + * // asynchronous API to access) + * isAddress("ricmoo.eth") + * //_result: + */ + function isAddress(value) { + try { + getAddress(value); + return true; + } + catch (error) { } + return false; + } + + /** + * A simple hashing function which operates on UTF-8 strings to + * compute an 32-byte identifier. + * + * This simply computes the [UTF-8 bytes](toUtf8Bytes) and computes + * the [[keccak256]]. + * + * @example: + * id("hello world") + * //_result: + */ + function id(value) { + return keccak256(toUtf8Bytes(value)); + } + + const PermitV2SignatureAllFields = [ + { name: "issuer", type: "address" }, + { name: "expiration", type: "uint64" }, + { name: "contracts", type: "address[]" }, + { name: "projects", type: "string[]" }, + { name: "recipient", type: "address" }, + { name: "validatorId", type: "uint256" }, + { name: "validatorContract", type: "address" }, + { name: "sealingKey", type: "bytes32" }, + { name: "issuerSignature", type: "bytes" }, + ]; + const SignatureTypes = { + PermissionedV2IssuerSelf: [ + "issuer", + "expiration", + "contracts", + "projects", + "recipient", + "validatorId", + "validatorContract", + "sealingKey", + ], + PermissionedV2IssuerShared: [ + "issuer", + "expiration", + "contracts", + "projects", + "recipient", + "validatorId", + "validatorContract", + ], + PermissionedV2Recipient: [ + "sealingKey", + "issuerSignature", + ], + }; + const getSignatureTypesAndMessage = (primaryType, fields, values) => { + const types = { + [primaryType]: PermitV2SignatureAllFields.filter((fieldType) => fields.includes(fieldType.name)), + }; + const message = {}; + fields.forEach((field) => { + if (field in values) { + message[field] = values[field]; + } + }); + return { types, primaryType, message: message }; + }; + const getSignatureDomain = (chainId) => ({ + name: "Fhenix Permission v2.0.0", + version: "v2.0.0", + chainId: parseInt(chainId), + verifyingContract: ZeroAddress, + }); + + var util; + (function (util) { + util.assertEqual = (val) => val; + function assertIs(_arg) { } + util.assertIs = assertIs; + function assertNever(_x) { + throw new Error(); + } + util.assertNever = assertNever; + util.arrayToEnum = (items) => { + const obj = {}; + for (const item of items) { + obj[item] = item; + } + return obj; + }; + util.getValidEnumValues = (obj) => { + const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== "number"); + const filtered = {}; + for (const k of validKeys) { + filtered[k] = obj[k]; + } + return util.objectValues(filtered); + }; + util.objectValues = (obj) => { + return util.objectKeys(obj).map(function (e) { + return obj[e]; + }); + }; + util.objectKeys = typeof Object.keys === "function" // eslint-disable-line ban/ban + ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban + : (object) => { + const keys = []; + for (const key in object) { + if (Object.prototype.hasOwnProperty.call(object, key)) { + keys.push(key); + } + } + return keys; + }; + util.find = (arr, checker) => { + for (const item of arr) { + if (checker(item)) + return item; + } + return undefined; + }; + util.isInteger = typeof Number.isInteger === "function" + ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban + : (val) => typeof val === "number" && isFinite(val) && Math.floor(val) === val; + function joinValues(array, separator = " | ") { + return array + .map((val) => (typeof val === "string" ? `'${val}'` : val)) + .join(separator); + } + util.joinValues = joinValues; + util.jsonStringifyReplacer = (_, value) => { + if (typeof value === "bigint") { + return value.toString(); + } + return value; + }; + })(util || (util = {})); + var objectUtil; + (function (objectUtil) { + objectUtil.mergeShapes = (first, second) => { + return { + ...first, + ...second, // second overwrites first + }; + }; + })(objectUtil || (objectUtil = {})); + const ZodParsedType = util.arrayToEnum([ + "string", + "nan", + "number", + "integer", + "float", + "boolean", + "date", + "bigint", + "symbol", + "function", + "undefined", + "null", + "array", + "object", + "unknown", + "promise", + "void", + "never", + "map", + "set", + ]); + const getParsedType = (data) => { + const t = typeof data; + switch (t) { + case "undefined": + return ZodParsedType.undefined; + case "string": + return ZodParsedType.string; + case "number": + return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number; + case "boolean": + return ZodParsedType.boolean; + case "function": + return ZodParsedType.function; + case "bigint": + return ZodParsedType.bigint; + case "symbol": + return ZodParsedType.symbol; + case "object": + if (Array.isArray(data)) { + return ZodParsedType.array; + } + if (data === null) { + return ZodParsedType.null; + } + if (data.then && + typeof data.then === "function" && + data.catch && + typeof data.catch === "function") { + return ZodParsedType.promise; + } + if (typeof Map !== "undefined" && data instanceof Map) { + return ZodParsedType.map; + } + if (typeof Set !== "undefined" && data instanceof Set) { + return ZodParsedType.set; + } + if (typeof Date !== "undefined" && data instanceof Date) { + return ZodParsedType.date; + } + return ZodParsedType.object; + default: + return ZodParsedType.unknown; + } + }; + + const ZodIssueCode = util.arrayToEnum([ + "invalid_type", + "invalid_literal", + "custom", + "invalid_union", + "invalid_union_discriminator", + "invalid_enum_value", + "unrecognized_keys", + "invalid_arguments", + "invalid_return_type", + "invalid_date", + "invalid_string", + "too_small", + "too_big", + "invalid_intersection_types", + "not_multiple_of", + "not_finite", + ]); + const quotelessJson = (obj) => { + const json = JSON.stringify(obj, null, 2); + return json.replace(/"([^"]+)":/g, "$1:"); + }; + class ZodError extends Error { + constructor(issues) { + super(); + this.issues = []; + this.addIssue = (sub) => { + this.issues = [...this.issues, sub]; + }; + this.addIssues = (subs = []) => { + this.issues = [...this.issues, ...subs]; + }; + const actualProto = new.target.prototype; + if (Object.setPrototypeOf) { + // eslint-disable-next-line ban/ban + Object.setPrototypeOf(this, actualProto); + } + else { + this.__proto__ = actualProto; + } + this.name = "ZodError"; + this.issues = issues; + } + get errors() { + return this.issues; + } + format(_mapper) { + const mapper = _mapper || + function (issue) { + return issue.message; + }; + const fieldErrors = { _errors: [] }; + const processError = (error) => { + for (const issue of error.issues) { + if (issue.code === "invalid_union") { + issue.unionErrors.map(processError); + } + else if (issue.code === "invalid_return_type") { + processError(issue.returnTypeError); + } + else if (issue.code === "invalid_arguments") { + processError(issue.argumentsError); + } + else if (issue.path.length === 0) { + fieldErrors._errors.push(mapper(issue)); + } + else { + let curr = fieldErrors; + let i = 0; + while (i < issue.path.length) { + const el = issue.path[i]; + const terminal = i === issue.path.length - 1; + if (!terminal) { + curr[el] = curr[el] || { _errors: [] }; + // if (typeof el === "string") { + // curr[el] = curr[el] || { _errors: [] }; + // } else if (typeof el === "number") { + // const errorArray: any = []; + // errorArray._errors = []; + // curr[el] = curr[el] || errorArray; + // } + } + else { + curr[el] = curr[el] || { _errors: [] }; + curr[el]._errors.push(mapper(issue)); + } + curr = curr[el]; + i++; + } + } + } + }; + processError(this); + return fieldErrors; + } + static assert(value) { + if (!(value instanceof ZodError)) { + throw new Error(`Not a ZodError: ${value}`); + } + } + toString() { + return this.message; + } + get message() { + return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2); + } + get isEmpty() { + return this.issues.length === 0; + } + flatten(mapper = (issue) => issue.message) { + const fieldErrors = {}; + const formErrors = []; + for (const sub of this.issues) { + if (sub.path.length > 0) { + fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || []; + fieldErrors[sub.path[0]].push(mapper(sub)); + } + else { + formErrors.push(mapper(sub)); + } + } + return { formErrors, fieldErrors }; + } + get formErrors() { + return this.flatten(); + } + } + ZodError.create = (issues) => { + const error = new ZodError(issues); + return error; + }; + + const errorMap = (issue, _ctx) => { + let message; + switch (issue.code) { + case ZodIssueCode.invalid_type: + if (issue.received === ZodParsedType.undefined) { + message = "Required"; + } + else { + message = `Expected ${issue.expected}, received ${issue.received}`; + } + break; + case ZodIssueCode.invalid_literal: + message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`; + break; + case ZodIssueCode.unrecognized_keys: + message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, ", ")}`; + break; + case ZodIssueCode.invalid_union: + message = `Invalid input`; + break; + case ZodIssueCode.invalid_union_discriminator: + message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`; + break; + case ZodIssueCode.invalid_enum_value: + message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`; + break; + case ZodIssueCode.invalid_arguments: + message = `Invalid function arguments`; + break; + case ZodIssueCode.invalid_return_type: + message = `Invalid function return type`; + break; + case ZodIssueCode.invalid_date: + message = `Invalid date`; + break; + case ZodIssueCode.invalid_string: + if (typeof issue.validation === "object") { + if ("includes" in issue.validation) { + message = `Invalid input: must include "${issue.validation.includes}"`; + if (typeof issue.validation.position === "number") { + message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`; + } + } + else if ("startsWith" in issue.validation) { + message = `Invalid input: must start with "${issue.validation.startsWith}"`; + } + else if ("endsWith" in issue.validation) { + message = `Invalid input: must end with "${issue.validation.endsWith}"`; + } + else { + util.assertNever(issue.validation); + } + } + else if (issue.validation !== "regex") { + message = `Invalid ${issue.validation}`; + } + else { + message = "Invalid"; + } + break; + case ZodIssueCode.too_small: + if (issue.type === "array") + message = `Array must contain ${issue.exact ? "exactly" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`; + else if (issue.type === "string") + message = `String must contain ${issue.exact ? "exactly" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`; + else if (issue.type === "number") + message = `Number must be ${issue.exact + ? `exactly equal to ` + : issue.inclusive + ? `greater than or equal to ` + : `greater than `}${issue.minimum}`; + else if (issue.type === "date") + message = `Date must be ${issue.exact + ? `exactly equal to ` + : issue.inclusive + ? `greater than or equal to ` + : `greater than `}${new Date(Number(issue.minimum))}`; + else + message = "Invalid input"; + break; + case ZodIssueCode.too_big: + if (issue.type === "array") + message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`; + else if (issue.type === "string") + message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`; + else if (issue.type === "number") + message = `Number must be ${issue.exact + ? `exactly` + : issue.inclusive + ? `less than or equal to` + : `less than`} ${issue.maximum}`; + else if (issue.type === "bigint") + message = `BigInt must be ${issue.exact + ? `exactly` + : issue.inclusive + ? `less than or equal to` + : `less than`} ${issue.maximum}`; + else if (issue.type === "date") + message = `Date must be ${issue.exact + ? `exactly` + : issue.inclusive + ? `smaller than or equal to` + : `smaller than`} ${new Date(Number(issue.maximum))}`; + else + message = "Invalid input"; + break; + case ZodIssueCode.custom: + message = `Invalid input`; + break; + case ZodIssueCode.invalid_intersection_types: + message = `Intersection results could not be merged`; + break; + case ZodIssueCode.not_multiple_of: + message = `Number must be a multiple of ${issue.multipleOf}`; + break; + case ZodIssueCode.not_finite: + message = "Number must be finite"; + break; + default: + message = _ctx.defaultError; + util.assertNever(issue); + } + return { message }; + }; + + let overrideErrorMap = errorMap; + function setErrorMap(map) { + overrideErrorMap = map; + } + function getErrorMap() { + return overrideErrorMap; + } + + const makeIssue = (params) => { + const { data, path, errorMaps, issueData } = params; + const fullPath = [...path, ...(issueData.path || [])]; + const fullIssue = { + ...issueData, + path: fullPath, + }; + if (issueData.message !== undefined) { + return { + ...issueData, + path: fullPath, + message: issueData.message, + }; + } + let errorMessage = ""; + const maps = errorMaps + .filter((m) => !!m) + .slice() + .reverse(); + for (const map of maps) { + errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message; + } + return { + ...issueData, + path: fullPath, + message: errorMessage, + }; + }; + const EMPTY_PATH = []; + function addIssueToContext(ctx, issueData) { + const overrideMap = getErrorMap(); + const issue = makeIssue({ + issueData: issueData, + data: ctx.data, + path: ctx.path, + errorMaps: [ + ctx.common.contextualErrorMap, + ctx.schemaErrorMap, + overrideMap, + overrideMap === errorMap ? undefined : errorMap, // then global default map + ].filter((x) => !!x), + }); + ctx.common.issues.push(issue); + } + class ParseStatus { + constructor() { + this.value = "valid"; + } + dirty() { + if (this.value === "valid") + this.value = "dirty"; + } + abort() { + if (this.value !== "aborted") + this.value = "aborted"; + } + static mergeArray(status, results) { + const arrayValue = []; + for (const s of results) { + if (s.status === "aborted") + return INVALID; + if (s.status === "dirty") + status.dirty(); + arrayValue.push(s.value); + } + return { status: status.value, value: arrayValue }; + } + static async mergeObjectAsync(status, pairs) { + const syncPairs = []; + for (const pair of pairs) { + const key = await pair.key; + const value = await pair.value; + syncPairs.push({ + key, + value, + }); + } + return ParseStatus.mergeObjectSync(status, syncPairs); + } + static mergeObjectSync(status, pairs) { + const finalObject = {}; + for (const pair of pairs) { + const { key, value } = pair; + if (key.status === "aborted") + return INVALID; + if (value.status === "aborted") + return INVALID; + if (key.status === "dirty") + status.dirty(); + if (value.status === "dirty") + status.dirty(); + if (key.value !== "__proto__" && + (typeof value.value !== "undefined" || pair.alwaysSet)) { + finalObject[key.value] = value.value; + } + } + return { status: status.value, value: finalObject }; + } + } + const INVALID = Object.freeze({ + status: "aborted", + }); + const DIRTY = (value) => ({ status: "dirty", value }); + const OK = (value) => ({ status: "valid", value }); + const isAborted = (x) => x.status === "aborted"; + const isDirty = (x) => x.status === "dirty"; + const isValid = (x) => x.status === "valid"; + const isAsync = (x) => typeof Promise !== "undefined" && x instanceof Promise; + + /****************************************************************************** + Copyright (c) Microsoft Corporation. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + ***************************************************************************** */ + + function __classPrivateFieldGet(receiver, state, kind, f) { + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return state.get(receiver); + } + + function __classPrivateFieldSet(receiver, state, value, kind, f) { + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (state.set(receiver, value)), value; + } + + typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; + }; + + var errorUtil; + (function (errorUtil) { + errorUtil.errToObj = (message) => typeof message === "string" ? { message } : message || {}; + errorUtil.toString = (message) => typeof message === "string" ? message : message === null || message === void 0 ? void 0 : message.message; + })(errorUtil || (errorUtil = {})); + + var _ZodEnum_cache, _ZodNativeEnum_cache; + class ParseInputLazyPath { + constructor(parent, value, path, key) { + this._cachedPath = []; + this.parent = parent; + this.data = value; + this._path = path; + this._key = key; + } + get path() { + if (!this._cachedPath.length) { + if (this._key instanceof Array) { + this._cachedPath.push(...this._path, ...this._key); + } + else { + this._cachedPath.push(...this._path, this._key); + } + } + return this._cachedPath; + } + } + const handleResult = (ctx, result) => { + if (isValid(result)) { + return { success: true, data: result.value }; + } + else { + if (!ctx.common.issues.length) { + throw new Error("Validation failed but no issues detected."); + } + return { + success: false, + get error() { + if (this._error) + return this._error; + const error = new ZodError(ctx.common.issues); + this._error = error; + return this._error; + }, + }; + } + }; + function processCreateParams(params) { + if (!params) + return {}; + const { errorMap, invalid_type_error, required_error, description } = params; + if (errorMap && (invalid_type_error || required_error)) { + throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`); + } + if (errorMap) + return { errorMap: errorMap, description }; + const customMap = (iss, ctx) => { + var _a, _b; + const { message } = params; + if (iss.code === "invalid_enum_value") { + return { message: message !== null && message !== void 0 ? message : ctx.defaultError }; + } + if (typeof ctx.data === "undefined") { + return { message: (_a = message !== null && message !== void 0 ? message : required_error) !== null && _a !== void 0 ? _a : ctx.defaultError }; + } + if (iss.code !== "invalid_type") + return { message: ctx.defaultError }; + return { message: (_b = message !== null && message !== void 0 ? message : invalid_type_error) !== null && _b !== void 0 ? _b : ctx.defaultError }; + }; + return { errorMap: customMap, description }; + } + class ZodType { + constructor(def) { + /** Alias of safeParseAsync */ + this.spa = this.safeParseAsync; + this._def = def; + this.parse = this.parse.bind(this); + this.safeParse = this.safeParse.bind(this); + this.parseAsync = this.parseAsync.bind(this); + this.safeParseAsync = this.safeParseAsync.bind(this); + this.spa = this.spa.bind(this); + this.refine = this.refine.bind(this); + this.refinement = this.refinement.bind(this); + this.superRefine = this.superRefine.bind(this); + this.optional = this.optional.bind(this); + this.nullable = this.nullable.bind(this); + this.nullish = this.nullish.bind(this); + this.array = this.array.bind(this); + this.promise = this.promise.bind(this); + this.or = this.or.bind(this); + this.and = this.and.bind(this); + this.transform = this.transform.bind(this); + this.brand = this.brand.bind(this); + this.default = this.default.bind(this); + this.catch = this.catch.bind(this); + this.describe = this.describe.bind(this); + this.pipe = this.pipe.bind(this); + this.readonly = this.readonly.bind(this); + this.isNullable = this.isNullable.bind(this); + this.isOptional = this.isOptional.bind(this); + } + get description() { + return this._def.description; + } + _getType(input) { + return getParsedType(input.data); + } + _getOrReturnCtx(input, ctx) { + return (ctx || { + common: input.parent.common, + data: input.data, + parsedType: getParsedType(input.data), + schemaErrorMap: this._def.errorMap, + path: input.path, + parent: input.parent, + }); + } + _processInputParams(input) { + return { + status: new ParseStatus(), + ctx: { + common: input.parent.common, + data: input.data, + parsedType: getParsedType(input.data), + schemaErrorMap: this._def.errorMap, + path: input.path, + parent: input.parent, + }, + }; + } + _parseSync(input) { + const result = this._parse(input); + if (isAsync(result)) { + throw new Error("Synchronous parse encountered promise."); + } + return result; + } + _parseAsync(input) { + const result = this._parse(input); + return Promise.resolve(result); + } + parse(data, params) { + const result = this.safeParse(data, params); + if (result.success) + return result.data; + throw result.error; + } + safeParse(data, params) { + var _a; + const ctx = { + common: { + issues: [], + async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false, + contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap, + }, + path: (params === null || params === void 0 ? void 0 : params.path) || [], + schemaErrorMap: this._def.errorMap, + parent: null, + data, + parsedType: getParsedType(data), + }; + const result = this._parseSync({ data, path: ctx.path, parent: ctx }); + return handleResult(ctx, result); + } + async parseAsync(data, params) { + const result = await this.safeParseAsync(data, params); + if (result.success) + return result.data; + throw result.error; + } + async safeParseAsync(data, params) { + const ctx = { + common: { + issues: [], + contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap, + async: true, + }, + path: (params === null || params === void 0 ? void 0 : params.path) || [], + schemaErrorMap: this._def.errorMap, + parent: null, + data, + parsedType: getParsedType(data), + }; + const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx }); + const result = await (isAsync(maybeAsyncResult) + ? maybeAsyncResult + : Promise.resolve(maybeAsyncResult)); + return handleResult(ctx, result); + } + refine(check, message) { + const getIssueProperties = (val) => { + if (typeof message === "string" || typeof message === "undefined") { + return { message }; + } + else if (typeof message === "function") { + return message(val); + } + else { + return message; + } + }; + return this._refinement((val, ctx) => { + const result = check(val); + const setError = () => ctx.addIssue({ + code: ZodIssueCode.custom, + ...getIssueProperties(val), + }); + if (typeof Promise !== "undefined" && result instanceof Promise) { + return result.then((data) => { + if (!data) { + setError(); + return false; + } + else { + return true; + } + }); + } + if (!result) { + setError(); + return false; + } + else { + return true; + } + }); + } + refinement(check, refinementData) { + return this._refinement((val, ctx) => { + if (!check(val)) { + ctx.addIssue(typeof refinementData === "function" + ? refinementData(val, ctx) + : refinementData); + return false; + } + else { + return true; + } + }); + } + _refinement(refinement) { + return new ZodEffects({ + schema: this, + typeName: ZodFirstPartyTypeKind.ZodEffects, + effect: { type: "refinement", refinement }, + }); + } + superRefine(refinement) { + return this._refinement(refinement); + } + optional() { + return ZodOptional.create(this, this._def); + } + nullable() { + return ZodNullable.create(this, this._def); + } + nullish() { + return this.nullable().optional(); + } + array() { + return ZodArray.create(this, this._def); + } + promise() { + return ZodPromise.create(this, this._def); + } + or(option) { + return ZodUnion.create([this, option], this._def); + } + and(incoming) { + return ZodIntersection.create(this, incoming, this._def); + } + transform(transform) { + return new ZodEffects({ + ...processCreateParams(this._def), + schema: this, + typeName: ZodFirstPartyTypeKind.ZodEffects, + effect: { type: "transform", transform }, + }); + } + default(def) { + const defaultValueFunc = typeof def === "function" ? def : () => def; + return new ZodDefault({ + ...processCreateParams(this._def), + innerType: this, + defaultValue: defaultValueFunc, + typeName: ZodFirstPartyTypeKind.ZodDefault, + }); + } + brand() { + return new ZodBranded({ + typeName: ZodFirstPartyTypeKind.ZodBranded, + type: this, + ...processCreateParams(this._def), + }); + } + catch(def) { + const catchValueFunc = typeof def === "function" ? def : () => def; + return new ZodCatch({ + ...processCreateParams(this._def), + innerType: this, + catchValue: catchValueFunc, + typeName: ZodFirstPartyTypeKind.ZodCatch, + }); + } + describe(description) { + const This = this.constructor; + return new This({ + ...this._def, + description, + }); + } + pipe(target) { + return ZodPipeline.create(this, target); + } + readonly() { + return ZodReadonly.create(this); + } + isOptional() { + return this.safeParse(undefined).success; + } + isNullable() { + return this.safeParse(null).success; + } + } + const cuidRegex = /^c[^\s-]{8,}$/i; + const cuid2Regex = /^[0-9a-z]+$/; + const ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/; + // const uuidRegex = + // /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i; + const uuidRegex = /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i; + const nanoidRegex = /^[a-z0-9_-]{21}$/i; + const durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/; + // from https://stackoverflow.com/a/46181/1550155 + // old version: too slow, didn't support unicode + // const emailRegex = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i; + //old email regex + // const emailRegex = /^(([^<>()[\].,;:\s@"]+(\.[^<>()[\].,;:\s@"]+)*)|(".+"))@((?!-)([^<>()[\].,;:\s@"]+\.)+[^<>()[\].,;:\s@"]{1,})[^-<>()[\].,;:\s@"]$/i; + // eslint-disable-next-line + // const emailRegex = + // /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\])|(\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\.[A-Za-z]{2,})+))$/; + // const emailRegex = + // /^[a-zA-Z0-9\.\!\#\$\%\&\'\*\+\/\=\?\^\_\`\{\|\}\~\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/; + // const emailRegex = + // /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/i; + const emailRegex = /^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i; + // const emailRegex = + // /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\.[a-z0-9\-]+)*$/i; + // from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression + const _emojiRegex = `^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`; + let emojiRegex; + // faster, simpler, safer + const ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/; + const ipv6Regex = /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/; + // https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript + const base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/; + // simple + // const dateRegexSource = `\\d{4}-\\d{2}-\\d{2}`; + // no leap year validation + // const dateRegexSource = `\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\d|2\\d))`; + // with leap year validation + const dateRegexSource = `((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`; + const dateRegex = new RegExp(`^${dateRegexSource}$`); + function timeRegexSource(args) { + // let regex = `\\d{2}:\\d{2}:\\d{2}`; + let regex = `([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d`; + if (args.precision) { + regex = `${regex}\\.\\d{${args.precision}}`; + } + else if (args.precision == null) { + regex = `${regex}(\\.\\d+)?`; + } + return regex; + } + function timeRegex(args) { + return new RegExp(`^${timeRegexSource(args)}$`); + } + // Adapted from https://stackoverflow.com/a/3143231 + function datetimeRegex(args) { + let regex = `${dateRegexSource}T${timeRegexSource(args)}`; + const opts = []; + opts.push(args.local ? `Z?` : `Z`); + if (args.offset) + opts.push(`([+-]\\d{2}:?\\d{2})`); + regex = `${regex}(${opts.join("|")})`; + return new RegExp(`^${regex}$`); + } + function isValidIP(ip, version) { + if ((version === "v4" || !version) && ipv4Regex.test(ip)) { + return true; + } + if ((version === "v6" || !version) && ipv6Regex.test(ip)) { + return true; + } + return false; + } + class ZodString extends ZodType { + _parse(input) { + if (this._def.coerce) { + input.data = String(input.data); + } + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.string) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.string, + received: ctx.parsedType, + }); + return INVALID; + } + const status = new ParseStatus(); + let ctx = undefined; + for (const check of this._def.checks) { + if (check.kind === "min") { + if (input.data.length < check.value) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: check.value, + type: "string", + inclusive: true, + exact: false, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "max") { + if (input.data.length > check.value) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: check.value, + type: "string", + inclusive: true, + exact: false, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "length") { + const tooBig = input.data.length > check.value; + const tooSmall = input.data.length < check.value; + if (tooBig || tooSmall) { + ctx = this._getOrReturnCtx(input, ctx); + if (tooBig) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: check.value, + type: "string", + inclusive: true, + exact: true, + message: check.message, + }); + } + else if (tooSmall) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: check.value, + type: "string", + inclusive: true, + exact: true, + message: check.message, + }); + } + status.dirty(); + } + } + else if (check.kind === "email") { + if (!emailRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "email", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "emoji") { + if (!emojiRegex) { + emojiRegex = new RegExp(_emojiRegex, "u"); + } + if (!emojiRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "emoji", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "uuid") { + if (!uuidRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "uuid", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "nanoid") { + if (!nanoidRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "nanoid", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "cuid") { + if (!cuidRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "cuid", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "cuid2") { + if (!cuid2Regex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "cuid2", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "ulid") { + if (!ulidRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "ulid", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "url") { + try { + new URL(input.data); + } + catch (_a) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "url", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "regex") { + check.regex.lastIndex = 0; + const testResult = check.regex.test(input.data); + if (!testResult) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "regex", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "trim") { + input.data = input.data.trim(); + } + else if (check.kind === "includes") { + if (!input.data.includes(check.value, check.position)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: { includes: check.value, position: check.position }, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "toLowerCase") { + input.data = input.data.toLowerCase(); + } + else if (check.kind === "toUpperCase") { + input.data = input.data.toUpperCase(); + } + else if (check.kind === "startsWith") { + if (!input.data.startsWith(check.value)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: { startsWith: check.value }, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "endsWith") { + if (!input.data.endsWith(check.value)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: { endsWith: check.value }, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "datetime") { + const regex = datetimeRegex(check); + if (!regex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: "datetime", + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "date") { + const regex = dateRegex; + if (!regex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: "date", + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "time") { + const regex = timeRegex(check); + if (!regex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: "time", + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "duration") { + if (!durationRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "duration", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "ip") { + if (!isValidIP(input.data, check.version)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "ip", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "base64") { + if (!base64Regex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "base64", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } + else { + util.assertNever(check); + } + } + return { status: status.value, value: input.data }; + } + _regex(regex, validation, message) { + return this.refinement((data) => regex.test(data), { + validation, + code: ZodIssueCode.invalid_string, + ...errorUtil.errToObj(message), + }); + } + _addCheck(check) { + return new ZodString({ + ...this._def, + checks: [...this._def.checks, check], + }); + } + email(message) { + return this._addCheck({ kind: "email", ...errorUtil.errToObj(message) }); + } + url(message) { + return this._addCheck({ kind: "url", ...errorUtil.errToObj(message) }); + } + emoji(message) { + return this._addCheck({ kind: "emoji", ...errorUtil.errToObj(message) }); + } + uuid(message) { + return this._addCheck({ kind: "uuid", ...errorUtil.errToObj(message) }); + } + nanoid(message) { + return this._addCheck({ kind: "nanoid", ...errorUtil.errToObj(message) }); + } + cuid(message) { + return this._addCheck({ kind: "cuid", ...errorUtil.errToObj(message) }); + } + cuid2(message) { + return this._addCheck({ kind: "cuid2", ...errorUtil.errToObj(message) }); + } + ulid(message) { + return this._addCheck({ kind: "ulid", ...errorUtil.errToObj(message) }); + } + base64(message) { + return this._addCheck({ kind: "base64", ...errorUtil.errToObj(message) }); + } + ip(options) { + return this._addCheck({ kind: "ip", ...errorUtil.errToObj(options) }); + } + datetime(options) { + var _a, _b; + if (typeof options === "string") { + return this._addCheck({ + kind: "datetime", + precision: null, + offset: false, + local: false, + message: options, + }); + } + return this._addCheck({ + kind: "datetime", + precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === "undefined" ? null : options === null || options === void 0 ? void 0 : options.precision, + offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false, + local: (_b = options === null || options === void 0 ? void 0 : options.local) !== null && _b !== void 0 ? _b : false, + ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message), + }); + } + date(message) { + return this._addCheck({ kind: "date", message }); + } + time(options) { + if (typeof options === "string") { + return this._addCheck({ + kind: "time", + precision: null, + message: options, + }); + } + return this._addCheck({ + kind: "time", + precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === "undefined" ? null : options === null || options === void 0 ? void 0 : options.precision, + ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message), + }); + } + duration(message) { + return this._addCheck({ kind: "duration", ...errorUtil.errToObj(message) }); + } + regex(regex, message) { + return this._addCheck({ + kind: "regex", + regex: regex, + ...errorUtil.errToObj(message), + }); + } + includes(value, options) { + return this._addCheck({ + kind: "includes", + value: value, + position: options === null || options === void 0 ? void 0 : options.position, + ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message), + }); + } + startsWith(value, message) { + return this._addCheck({ + kind: "startsWith", + value: value, + ...errorUtil.errToObj(message), + }); + } + endsWith(value, message) { + return this._addCheck({ + kind: "endsWith", + value: value, + ...errorUtil.errToObj(message), + }); + } + min(minLength, message) { + return this._addCheck({ + kind: "min", + value: minLength, + ...errorUtil.errToObj(message), + }); + } + max(maxLength, message) { + return this._addCheck({ + kind: "max", + value: maxLength, + ...errorUtil.errToObj(message), + }); + } + length(len, message) { + return this._addCheck({ + kind: "length", + value: len, + ...errorUtil.errToObj(message), + }); + } + /** + * @deprecated Use z.string().min(1) instead. + * @see {@link ZodString.min} + */ + nonempty(message) { + return this.min(1, errorUtil.errToObj(message)); + } + trim() { + return new ZodString({ + ...this._def, + checks: [...this._def.checks, { kind: "trim" }], + }); + } + toLowerCase() { + return new ZodString({ + ...this._def, + checks: [...this._def.checks, { kind: "toLowerCase" }], + }); + } + toUpperCase() { + return new ZodString({ + ...this._def, + checks: [...this._def.checks, { kind: "toUpperCase" }], + }); + } + get isDatetime() { + return !!this._def.checks.find((ch) => ch.kind === "datetime"); + } + get isDate() { + return !!this._def.checks.find((ch) => ch.kind === "date"); + } + get isTime() { + return !!this._def.checks.find((ch) => ch.kind === "time"); + } + get isDuration() { + return !!this._def.checks.find((ch) => ch.kind === "duration"); + } + get isEmail() { + return !!this._def.checks.find((ch) => ch.kind === "email"); + } + get isURL() { + return !!this._def.checks.find((ch) => ch.kind === "url"); + } + get isEmoji() { + return !!this._def.checks.find((ch) => ch.kind === "emoji"); + } + get isUUID() { + return !!this._def.checks.find((ch) => ch.kind === "uuid"); + } + get isNANOID() { + return !!this._def.checks.find((ch) => ch.kind === "nanoid"); + } + get isCUID() { + return !!this._def.checks.find((ch) => ch.kind === "cuid"); + } + get isCUID2() { + return !!this._def.checks.find((ch) => ch.kind === "cuid2"); + } + get isULID() { + return !!this._def.checks.find((ch) => ch.kind === "ulid"); + } + get isIP() { + return !!this._def.checks.find((ch) => ch.kind === "ip"); + } + get isBase64() { + return !!this._def.checks.find((ch) => ch.kind === "base64"); + } + get minLength() { + let min = null; + for (const ch of this._def.checks) { + if (ch.kind === "min") { + if (min === null || ch.value > min) + min = ch.value; + } + } + return min; + } + get maxLength() { + let max = null; + for (const ch of this._def.checks) { + if (ch.kind === "max") { + if (max === null || ch.value < max) + max = ch.value; + } + } + return max; + } + } + ZodString.create = (params) => { + var _a; + return new ZodString({ + checks: [], + typeName: ZodFirstPartyTypeKind.ZodString, + coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false, + ...processCreateParams(params), + }); + }; + // https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034 + function floatSafeRemainder(val, step) { + const valDecCount = (val.toString().split(".")[1] || "").length; + const stepDecCount = (step.toString().split(".")[1] || "").length; + const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount; + const valInt = parseInt(val.toFixed(decCount).replace(".", "")); + const stepInt = parseInt(step.toFixed(decCount).replace(".", "")); + return (valInt % stepInt) / Math.pow(10, decCount); + } + class ZodNumber extends ZodType { + constructor() { + super(...arguments); + this.min = this.gte; + this.max = this.lte; + this.step = this.multipleOf; + } + _parse(input) { + if (this._def.coerce) { + input.data = Number(input.data); + } + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.number) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.number, + received: ctx.parsedType, + }); + return INVALID; + } + let ctx = undefined; + const status = new ParseStatus(); + for (const check of this._def.checks) { + if (check.kind === "int") { + if (!util.isInteger(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: "integer", + received: "float", + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "min") { + const tooSmall = check.inclusive + ? input.data < check.value + : input.data <= check.value; + if (tooSmall) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: check.value, + type: "number", + inclusive: check.inclusive, + exact: false, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "max") { + const tooBig = check.inclusive + ? input.data > check.value + : input.data >= check.value; + if (tooBig) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: check.value, + type: "number", + inclusive: check.inclusive, + exact: false, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "multipleOf") { + if (floatSafeRemainder(input.data, check.value) !== 0) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.not_multiple_of, + multipleOf: check.value, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "finite") { + if (!Number.isFinite(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.not_finite, + message: check.message, + }); + status.dirty(); + } + } + else { + util.assertNever(check); + } + } + return { status: status.value, value: input.data }; + } + gte(value, message) { + return this.setLimit("min", value, true, errorUtil.toString(message)); + } + gt(value, message) { + return this.setLimit("min", value, false, errorUtil.toString(message)); + } + lte(value, message) { + return this.setLimit("max", value, true, errorUtil.toString(message)); + } + lt(value, message) { + return this.setLimit("max", value, false, errorUtil.toString(message)); + } + setLimit(kind, value, inclusive, message) { + return new ZodNumber({ + ...this._def, + checks: [ + ...this._def.checks, + { + kind, + value, + inclusive, + message: errorUtil.toString(message), + }, + ], + }); + } + _addCheck(check) { + return new ZodNumber({ + ...this._def, + checks: [...this._def.checks, check], + }); + } + int(message) { + return this._addCheck({ + kind: "int", + message: errorUtil.toString(message), + }); + } + positive(message) { + return this._addCheck({ + kind: "min", + value: 0, + inclusive: false, + message: errorUtil.toString(message), + }); + } + negative(message) { + return this._addCheck({ + kind: "max", + value: 0, + inclusive: false, + message: errorUtil.toString(message), + }); + } + nonpositive(message) { + return this._addCheck({ + kind: "max", + value: 0, + inclusive: true, + message: errorUtil.toString(message), + }); + } + nonnegative(message) { + return this._addCheck({ + kind: "min", + value: 0, + inclusive: true, + message: errorUtil.toString(message), + }); + } + multipleOf(value, message) { + return this._addCheck({ + kind: "multipleOf", + value: value, + message: errorUtil.toString(message), + }); + } + finite(message) { + return this._addCheck({ + kind: "finite", + message: errorUtil.toString(message), + }); + } + safe(message) { + return this._addCheck({ + kind: "min", + inclusive: true, + value: Number.MIN_SAFE_INTEGER, + message: errorUtil.toString(message), + })._addCheck({ + kind: "max", + inclusive: true, + value: Number.MAX_SAFE_INTEGER, + message: errorUtil.toString(message), + }); + } + get minValue() { + let min = null; + for (const ch of this._def.checks) { + if (ch.kind === "min") { + if (min === null || ch.value > min) + min = ch.value; + } + } + return min; + } + get maxValue() { + let max = null; + for (const ch of this._def.checks) { + if (ch.kind === "max") { + if (max === null || ch.value < max) + max = ch.value; + } + } + return max; + } + get isInt() { + return !!this._def.checks.find((ch) => ch.kind === "int" || + (ch.kind === "multipleOf" && util.isInteger(ch.value))); + } + get isFinite() { + let max = null, min = null; + for (const ch of this._def.checks) { + if (ch.kind === "finite" || + ch.kind === "int" || + ch.kind === "multipleOf") { + return true; + } + else if (ch.kind === "min") { + if (min === null || ch.value > min) + min = ch.value; + } + else if (ch.kind === "max") { + if (max === null || ch.value < max) + max = ch.value; + } + } + return Number.isFinite(min) && Number.isFinite(max); + } + } + ZodNumber.create = (params) => { + return new ZodNumber({ + checks: [], + typeName: ZodFirstPartyTypeKind.ZodNumber, + coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false, + ...processCreateParams(params), + }); + }; + class ZodBigInt extends ZodType { + constructor() { + super(...arguments); + this.min = this.gte; + this.max = this.lte; + } + _parse(input) { + if (this._def.coerce) { + input.data = BigInt(input.data); + } + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.bigint) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.bigint, + received: ctx.parsedType, + }); + return INVALID; + } + let ctx = undefined; + const status = new ParseStatus(); + for (const check of this._def.checks) { + if (check.kind === "min") { + const tooSmall = check.inclusive + ? input.data < check.value + : input.data <= check.value; + if (tooSmall) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + type: "bigint", + minimum: check.value, + inclusive: check.inclusive, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "max") { + const tooBig = check.inclusive + ? input.data > check.value + : input.data >= check.value; + if (tooBig) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + type: "bigint", + maximum: check.value, + inclusive: check.inclusive, + message: check.message, + }); + status.dirty(); + } + } + else if (check.kind === "multipleOf") { + if (input.data % check.value !== BigInt(0)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.not_multiple_of, + multipleOf: check.value, + message: check.message, + }); + status.dirty(); + } + } + else { + util.assertNever(check); + } + } + return { status: status.value, value: input.data }; + } + gte(value, message) { + return this.setLimit("min", value, true, errorUtil.toString(message)); + } + gt(value, message) { + return this.setLimit("min", value, false, errorUtil.toString(message)); + } + lte(value, message) { + return this.setLimit("max", value, true, errorUtil.toString(message)); + } + lt(value, message) { + return this.setLimit("max", value, false, errorUtil.toString(message)); + } + setLimit(kind, value, inclusive, message) { + return new ZodBigInt({ + ...this._def, + checks: [ + ...this._def.checks, + { + kind, + value, + inclusive, + message: errorUtil.toString(message), + }, + ], + }); + } + _addCheck(check) { + return new ZodBigInt({ + ...this._def, + checks: [...this._def.checks, check], + }); + } + positive(message) { + return this._addCheck({ + kind: "min", + value: BigInt(0), + inclusive: false, + message: errorUtil.toString(message), + }); + } + negative(message) { + return this._addCheck({ + kind: "max", + value: BigInt(0), + inclusive: false, + message: errorUtil.toString(message), + }); + } + nonpositive(message) { + return this._addCheck({ + kind: "max", + value: BigInt(0), + inclusive: true, + message: errorUtil.toString(message), + }); + } + nonnegative(message) { + return this._addCheck({ + kind: "min", + value: BigInt(0), + inclusive: true, + message: errorUtil.toString(message), + }); + } + multipleOf(value, message) { + return this._addCheck({ + kind: "multipleOf", + value, + message: errorUtil.toString(message), + }); + } + get minValue() { + let min = null; + for (const ch of this._def.checks) { + if (ch.kind === "min") { + if (min === null || ch.value > min) + min = ch.value; + } + } + return min; + } + get maxValue() { + let max = null; + for (const ch of this._def.checks) { + if (ch.kind === "max") { + if (max === null || ch.value < max) + max = ch.value; + } + } + return max; + } + } + ZodBigInt.create = (params) => { + var _a; + return new ZodBigInt({ + checks: [], + typeName: ZodFirstPartyTypeKind.ZodBigInt, + coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false, + ...processCreateParams(params), + }); + }; + class ZodBoolean extends ZodType { + _parse(input) { + if (this._def.coerce) { + input.data = Boolean(input.data); + } + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.boolean) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.boolean, + received: ctx.parsedType, + }); + return INVALID; + } + return OK(input.data); + } + } + ZodBoolean.create = (params) => { + return new ZodBoolean({ + typeName: ZodFirstPartyTypeKind.ZodBoolean, + coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false, + ...processCreateParams(params), + }); + }; + class ZodDate extends ZodType { + _parse(input) { + if (this._def.coerce) { + input.data = new Date(input.data); + } + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.date) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.date, + received: ctx.parsedType, + }); + return INVALID; + } + if (isNaN(input.data.getTime())) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_date, + }); + return INVALID; + } + const status = new ParseStatus(); + let ctx = undefined; + for (const check of this._def.checks) { + if (check.kind === "min") { + if (input.data.getTime() < check.value) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + message: check.message, + inclusive: true, + exact: false, + minimum: check.value, + type: "date", + }); + status.dirty(); + } + } + else if (check.kind === "max") { + if (input.data.getTime() > check.value) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + message: check.message, + inclusive: true, + exact: false, + maximum: check.value, + type: "date", + }); + status.dirty(); + } + } + else { + util.assertNever(check); + } + } + return { + status: status.value, + value: new Date(input.data.getTime()), + }; + } + _addCheck(check) { + return new ZodDate({ + ...this._def, + checks: [...this._def.checks, check], + }); + } + min(minDate, message) { + return this._addCheck({ + kind: "min", + value: minDate.getTime(), + message: errorUtil.toString(message), + }); + } + max(maxDate, message) { + return this._addCheck({ + kind: "max", + value: maxDate.getTime(), + message: errorUtil.toString(message), + }); + } + get minDate() { + let min = null; + for (const ch of this._def.checks) { + if (ch.kind === "min") { + if (min === null || ch.value > min) + min = ch.value; + } + } + return min != null ? new Date(min) : null; + } + get maxDate() { + let max = null; + for (const ch of this._def.checks) { + if (ch.kind === "max") { + if (max === null || ch.value < max) + max = ch.value; + } + } + return max != null ? new Date(max) : null; + } + } + ZodDate.create = (params) => { + return new ZodDate({ + checks: [], + coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false, + typeName: ZodFirstPartyTypeKind.ZodDate, + ...processCreateParams(params), + }); + }; + class ZodSymbol extends ZodType { + _parse(input) { + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.symbol) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.symbol, + received: ctx.parsedType, + }); + return INVALID; + } + return OK(input.data); + } + } + ZodSymbol.create = (params) => { + return new ZodSymbol({ + typeName: ZodFirstPartyTypeKind.ZodSymbol, + ...processCreateParams(params), + }); + }; + class ZodUndefined extends ZodType { + _parse(input) { + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.undefined) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.undefined, + received: ctx.parsedType, + }); + return INVALID; + } + return OK(input.data); + } + } + ZodUndefined.create = (params) => { + return new ZodUndefined({ + typeName: ZodFirstPartyTypeKind.ZodUndefined, + ...processCreateParams(params), + }); + }; + class ZodNull extends ZodType { + _parse(input) { + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.null) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.null, + received: ctx.parsedType, + }); + return INVALID; + } + return OK(input.data); + } + } + ZodNull.create = (params) => { + return new ZodNull({ + typeName: ZodFirstPartyTypeKind.ZodNull, + ...processCreateParams(params), + }); + }; + class ZodAny extends ZodType { + constructor() { + super(...arguments); + // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject. + this._any = true; + } + _parse(input) { + return OK(input.data); + } + } + ZodAny.create = (params) => { + return new ZodAny({ + typeName: ZodFirstPartyTypeKind.ZodAny, + ...processCreateParams(params), + }); + }; + class ZodUnknown extends ZodType { + constructor() { + super(...arguments); + // required + this._unknown = true; + } + _parse(input) { + return OK(input.data); + } + } + ZodUnknown.create = (params) => { + return new ZodUnknown({ + typeName: ZodFirstPartyTypeKind.ZodUnknown, + ...processCreateParams(params), + }); + }; + class ZodNever extends ZodType { + _parse(input) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.never, + received: ctx.parsedType, + }); + return INVALID; + } + } + ZodNever.create = (params) => { + return new ZodNever({ + typeName: ZodFirstPartyTypeKind.ZodNever, + ...processCreateParams(params), + }); + }; + class ZodVoid extends ZodType { + _parse(input) { + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.undefined) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.void, + received: ctx.parsedType, + }); + return INVALID; + } + return OK(input.data); + } + } + ZodVoid.create = (params) => { + return new ZodVoid({ + typeName: ZodFirstPartyTypeKind.ZodVoid, + ...processCreateParams(params), + }); + }; + class ZodArray extends ZodType { + _parse(input) { + const { ctx, status } = this._processInputParams(input); + const def = this._def; + if (ctx.parsedType !== ZodParsedType.array) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.array, + received: ctx.parsedType, + }); + return INVALID; + } + if (def.exactLength !== null) { + const tooBig = ctx.data.length > def.exactLength.value; + const tooSmall = ctx.data.length < def.exactLength.value; + if (tooBig || tooSmall) { + addIssueToContext(ctx, { + code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small, + minimum: (tooSmall ? def.exactLength.value : undefined), + maximum: (tooBig ? def.exactLength.value : undefined), + type: "array", + inclusive: true, + exact: true, + message: def.exactLength.message, + }); + status.dirty(); + } + } + if (def.minLength !== null) { + if (ctx.data.length < def.minLength.value) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: def.minLength.value, + type: "array", + inclusive: true, + exact: false, + message: def.minLength.message, + }); + status.dirty(); + } + } + if (def.maxLength !== null) { + if (ctx.data.length > def.maxLength.value) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: def.maxLength.value, + type: "array", + inclusive: true, + exact: false, + message: def.maxLength.message, + }); + status.dirty(); + } + } + if (ctx.common.async) { + return Promise.all([...ctx.data].map((item, i) => { + return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i)); + })).then((result) => { + return ParseStatus.mergeArray(status, result); + }); + } + const result = [...ctx.data].map((item, i) => { + return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i)); + }); + return ParseStatus.mergeArray(status, result); + } + get element() { + return this._def.type; + } + min(minLength, message) { + return new ZodArray({ + ...this._def, + minLength: { value: minLength, message: errorUtil.toString(message) }, + }); + } + max(maxLength, message) { + return new ZodArray({ + ...this._def, + maxLength: { value: maxLength, message: errorUtil.toString(message) }, + }); + } + length(len, message) { + return new ZodArray({ + ...this._def, + exactLength: { value: len, message: errorUtil.toString(message) }, + }); + } + nonempty(message) { + return this.min(1, message); + } + } + ZodArray.create = (schema, params) => { + return new ZodArray({ + type: schema, + minLength: null, + maxLength: null, + exactLength: null, + typeName: ZodFirstPartyTypeKind.ZodArray, + ...processCreateParams(params), + }); + }; + function deepPartialify(schema) { + if (schema instanceof ZodObject) { + const newShape = {}; + for (const key in schema.shape) { + const fieldSchema = schema.shape[key]; + newShape[key] = ZodOptional.create(deepPartialify(fieldSchema)); + } + return new ZodObject({ + ...schema._def, + shape: () => newShape, + }); + } + else if (schema instanceof ZodArray) { + return new ZodArray({ + ...schema._def, + type: deepPartialify(schema.element), + }); + } + else if (schema instanceof ZodOptional) { + return ZodOptional.create(deepPartialify(schema.unwrap())); + } + else if (schema instanceof ZodNullable) { + return ZodNullable.create(deepPartialify(schema.unwrap())); + } + else if (schema instanceof ZodTuple) { + return ZodTuple.create(schema.items.map((item) => deepPartialify(item))); + } + else { + return schema; + } + } + class ZodObject extends ZodType { + constructor() { + super(...arguments); + this._cached = null; + /** + * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped. + * If you want to pass through unknown properties, use `.passthrough()` instead. + */ + this.nonstrict = this.passthrough; + // extend< + // Augmentation extends ZodRawShape, + // NewOutput extends util.flatten<{ + // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation + // ? Augmentation[k]["_output"] + // : k extends keyof Output + // ? Output[k] + // : never; + // }>, + // NewInput extends util.flatten<{ + // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation + // ? Augmentation[k]["_input"] + // : k extends keyof Input + // ? Input[k] + // : never; + // }> + // >( + // augmentation: Augmentation + // ): ZodObject< + // extendShape, + // UnknownKeys, + // Catchall, + // NewOutput, + // NewInput + // > { + // return new ZodObject({ + // ...this._def, + // shape: () => ({ + // ...this._def.shape(), + // ...augmentation, + // }), + // }) as any; + // } + /** + * @deprecated Use `.extend` instead + * */ + this.augment = this.extend; + } + _getCached() { + if (this._cached !== null) + return this._cached; + const shape = this._def.shape(); + const keys = util.objectKeys(shape); + return (this._cached = { shape, keys }); + } + _parse(input) { + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.object) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.object, + received: ctx.parsedType, + }); + return INVALID; + } + const { status, ctx } = this._processInputParams(input); + const { shape, keys: shapeKeys } = this._getCached(); + const extraKeys = []; + if (!(this._def.catchall instanceof ZodNever && + this._def.unknownKeys === "strip")) { + for (const key in ctx.data) { + if (!shapeKeys.includes(key)) { + extraKeys.push(key); + } + } + } + const pairs = []; + for (const key of shapeKeys) { + const keyValidator = shape[key]; + const value = ctx.data[key]; + pairs.push({ + key: { status: "valid", value: key }, + value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)), + alwaysSet: key in ctx.data, + }); + } + if (this._def.catchall instanceof ZodNever) { + const unknownKeys = this._def.unknownKeys; + if (unknownKeys === "passthrough") { + for (const key of extraKeys) { + pairs.push({ + key: { status: "valid", value: key }, + value: { status: "valid", value: ctx.data[key] }, + }); + } + } + else if (unknownKeys === "strict") { + if (extraKeys.length > 0) { + addIssueToContext(ctx, { + code: ZodIssueCode.unrecognized_keys, + keys: extraKeys, + }); + status.dirty(); + } + } + else if (unknownKeys === "strip") ; + else { + throw new Error(`Internal ZodObject error: invalid unknownKeys value.`); + } + } + else { + // run catchall validation + const catchall = this._def.catchall; + for (const key of extraKeys) { + const value = ctx.data[key]; + pairs.push({ + key: { status: "valid", value: key }, + value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value) + ), + alwaysSet: key in ctx.data, + }); + } + } + if (ctx.common.async) { + return Promise.resolve() + .then(async () => { + const syncPairs = []; + for (const pair of pairs) { + const key = await pair.key; + const value = await pair.value; + syncPairs.push({ + key, + value, + alwaysSet: pair.alwaysSet, + }); + } + return syncPairs; + }) + .then((syncPairs) => { + return ParseStatus.mergeObjectSync(status, syncPairs); + }); + } + else { + return ParseStatus.mergeObjectSync(status, pairs); + } + } + get shape() { + return this._def.shape(); + } + strict(message) { + errorUtil.errToObj; + return new ZodObject({ + ...this._def, + unknownKeys: "strict", + ...(message !== undefined + ? { + errorMap: (issue, ctx) => { + var _a, _b, _c, _d; + const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError; + if (issue.code === "unrecognized_keys") + return { + message: (_d = errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : defaultError, + }; + return { + message: defaultError, + }; + }, + } + : {}), + }); + } + strip() { + return new ZodObject({ + ...this._def, + unknownKeys: "strip", + }); + } + passthrough() { + return new ZodObject({ + ...this._def, + unknownKeys: "passthrough", + }); + } + // const AugmentFactory = + // (def: Def) => + // ( + // augmentation: Augmentation + // ): ZodObject< + // extendShape, Augmentation>, + // Def["unknownKeys"], + // Def["catchall"] + // > => { + // return new ZodObject({ + // ...def, + // shape: () => ({ + // ...def.shape(), + // ...augmentation, + // }), + // }) as any; + // }; + extend(augmentation) { + return new ZodObject({ + ...this._def, + shape: () => ({ + ...this._def.shape(), + ...augmentation, + }), + }); + } + /** + * Prior to zod@1.0.12 there was a bug in the + * inferred type of merged objects. Please + * upgrade if you are experiencing issues. + */ + merge(merging) { + const merged = new ZodObject({ + unknownKeys: merging._def.unknownKeys, + catchall: merging._def.catchall, + shape: () => ({ + ...this._def.shape(), + ...merging._def.shape(), + }), + typeName: ZodFirstPartyTypeKind.ZodObject, + }); + return merged; + } + // merge< + // Incoming extends AnyZodObject, + // Augmentation extends Incoming["shape"], + // NewOutput extends { + // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation + // ? Augmentation[k]["_output"] + // : k extends keyof Output + // ? Output[k] + // : never; + // }, + // NewInput extends { + // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation + // ? Augmentation[k]["_input"] + // : k extends keyof Input + // ? Input[k] + // : never; + // } + // >( + // merging: Incoming + // ): ZodObject< + // extendShape>, + // Incoming["_def"]["unknownKeys"], + // Incoming["_def"]["catchall"], + // NewOutput, + // NewInput + // > { + // const merged: any = new ZodObject({ + // unknownKeys: merging._def.unknownKeys, + // catchall: merging._def.catchall, + // shape: () => + // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()), + // typeName: ZodFirstPartyTypeKind.ZodObject, + // }) as any; + // return merged; + // } + setKey(key, schema) { + return this.augment({ [key]: schema }); + } + // merge( + // merging: Incoming + // ): //ZodObject = (merging) => { + // ZodObject< + // extendShape>, + // Incoming["_def"]["unknownKeys"], + // Incoming["_def"]["catchall"] + // > { + // // const mergedShape = objectUtil.mergeShapes( + // // this._def.shape(), + // // merging._def.shape() + // // ); + // const merged: any = new ZodObject({ + // unknownKeys: merging._def.unknownKeys, + // catchall: merging._def.catchall, + // shape: () => + // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()), + // typeName: ZodFirstPartyTypeKind.ZodObject, + // }) as any; + // return merged; + // } + catchall(index) { + return new ZodObject({ + ...this._def, + catchall: index, + }); + } + pick(mask) { + const shape = {}; + util.objectKeys(mask).forEach((key) => { + if (mask[key] && this.shape[key]) { + shape[key] = this.shape[key]; + } + }); + return new ZodObject({ + ...this._def, + shape: () => shape, + }); + } + omit(mask) { + const shape = {}; + util.objectKeys(this.shape).forEach((key) => { + if (!mask[key]) { + shape[key] = this.shape[key]; + } + }); + return new ZodObject({ + ...this._def, + shape: () => shape, + }); + } + /** + * @deprecated + */ + deepPartial() { + return deepPartialify(this); + } + partial(mask) { + const newShape = {}; + util.objectKeys(this.shape).forEach((key) => { + const fieldSchema = this.shape[key]; + if (mask && !mask[key]) { + newShape[key] = fieldSchema; + } + else { + newShape[key] = fieldSchema.optional(); + } + }); + return new ZodObject({ + ...this._def, + shape: () => newShape, + }); + } + required(mask) { + const newShape = {}; + util.objectKeys(this.shape).forEach((key) => { + if (mask && !mask[key]) { + newShape[key] = this.shape[key]; + } + else { + const fieldSchema = this.shape[key]; + let newField = fieldSchema; + while (newField instanceof ZodOptional) { + newField = newField._def.innerType; + } + newShape[key] = newField; + } + }); + return new ZodObject({ + ...this._def, + shape: () => newShape, + }); + } + keyof() { + return createZodEnum(util.objectKeys(this.shape)); + } + } + ZodObject.create = (shape, params) => { + return new ZodObject({ + shape: () => shape, + unknownKeys: "strip", + catchall: ZodNever.create(), + typeName: ZodFirstPartyTypeKind.ZodObject, + ...processCreateParams(params), + }); + }; + ZodObject.strictCreate = (shape, params) => { + return new ZodObject({ + shape: () => shape, + unknownKeys: "strict", + catchall: ZodNever.create(), + typeName: ZodFirstPartyTypeKind.ZodObject, + ...processCreateParams(params), + }); + }; + ZodObject.lazycreate = (shape, params) => { + return new ZodObject({ + shape, + unknownKeys: "strip", + catchall: ZodNever.create(), + typeName: ZodFirstPartyTypeKind.ZodObject, + ...processCreateParams(params), + }); + }; + class ZodUnion extends ZodType { + _parse(input) { + const { ctx } = this._processInputParams(input); + const options = this._def.options; + function handleResults(results) { + // return first issue-free validation if it exists + for (const result of results) { + if (result.result.status === "valid") { + return result.result; + } + } + for (const result of results) { + if (result.result.status === "dirty") { + // add issues from dirty option + ctx.common.issues.push(...result.ctx.common.issues); + return result.result; + } + } + // return invalid + const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues)); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_union, + unionErrors, + }); + return INVALID; + } + if (ctx.common.async) { + return Promise.all(options.map(async (option) => { + const childCtx = { + ...ctx, + common: { + ...ctx.common, + issues: [], + }, + parent: null, + }; + return { + result: await option._parseAsync({ + data: ctx.data, + path: ctx.path, + parent: childCtx, + }), + ctx: childCtx, + }; + })).then(handleResults); + } + else { + let dirty = undefined; + const issues = []; + for (const option of options) { + const childCtx = { + ...ctx, + common: { + ...ctx.common, + issues: [], + }, + parent: null, + }; + const result = option._parseSync({ + data: ctx.data, + path: ctx.path, + parent: childCtx, + }); + if (result.status === "valid") { + return result; + } + else if (result.status === "dirty" && !dirty) { + dirty = { result, ctx: childCtx }; + } + if (childCtx.common.issues.length) { + issues.push(childCtx.common.issues); + } + } + if (dirty) { + ctx.common.issues.push(...dirty.ctx.common.issues); + return dirty.result; + } + const unionErrors = issues.map((issues) => new ZodError(issues)); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_union, + unionErrors, + }); + return INVALID; + } + } + get options() { + return this._def.options; + } + } + ZodUnion.create = (types, params) => { + return new ZodUnion({ + options: types, + typeName: ZodFirstPartyTypeKind.ZodUnion, + ...processCreateParams(params), + }); + }; + ///////////////////////////////////////////////////// + ///////////////////////////////////////////////////// + ////////// ////////// + ////////// ZodDiscriminatedUnion ////////// + ////////// ////////// + ///////////////////////////////////////////////////// + ///////////////////////////////////////////////////// + const getDiscriminator = (type) => { + if (type instanceof ZodLazy) { + return getDiscriminator(type.schema); + } + else if (type instanceof ZodEffects) { + return getDiscriminator(type.innerType()); + } + else if (type instanceof ZodLiteral) { + return [type.value]; + } + else if (type instanceof ZodEnum) { + return type.options; + } + else if (type instanceof ZodNativeEnum) { + // eslint-disable-next-line ban/ban + return util.objectValues(type.enum); + } + else if (type instanceof ZodDefault) { + return getDiscriminator(type._def.innerType); + } + else if (type instanceof ZodUndefined) { + return [undefined]; + } + else if (type instanceof ZodNull) { + return [null]; + } + else if (type instanceof ZodOptional) { + return [undefined, ...getDiscriminator(type.unwrap())]; + } + else if (type instanceof ZodNullable) { + return [null, ...getDiscriminator(type.unwrap())]; + } + else if (type instanceof ZodBranded) { + return getDiscriminator(type.unwrap()); + } + else if (type instanceof ZodReadonly) { + return getDiscriminator(type.unwrap()); + } + else if (type instanceof ZodCatch) { + return getDiscriminator(type._def.innerType); + } + else { + return []; + } + }; + class ZodDiscriminatedUnion extends ZodType { + _parse(input) { + const { ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.object) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.object, + received: ctx.parsedType, + }); + return INVALID; + } + const discriminator = this.discriminator; + const discriminatorValue = ctx.data[discriminator]; + const option = this.optionsMap.get(discriminatorValue); + if (!option) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_union_discriminator, + options: Array.from(this.optionsMap.keys()), + path: [discriminator], + }); + return INVALID; + } + if (ctx.common.async) { + return option._parseAsync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }); + } + else { + return option._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }); + } + } + get discriminator() { + return this._def.discriminator; + } + get options() { + return this._def.options; + } + get optionsMap() { + return this._def.optionsMap; + } + /** + * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor. + * However, it only allows a union of objects, all of which need to share a discriminator property. This property must + * have a different value for each object in the union. + * @param discriminator the name of the discriminator property + * @param types an array of object schemas + * @param params + */ + static create(discriminator, options, params) { + // Get all the valid discriminator values + const optionsMap = new Map(); + // try { + for (const type of options) { + const discriminatorValues = getDiscriminator(type.shape[discriminator]); + if (!discriminatorValues.length) { + throw new Error(`A discriminator value for key \`${discriminator}\` could not be extracted from all schema options`); + } + for (const value of discriminatorValues) { + if (optionsMap.has(value)) { + throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`); + } + optionsMap.set(value, type); + } + } + return new ZodDiscriminatedUnion({ + typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion, + discriminator, + options, + optionsMap, + ...processCreateParams(params), + }); + } + } + function mergeValues(a, b) { + const aType = getParsedType(a); + const bType = getParsedType(b); + if (a === b) { + return { valid: true, data: a }; + } + else if (aType === ZodParsedType.object && bType === ZodParsedType.object) { + const bKeys = util.objectKeys(b); + const sharedKeys = util + .objectKeys(a) + .filter((key) => bKeys.indexOf(key) !== -1); + const newObj = { ...a, ...b }; + for (const key of sharedKeys) { + const sharedValue = mergeValues(a[key], b[key]); + if (!sharedValue.valid) { + return { valid: false }; + } + newObj[key] = sharedValue.data; + } + return { valid: true, data: newObj }; + } + else if (aType === ZodParsedType.array && bType === ZodParsedType.array) { + if (a.length !== b.length) { + return { valid: false }; + } + const newArray = []; + for (let index = 0; index < a.length; index++) { + const itemA = a[index]; + const itemB = b[index]; + const sharedValue = mergeValues(itemA, itemB); + if (!sharedValue.valid) { + return { valid: false }; + } + newArray.push(sharedValue.data); + } + return { valid: true, data: newArray }; + } + else if (aType === ZodParsedType.date && + bType === ZodParsedType.date && + +a === +b) { + return { valid: true, data: a }; + } + else { + return { valid: false }; + } + } + class ZodIntersection extends ZodType { + _parse(input) { + const { status, ctx } = this._processInputParams(input); + const handleParsed = (parsedLeft, parsedRight) => { + if (isAborted(parsedLeft) || isAborted(parsedRight)) { + return INVALID; + } + const merged = mergeValues(parsedLeft.value, parsedRight.value); + if (!merged.valid) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_intersection_types, + }); + return INVALID; + } + if (isDirty(parsedLeft) || isDirty(parsedRight)) { + status.dirty(); + } + return { status: status.value, value: merged.data }; + }; + if (ctx.common.async) { + return Promise.all([ + this._def.left._parseAsync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }), + this._def.right._parseAsync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }), + ]).then(([left, right]) => handleParsed(left, right)); + } + else { + return handleParsed(this._def.left._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }), this._def.right._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + })); + } + } + } + ZodIntersection.create = (left, right, params) => { + return new ZodIntersection({ + left: left, + right: right, + typeName: ZodFirstPartyTypeKind.ZodIntersection, + ...processCreateParams(params), + }); + }; + class ZodTuple extends ZodType { + _parse(input) { + const { status, ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.array) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.array, + received: ctx.parsedType, + }); + return INVALID; + } + if (ctx.data.length < this._def.items.length) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: this._def.items.length, + inclusive: true, + exact: false, + type: "array", + }); + return INVALID; + } + const rest = this._def.rest; + if (!rest && ctx.data.length > this._def.items.length) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: this._def.items.length, + inclusive: true, + exact: false, + type: "array", + }); + status.dirty(); + } + const items = [...ctx.data] + .map((item, itemIndex) => { + const schema = this._def.items[itemIndex] || this._def.rest; + if (!schema) + return null; + return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex)); + }) + .filter((x) => !!x); // filter nulls + if (ctx.common.async) { + return Promise.all(items).then((results) => { + return ParseStatus.mergeArray(status, results); + }); + } + else { + return ParseStatus.mergeArray(status, items); + } + } + get items() { + return this._def.items; + } + rest(rest) { + return new ZodTuple({ + ...this._def, + rest, + }); + } + } + ZodTuple.create = (schemas, params) => { + if (!Array.isArray(schemas)) { + throw new Error("You must pass an array of schemas to z.tuple([ ... ])"); + } + return new ZodTuple({ + items: schemas, + typeName: ZodFirstPartyTypeKind.ZodTuple, + rest: null, + ...processCreateParams(params), + }); + }; + class ZodRecord extends ZodType { + get keySchema() { + return this._def.keyType; + } + get valueSchema() { + return this._def.valueType; + } + _parse(input) { + const { status, ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.object) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.object, + received: ctx.parsedType, + }); + return INVALID; + } + const pairs = []; + const keyType = this._def.keyType; + const valueType = this._def.valueType; + for (const key in ctx.data) { + pairs.push({ + key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)), + value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)), + alwaysSet: key in ctx.data, + }); + } + if (ctx.common.async) { + return ParseStatus.mergeObjectAsync(status, pairs); + } + else { + return ParseStatus.mergeObjectSync(status, pairs); + } + } + get element() { + return this._def.valueType; + } + static create(first, second, third) { + if (second instanceof ZodType) { + return new ZodRecord({ + keyType: first, + valueType: second, + typeName: ZodFirstPartyTypeKind.ZodRecord, + ...processCreateParams(third), + }); + } + return new ZodRecord({ + keyType: ZodString.create(), + valueType: first, + typeName: ZodFirstPartyTypeKind.ZodRecord, + ...processCreateParams(second), + }); + } + } + class ZodMap extends ZodType { + get keySchema() { + return this._def.keyType; + } + get valueSchema() { + return this._def.valueType; + } + _parse(input) { + const { status, ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.map) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.map, + received: ctx.parsedType, + }); + return INVALID; + } + const keyType = this._def.keyType; + const valueType = this._def.valueType; + const pairs = [...ctx.data.entries()].map(([key, value], index) => { + return { + key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, "key"])), + value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, "value"])), + }; + }); + if (ctx.common.async) { + const finalMap = new Map(); + return Promise.resolve().then(async () => { + for (const pair of pairs) { + const key = await pair.key; + const value = await pair.value; + if (key.status === "aborted" || value.status === "aborted") { + return INVALID; + } + if (key.status === "dirty" || value.status === "dirty") { + status.dirty(); + } + finalMap.set(key.value, value.value); + } + return { status: status.value, value: finalMap }; + }); + } + else { + const finalMap = new Map(); + for (const pair of pairs) { + const key = pair.key; + const value = pair.value; + if (key.status === "aborted" || value.status === "aborted") { + return INVALID; + } + if (key.status === "dirty" || value.status === "dirty") { + status.dirty(); + } + finalMap.set(key.value, value.value); + } + return { status: status.value, value: finalMap }; + } + } + } + ZodMap.create = (keyType, valueType, params) => { + return new ZodMap({ + valueType, + keyType, + typeName: ZodFirstPartyTypeKind.ZodMap, + ...processCreateParams(params), + }); + }; + class ZodSet extends ZodType { + _parse(input) { + const { status, ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.set) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.set, + received: ctx.parsedType, + }); + return INVALID; + } + const def = this._def; + if (def.minSize !== null) { + if (ctx.data.size < def.minSize.value) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: def.minSize.value, + type: "set", + inclusive: true, + exact: false, + message: def.minSize.message, + }); + status.dirty(); + } + } + if (def.maxSize !== null) { + if (ctx.data.size > def.maxSize.value) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: def.maxSize.value, + type: "set", + inclusive: true, + exact: false, + message: def.maxSize.message, + }); + status.dirty(); + } + } + const valueType = this._def.valueType; + function finalizeSet(elements) { + const parsedSet = new Set(); + for (const element of elements) { + if (element.status === "aborted") + return INVALID; + if (element.status === "dirty") + status.dirty(); + parsedSet.add(element.value); + } + return { status: status.value, value: parsedSet }; + } + const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i))); + if (ctx.common.async) { + return Promise.all(elements).then((elements) => finalizeSet(elements)); + } + else { + return finalizeSet(elements); + } + } + min(minSize, message) { + return new ZodSet({ + ...this._def, + minSize: { value: minSize, message: errorUtil.toString(message) }, + }); + } + max(maxSize, message) { + return new ZodSet({ + ...this._def, + maxSize: { value: maxSize, message: errorUtil.toString(message) }, + }); + } + size(size, message) { + return this.min(size, message).max(size, message); + } + nonempty(message) { + return this.min(1, message); + } + } + ZodSet.create = (valueType, params) => { + return new ZodSet({ + valueType, + minSize: null, + maxSize: null, + typeName: ZodFirstPartyTypeKind.ZodSet, + ...processCreateParams(params), + }); + }; + class ZodFunction extends ZodType { + constructor() { + super(...arguments); + this.validate = this.implement; + } + _parse(input) { + const { ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.function) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.function, + received: ctx.parsedType, + }); + return INVALID; + } + function makeArgsIssue(args, error) { + return makeIssue({ + data: args, + path: ctx.path, + errorMaps: [ + ctx.common.contextualErrorMap, + ctx.schemaErrorMap, + getErrorMap(), + errorMap, + ].filter((x) => !!x), + issueData: { + code: ZodIssueCode.invalid_arguments, + argumentsError: error, + }, + }); + } + function makeReturnsIssue(returns, error) { + return makeIssue({ + data: returns, + path: ctx.path, + errorMaps: [ + ctx.common.contextualErrorMap, + ctx.schemaErrorMap, + getErrorMap(), + errorMap, + ].filter((x) => !!x), + issueData: { + code: ZodIssueCode.invalid_return_type, + returnTypeError: error, + }, + }); + } + const params = { errorMap: ctx.common.contextualErrorMap }; + const fn = ctx.data; + if (this._def.returns instanceof ZodPromise) { + // Would love a way to avoid disabling this rule, but we need + // an alias (using an arrow function was what caused 2651). + // eslint-disable-next-line @typescript-eslint/no-this-alias + const me = this; + return OK(async function (...args) { + const error = new ZodError([]); + const parsedArgs = await me._def.args + .parseAsync(args, params) + .catch((e) => { + error.addIssue(makeArgsIssue(args, e)); + throw error; + }); + const result = await Reflect.apply(fn, this, parsedArgs); + const parsedReturns = await me._def.returns._def.type + .parseAsync(result, params) + .catch((e) => { + error.addIssue(makeReturnsIssue(result, e)); + throw error; + }); + return parsedReturns; + }); + } + else { + // Would love a way to avoid disabling this rule, but we need + // an alias (using an arrow function was what caused 2651). + // eslint-disable-next-line @typescript-eslint/no-this-alias + const me = this; + return OK(function (...args) { + const parsedArgs = me._def.args.safeParse(args, params); + if (!parsedArgs.success) { + throw new ZodError([makeArgsIssue(args, parsedArgs.error)]); + } + const result = Reflect.apply(fn, this, parsedArgs.data); + const parsedReturns = me._def.returns.safeParse(result, params); + if (!parsedReturns.success) { + throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]); + } + return parsedReturns.data; + }); + } + } + parameters() { + return this._def.args; + } + returnType() { + return this._def.returns; + } + args(...items) { + return new ZodFunction({ + ...this._def, + args: ZodTuple.create(items).rest(ZodUnknown.create()), + }); + } + returns(returnType) { + return new ZodFunction({ + ...this._def, + returns: returnType, + }); + } + implement(func) { + const validatedFunc = this.parse(func); + return validatedFunc; + } + strictImplement(func) { + const validatedFunc = this.parse(func); + return validatedFunc; + } + static create(args, returns, params) { + return new ZodFunction({ + args: (args + ? args + : ZodTuple.create([]).rest(ZodUnknown.create())), + returns: returns || ZodUnknown.create(), + typeName: ZodFirstPartyTypeKind.ZodFunction, + ...processCreateParams(params), + }); + } + } + class ZodLazy extends ZodType { + get schema() { + return this._def.getter(); + } + _parse(input) { + const { ctx } = this._processInputParams(input); + const lazySchema = this._def.getter(); + return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx }); + } + } + ZodLazy.create = (getter, params) => { + return new ZodLazy({ + getter: getter, + typeName: ZodFirstPartyTypeKind.ZodLazy, + ...processCreateParams(params), + }); }; - const getState = () => state; - const getInitialState = () => initialState; - const subscribe = (listener) => { - listeners.add(listener); - return () => listeners.delete(listener); + class ZodLiteral extends ZodType { + _parse(input) { + if (input.data !== this._def.value) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + received: ctx.data, + code: ZodIssueCode.invalid_literal, + expected: this._def.value, + }); + return INVALID; + } + return { status: "valid", value: input.data }; + } + get value() { + return this._def.value; + } + } + ZodLiteral.create = (value, params) => { + return new ZodLiteral({ + value: value, + typeName: ZodFirstPartyTypeKind.ZodLiteral, + ...processCreateParams(params), + }); }; - const api = { setState, getState, getInitialState, subscribe }; - const initialState = state = createState(setState, getState, api); - return api; - }; - const createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl; - - function createJSONStorage(getStorage, options) { - let storage; - try { - storage = getStorage(); - } catch (e) { - return; + function createZodEnum(values, params) { + return new ZodEnum({ + values, + typeName: ZodFirstPartyTypeKind.ZodEnum, + ...processCreateParams(params), + }); } - const persistStorage = { - getItem: (name) => { - var _a; - const parse = (str2) => { - if (str2 === null) { - return null; - } - return JSON.parse(str2, void 0 ); - }; - const str = (_a = storage.getItem(name)) != null ? _a : null; - if (str instanceof Promise) { - return str.then(parse); + class ZodEnum extends ZodType { + constructor() { + super(...arguments); + _ZodEnum_cache.set(this, void 0); } - return parse(str); - }, - setItem: (name, newValue) => storage.setItem( - name, - JSON.stringify(newValue, void 0 ) - ), - removeItem: (name) => storage.removeItem(name) + _parse(input) { + if (typeof input.data !== "string") { + const ctx = this._getOrReturnCtx(input); + const expectedValues = this._def.values; + addIssueToContext(ctx, { + expected: util.joinValues(expectedValues), + received: ctx.parsedType, + code: ZodIssueCode.invalid_type, + }); + return INVALID; + } + if (!__classPrivateFieldGet(this, _ZodEnum_cache)) { + __classPrivateFieldSet(this, _ZodEnum_cache, new Set(this._def.values)); + } + if (!__classPrivateFieldGet(this, _ZodEnum_cache).has(input.data)) { + const ctx = this._getOrReturnCtx(input); + const expectedValues = this._def.values; + addIssueToContext(ctx, { + received: ctx.data, + code: ZodIssueCode.invalid_enum_value, + options: expectedValues, + }); + return INVALID; + } + return OK(input.data); + } + get options() { + return this._def.values; + } + get enum() { + const enumValues = {}; + for (const val of this._def.values) { + enumValues[val] = val; + } + return enumValues; + } + get Values() { + const enumValues = {}; + for (const val of this._def.values) { + enumValues[val] = val; + } + return enumValues; + } + get Enum() { + const enumValues = {}; + for (const val of this._def.values) { + enumValues[val] = val; + } + return enumValues; + } + extract(values, newDef = this._def) { + return ZodEnum.create(values, { + ...this._def, + ...newDef, + }); + } + exclude(values, newDef = this._def) { + return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), { + ...this._def, + ...newDef, + }); + } + } + _ZodEnum_cache = new WeakMap(); + ZodEnum.create = createZodEnum; + class ZodNativeEnum extends ZodType { + constructor() { + super(...arguments); + _ZodNativeEnum_cache.set(this, void 0); + } + _parse(input) { + const nativeEnumValues = util.getValidEnumValues(this._def.values); + const ctx = this._getOrReturnCtx(input); + if (ctx.parsedType !== ZodParsedType.string && + ctx.parsedType !== ZodParsedType.number) { + const expectedValues = util.objectValues(nativeEnumValues); + addIssueToContext(ctx, { + expected: util.joinValues(expectedValues), + received: ctx.parsedType, + code: ZodIssueCode.invalid_type, + }); + return INVALID; + } + if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache)) { + __classPrivateFieldSet(this, _ZodNativeEnum_cache, new Set(util.getValidEnumValues(this._def.values))); + } + if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache).has(input.data)) { + const expectedValues = util.objectValues(nativeEnumValues); + addIssueToContext(ctx, { + received: ctx.data, + code: ZodIssueCode.invalid_enum_value, + options: expectedValues, + }); + return INVALID; + } + return OK(input.data); + } + get enum() { + return this._def.values; + } + } + _ZodNativeEnum_cache = new WeakMap(); + ZodNativeEnum.create = (values, params) => { + return new ZodNativeEnum({ + values: values, + typeName: ZodFirstPartyTypeKind.ZodNativeEnum, + ...processCreateParams(params), + }); + }; + class ZodPromise extends ZodType { + unwrap() { + return this._def.type; + } + _parse(input) { + const { ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.promise && + ctx.common.async === false) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.promise, + received: ctx.parsedType, + }); + return INVALID; + } + const promisified = ctx.parsedType === ZodParsedType.promise + ? ctx.data + : Promise.resolve(ctx.data); + return OK(promisified.then((data) => { + return this._def.type.parseAsync(data, { + path: ctx.path, + errorMap: ctx.common.contextualErrorMap, + }); + })); + } + } + ZodPromise.create = (schema, params) => { + return new ZodPromise({ + type: schema, + typeName: ZodFirstPartyTypeKind.ZodPromise, + ...processCreateParams(params), + }); + }; + class ZodEffects extends ZodType { + innerType() { + return this._def.schema; + } + sourceType() { + return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects + ? this._def.schema.sourceType() + : this._def.schema; + } + _parse(input) { + const { status, ctx } = this._processInputParams(input); + const effect = this._def.effect || null; + const checkCtx = { + addIssue: (arg) => { + addIssueToContext(ctx, arg); + if (arg.fatal) { + status.abort(); + } + else { + status.dirty(); + } + }, + get path() { + return ctx.path; + }, + }; + checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx); + if (effect.type === "preprocess") { + const processed = effect.transform(ctx.data, checkCtx); + if (ctx.common.async) { + return Promise.resolve(processed).then(async (processed) => { + if (status.value === "aborted") + return INVALID; + const result = await this._def.schema._parseAsync({ + data: processed, + path: ctx.path, + parent: ctx, + }); + if (result.status === "aborted") + return INVALID; + if (result.status === "dirty") + return DIRTY(result.value); + if (status.value === "dirty") + return DIRTY(result.value); + return result; + }); + } + else { + if (status.value === "aborted") + return INVALID; + const result = this._def.schema._parseSync({ + data: processed, + path: ctx.path, + parent: ctx, + }); + if (result.status === "aborted") + return INVALID; + if (result.status === "dirty") + return DIRTY(result.value); + if (status.value === "dirty") + return DIRTY(result.value); + return result; + } + } + if (effect.type === "refinement") { + const executeRefinement = (acc) => { + const result = effect.refinement(acc, checkCtx); + if (ctx.common.async) { + return Promise.resolve(result); + } + if (result instanceof Promise) { + throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead."); + } + return acc; + }; + if (ctx.common.async === false) { + const inner = this._def.schema._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }); + if (inner.status === "aborted") + return INVALID; + if (inner.status === "dirty") + status.dirty(); + // return value is ignored + executeRefinement(inner.value); + return { status: status.value, value: inner.value }; + } + else { + return this._def.schema + ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }) + .then((inner) => { + if (inner.status === "aborted") + return INVALID; + if (inner.status === "dirty") + status.dirty(); + return executeRefinement(inner.value).then(() => { + return { status: status.value, value: inner.value }; + }); + }); + } + } + if (effect.type === "transform") { + if (ctx.common.async === false) { + const base = this._def.schema._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }); + if (!isValid(base)) + return base; + const result = effect.transform(base.value, checkCtx); + if (result instanceof Promise) { + throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`); + } + return { status: status.value, value: result }; + } + else { + return this._def.schema + ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }) + .then((base) => { + if (!isValid(base)) + return base; + return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ status: status.value, value: result })); + }); + } + } + util.assertNever(effect); + } + } + ZodEffects.create = (schema, effect, params) => { + return new ZodEffects({ + schema, + typeName: ZodFirstPartyTypeKind.ZodEffects, + effect, + ...processCreateParams(params), + }); + }; + ZodEffects.createWithPreprocess = (preprocess, schema, params) => { + return new ZodEffects({ + schema, + effect: { type: "preprocess", transform: preprocess }, + typeName: ZodFirstPartyTypeKind.ZodEffects, + ...processCreateParams(params), + }); + }; + class ZodOptional extends ZodType { + _parse(input) { + const parsedType = this._getType(input); + if (parsedType === ZodParsedType.undefined) { + return OK(undefined); + } + return this._def.innerType._parse(input); + } + unwrap() { + return this._def.innerType; + } + } + ZodOptional.create = (type, params) => { + return new ZodOptional({ + innerType: type, + typeName: ZodFirstPartyTypeKind.ZodOptional, + ...processCreateParams(params), + }); + }; + class ZodNullable extends ZodType { + _parse(input) { + const parsedType = this._getType(input); + if (parsedType === ZodParsedType.null) { + return OK(null); + } + return this._def.innerType._parse(input); + } + unwrap() { + return this._def.innerType; + } + } + ZodNullable.create = (type, params) => { + return new ZodNullable({ + innerType: type, + typeName: ZodFirstPartyTypeKind.ZodNullable, + ...processCreateParams(params), + }); + }; + class ZodDefault extends ZodType { + _parse(input) { + const { ctx } = this._processInputParams(input); + let data = ctx.data; + if (ctx.parsedType === ZodParsedType.undefined) { + data = this._def.defaultValue(); + } + return this._def.innerType._parse({ + data, + path: ctx.path, + parent: ctx, + }); + } + removeDefault() { + return this._def.innerType; + } + } + ZodDefault.create = (type, params) => { + return new ZodDefault({ + innerType: type, + typeName: ZodFirstPartyTypeKind.ZodDefault, + defaultValue: typeof params.default === "function" + ? params.default + : () => params.default, + ...processCreateParams(params), + }); + }; + class ZodCatch extends ZodType { + _parse(input) { + const { ctx } = this._processInputParams(input); + // newCtx is used to not collect issues from inner types in ctx + const newCtx = { + ...ctx, + common: { + ...ctx.common, + issues: [], + }, + }; + const result = this._def.innerType._parse({ + data: newCtx.data, + path: newCtx.path, + parent: { + ...newCtx, + }, + }); + if (isAsync(result)) { + return result.then((result) => { + return { + status: "valid", + value: result.status === "valid" + ? result.value + : this._def.catchValue({ + get error() { + return new ZodError(newCtx.common.issues); + }, + input: newCtx.data, + }), + }; + }); + } + else { + return { + status: "valid", + value: result.status === "valid" + ? result.value + : this._def.catchValue({ + get error() { + return new ZodError(newCtx.common.issues); + }, + input: newCtx.data, + }), + }; + } + } + removeCatch() { + return this._def.innerType; + } + } + ZodCatch.create = (type, params) => { + return new ZodCatch({ + innerType: type, + typeName: ZodFirstPartyTypeKind.ZodCatch, + catchValue: typeof params.catch === "function" ? params.catch : () => params.catch, + ...processCreateParams(params), + }); + }; + class ZodNaN extends ZodType { + _parse(input) { + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.nan) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.nan, + received: ctx.parsedType, + }); + return INVALID; + } + return { status: "valid", value: input.data }; + } + } + ZodNaN.create = (params) => { + return new ZodNaN({ + typeName: ZodFirstPartyTypeKind.ZodNaN, + ...processCreateParams(params), + }); + }; + const BRAND = Symbol("zod_brand"); + class ZodBranded extends ZodType { + _parse(input) { + const { ctx } = this._processInputParams(input); + const data = ctx.data; + return this._def.type._parse({ + data, + path: ctx.path, + parent: ctx, + }); + } + unwrap() { + return this._def.type; + } + } + class ZodPipeline extends ZodType { + _parse(input) { + const { status, ctx } = this._processInputParams(input); + if (ctx.common.async) { + const handleAsync = async () => { + const inResult = await this._def.in._parseAsync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }); + if (inResult.status === "aborted") + return INVALID; + if (inResult.status === "dirty") { + status.dirty(); + return DIRTY(inResult.value); + } + else { + return this._def.out._parseAsync({ + data: inResult.value, + path: ctx.path, + parent: ctx, + }); + } + }; + return handleAsync(); + } + else { + const inResult = this._def.in._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }); + if (inResult.status === "aborted") + return INVALID; + if (inResult.status === "dirty") { + status.dirty(); + return { + status: "dirty", + value: inResult.value, + }; + } + else { + return this._def.out._parseSync({ + data: inResult.value, + path: ctx.path, + parent: ctx, + }); + } + } + } + static create(a, b) { + return new ZodPipeline({ + in: a, + out: b, + typeName: ZodFirstPartyTypeKind.ZodPipeline, + }); + } + } + class ZodReadonly extends ZodType { + _parse(input) { + const result = this._def.innerType._parse(input); + const freeze = (data) => { + if (isValid(data)) { + data.value = Object.freeze(data.value); + } + return data; + }; + return isAsync(result) + ? result.then((data) => freeze(data)) + : freeze(result); + } + unwrap() { + return this._def.innerType; + } + } + ZodReadonly.create = (type, params) => { + return new ZodReadonly({ + innerType: type, + typeName: ZodFirstPartyTypeKind.ZodReadonly, + ...processCreateParams(params), + }); + }; + function custom(check, params = {}, + /** + * @deprecated + * + * Pass `fatal` into the params object instead: + * + * ```ts + * z.string().custom((val) => val.length > 5, { fatal: false }) + * ``` + * + */ + fatal) { + if (check) + return ZodAny.create().superRefine((data, ctx) => { + var _a, _b; + if (!check(data)) { + const p = typeof params === "function" + ? params(data) + : typeof params === "string" + ? { message: params } + : params; + const _fatal = (_b = (_a = p.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true; + const p2 = typeof p === "string" ? { message: p } : p; + ctx.addIssue({ code: "custom", ...p2, fatal: _fatal }); + } + }); + return ZodAny.create(); + } + const late = { + object: ZodObject.lazycreate, + }; + var ZodFirstPartyTypeKind; + (function (ZodFirstPartyTypeKind) { + ZodFirstPartyTypeKind["ZodString"] = "ZodString"; + ZodFirstPartyTypeKind["ZodNumber"] = "ZodNumber"; + ZodFirstPartyTypeKind["ZodNaN"] = "ZodNaN"; + ZodFirstPartyTypeKind["ZodBigInt"] = "ZodBigInt"; + ZodFirstPartyTypeKind["ZodBoolean"] = "ZodBoolean"; + ZodFirstPartyTypeKind["ZodDate"] = "ZodDate"; + ZodFirstPartyTypeKind["ZodSymbol"] = "ZodSymbol"; + ZodFirstPartyTypeKind["ZodUndefined"] = "ZodUndefined"; + ZodFirstPartyTypeKind["ZodNull"] = "ZodNull"; + ZodFirstPartyTypeKind["ZodAny"] = "ZodAny"; + ZodFirstPartyTypeKind["ZodUnknown"] = "ZodUnknown"; + ZodFirstPartyTypeKind["ZodNever"] = "ZodNever"; + ZodFirstPartyTypeKind["ZodVoid"] = "ZodVoid"; + ZodFirstPartyTypeKind["ZodArray"] = "ZodArray"; + ZodFirstPartyTypeKind["ZodObject"] = "ZodObject"; + ZodFirstPartyTypeKind["ZodUnion"] = "ZodUnion"; + ZodFirstPartyTypeKind["ZodDiscriminatedUnion"] = "ZodDiscriminatedUnion"; + ZodFirstPartyTypeKind["ZodIntersection"] = "ZodIntersection"; + ZodFirstPartyTypeKind["ZodTuple"] = "ZodTuple"; + ZodFirstPartyTypeKind["ZodRecord"] = "ZodRecord"; + ZodFirstPartyTypeKind["ZodMap"] = "ZodMap"; + ZodFirstPartyTypeKind["ZodSet"] = "ZodSet"; + ZodFirstPartyTypeKind["ZodFunction"] = "ZodFunction"; + ZodFirstPartyTypeKind["ZodLazy"] = "ZodLazy"; + ZodFirstPartyTypeKind["ZodLiteral"] = "ZodLiteral"; + ZodFirstPartyTypeKind["ZodEnum"] = "ZodEnum"; + ZodFirstPartyTypeKind["ZodEffects"] = "ZodEffects"; + ZodFirstPartyTypeKind["ZodNativeEnum"] = "ZodNativeEnum"; + ZodFirstPartyTypeKind["ZodOptional"] = "ZodOptional"; + ZodFirstPartyTypeKind["ZodNullable"] = "ZodNullable"; + ZodFirstPartyTypeKind["ZodDefault"] = "ZodDefault"; + ZodFirstPartyTypeKind["ZodCatch"] = "ZodCatch"; + ZodFirstPartyTypeKind["ZodPromise"] = "ZodPromise"; + ZodFirstPartyTypeKind["ZodBranded"] = "ZodBranded"; + ZodFirstPartyTypeKind["ZodPipeline"] = "ZodPipeline"; + ZodFirstPartyTypeKind["ZodReadonly"] = "ZodReadonly"; + })(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {})); + const instanceOfType = ( + // const instanceOfType = any>( + cls, params = { + message: `Input not instance of ${cls.name}`, + }) => custom((data) => data instanceof cls, params); + const stringType = ZodString.create; + const numberType = ZodNumber.create; + const nanType = ZodNaN.create; + const bigIntType = ZodBigInt.create; + const booleanType = ZodBoolean.create; + const dateType = ZodDate.create; + const symbolType = ZodSymbol.create; + const undefinedType = ZodUndefined.create; + const nullType = ZodNull.create; + const anyType = ZodAny.create; + const unknownType = ZodUnknown.create; + const neverType = ZodNever.create; + const voidType = ZodVoid.create; + const arrayType = ZodArray.create; + const objectType = ZodObject.create; + const strictObjectType = ZodObject.strictCreate; + const unionType = ZodUnion.create; + const discriminatedUnionType = ZodDiscriminatedUnion.create; + const intersectionType = ZodIntersection.create; + const tupleType = ZodTuple.create; + const recordType = ZodRecord.create; + const mapType = ZodMap.create; + const setType = ZodSet.create; + const functionType = ZodFunction.create; + const lazyType = ZodLazy.create; + const literalType = ZodLiteral.create; + const enumType = ZodEnum.create; + const nativeEnumType = ZodNativeEnum.create; + const promiseType = ZodPromise.create; + const effectsType = ZodEffects.create; + const optionalType = ZodOptional.create; + const nullableType = ZodNullable.create; + const preprocessType = ZodEffects.createWithPreprocess; + const pipelineType = ZodPipeline.create; + const ostring = () => stringType().optional(); + const onumber = () => numberType().optional(); + const oboolean = () => booleanType().optional(); + const coerce = { + string: ((arg) => ZodString.create({ ...arg, coerce: true })), + number: ((arg) => ZodNumber.create({ ...arg, coerce: true })), + boolean: ((arg) => ZodBoolean.create({ + ...arg, + coerce: true, + })), + bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })), + date: ((arg) => ZodDate.create({ ...arg, coerce: true })), + }; + const NEVER = INVALID; + + var z = /*#__PURE__*/Object.freeze({ + __proto__: null, + defaultErrorMap: errorMap, + setErrorMap: setErrorMap, + getErrorMap: getErrorMap, + makeIssue: makeIssue, + EMPTY_PATH: EMPTY_PATH, + addIssueToContext: addIssueToContext, + ParseStatus: ParseStatus, + INVALID: INVALID, + DIRTY: DIRTY, + OK: OK, + isAborted: isAborted, + isDirty: isDirty, + isValid: isValid, + isAsync: isAsync, + get util () { return util; }, + get objectUtil () { return objectUtil; }, + ZodParsedType: ZodParsedType, + getParsedType: getParsedType, + ZodType: ZodType, + datetimeRegex: datetimeRegex, + ZodString: ZodString, + ZodNumber: ZodNumber, + ZodBigInt: ZodBigInt, + ZodBoolean: ZodBoolean, + ZodDate: ZodDate, + ZodSymbol: ZodSymbol, + ZodUndefined: ZodUndefined, + ZodNull: ZodNull, + ZodAny: ZodAny, + ZodUnknown: ZodUnknown, + ZodNever: ZodNever, + ZodVoid: ZodVoid, + ZodArray: ZodArray, + ZodObject: ZodObject, + ZodUnion: ZodUnion, + ZodDiscriminatedUnion: ZodDiscriminatedUnion, + ZodIntersection: ZodIntersection, + ZodTuple: ZodTuple, + ZodRecord: ZodRecord, + ZodMap: ZodMap, + ZodSet: ZodSet, + ZodFunction: ZodFunction, + ZodLazy: ZodLazy, + ZodLiteral: ZodLiteral, + ZodEnum: ZodEnum, + ZodNativeEnum: ZodNativeEnum, + ZodPromise: ZodPromise, + ZodEffects: ZodEffects, + ZodTransformer: ZodEffects, + ZodOptional: ZodOptional, + ZodNullable: ZodNullable, + ZodDefault: ZodDefault, + ZodCatch: ZodCatch, + ZodNaN: ZodNaN, + BRAND: BRAND, + ZodBranded: ZodBranded, + ZodPipeline: ZodPipeline, + ZodReadonly: ZodReadonly, + custom: custom, + Schema: ZodType, + ZodSchema: ZodType, + late: late, + get ZodFirstPartyTypeKind () { return ZodFirstPartyTypeKind; }, + coerce: coerce, + any: anyType, + array: arrayType, + bigint: bigIntType, + boolean: booleanType, + date: dateType, + discriminatedUnion: discriminatedUnionType, + effect: effectsType, + 'enum': enumType, + 'function': functionType, + 'instanceof': instanceOfType, + intersection: intersectionType, + lazy: lazyType, + literal: literalType, + map: mapType, + nan: nanType, + nativeEnum: nativeEnumType, + never: neverType, + 'null': nullType, + nullable: nullableType, + number: numberType, + object: objectType, + oboolean: oboolean, + onumber: onumber, + optional: optionalType, + ostring: ostring, + pipeline: pipelineType, + preprocess: preprocessType, + promise: promiseType, + record: recordType, + set: setType, + strictObject: strictObjectType, + string: stringType, + symbol: symbolType, + transformer: effectsType, + tuple: tupleType, + 'undefined': undefinedType, + union: unionType, + unknown: unknownType, + 'void': voidType, + NEVER: NEVER, + ZodIssueCode: ZodIssueCode, + quotelessJson: quotelessJson, + ZodError: ZodError + }); + + const SerializedSealingPair = z.object({ + privateKey: z.string(), + publicKey: z.string(), + }); + const zPermitV2WithDefaults = z.object({ + name: z.string().optional().default("Unnamed Permit"), + type: z.enum(["self", "sharing", "recipient"]), + issuer: z + .string() + .refine((val) => isAddress(val), { + message: "PermitV2 issuer :: invalid address", + }) + .refine((val) => val !== ZeroAddress, { + message: "PermitV2 issuer :: must not be zeroAddress", + }), + expiration: z.number().optional().default(1000000000000), + contracts: z.array(z.string()).optional().default([]), + projects: z.array(z.string()).optional().default([]), + recipient: z + .string() + .optional() + .default(ZeroAddress) + .refine((val) => isAddress(val), { + message: "PermitV2 recipient :: invalid address", + }), + validatorId: z.number().optional().default(0), + validatorContract: z + .string() + .optional() + .default(ZeroAddress) + .refine((val) => isAddress(val), { + message: "PermitV2 validatorContract :: invalid address", + }), + sealingPair: SerializedSealingPair.optional(), + issuerSignature: z.string().optional().default("0x"), + recipientSignature: z.string().optional().default("0x"), + }); + /** + * Ensures that this Permit will provide access to a non-zero amount of contracts + * by ensuring that `contracts` and `projects` aren't both empty arrays. + */ + const PermitV2RefineAccess = [ + (data) => { + return data.contracts.length + data.projects.length > 0; + }, + { + message: "PermitV2 access :: at least one contract or project must be accessible.", + path: ["contracts", "projects"], + }, + ]; + /** + * Permits allow a hook into an optional external validator contract, + * this check ensures that IF an external validator is applied, that both `validatorId` and `validatorContract` are populated, + * ELSE ensures that both `validatorId` and `validatorContract` are empty + */ + const PermitV2RefineValidator = [ + (data) => (data.validatorId !== 0 && data.validatorContract !== ZeroAddress) || + (data.validatorId === 0 && data.validatorContract === ZeroAddress), + { + message: "PermitV2 external validator :: validatorId and validatorContract must either both be set or both be unset.", + path: ["validatorId", "validatorContract"], + }, + ]; + /** + * SuperRefinement that checks a PermitV2s signatures + * checkRecipient - whether to validate that `recipient` is empty for permit with type , and populated for + * checkSealingPair - only the fully formed permit requires the sealing pair, it can be optional for permitV2 create params + * checkExistingSignatures - not optional - checks that the permit's type matches the populated signature fields + * checkSigned - checks that the active user's signature has been signed and added. -> issuerSignature, -> recipientSignature + */ + const PermitV2SignaturesSuperRefinement = (options) => { + return (data, ctx) => { + // Check Recipient + // If type , `PermitV2.recipient` must be zeroAddress + // If type , `PermitV2.recipient` must not be zeroAddress + if (options.checkRecipient) { + if (data.type === "self" && data.recipient !== ZeroAddress) + ctx.addIssue({ + code: z.ZodIssueCode.custom, + path: ["recipient"], + message: `PermitV2 (type '${data.type}') recipient :: must be empty (zeroAddress)`, + }); + if ((data.type === "recipient" || data.type === "sharing") && + data.recipient === ZeroAddress) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + path: ["recipient"], + message: `PermitV2 (type '${data.type}') recipient :: must not be empty`, + }); + } + } + // Check Sealing Pair + if (options.checkSealingPair && data.sealingPair == null) + ctx.addIssue({ + code: z.ZodIssueCode.custom, + path: ["sealingPair"], + message: `PermitV2 sealingPair :: must not be empty`, + }); + // Check existing signatures match type (not checking this user's signature, but the other signature) + // If type , `PermitV2.recipientSignature` must be empty + // If type , `PermitV2.issuerSignature` must not be empty + if ((data.type === "self" || data.type === "sharing") && + data.recipientSignature !== "0x") { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + path: ["recipientSignature"], + message: `PermitV2 (type '${data.type}') recipientSignature :: should not be populated by the issuer`, + }); + } + if (data.type === "recipient" && data.issuerSignature === "0x") { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + path: ["issuerSignature"], + message: `PermitV2 (type 'recipient') issuerSignature :: \`issuer\` must sign the PermitV2 before sharing it with \`recipient\``, + }); + } + // Check Signed + // If type , `PermitV2.issuerSignature` must not be empty + // If type , `PermitV2.recipientSignature` must not be empty + if (options.checkSigned) { + if ((data.type === "self" || data.type === "sharing") && + data.issuerSignature === "0x") + ctx.addIssue({ + code: z.ZodIssueCode.custom, + path: ["issuerSignature"], + message: `PermitV2 (type '${data.type}') issuerSignature :: must be populated with issuer's signature. Use \`PermitV2.sign\` or create permit with \`PermitV2.createAndSign\``, + }); + if (data.type === "recipient" && data.recipientSignature === "0x") { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + path: ["recipientSignature"], + message: `PermitV2 (type 'recipient') recipientSignature :: must be populated with recipient's signature. Use \`PermitV2.sign\` or create permit with \`PermitV2.createAndSign\``, + }); + } + } + return; + }; + }; + /** + * Validator for the params used when creating a fresh PermitV2 + * Has defaults added that will be populated in the options object + * Signatures superRefinement checks only the recipient, sealingPair and signatures are not necessary in the Permit params + */ + const PermitV2ParamsValidator = zPermitV2WithDefaults + .refine(...PermitV2RefineAccess) + .refine(...PermitV2RefineValidator) + .superRefine(PermitV2SignaturesSuperRefinement({ + checkRecipient: true, + checkSealingPair: false, // SealingPair not required when creating a fresh permit + checkSigned: false, // Signature not required when creating a fresh permit + })); + /** + * Validator for a PermitV2 that is expected to be fully formed + * Does not allow optional values or offer defaults + * Validates that the correct signatures are populated + * Validates sealingPair is populated + */ + const FullyFormedPermitV2Validator = zPermitV2WithDefaults + .required() + .refine(...PermitV2RefineAccess) + .refine(...PermitV2RefineValidator) + .superRefine(PermitV2SignaturesSuperRefinement({ + checkRecipient: true, + checkSealingPair: true, + checkSigned: true, + })); + + // HARDHAT MOCKS + // Mock FHE operations are automatically injected on the hardhat network + // The utility functions allow the client / sdk to interact with the mocked FHE ops + const chainIsHardhat = (chainId) => { + if (chainId == null) + return false; + return parseInt(chainId) === 31337; }; - return persistStorage; - } - const toThenable = (fn) => (input) => { - try { - const result = fn(input); - if (result instanceof Promise) { + const hardhatMockUnseal = (value) => { + let result = BigInt(0); + for (const byteArrayItem of stringToUint8Array(value)) { + result = (result << BigInt(8)) + BigInt(byteArrayItem); + } return result; + }; + const hardhatMockEncrypt = (value, securityZone = 0) => ({ + data: bigintToUint8Array(BigInt(value)), + securityZone: securityZone || 0, + }); + + /* eslint-disable @typescript-eslint/no-explicit-any */ + class PermitV2 { + constructor(options, metadata) { + /** + * Chain that this permit was signed on. In part used for mock encrypt/unseal on hardhat network. + * Should not be set manually, included in metadata as part of serialization flows. + */ + this._signedChainId = undefined; + this.updateName = (name) => { + this.name = name; + }; + /** + * Utility to extract the public data from a permit. + * Used in `serialize`, `getPermission`, `getHash` etc + */ + this.getInterface = () => { + return { + name: this.name, + type: this.type, + issuer: this.issuer, + expiration: this.expiration, + contracts: this.contracts, + projects: this.projects, + recipient: this.recipient, + validatorId: this.validatorId, + validatorContract: this.validatorContract, + sealingPair: this.sealingPair, + issuerSignature: this.issuerSignature, + recipientSignature: this.recipientSignature, + }; + }; + /** + * Export the necessary permit data to share a permit with another user + */ + this.export = () => { + const cleanedPermit = { + name: this.name, + type: this.type, + issuer: this.issuer, + expiration: this.expiration, + }; + if (this.contracts.length > 0) + cleanedPermit.contracts = this.contracts; + if (this.projects.length > 0) + cleanedPermit.projects = this.projects; + if (this.recipient !== ZeroAddress) + cleanedPermit.recipient = this.recipient; + if (this.validatorId !== 0) + cleanedPermit.validatorId = this.validatorId; + if (this.validatorContract !== ZeroAddress) + cleanedPermit.validatorContract = this.validatorContract; + if (this.type === "sharing" && this.issuerSignature !== "0x") + cleanedPermit.issuerSignature = this.issuerSignature; + return JSON.stringify(cleanedPermit, undefined, 2); + }; + /** + * Returns a serializable permit instance, removing classes and methods. + * NOTE: Does not return a stringified permit + */ + this.serialize = () => { + const { sealingPair, ...permit } = this.getInterface(); + return { + ...permit, + _signedChainId: this._signedChainId, + sealingPair: { + publicKey: sealingPair.publicKey, + privateKey: sealingPair.privateKey, + }, + }; + }; + /** + * Extracts a contract input ready permission from this permit. + * The permission inherits most fields from the permit, however + * `permit.sealingPair` is removed and replaced by `permit.sealingPair.publicKey` in the `sealingKey` field. + * + * @permit {boolean} skipValidation - Flag to prevent running validation on the permit before returning the extracted permission. Used internally. + * @returns {PermissionV2} + */ + this.getPermission = (skipValidation = false) => { + const permitData = this.getInterface(); + if (!skipValidation) { + const validationResult = FullyFormedPermitV2Validator.safeParse(permitData); + if (!validationResult.success) { + throw new Error(`PermitV2 :: getPermission :: permit validation failed - ${JSON.stringify(validationResult.error, null, 2)} ${JSON.stringify(permitData, null, 2)}`); + } + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { name, type, sealingPair, ...permit } = permitData; + return { + ...permit, + sealingKey: `0x${sealingPair.publicKey}`, + }; + }; + /** + * Returns a stable hash depending on the core data of the permit. + * Is used in the store as each permit's key in the permit map. + */ + this.getHash = () => keccak256(id(JSON.stringify({ + type: this.type, + issuer: this.issuer, + expiration: this.expiration, + contracts: this.contracts, + projects: this.projects, + recipient: this.recipient, + validatorId: this.validatorId, + validatorContract: this.validatorContract, + }))); + /** + * Returns the domain, types, primaryType, and message fields required to request the user's signature + * Primary type is returned to allow viem clients to more easily connect + */ + this.getSignatureParams = (chainId, primaryType) => { + return { + domain: getSignatureDomain(chainId), + ...getSignatureTypesAndMessage(primaryType, SignatureTypes[primaryType], this.getPermission(true)), + }; + }; + /** + * Determines the required signature type. + * Creates the EIP712 types and message. + * Prompts the user for their signature. + * Inserts the signature into `issuerSignature` or `recipientSignature` as necessary. + * + * @param {string} chainId - Used as part of the EIP712 domain, throws if undefined + * @param {AbstractSigner} signer - Signer responsible for signing the EIP712 permit signature, throws if undefined + */ + this.sign = async (chainId, signer) => { + if (chainId == null) + throw new Error("PermitV2 :: sign - chainId undefined, cannot sign a permit with an unknown chainId"); + if (signer == null) + throw new Error("PermitV2 :: sign - signer undefined, you must pass in a `signer` for the connected user to create a permitV2 signature"); + let primaryType = "PermissionedV2IssuerSelf"; + if (this.type === "self") + primaryType = "PermissionedV2IssuerSelf"; + if (this.type === "sharing") + primaryType = "PermissionedV2IssuerShared"; + if (this.type === "recipient") + primaryType = "PermissionedV2Recipient"; + const { domain, types, message } = this.getSignatureParams(chainId, primaryType); + const signature = await signer.signTypedData(domain, types, message); + if (this.type === "self" || this.type === "sharing") { + this.issuerSignature = signature; + } + if (this.type === "recipient") { + this.recipientSignature = signature; + } + this._signedChainId = chainId; + }; + /** + * Use the privateKey of `permit.sealingPair` to unseal `ciphertext` returned from the Fhenix chain. + * Useful when not using `SealedItem` structs and need to unseal an individual ciphertext. + */ + this.unsealCiphertext = (ciphertext) => { + // Early exit with mock unseal if interacting with hardhat network + if (chainIsHardhat(this._signedChainId)) + return hardhatMockUnseal(ciphertext); + return this.sealingPair.unseal(ciphertext); + }; + /** + * Check if permit satisfies the requirements param. + * Permit must satisfy either the contracts list or the projects list + * + * @param {{contracts?: string[], projects?: string[]}} requirements - Lists of contract and project requirements. + * @returns {satisfies: boolean, unsatisfiedContracts, unsatisfiedProjects} - satisfied if either req list is fulfilled. + */ + this.getSatisfies = (requirements) => { + let contractsSatisfied = true; + const unsatisfiedContracts = []; + for (const contract in requirements.contracts) { + if (!this.contracts.includes(contract)) { + contractsSatisfied = false; + unsatisfiedContracts.push(contract); + } + } + let projectsSatisfied = true; + const unsatisfiedProjects = []; + for (const project in requirements.projects) { + if (!this.projects.includes(project)) { + projectsSatisfied = false; + unsatisfiedProjects.push(project); + } + } + if (contractsSatisfied || projectsSatisfied) + return { + satisfies: true, + unsatisfiedContracts: null, + unsatisfiedProjects: null, + }; + return { + satisfies: false, + unsatisfiedContracts, + unsatisfiedProjects, + }; + }; + /** + * Returns whether the active party has created their signature. + * If `permit.type` is self or sharing, the active party is `issuer`. + * If `permit.type` is recipient, the active party is `recipient` + * + * @returns {boolean} + */ + this.isSigned = () => { + if (this.type === "self" || this.type === "sharing") { + return this.issuerSignature !== "0x"; + } + if (this.type === "recipient") { + return this.recipientSignature != "0x"; + } + return false; + }; + /** + * Returns whether this permit has expired due to `permit.expiration` + * + * @returns {boolean} + */ + this.isExpired = () => { + return this.expiration < Math.floor(Date.now() / 1000); + }; + /** + * Overall validity checker of a permit, checks the signatures and expirations + * + * @returns {{valid: boolean, error: string}} - If `valid`, `error` is null, else `error` indicates which validity check failed + */ + this.isValid = () => { + if (this.isExpired()) + return { valid: false, error: "expired" }; + if (!this.isSigned()) + return { valid: false, error: "not-signed" }; + return { valid: true, error: null }; + }; + this.name = options.name; + this.type = options.type; + this.issuer = options.issuer; + this.expiration = options.expiration; + this.contracts = options.contracts; + this.projects = options.projects; + this.recipient = options.recipient; + this.validatorId = options.validatorId; + this.validatorContract = options.validatorContract; + this.sealingPair = options.sealingPair; + this.issuerSignature = options.issuerSignature; + this.recipientSignature = options.recipientSignature; + this._signedChainId = metadata?._signedChainId; + } + static async create(options) { + const { success, data: parsed, error, } = PermitV2ParamsValidator.safeParse(options); + if (!success) { + throw new Error("PermitV2 :: create :: Parsing PermitV2Options failed " + + JSON.stringify(error, null, 2)); + } + const sealingPair = parsed.sealingPair != null + ? new SealingKey(parsed.sealingPair.privateKey, parsed.sealingPair.publicKey) + : await GenerateSealingKey(); + return new PermitV2({ + ...parsed, + sealingPair, + }); + } + static async createAndSign(options, chainId, signer) { + const permit = await PermitV2.create(options); + await permit.sign(chainId, signer); + return permit; + } + unseal(item) { + // SealedItem + const sealedItem = getAsSealedItem(item); + if (sealedItem != null) { + const bn = chainIsHardhat(this._signedChainId) + ? hardhatMockUnseal(sealedItem.data) + : this.sealingPair.unseal(sealedItem.data); + if (isSealedBool(sealedItem)) { + // Return a boolean for SealedBool + return Boolean(bn).valueOf(); + } + if (isSealedAddress(sealedItem)) { + // Return a string for SealedAddress + return getAddress(`0x${bn.toString(16).slice(-40)}`); + } + if (isSealedUint(sealedItem)) { + // Return a bigint for SealedUint + return bn; + } + } + // Object | Array + if (typeof item === "object" && item !== null) { + if (Array.isArray(item)) { + // Array - recurse + return item.map((nestedItem) => this.unseal(nestedItem)); + } + else { + // Object - recurse + const result = {}; + for (const key in item) { + result[key] = this.unseal(item[key]); + } + return result; + } + } + // Primitive + return item; + } + } + /** + * Creates a `PermitV2` from a serialized permit, hydrating methods and classes + * NOTE: Does not return a stringified permit + * + * @param {SerializedPermitV2} - Permit structure excluding classes + * @returns {PermitV2} - New instance of PermitV2 class + */ + PermitV2.deserialize = ({ _signedChainId, sealingPair, ...permit }) => { + return new PermitV2({ + ...permit, + sealingPair: new SealingKey(sealingPair.privateKey, sealingPair.publicKey), + }, { + _signedChainId, + }); + }; + PermitV2.validate = (permit) => { + return FullyFormedPermitV2Validator.safeParse(permit); + }; + + // Stores generated permits for each user, a hash indicating the active permit for each user, and a list of fheKeys as a cache + // Can be used to create reactive hooks + const _permitStore = createStore()(persist(() => ({ + permits: {}, + activePermitHash: {}, + }), { name: "fhenixjs-permits" })); + // Permit V2 + const getPermit$1 = (account, hash) => { + if (account == null || hash == null) + return; + const savedPermit = _permitStore.getState().permits[account]?.[hash]; + if (savedPermit == null) + return; + return PermitV2.deserialize(savedPermit); + }; + const getActivePermit = (account) => { + if (account == null) + return; + const activePermitHash = _permitStore.getState().activePermitHash[account]; + return getPermit$1(account, activePermitHash); + }; + const getPermits = (account) => { + if (account == null) + return {}; + return Object.entries(_permitStore.getState().permits[account] ?? {}).reduce((acc, [hash, permit]) => { + if (permit == undefined) + return acc; + return { ...acc, [hash]: PermitV2.deserialize(permit) }; + }, {}); + }; + const setPermit = (account, permitV2) => { + _permitStore.setState(produce((state) => { + if (state.permits[account] == null) + state.permits[account] = {}; + state.permits[account][permitV2.getHash()] = permitV2.serialize(); + })); + }; + const removePermit = (account, hash) => { + _permitStore.setState(produce((state) => { + state.permits[account][hash] = undefined; + })); + }; + // Active Permit Hash + const getActivePermitHash = (account) => { + if (account == null) + return undefined; + return _permitStore.getState().activePermitHash[account]; + }; + const setActivePermitHash = (account, hash) => { + _permitStore.setState(produce((state) => { + state.activePermitHash[account] = hash; + })); + }; + const removeActivePermitHash = (account) => { + _permitStore.setState(produce((state) => { + state.activePermitHash[account] = undefined; + })); + }; + const permitStore = { + store: _permitStore, + getPermit: getPermit$1, + getActivePermit, + getPermits, + setPermit, + removePermit, + getActivePermitHash, + setActivePermitHash, + removeActivePermitHash, + }; + + function _loadWasmModule (sync, filepath, src, imports) { + function _instantiateOrCompile(source, imports, stream) { + var instantiateFunc = WebAssembly.instantiate; + var compileFunc = WebAssembly.compile; + + if (imports) { + return instantiateFunc(source, imports) + } else { + return compileFunc(source) + } } - return { - then(onFulfilled) { - return toThenable(onFulfilled)(result); - }, - catch(_onRejected) { - return this; + + + var buf = null; + var isNode = typeof process !== 'undefined' && process.versions != null && process.versions.node != null; + if (isNode) { + + buf = Buffer.from(src, 'base64'); + + } else { + + var raw = globalThis.atob(src); + var rawLength = raw.length; + buf = new Uint8Array(new ArrayBuffer(rawLength)); + for(var i = 0; i < rawLength; i++) { + buf[i] = raw.charCodeAt(i); + } + + } + + + { + return _instantiateOrCompile(buf, imports) + } + } + + function wasm(imports){return _loadWasmModule(0, null, 'AGFzbQEAAAABjwREYAJ/fwBgAX8AYAN/f38AYAJ/fwF/YAh/f39/f39/fwBgAX8Bf2ADf39/AX9gBH9/f38AYAABf2AAAGAFf39/f38AYAN/fn8AYAN/f34AYAR/f39+AGAGf39/f39/AGAFf39/f38Bf2AFf39/fn4AYAJ/fgBgBn9/f39/fwF/YAN/f34Bf2AEf35+fwBgBH9/f38Bf2AGf39/f35+AGACf38BfmABfgF/YAJ+fgF/YAJ/fABgBX9/fn9/AGAHf39/f39/fwBgAXwBfGALf39/f39/f39/f38AYAZ/f39+f38AYAR/f35+AGAEf35+fgBgBH9+f38AYAJ/fgF/YAF8AX9gBn9+f39/fwBgCX9/f39/f3x8fwBgA35/fwBgCX9/f39/f39/fwBgDH9+fn9/f39/f39/fwBgBH9+f3wAYAl/f39/f39+fn4AYAp/f39/f39+fn5+AGAHf39/f39/fwF/YAN+f38Bf2ABfwF+YAV/f39/fgF+YAN/f38BfmAEf398fABgBX9+f35/AGADf39+AX5gCX9/f39/f35+fwBgC39/f39/f39/f39/AX9gBH9/f38BfmADf35+AGACfn8AYAJ+fgF8YAh/f39/fn5+fgBgBX9+fn9/AGACf34BfmAEf39+fgF+YAV/f3x/fwBgBH98f38AYAV/f31/fwBgBH99f38AYAN8fHwBfAL4D0IDd2JnGl9fd2JpbmRnZW5fYmlnaW50X2Zyb21fdTY0ABgDd2JnDl9fd2JpbmRnZW5fc2hyAAMDd2JnGl9fd2JpbmRnZW5fb2JqZWN0X2Ryb3BfcmVmAAEDd2JnGl9fd2JpbmRnZW5fYmlnaW50X2Zyb21faTY0ABgDd2JnE19fd2JpbmRnZW5fanN2YWxfZXEAAwN3YmcUX193YmluZGdlbl9lcnJvcl9uZXcAAwN3YmcbX193YmluZGdlbl9iaWdpbnRfZnJvbV9pMTI4ABkDd2JnG19fd2JpbmRnZW5fYmlnaW50X2Zyb21fdTEyOAAZA3diZxNfX3diZ19maGV1aW50MTZfbmV3AAUDd2JnFF9fd2JnX2ZoZXVpbnQxNjBfbmV3AAUDd2JnFF9fd2JnX2ZoZXVpbnQyNTZfbmV3AAUDd2JnE19fd2JnX2ZoZXVpbnQzMl9uZXcABQN3YmcUX193YmdfZmhldWludDEyOF9uZXcABQN3YmcSX193YmdfZmhldWludDhfbmV3AAUDd2JnE19fd2JnX2ZoZXVpbnQ2NF9uZXcABQN3YmcSX193YmdfZmhlaW50MzJfbmV3AAUDd2JnEl9fd2JnX2ZoZWludDY0X25ldwAFA3diZxFfX3diZ19maGVib29sX25ldwAFA3diZxNfX3diZ19maGVpbnQyNTZfbmV3AAUDd2JnE19fd2JnX2ZoZWludDE2MF9uZXcABQN3YmcSX193YmdfZmhlaW50MTZfbmV3AAUDd2JnEV9fd2JnX2ZoZWludDhfbmV3AAUDd2JnE19fd2JnX2ZoZWludDEyOF9uZXcABQN3YmcWX193YmluZGdlbl9ib29sZWFuX2dldAAFA3diZxpfX3diaW5kZ2VuX2JpZ2ludF9mcm9tX3N0cgADA3diZxJfX3diaW5kZ2VuX2JpdF9hbmQAAwN3YmcVX193YmluZGdlbl9udW1iZXJfbmV3ACQDd2JnDV9fd2JpbmRnZW5fbHQAAwN3YmcOX193YmluZGdlbl9uZWcABQN3YmcOX193YmluZGdlbl9zaGwAAwN3YmcOX193YmluZGdlbl9hZGQAAwN3YmcRX193YmluZGdlbl9iaXRfb3IAAwN3YmcaX193YmdfbmV3X2FiZGE3NmU4ODNiYThhNWYACAN3YmccX193Ymdfc3RhY2tfNjU4Mjc5ZmU0NDU0MWNmNgAAA3diZxxfX3diZ19lcnJvcl9mODUxNjY3YWY3MWJjZmM2AAADd2JnHV9fd2JnX2NyeXB0b183MGE5NmRlM2I2YjczZGFjAAUDd2JnFF9fd2JpbmRnZW5faXNfb2JqZWN0AAUDd2JnHl9fd2JnX3Byb2Nlc3NfZGQxNTc3NDQ1MTUyMTEyZQAFA3diZx9fX3diZ192ZXJzaW9uc181ODAzNmJlYzNhZGQ5ZTZmAAUDd2JnG19fd2JnX25vZGVfNmE5ZDI4MjA1ZWQ1YjBkOAAFA3diZxRfX3diaW5kZ2VuX2lzX3N0cmluZwAFA3diZx5fX3diZ19yZXF1aXJlX2YwNWQ3Nzk3Njk3NjRlODIACAN3YmcVX193YmluZGdlbl9zdHJpbmdfbmV3AAMDd2JnH19fd2JnX21zQ3J5cHRvX2FkYmM3NzBlYzllY2E5YzcABQN3YmclX193YmdfcmFuZG9tRmlsbFN5bmNfZTk1MDM2NmM0Mjc2NGEwNwAAA3diZyZfX3diZ19nZXRSYW5kb21WYWx1ZXNfMzc3NDc0NGUyMjFhMjJhZAAAA3diZxZfX3diaW5kZ2VuX2lzX2Z1bmN0aW9uAAUDd2JnIF9fd2JnX25ld25vYXJnc19lNjQzODU1YzY1NzJhNGE4AAMDd2JnG19fd2JnX2NhbGxfZjk2YjM5ODUxNTYzNTUxNAADA3diZxtfX3diZ19zZWxmX2I5YWFkN2YxYzYxOGJmYWYACAN3YmcdX193Ymdfd2luZG93XzU1ZTQ2OTg0MmM5OGIwODYACAN3YmchX193YmdfZ2xvYmFsVGhpc19kMDk1N2UzMDI3NTI1NDdlAAgDd2JnHV9fd2JnX2dsb2JhbF9hZTJmODczMTJiODk4N2ZiAAgDd2JnF19fd2JpbmRnZW5faXNfdW5kZWZpbmVkAAUDd2JnG19fd2JnX2NhbGxfMzU3ODJlOWExYWE1ZTA5MQAGA3diZx1fX3diZ19idWZmZXJfZmNiZmI2ZDg4YjI3MzJlOQAFA3diZzFfX3diZ19uZXd3aXRoYnl0ZW9mZnNldGFuZGxlbmd0aF85MmMyNTE5ODljNDg1Nzg1AAYDd2JnGl9fd2JnX25ld19iYzVkOWFhZDNmOWFjODBlAAUDd2JnGl9fd2JnX3NldF80YjNhYTg0NDVhYzFlOTFjAAIDd2JnJF9fd2JnX25ld3dpdGhsZW5ndGhfODllY2ExOGYyNjAzYTk5OQAFA3diZx9fX3diZ19zdWJhcnJheV83NjQ5ZDAyN2IyYjE0MWIzAAYDd2JnG19fd2JpbmRnZW5fb2JqZWN0X2Nsb25lX3JlZgAFA3diZxxfX3diaW5kZ2VuX2JpZ2ludF9nZXRfYXNfaTY0AAADd2JnF19fd2JpbmRnZW5fZGVidWdfc3RyaW5nAAADd2JnEF9fd2JpbmRnZW5fdGhyb3cAAAN3YmcRX193YmluZGdlbl9tZW1vcnkACAO2CbQJBQAlGhsAAgcHAgwDBgMGDgAmBwAAAAAAAAIDDgISCgonAAAFAgICAgEBBgAAAQIAAAYAAAQEAygEAAAAAAAGAQAAAAcHAikAAAoKAw4AKgAKAAcHAgErAwEBAw4BAQAsHAMAAwMtAA8dAAMDAh4DAwMDAwMDAwICAgIBAQACAgICAgICAgIDLi8DAgICAgIeAgICAgICBwgAHx8DAAAwAwMDAgMDAwMDAwMDBgMDAwADAwEODgAaAAIHAAEAAAAAAAAAAAADAAAAAQECBwAAAAoDAQUQAQABAAIAABYAAAACAAAAAAICAgICAgICAgICAgAAAAMAAAAAAAEHBwcHBwAAAAASBgYDAAcPMQMHBwMABgcMDAwMDAwMDAwRAAEOAAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAMFAAACMwIAEDQHBwAXADU2AAcHBwcHBwcCCAU3AQAWFgAAAAAAAgIDEgAABwcAAgIIBQAAAgICAwcDAwAFAAcAAAABAAAAAAAAAgICAgICOAICCTkCDQ0BAwM6AgIAAAAAAAAAFwACAAIAAAAACAEXAw0NDQ0NDQ0CAgICAgICAgICAgICAgAAAhMAAwMDFDsAHAADAQAAAgAAIAMCAgMAAAcCAgICAwIDAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgILCwsLCwICAgICAgICAgICAgICAgsLCwsLCgMAAAcHBwcHBwcHBwcHIQECAgICAgICAgILAgICCwIBAwMJCAAgAAE8BQUBBwYAAAMBEAMBAgAAAAAAAAAAACIBAAUDAAAHAwICAgICEwACAAAAAQABAAICAAIDAwMHAxMTBxEAABEAEQAFAAEAAgUBAAIAARQUAgIAAAEFBQUFAAUFBQEBARQJBQMBAAECAQEABQEAIwEDAgMKAwECAAEAAwEADAEBAQMDCSMAAAAAAAIAAgACAgIAAAIJCQAQAQ4BAAIAAz0DAwUBAQEABQMFAAYABgIBCQADAAAFAQUFBQEBAwUIEAEAABEPAyEABQMCAwMICAUAAwEDAQMDAgEBCQkJCQABBQADBQMFBwcHBwMDBwcHAwMDAAADAQEDAwMVAwEFBQUFBQUFAAMDAwMDAwMDAwMDAwUFBQUFBQUBAwMDAwUDAwMBAgECAAACAQMHAQEIAQUBAQEDAwACBQIABQUIBQAAChIDAwABAz4BChs/D0EABRUBCAMFBwUDAQEGCAEABQUFAQMDAQMDBh0DAQEDBQEVAgMDBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAwMGBwEFAwADCgMCAwMDAAEAAgACCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQMDAwAAAAAAAwYBBgUDAwMDAwUDAwEDAwEDAQEBAQEBAwMDAAkJAwADAwkDAAADAwMAAwMGBgZDBgYFAwUDCQgDAAEBBQUBBAQHAXAB4APgAwUDAQARBgkBfwFBgIDAAAsHz3zUAwZtZW1vcnkCAA9pbml0X3BhbmljX2hvb2sAzgYYX193YmdfdGZoZWNsaWVudGtleV9mcmVlAIIGFnRmaGVjbGllbnRrZXlfZ2VuZXJhdGUA+AQgdGZoZWNsaWVudGtleV9nZW5lcmF0ZV93aXRoX3NlZWQApgQXdGZoZWNsaWVudGtleV9zZXJpYWxpemUA4gIZdGZoZWNsaWVudGtleV9kZXNlcmlhbGl6ZQDaAyJfX3diZ190ZmhlY29tcHJlc3NlZHNlcnZlcmtleV9mcmVlAOsFG3RmaGVjb21wcmVzc2Vkc2VydmVya2V5X25ldwCJBCF0ZmhlY29tcHJlc3NlZHNlcnZlcmtleV9zZXJpYWxpemUA4wIjdGZoZWNvbXByZXNzZWRzZXJ2ZXJrZXlfZGVzZXJpYWxpemUA2wMYX193YmdfdGZoZXB1YmxpY2tleV9mcmVlAMIGEXRmaGVwdWJsaWNrZXlfbmV3ANwDF3RmaGVwdWJsaWNrZXlfc2VyaWFsaXplAOQCGXRmaGVwdWJsaWNrZXlfZGVzZXJpYWxpemUA9wMiX193YmdfdGZoZWNvbXByZXNzZWRwdWJsaWNrZXlfZnJlZQDDBht0ZmhlY29tcHJlc3NlZHB1YmxpY2tleV9uZXcA3QMidGZoZWNvbXByZXNzZWRwdWJsaWNrZXlfZGVjb21wcmVzcwDeAyF0ZmhlY29tcHJlc3NlZHB1YmxpY2tleV9zZXJpYWxpemUA5QIjdGZoZWNvbXByZXNzZWRwdWJsaWNrZXlfZGVzZXJpYWxpemUA+AMfX193YmdfdGZoZWNvbXBhY3RwdWJsaWNrZXlfZnJlZQDCBhh0ZmhlY29tcGFjdHB1YmxpY2tleV9uZXcA3wMedGZoZWNvbXBhY3RwdWJsaWNrZXlfc2VyaWFsaXplAOQCIHRmaGVjb21wYWN0cHVibGlja2V5X2Rlc2VyaWFsaXplAPkDKV9fd2JnX3RmaGVjb21wcmVzc2VkY29tcGFjdHB1YmxpY2tleV9mcmVlAMMGInRmaGVjb21wcmVzc2VkY29tcGFjdHB1YmxpY2tleV9uZXcA4AModGZoZWNvbXByZXNzZWRjb21wYWN0cHVibGlja2V5X3NlcmlhbGl6ZQDlAip0ZmhlY29tcHJlc3NlZGNvbXBhY3RwdWJsaWNrZXlfZGVzZXJpYWxpemUA+gMpdGZoZWNvbXByZXNzZWRjb21wYWN0cHVibGlja2V5X2RlY29tcHJlc3MA4QMVX193YmdfdGZoZWNvbmZpZ19mcmVlAPcHHF9fd2JnX3RmaGVjb25maWdidWlsZGVyX2ZyZWUA9wcZdGZoZWNvbmZpZ2J1aWxkZXJfZGVmYXVsdADrBi90ZmhlY29uZmlnYnVpbGRlcl9kZWZhdWx0X3dpdGhfc21hbGxfZW5jcnlwdGlvbgDsBhd0ZmhlY29uZmlnYnVpbGRlcl9idWlsZADZByJmaGV1aW50MTI4X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AKoEImZoZXVpbnQxMjhfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkAqwQtZmhldWludDEyOF9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5AKwEKmZoZXVpbnQxMjhfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCtBBJmaGV1aW50MTI4X2RlY3J5cHQAyAMUZmhldWludDEyOF9zZXJpYWxpemUA5wIWZmhldWludDEyOF9kZXNlcmlhbGl6ZQD7AxlmaGV1aW50MTI4X3NhZmVfc2VyaWFsaXplANUCG2ZoZXVpbnQxMjhfc2FmZV9kZXNlcmlhbGl6ZQDwAyxjb21wcmVzc2VkZmhldWludDEyOF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQCuBB9jb21wcmVzc2VkZmhldWludDEyOF9kZWNvbXByZXNzAOQDHmNvbXByZXNzZWRmaGV1aW50MTI4X3NlcmlhbGl6ZQDoAiBjb21wcmVzc2VkZmhldWludDEyOF9kZXNlcmlhbGl6ZQDlAyNjb21wcmVzc2VkZmhldWludDEyOF9zYWZlX3NlcmlhbGl6ZQDWAiVjb21wcmVzc2VkZmhldWludDEyOF9zYWZlX2Rlc2VyaWFsaXplANQDMWNvbXBhY3RmaGV1aW50MTI4X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAhwUbY29tcGFjdGZoZXVpbnQxMjhfc2VyaWFsaXplAOkCHWNvbXBhY3RmaGV1aW50MTI4X2Rlc2VyaWFsaXplAPwDIGNvbXBhY3RmaGV1aW50MTI4X3NhZmVfc2VyaWFsaXplANcCImNvbXBhY3RmaGV1aW50MTI4X3NhZmVfZGVzZXJpYWxpemUA8QM1Y29tcGFjdGZoZXVpbnQxMjhsaXN0X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAkAMcY29tcGFjdGZoZXVpbnQxMjhsaXN0X2V4cGFuZADqAh9jb21wYWN0ZmhldWludDEyOGxpc3Rfc2VyaWFsaXplAOkCIWNvbXBhY3RmaGV1aW50MTI4bGlzdF9kZXNlcmlhbGl6ZQD9AyJmaGV1aW50MTYwX2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AK8EImZoZXVpbnQxNjBfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkAsAQtZmhldWludDE2MF9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5ALEEKmZoZXVpbnQxNjBfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCyBBJmaGV1aW50MTYwX2RlY3J5cHQAyQMUZmhldWludDE2MF9zZXJpYWxpemUA5wIWZmhldWludDE2MF9kZXNlcmlhbGl6ZQD7AxlmaGV1aW50MTYwX3NhZmVfc2VyaWFsaXplANUCG2ZoZXVpbnQxNjBfc2FmZV9kZXNlcmlhbGl6ZQDwAyxjb21wcmVzc2VkZmhldWludDE2MF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQCzBB9jb21wcmVzc2VkZmhldWludDE2MF9kZWNvbXByZXNzAOQDHmNvbXByZXNzZWRmaGV1aW50MTYwX3NlcmlhbGl6ZQDoAiBjb21wcmVzc2VkZmhldWludDE2MF9kZXNlcmlhbGl6ZQDlAyNjb21wcmVzc2VkZmhldWludDE2MF9zYWZlX3NlcmlhbGl6ZQDWAiVjb21wcmVzc2VkZmhldWludDE2MF9zYWZlX2Rlc2VyaWFsaXplANQDMWNvbXBhY3RmaGV1aW50MTYwX2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAiAUbY29tcGFjdGZoZXVpbnQxNjBfc2VyaWFsaXplAOkCHWNvbXBhY3RmaGV1aW50MTYwX2Rlc2VyaWFsaXplAPwDIGNvbXBhY3RmaGV1aW50MTYwX3NhZmVfc2VyaWFsaXplANcCImNvbXBhY3RmaGV1aW50MTYwX3NhZmVfZGVzZXJpYWxpemUA8QM1Y29tcGFjdGZoZXVpbnQxNjBsaXN0X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAkQMcY29tcGFjdGZoZXVpbnQxNjBsaXN0X2V4cGFuZADrAh9jb21wYWN0ZmhldWludDE2MGxpc3Rfc2VyaWFsaXplAOkCIWNvbXBhY3RmaGV1aW50MTYwbGlzdF9kZXNlcmlhbGl6ZQD9AyJmaGV1aW50MjU2X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5ALQEImZoZXVpbnQyNTZfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkAtQQtZmhldWludDI1Nl9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5ALYEKmZoZXVpbnQyNTZfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQC3BBJmaGV1aW50MjU2X2RlY3J5cHQAyQMUZmhldWludDI1Nl9zZXJpYWxpemUA5wIWZmhldWludDI1Nl9kZXNlcmlhbGl6ZQD7AxlmaGV1aW50MjU2X3NhZmVfc2VyaWFsaXplANUCG2ZoZXVpbnQyNTZfc2FmZV9kZXNlcmlhbGl6ZQDwAyxjb21wcmVzc2VkZmhldWludDI1Nl9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQC4BB9jb21wcmVzc2VkZmhldWludDI1Nl9kZWNvbXByZXNzAOQDHmNvbXByZXNzZWRmaGV1aW50MjU2X3NlcmlhbGl6ZQDoAiBjb21wcmVzc2VkZmhldWludDI1Nl9kZXNlcmlhbGl6ZQDlAyNjb21wcmVzc2VkZmhldWludDI1Nl9zYWZlX3NlcmlhbGl6ZQDWAiVjb21wcmVzc2VkZmhldWludDI1Nl9zYWZlX2Rlc2VyaWFsaXplANQDMWNvbXBhY3RmaGV1aW50MjU2X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAiQUbY29tcGFjdGZoZXVpbnQyNTZfc2VyaWFsaXplAOkCHWNvbXBhY3RmaGV1aW50MjU2X2Rlc2VyaWFsaXplAPwDIGNvbXBhY3RmaGV1aW50MjU2X3NhZmVfc2VyaWFsaXplANcCImNvbXBhY3RmaGV1aW50MjU2X3NhZmVfZGVzZXJpYWxpemUA8QM1Y29tcGFjdGZoZXVpbnQyNTZsaXN0X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAkgMcY29tcGFjdGZoZXVpbnQyNTZsaXN0X2V4cGFuZADsAh9jb21wYWN0ZmhldWludDI1Nmxpc3Rfc2VyaWFsaXplAOkCIWNvbXBhY3RmaGV1aW50MjU2bGlzdF9kZXNlcmlhbGl6ZQD9AxRfX3diZ19maGVpbnQxMjhfZnJlZQDOByFmaGVpbnQxMjhfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkAuQQhZmhlaW50MTI4X2VuY3J5cHRfd2l0aF9wdWJsaWNfa2V5ALoELGZoZWludDEyOF9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5ALsEKWZoZWludDEyOF9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5ALwEEWZoZWludDEyOF9kZWNyeXB0AMoDE2ZoZWludDEyOF9zZXJpYWxpemUA5wIVZmhlaW50MTI4X2Rlc2VyaWFsaXplAP4DGGZoZWludDEyOF9zYWZlX3NlcmlhbGl6ZQDYAhpmaGVpbnQxMjhfc2FmZV9kZXNlcmlhbGl6ZQDyAx5fX3diZ19jb21wcmVzc2VkZmhlaW50MTI4X2ZyZWUA5gcrY29tcHJlc3NlZGZoZWludDEyOF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQC9BB5jb21wcmVzc2VkZmhlaW50MTI4X2RlY29tcHJlc3MA5gMdY29tcHJlc3NlZGZoZWludDEyOF9zZXJpYWxpemUA6AIfY29tcHJlc3NlZGZoZWludDEyOF9kZXNlcmlhbGl6ZQDnAyJjb21wcmVzc2VkZmhlaW50MTI4X3NhZmVfc2VyaWFsaXplANkCJGNvbXByZXNzZWRmaGVpbnQxMjhfc2FmZV9kZXNlcmlhbGl6ZQDVAxtfX3diZ19jb21wYWN0ZmhlaW50MTI4X2ZyZWUA2AYwY29tcGFjdGZoZWludDEyOF9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AIoFF2NvbXBhY3RmaGVpbnQxMjhfZXhwYW5kAOgDGmNvbXBhY3RmaGVpbnQxMjhfc2VyaWFsaXplAOkCHGNvbXBhY3RmaGVpbnQxMjhfZGVzZXJpYWxpemUA/wMfY29tcGFjdGZoZWludDEyOF9zYWZlX3NlcmlhbGl6ZQDaAiFjb21wYWN0ZmhlaW50MTI4X3NhZmVfZGVzZXJpYWxpemUA8wM0Y29tcGFjdGZoZWludDEyOGxpc3RfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCTAxtjb21wYWN0ZmhlaW50MTI4bGlzdF9leHBhbmQA7QIeY29tcGFjdGZoZWludDEyOGxpc3Rfc2VyaWFsaXplAOkCIGNvbXBhY3RmaGVpbnQxMjhsaXN0X2Rlc2VyaWFsaXplAIAEIWZoZWludDE2MF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQC+BCFmaGVpbnQxNjBfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkAvwQsZmhlaW50MTYwX2VuY3J5cHRfd2l0aF9jb21wcmVzc2VkX3B1YmxpY19rZXkAwAQpZmhlaW50MTYwX2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAwQQRZmhlaW50MTYwX2RlY3J5cHQAywMTZmhlaW50MTYwX3NlcmlhbGl6ZQDnAhVmaGVpbnQxNjBfZGVzZXJpYWxpemUA/gMYZmhlaW50MTYwX3NhZmVfc2VyaWFsaXplANgCGmZoZWludDE2MF9zYWZlX2Rlc2VyaWFsaXplAPIDK2NvbXByZXNzZWRmaGVpbnQxNjBfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkAwgQeY29tcHJlc3NlZGZoZWludDE2MF9kZWNvbXByZXNzAOYDHWNvbXByZXNzZWRmaGVpbnQxNjBfc2VyaWFsaXplAOgCH2NvbXByZXNzZWRmaGVpbnQxNjBfZGVzZXJpYWxpemUA5wMiY29tcHJlc3NlZGZoZWludDE2MF9zYWZlX3NlcmlhbGl6ZQDZAiRjb21wcmVzc2VkZmhlaW50MTYwX3NhZmVfZGVzZXJpYWxpemUA1QMwY29tcGFjdGZoZWludDE2MF9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AIsFGmNvbXBhY3RmaGVpbnQxNjBfc2VyaWFsaXplAOkCHGNvbXBhY3RmaGVpbnQxNjBfZGVzZXJpYWxpemUA/wMfY29tcGFjdGZoZWludDE2MF9zYWZlX3NlcmlhbGl6ZQDaAiFjb21wYWN0ZmhlaW50MTYwX3NhZmVfZGVzZXJpYWxpemUA8wM0Y29tcGFjdGZoZWludDE2MGxpc3RfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCUAxtjb21wYWN0ZmhlaW50MTYwbGlzdF9leHBhbmQA7gIeY29tcGFjdGZoZWludDE2MGxpc3Rfc2VyaWFsaXplAOkCIGNvbXBhY3RmaGVpbnQxNjBsaXN0X2Rlc2VyaWFsaXplAIAEIWZoZWludDI1Nl9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQDDBCFmaGVpbnQyNTZfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkAxAQsZmhlaW50MjU2X2VuY3J5cHRfd2l0aF9jb21wcmVzc2VkX3B1YmxpY19rZXkAxQQpZmhlaW50MjU2X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAxgQRZmhlaW50MjU2X2RlY3J5cHQAywMTZmhlaW50MjU2X3NlcmlhbGl6ZQDnAhVmaGVpbnQyNTZfZGVzZXJpYWxpemUA/gMYZmhlaW50MjU2X3NhZmVfc2VyaWFsaXplANgCGmZoZWludDI1Nl9zYWZlX2Rlc2VyaWFsaXplAPIDK2NvbXByZXNzZWRmaGVpbnQyNTZfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkAxwQeY29tcHJlc3NlZGZoZWludDI1Nl9kZWNvbXByZXNzAOYDHWNvbXByZXNzZWRmaGVpbnQyNTZfc2VyaWFsaXplAOgCH2NvbXByZXNzZWRmaGVpbnQyNTZfZGVzZXJpYWxpemUA5wMiY29tcHJlc3NlZGZoZWludDI1Nl9zYWZlX3NlcmlhbGl6ZQDZAiRjb21wcmVzc2VkZmhlaW50MjU2X3NhZmVfZGVzZXJpYWxpemUA1QMwY29tcGFjdGZoZWludDI1Nl9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AIwFGmNvbXBhY3RmaGVpbnQyNTZfc2VyaWFsaXplAOkCHGNvbXBhY3RmaGVpbnQyNTZfZGVzZXJpYWxpemUA/wMfY29tcGFjdGZoZWludDI1Nl9zYWZlX3NlcmlhbGl6ZQDaAiFjb21wYWN0ZmhlaW50MjU2X3NhZmVfZGVzZXJpYWxpemUA8wM0Y29tcGFjdGZoZWludDI1Nmxpc3RfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCVAxtjb21wYWN0ZmhlaW50MjU2bGlzdF9leHBhbmQA7wIeY29tcGFjdGZoZWludDI1Nmxpc3Rfc2VyaWFsaXplAOkCIGNvbXBhY3RmaGVpbnQyNTZsaXN0X2Rlc2VyaWFsaXplAIAEEl9fd2JnX2ZoZWJvb2xfZnJlZQDZBh9maGVib29sX2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AMgEH2ZoZWJvb2xfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkAyQQqZmhlYm9vbF9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5AMoEJ2ZoZWJvb2xfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQDLBA9maGVib29sX2RlY3J5cHQAlgQRZmhlYm9vbF9zZXJpYWxpemUA8AITZmhlYm9vbF9kZXNlcmlhbGl6ZQCBBBZmaGVib29sX3NhZmVfc2VyaWFsaXplANsCGGZoZWJvb2xfc2FmZV9kZXNlcmlhbGl6ZQD0AxxfX3diZ19jb21wcmVzc2VkZmhlYm9vbF9mcmVlALYGKWNvbXByZXNzZWRmaGVib29sX2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AMwEHGNvbXByZXNzZWRmaGVib29sX2RlY29tcHJlc3MA6QMbY29tcHJlc3NlZGZoZWJvb2xfc2VyaWFsaXplAPECHWNvbXByZXNzZWRmaGVib29sX2Rlc2VyaWFsaXplAIIEIGNvbXByZXNzZWRmaGVib29sX3NhZmVfc2VyaWFsaXplANwCImNvbXByZXNzZWRmaGVib29sX3NhZmVfZGVzZXJpYWxpemUA9QMZX193YmdfY29tcGFjdGZoZWJvb2xfZnJlZQDYBi5jb21wYWN0ZmhlYm9vbF9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AM0EFWNvbXBhY3RmaGVib29sX2V4cGFuZADqAxhjb21wYWN0ZmhlYm9vbF9zZXJpYWxpemUA6QIaY29tcGFjdGZoZWJvb2xfZGVzZXJpYWxpemUAgwQdY29tcGFjdGZoZWJvb2xfc2FmZV9zZXJpYWxpemUA3QIfY29tcGFjdGZoZWJvb2xfc2FmZV9kZXNlcmlhbGl6ZQD2Axljb21wYWN0ZmhlYm9vbGxpc3RfZXhwYW5kAPICHGNvbXBhY3RmaGVib29sbGlzdF9zZXJpYWxpemUA6QIeY29tcGFjdGZoZWJvb2xsaXN0X2Rlc2VyaWFsaXplAIQEIGZoZXVpbnQ4X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AM4EIGZoZXVpbnQ4X2VuY3J5cHRfd2l0aF9wdWJsaWNfa2V5AM8EK2ZoZXVpbnQ4X2VuY3J5cHRfd2l0aF9jb21wcmVzc2VkX3B1YmxpY19rZXkA0AQoZmhldWludDhfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQDRBBBmaGV1aW50OF9kZWNyeXB0AK0DEmZoZXVpbnQ4X3NlcmlhbGl6ZQDnAhRmaGV1aW50OF9kZXNlcmlhbGl6ZQD7AxdmaGV1aW50OF9zYWZlX3NlcmlhbGl6ZQDVAhlmaGV1aW50OF9zYWZlX2Rlc2VyaWFsaXplAPADKmNvbXByZXNzZWRmaGV1aW50OF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQDSBB1jb21wcmVzc2VkZmhldWludDhfZGVjb21wcmVzcwDkAxxjb21wcmVzc2VkZmhldWludDhfc2VyaWFsaXplAOgCHmNvbXByZXNzZWRmaGV1aW50OF9kZXNlcmlhbGl6ZQDlAyFjb21wcmVzc2VkZmhldWludDhfc2FmZV9zZXJpYWxpemUA1gIjY29tcHJlc3NlZGZoZXVpbnQ4X3NhZmVfZGVzZXJpYWxpemUA1AMvY29tcGFjdGZoZXVpbnQ4X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAjQUZY29tcGFjdGZoZXVpbnQ4X3NlcmlhbGl6ZQDpAhtjb21wYWN0ZmhldWludDhfZGVzZXJpYWxpemUA/AMeY29tcGFjdGZoZXVpbnQ4X3NhZmVfc2VyaWFsaXplANcCIGNvbXBhY3RmaGV1aW50OF9zYWZlX2Rlc2VyaWFsaXplAPEDGmNvbXBhY3RmaGV1aW50OGxpc3RfZXhwYW5kAPMCHWNvbXBhY3RmaGV1aW50OGxpc3Rfc2VyaWFsaXplAOkCH2NvbXBhY3RmaGV1aW50OGxpc3RfZGVzZXJpYWxpemUA/QMhZmhldWludDE2X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5ANMEIWZoZXVpbnQxNl9lbmNyeXB0X3dpdGhfcHVibGljX2tleQDUBCxmaGV1aW50MTZfZW5jcnlwdF93aXRoX2NvbXByZXNzZWRfcHVibGljX2tleQDVBClmaGV1aW50MTZfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQDWBBFmaGV1aW50MTZfZGVjcnlwdACuAxNmaGV1aW50MTZfc2VyaWFsaXplAOcCFWZoZXVpbnQxNl9kZXNlcmlhbGl6ZQD7AxhmaGV1aW50MTZfc2FmZV9zZXJpYWxpemUA1QIaZmhldWludDE2X3NhZmVfZGVzZXJpYWxpemUA8AMrY29tcHJlc3NlZGZoZXVpbnQxNl9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQDXBB5jb21wcmVzc2VkZmhldWludDE2X2RlY29tcHJlc3MA5AMdY29tcHJlc3NlZGZoZXVpbnQxNl9zZXJpYWxpemUA6AIfY29tcHJlc3NlZGZoZXVpbnQxNl9kZXNlcmlhbGl6ZQDlAyJjb21wcmVzc2VkZmhldWludDE2X3NhZmVfc2VyaWFsaXplANYCJGNvbXByZXNzZWRmaGV1aW50MTZfc2FmZV9kZXNlcmlhbGl6ZQDUAzBjb21wYWN0ZmhldWludDE2X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAjgUaY29tcGFjdGZoZXVpbnQxNl9zZXJpYWxpemUA6QIcY29tcGFjdGZoZXVpbnQxNl9kZXNlcmlhbGl6ZQD8Ax9jb21wYWN0ZmhldWludDE2X3NhZmVfc2VyaWFsaXplANcCIWNvbXBhY3RmaGV1aW50MTZfc2FmZV9kZXNlcmlhbGl6ZQDxAxtjb21wYWN0ZmhldWludDE2bGlzdF9leHBhbmQA9AIeY29tcGFjdGZoZXVpbnQxNmxpc3Rfc2VyaWFsaXplAOkCIGNvbXBhY3RmaGV1aW50MTZsaXN0X2Rlc2VyaWFsaXplAP0DIWZoZXVpbnQzMl9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQDYBCFmaGV1aW50MzJfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkA2QQsZmhldWludDMyX2VuY3J5cHRfd2l0aF9jb21wcmVzc2VkX3B1YmxpY19rZXkA2gQpZmhldWludDMyX2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkA2wQRZmhldWludDMyX2RlY3J5cHQAtAMTZmhldWludDMyX3NlcmlhbGl6ZQDnAhVmaGV1aW50MzJfZGVzZXJpYWxpemUA+wMYZmhldWludDMyX3NhZmVfc2VyaWFsaXplANUCGmZoZXVpbnQzMl9zYWZlX2Rlc2VyaWFsaXplAPADK2NvbXByZXNzZWRmaGV1aW50MzJfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkA3AQeY29tcHJlc3NlZGZoZXVpbnQzMl9kZWNvbXByZXNzAOQDHWNvbXByZXNzZWRmaGV1aW50MzJfc2VyaWFsaXplAOgCH2NvbXByZXNzZWRmaGV1aW50MzJfZGVzZXJpYWxpemUA5QMiY29tcHJlc3NlZGZoZXVpbnQzMl9zYWZlX3NlcmlhbGl6ZQDWAiRjb21wcmVzc2VkZmhldWludDMyX3NhZmVfZGVzZXJpYWxpemUA1AMwY29tcGFjdGZoZXVpbnQzMl9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AI8FGmNvbXBhY3RmaGV1aW50MzJfc2VyaWFsaXplAOkCHGNvbXBhY3RmaGV1aW50MzJfZGVzZXJpYWxpemUA/AMfY29tcGFjdGZoZXVpbnQzMl9zYWZlX3NlcmlhbGl6ZQDXAiFjb21wYWN0ZmhldWludDMyX3NhZmVfZGVzZXJpYWxpemUA8QMbY29tcGFjdGZoZXVpbnQzMmxpc3RfZXhwYW5kAPUCHmNvbXBhY3RmaGV1aW50MzJsaXN0X3NlcmlhbGl6ZQDpAiBjb21wYWN0ZmhldWludDMybGlzdF9kZXNlcmlhbGl6ZQD9AyFmaGV1aW50NjRfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkA3QQhZmhldWludDY0X2VuY3J5cHRfd2l0aF9wdWJsaWNfa2V5AN4ELGZoZXVpbnQ2NF9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5AN8EKWZoZXVpbnQ2NF9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AOAEEWZoZXVpbnQ2NF9kZWNyeXB0ALUDE2ZoZXVpbnQ2NF9zZXJpYWxpemUA5wIVZmhldWludDY0X2Rlc2VyaWFsaXplAPsDGGZoZXVpbnQ2NF9zYWZlX3NlcmlhbGl6ZQDVAhpmaGV1aW50NjRfc2FmZV9kZXNlcmlhbGl6ZQDwAytjb21wcmVzc2VkZmhldWludDY0X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AOEEHmNvbXByZXNzZWRmaGV1aW50NjRfZGVjb21wcmVzcwDkAx1jb21wcmVzc2VkZmhldWludDY0X3NlcmlhbGl6ZQDoAh9jb21wcmVzc2VkZmhldWludDY0X2Rlc2VyaWFsaXplAOUDImNvbXByZXNzZWRmaGV1aW50NjRfc2FmZV9zZXJpYWxpemUA1gIkY29tcHJlc3NlZGZoZXVpbnQ2NF9zYWZlX2Rlc2VyaWFsaXplANQDMGNvbXBhY3RmaGV1aW50NjRfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCQBRpjb21wYWN0ZmhldWludDY0X3NlcmlhbGl6ZQDpAhxjb21wYWN0ZmhldWludDY0X2Rlc2VyaWFsaXplAPwDH2NvbXBhY3RmaGV1aW50NjRfc2FmZV9zZXJpYWxpemUA1wIhY29tcGFjdGZoZXVpbnQ2NF9zYWZlX2Rlc2VyaWFsaXplAPEDG2NvbXBhY3RmaGV1aW50NjRsaXN0X2V4cGFuZAD2Ah5jb21wYWN0ZmhldWludDY0bGlzdF9zZXJpYWxpemUA6QIgY29tcGFjdGZoZXVpbnQ2NGxpc3RfZGVzZXJpYWxpemUA/QMfZmhlaW50OF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQDiBB9maGVpbnQ4X2VuY3J5cHRfd2l0aF9wdWJsaWNfa2V5AOMEKmZoZWludDhfZW5jcnlwdF93aXRoX2NvbXByZXNzZWRfcHVibGljX2tleQDkBCdmaGVpbnQ4X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkA5QQPZmhlaW50OF9kZWNyeXB0AMwDEWZoZWludDhfc2VyaWFsaXplAOcCE2ZoZWludDhfZGVzZXJpYWxpemUA/gMWZmhlaW50OF9zYWZlX3NlcmlhbGl6ZQDYAhhmaGVpbnQ4X3NhZmVfZGVzZXJpYWxpemUA8gMpY29tcHJlc3NlZGZoZWludDhfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkA5gQcY29tcHJlc3NlZGZoZWludDhfZGVjb21wcmVzcwDmAxtjb21wcmVzc2VkZmhlaW50OF9zZXJpYWxpemUA6AIdY29tcHJlc3NlZGZoZWludDhfZGVzZXJpYWxpemUA5wMgY29tcHJlc3NlZGZoZWludDhfc2FmZV9zZXJpYWxpemUA2QIiY29tcHJlc3NlZGZoZWludDhfc2FmZV9kZXNlcmlhbGl6ZQDVAy5jb21wYWN0ZmhlaW50OF9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AJEFGGNvbXBhY3RmaGVpbnQ4X3NlcmlhbGl6ZQDpAhpjb21wYWN0ZmhlaW50OF9kZXNlcmlhbGl6ZQD/Ax1jb21wYWN0ZmhlaW50OF9zYWZlX3NlcmlhbGl6ZQDaAh9jb21wYWN0ZmhlaW50OF9zYWZlX2Rlc2VyaWFsaXplAPMDGWNvbXBhY3RmaGVpbnQ4bGlzdF9leHBhbmQA9wIcY29tcGFjdGZoZWludDhsaXN0X3NlcmlhbGl6ZQDpAh5jb21wYWN0ZmhlaW50OGxpc3RfZGVzZXJpYWxpemUAgAQgZmhlaW50MTZfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkA5wQgZmhlaW50MTZfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkA6AQrZmhlaW50MTZfZW5jcnlwdF93aXRoX2NvbXByZXNzZWRfcHVibGljX2tleQDpBChmaGVpbnQxNl9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AOoEEGZoZWludDE2X2RlY3J5cHQAzQMSZmhlaW50MTZfc2VyaWFsaXplAOcCFGZoZWludDE2X2Rlc2VyaWFsaXplAP4DF2ZoZWludDE2X3NhZmVfc2VyaWFsaXplANgCGWZoZWludDE2X3NhZmVfZGVzZXJpYWxpemUA8gMqY29tcHJlc3NlZGZoZWludDE2X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AOsEHWNvbXByZXNzZWRmaGVpbnQxNl9kZWNvbXByZXNzAOYDHGNvbXByZXNzZWRmaGVpbnQxNl9zZXJpYWxpemUA6AIeY29tcHJlc3NlZGZoZWludDE2X2Rlc2VyaWFsaXplAOcDIWNvbXByZXNzZWRmaGVpbnQxNl9zYWZlX3NlcmlhbGl6ZQDZAiNjb21wcmVzc2VkZmhlaW50MTZfc2FmZV9kZXNlcmlhbGl6ZQDVAy9jb21wYWN0ZmhlaW50MTZfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCSBRljb21wYWN0ZmhlaW50MTZfc2VyaWFsaXplAOkCG2NvbXBhY3RmaGVpbnQxNl9kZXNlcmlhbGl6ZQD/Ax5jb21wYWN0ZmhlaW50MTZfc2FmZV9zZXJpYWxpemUA2gIgY29tcGFjdGZoZWludDE2X3NhZmVfZGVzZXJpYWxpemUA8wMaY29tcGFjdGZoZWludDE2bGlzdF9leHBhbmQA+AIdY29tcGFjdGZoZWludDE2bGlzdF9zZXJpYWxpemUA6QIfY29tcGFjdGZoZWludDE2bGlzdF9kZXNlcmlhbGl6ZQCABCBmaGVpbnQzMl9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQDsBCBmaGVpbnQzMl9lbmNyeXB0X3dpdGhfcHVibGljX2tleQDtBCtmaGVpbnQzMl9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5AO4EKGZoZWludDMyX2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkA7wQQZmhlaW50MzJfZGVjcnlwdADPAxJmaGVpbnQzMl9zZXJpYWxpemUA5wIUZmhlaW50MzJfZGVzZXJpYWxpemUA/gMXZmhlaW50MzJfc2FmZV9zZXJpYWxpemUA2AIZZmhlaW50MzJfc2FmZV9kZXNlcmlhbGl6ZQDyAypjb21wcmVzc2VkZmhlaW50MzJfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkA8AQdY29tcHJlc3NlZGZoZWludDMyX2RlY29tcHJlc3MA5gMcY29tcHJlc3NlZGZoZWludDMyX3NlcmlhbGl6ZQDoAh5jb21wcmVzc2VkZmhlaW50MzJfZGVzZXJpYWxpemUA5wMhY29tcHJlc3NlZGZoZWludDMyX3NhZmVfc2VyaWFsaXplANkCI2NvbXByZXNzZWRmaGVpbnQzMl9zYWZlX2Rlc2VyaWFsaXplANUDL2NvbXBhY3RmaGVpbnQzMl9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AJMFGWNvbXBhY3RmaGVpbnQzMl9zZXJpYWxpemUA6QIbY29tcGFjdGZoZWludDMyX2Rlc2VyaWFsaXplAP8DHmNvbXBhY3RmaGVpbnQzMl9zYWZlX3NlcmlhbGl6ZQDaAiBjb21wYWN0ZmhlaW50MzJfc2FmZV9kZXNlcmlhbGl6ZQDzAxpjb21wYWN0ZmhlaW50MzJsaXN0X2V4cGFuZAD5Ah1jb21wYWN0ZmhlaW50MzJsaXN0X3NlcmlhbGl6ZQDpAh9jb21wYWN0ZmhlaW50MzJsaXN0X2Rlc2VyaWFsaXplAIAEIGZoZWludDY0X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5APEEIGZoZWludDY0X2VuY3J5cHRfd2l0aF9wdWJsaWNfa2V5APIEK2ZoZWludDY0X2VuY3J5cHRfd2l0aF9jb21wcmVzc2VkX3B1YmxpY19rZXkA8wQoZmhlaW50NjRfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQD0BBBmaGVpbnQ2NF9kZWNyeXB0ANADEmZoZWludDY0X3NlcmlhbGl6ZQDnAhRmaGVpbnQ2NF9kZXNlcmlhbGl6ZQD+AxdmaGVpbnQ2NF9zYWZlX3NlcmlhbGl6ZQDYAhlmaGVpbnQ2NF9zYWZlX2Rlc2VyaWFsaXplAPIDKmNvbXByZXNzZWRmaGVpbnQ2NF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQD1BB1jb21wcmVzc2VkZmhlaW50NjRfZGVjb21wcmVzcwDmAxxjb21wcmVzc2VkZmhlaW50NjRfc2VyaWFsaXplAOgCHmNvbXByZXNzZWRmaGVpbnQ2NF9kZXNlcmlhbGl6ZQDnAyFjb21wcmVzc2VkZmhlaW50NjRfc2FmZV9zZXJpYWxpemUA2QIjY29tcHJlc3NlZGZoZWludDY0X3NhZmVfZGVzZXJpYWxpemUA1QMvY29tcGFjdGZoZWludDY0X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAlAUZY29tcGFjdGZoZWludDY0X3NlcmlhbGl6ZQDpAhtjb21wYWN0ZmhlaW50NjRfZGVzZXJpYWxpemUA/wMeY29tcGFjdGZoZWludDY0X3NhZmVfc2VyaWFsaXplANoCIGNvbXBhY3RmaGVpbnQ2NF9zYWZlX2Rlc2VyaWFsaXplAPMDGmNvbXBhY3RmaGVpbnQ2NGxpc3RfZXhwYW5kAPoCHWNvbXBhY3RmaGVpbnQ2NGxpc3Rfc2VyaWFsaXplAOkCH2NvbXBhY3RmaGVpbnQ2NGxpc3RfZGVzZXJpYWxpemUAgAQyY29tcGFjdGZoZWJvb2xsaXN0X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAlgMPX193YmdfdGZoZV9mcmVlAPEJLXRmaGVjb25maWdidWlsZGVyX2RlZmF1bHRfd2l0aF9iaWdfZW5jcnlwdGlvbgDrBhVfX3diZ19maGV1aW50MTYwX2ZyZWUAzgcfX193YmdfY29tcHJlc3NlZGZoZXVpbnQxNjBfZnJlZQDmBxVfX3diZ19maGV1aW50MjU2X2ZyZWUAzgcfX193YmdfY29tcHJlc3NlZGZoZXVpbnQyNTZfZnJlZQDmBxVfX3diZ19maGV1aW50MTI4X2ZyZWUAzgcfX193YmdfY29tcHJlc3NlZGZoZXVpbnQxMjhfZnJlZQDmBxRfX3diZ19maGVpbnQxNjBfZnJlZQDOBx5fX3diZ19jb21wcmVzc2VkZmhlaW50MTYwX2ZyZWUA5gcUX193YmdfZmhlaW50MjU2X2ZyZWUAzgceX193YmdfY29tcHJlc3NlZGZoZWludDI1Nl9mcmVlAOYHE19fd2JnX2ZoZXVpbnQ4X2ZyZWUAzgcdX193YmdfY29tcHJlc3NlZGZoZXVpbnQ4X2ZyZWUA5gcUX193YmdfZmhldWludDE2X2ZyZWUAzgceX193YmdfY29tcHJlc3NlZGZoZXVpbnQxNl9mcmVlAOYHFF9fd2JnX2ZoZXVpbnQzMl9mcmVlAM4HHl9fd2JnX2NvbXByZXNzZWRmaGV1aW50MzJfZnJlZQDmBxRfX3diZ19maGV1aW50NjRfZnJlZQDOBx5fX3diZ19jb21wcmVzc2VkZmhldWludDY0X2ZyZWUA5gcSX193YmdfZmhlaW50OF9mcmVlAM4HHF9fd2JnX2NvbXByZXNzZWRmaGVpbnQ4X2ZyZWUA5gcTX193YmdfZmhlaW50MTZfZnJlZQDOBx1fX3diZ19jb21wcmVzc2VkZmhlaW50MTZfZnJlZQDmBxNfX3diZ19maGVpbnQzMl9mcmVlAM4HHV9fd2JnX2NvbXByZXNzZWRmaGVpbnQzMl9mcmVlAOYHE19fd2JnX2ZoZWludDY0X2ZyZWUAzgcdX193YmdfY29tcHJlc3NlZGZoZWludDY0X2ZyZWUA5gcYY29tcGFjdGZoZXVpbnQxNjBfZXhwYW5kAOgDGGNvbXBhY3RmaGV1aW50MjU2X2V4cGFuZADoAxhjb21wYWN0ZmhldWludDEyOF9leHBhbmQA6AMVY29tcGFjdGZoZWludDhfZXhwYW5kAOgDF2NvbXBhY3RmaGVpbnQyNTZfZXhwYW5kAOgDF2NvbXBhY3RmaGVpbnQxNjBfZXhwYW5kAOgDF2NvbXBhY3RmaGV1aW50MTZfZXhwYW5kAOgDF2NvbXBhY3RmaGV1aW50MzJfZXhwYW5kAOgDF2NvbXBhY3RmaGV1aW50NjRfZXhwYW5kAOgDFmNvbXBhY3RmaGV1aW50OF9leHBhbmQA6AMWY29tcGFjdGZoZWludDE2X2V4cGFuZADoAxZjb21wYWN0ZmhlaW50MzJfZXhwYW5kAOgDFmNvbXBhY3RmaGVpbnQ2NF9leHBhbmQA6AMgX193YmdfY29tcGFjdGZoZXVpbnQxMjhsaXN0X2ZyZWUA2AYcX193YmdfY29tcGFjdGZoZXVpbnQxNjBfZnJlZQDYBiBfX3diZ19jb21wYWN0ZmhldWludDE2MGxpc3RfZnJlZQDYBhxfX3diZ19jb21wYWN0ZmhldWludDI1Nl9mcmVlANgGIF9fd2JnX2NvbXBhY3RmaGV1aW50MjU2bGlzdF9mcmVlANgGHF9fd2JnX2NvbXBhY3RmaGV1aW50MTI4X2ZyZWUA2AYZX193YmdfY29tcGFjdGZoZWludDhfZnJlZQDYBhtfX3diZ19jb21wYWN0ZmhlaW50MTYwX2ZyZWUA2AYfX193YmdfY29tcGFjdGZoZWludDE2MGxpc3RfZnJlZQDYBhtfX3diZ19jb21wYWN0ZmhlaW50MjU2X2ZyZWUA2AYfX193YmdfY29tcGFjdGZoZWludDI1Nmxpc3RfZnJlZQDYBh1fX3diZ19jb21wYWN0ZmhlYm9vbGxpc3RfZnJlZQDYBh9fX3diZ19jb21wYWN0ZmhlaW50MTI4bGlzdF9mcmVlANgGHl9fd2JnX2NvbXBhY3RmaGV1aW50OGxpc3RfZnJlZQDYBhtfX3diZ19jb21wYWN0ZmhldWludDE2X2ZyZWUA2AYfX193YmdfY29tcGFjdGZoZXVpbnQxNmxpc3RfZnJlZQDYBhtfX3diZ19jb21wYWN0ZmhldWludDMyX2ZyZWUA2AYfX193YmdfY29tcGFjdGZoZXVpbnQzMmxpc3RfZnJlZQDYBhtfX3diZ19jb21wYWN0ZmhldWludDY0X2ZyZWUA2AYfX193YmdfY29tcGFjdGZoZXVpbnQ2NGxpc3RfZnJlZQDYBhpfX3diZ19jb21wYWN0ZmhldWludDhfZnJlZQDYBh1fX3diZ19jb21wYWN0ZmhlaW50OGxpc3RfZnJlZQDYBhpfX3diZ19jb21wYWN0ZmhlaW50MTZfZnJlZQDYBh5fX3diZ19jb21wYWN0ZmhlaW50MTZsaXN0X2ZyZWUA2AYaX193YmdfY29tcGFjdGZoZWludDMyX2ZyZWUA2AYeX193YmdfY29tcGFjdGZoZWludDMybGlzdF9mcmVlANgGGl9fd2JnX2NvbXBhY3RmaGVpbnQ2NF9mcmVlANgGHl9fd2JnX2NvbXBhY3RmaGVpbnQ2NGxpc3RfZnJlZQDYBhFfX3diaW5kZ2VuX21hbGxvYwDaBhJfX3diaW5kZ2VuX3JlYWxsb2MAmAcfX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcgDACQ9fX3diaW5kZ2VuX2ZyZWUAjggUX193YmluZGdlbl9leG5fc3RvcmUAhwkJuQcBAEEBC98DmwGaAfIJ9AnCCcEJvwe9B78Huge9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SSAlmoN7OaIgIiAgoSABoaEiI6EhAQsgACABOQMAIAAgICABoSAjoTkDECAhRAAAAAAAAODBZiEFIABB/////wcCfyAhmUQAAAAAAADgQWMEQCAhqgwBC0GAgICAeAtBgICAgHggBRsgIUQAAMD////fQWQbQQAgISAhYRs2AggMCAtBgICAgHgLQYCAgIB4IAQbIAFEAADA////30FkG0EAIAEgAWEbtyIgOQMAIAEgIKFEAAAAAAAAcEGiIgFEAAAAAAAA4MFmIQQgCkH/////BwJ/IAGZRAAAAAAAAOBBYwRAIAGqDAELQYCAgIB4C0GAgICAeCAEGyABRAAAwP///99BZBtBACABIAFhGyIEtyIgOQMIIAogASAgoUQAAAAAAABwQaIiATkDECAKQgA3AyggCkIANwMgIApCADcDGCAKQRhqIRIjAEGwBGsiAyQAIANCADcDmAEgA0IANwOQASADQgA3A4gBIANCADcDgAEgA0IANwN4IANCADcDcCADQgA3A2ggA0IANwNgIANCADcDWCADQgA3A1AgA0IANwNIIANCADcDQCADQgA3AzggA0IANwMwIANCADcDKCADQgA3AyAgA0IANwMYIANCADcDECADQgA3AwggA0IANwMAIANCADcDuAIgA0IANwOwAiADQgA3A6gCIANCADcDoAIgA0IANwOYAiADQgA3A5ACIANCADcDiAIgA0IANwOAAiADQgA3A/gBIANCADcD8AEgA0IANwPoASADQgA3A+ABIANCADcD2AEgA0IANwPQASADQgA3A8gBIANCADcDwAEgA0IANwO4ASADQgA3A7ABIANCADcDqAEgA0IANwOgASADQgA3A9gDIANCADcD0AMgA0IANwPIAyADQgA3A8ADIANCADcDuAMgA0IANwOwAyADQgA3A6gDIANCADcDoAMgA0IANwOYAyADQgA3A5ADIANCADcDiAMgA0IANwOAAyADQgA3A/gCIANCADcD8AIgA0IANwPoAiADQgA3A+ACIANCADcD2AIgA0IANwPQAiADQgA3A8gCIANCADcDwAIgA0HgA2pBAEHQABDkCRpBvMPDACgCACILQQNBAkEBIAQbIAFEAAAAAAAAAABiGyICQQFrIgxqIQkgBUEUdkGWCGsiEEEDa0EYbSIFQQAgBUEAShsiDiAMayEEIA5BAnQg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AAAAAAAAAAAhAQwBCyACQX5xIQ5EAAAAAAAAAAAhAUEAIQJBACEEA0AgASACQdDFwwBqKwMAIAIgB2oiECsDAKKgIAJB2MXDAGorAwAgEEEIaisDAKKgIQEgAkEQaiECIA4gBEECaiIERw0ACwsgA0GgAWogBkEDdGogDAR8IAEgBEEDdEHQxcMAaisDACADQcACaiAEIAlqQQN0aisDAKKgBSABCzkDACAHQQhrIQcgCUEBayECIAkNAAsCQCAIQQNxIglFBEBEAAAAAAAAAAAhASAFIQQMAQsgA0GgAWogBUEDdGohAkQAAAAAAAAAACEBIAUhBANAIARBAWshBCABIAIrAwCgIQEgAkEIayECIAlBAWsiCQ0ACwsgBUEDTwRAIARBA3QgA2pBiAFqIQIDQCABIAJBGGorAwCgIAJBEGorAwCgIAJBCGorAwCgIAIrAwCgIQEgAkEgayECIARBA0cgBEEEayEEDQALCyASIAGaIAEgDRs5AwAgAysDoAEgAaEhAQJAIAVFDQBBASECA0AgASADQaABaiACQQN0aisDAKAhASACIAVPDQEgAiACIAVJaiICIAVNDQALCyASIAGaIAEgDRs5AwggA0GwBGokACAPQQdxIQUgJEIAWQRAIAAgBTYCCCAAIAorAyA5AxAgACAKKwMYOQMADAcLIABBACAFazYCCCAAIAorAyCaOQMQIAAgCisDGJo5AwAMBgsgBUG9+9eABE8EQCAFQfvD5IAERgRAAkAgASABRIPIyW0wX+Q/okQAAAAAAAA4Q6BEAAAAAAAAOMOgIiFEAABAVPsh+b+ioCIBICFEMWNiGmG00D2iIiOhIiC9QoCAgICAgID4/wCDQv////////+HP1YNACABICFEAABgGmG00D2iIiChIiIgIURzcAMuihmjO6IgASAioSAgoaEiI6EiIL1CgICAgICAgID/AINC//////////88VgRAICIhAQwBCyAiICFEAAAALooZozuiIiChIgEgIUTBSSAlmoN7OaIgIiABoSAgoaEiI6EhIAsgACAgOQMAIAAgASAgoSAjoTkDECAhRAAAAAAAAODBZiEFIABB/////wcCfyAhmUQAAAAAAADgQWMEQCAhqgwBC0GAgICAeAtBgICAgHggBRsgIUQAAMD////fQWQbQQAgISAhYRs2AggMBwsgJEIA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QAJAAkAgAS0AsAIiBUUEQCAEQQFrDgIDBQELAkACQAJAIARBAWsOAgECAAsgA0FAayABQQhqQYABEOcJGiADQThqIANB2ABqKQMANwMAIANBMGogA0HQAGopAwA3AwAgAyADKQNINwMoDAMLIAFBCGoMBAsgAUEIagwFCyADQUBrIAFBCGpBgAEQ5wkaIANBOGogA0HwAGopAwA3AwAgA0EwaiADQegAaikDADcDACADIANB4ABqKQMANwMoCyADIANBKGo2AkwgAyADNgJIIAMgA0EIajYCRCADIAE2AkAgA0FAaxCLAiAAIAMpAwg3AwAgAEEIaiADQRBqKQMANwMAIABBEGogA0EYaikDADcDACAAQRhqIANBIGopAwA3AwAgAUH4AGohBCABKAJ0DAQLIAFBIGoLIgRBEGopAwA3AwAgA0EwaiAEQQhqKQMANwMAIAMgBCkDADcDKCADIANBKGo2AkwgAyADNgJIIAMgA0EIajYCRCADIAE2AkAgA0FAaxCLAiAAIAMpAwg3AwAgAEEIaiADQRBqKQMANwMAIABBEGogA0EYaikDADcDACAAQRhqIANBIGopAwA3AwAgAUGQAWohBCABQYwBaigCAAwCCyABQSBqCyIEQRBqKQMANwMAIANBMGogBEEIaikDADcDACADIAQpAwA3AyggAyADQShqNgJMIAMgAzYCSCADIANBCGo2AkQgAyABNgJAIANBQGsQiwIgACADKQMINwMAIABBCGogA0EQaikDADcDACAAQRBqIANBGGopAwA3AwAgAEEYaiADQSBqKQMANwMAIAFB8ABqIQQgASgCbAshASAAIAU6ADAgACABNgIoIABBATYCJCAAIAQoAgA2AiwgACABQQFrNgIgIANBwAFqJAAL5AgBAX8jAEEwayICJAACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAALQAAQQFrDhEBAgMEBQYHCAkKCwwNDg8QEQALIAIgAC0AAToACCACQSRqQgE3AgAgAkECNgIcIAJBqOfCADYCGCACQakDNgIUIAIgAkEQajYCICACIAJBCGo2AhAgASACQRhqEPgIDBELIAIgACkDCDcDCCACQSRqQgE3AgAgAkECNgIcIAJBxOfCADYCGCACQd4BNgIUIAIgAkEQajYCICACIAJBCGo2AhAgASACQRhqEPgIDBALIAIgACkDCDcDCCACQSRqQgE3AgAgAkECNgIcIAJBxOfCADYCGCACQaoDNgIUIAIgAkEQajYCICACIAJBCGo2AhAgASACQRhqEPgIDA8LIAIgACsDCDkDCCACQSRqQgE3AgAgAkECNgIcIAJB5OfCADYCGCACQasDNgIUIAIgAkEQajYCICACIAJBCGo2AhAgASACQRhqEPgIDA4LIAIgACgCBDYCCCACQSRqQgE3AgAgAkECNgIcIAJBgOjCADYCGCACQawDNgIUIAIgAkEQajYCICACIAJBCGo2AhAgASACQRhqEPgIDA0LIAIgACkCBDcCCCACQSRqQgE3AgAgAkEBNgIcIAJBmOjCADYCGCACQeUBNgIUIAIgAkEQajYCICACIAJBCGo2AhAgASACQRhqEPgIDAwLIAJBJGpCADcCACACQQE2AhwgAkGg6MIANgIYIAJBlOfCADYCICABIAJBGGoQ+AgMCwsgAkEkakIANwIAIAJBATYCHCACQbTowgA2AhggAkGU58IANgIgIAEgAkEYahD4CAwKCyACQSRqQgA3AgAgAkEBNgIcIAJByOjCADYCGCACQZTnwgA2AiAgASACQRhqEPgIDAkLIAJBJGpCADcCACACQQE2AhwgAkHg6MIANgIYIAJBlOfCADYCICABIAJBGGoQ+AgMCAsgAkEkakIANwIAIAJBATYCHCACQfDowgA2AhggAkGU58IANgIgIAEgAkEYahD4CAwHCyACQSRqQgA3AgAgAkEBNgIcIAJB/OjCADYCGCACQZTnwgA2AiAgASACQRhqEPgIDAYLIAJBJGpCADcCACACQQE2AhwgAkGI6cIANgIYIAJBlOfCADYCICABIAJBGGoQ+AgMBQsgAkEkakIANwIAIAJBATYCHCACQZzpwgA2AhggAkGU58IANgIgIAEgAkEYahD4CAwECyACQSRqQgA3AgAgAkEBNgIcIAJBtOnCADYCGCACQZTnwgA2AiAgASACQRhqEPgIDAMLIAJBJGpCADcCACACQQE2AhwgAkHM6cIANgIYIAJBlOfCADYCICABIAJBGGoQ+AgMAgsgAkEkakIANwIAIAJBATYCHCACQeTpwgA2AhggAkGU58IANgIgIAEgAkEYahD4CAwBCyABIAAoAgQgAEEIaigCABCFCAsgAkEw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IAFBGGopAwA3AwAgAkHIAGogAUEQaikDADcDACACIAEpAwg3A0AgAkFAayADQSAQ5glFDQELIAJBOGogA0EYaikDADcDACACQTBqIANBEGopAwA3AwAgAkEoaiADQQhqKQMANwMAIAIgAykDADcDICACQdgAaiABQeAAaikDADcDACACQdAAaiABQdgAaikDADcDACACQcgAaiABQdAAaikDADcDACACIAEpA0g3A0ADQCACQSBqIARqIgUgBSkDACACQUBrIARqKQMAgzcDACAEQQhqIgRBIEcNAAsgAkEYaiIIIAJBOGoiCSkDADcDACACQRBqIgogAkEwaiILKQMANwMAIAJBCGoiDCACQShqIg0pAwA3AwAgAiACKQMgNwMAIAMgASgCiAFBARDkASABKAKMASIDIAEoAogBIgZJBEAgAUHoAGohBQNAIAJB2ABqIgQgBUEYaikDADcDACACQdAAaiIHIAVBEGopAwA3AwAgAkHIAGoiDiAFQQhqKQMANwMAIAIgBSkDADcDQCACQUBrIAMQygIgCSAEKQMANwMAIAsgBykDADcDACANIA4pAwA3AwAgAiACKQNANwMgQQAhBANAIAIgBGoiByAHKQMAIAJBIGogBGopAwCENwMAIARBCGoiBEEgRw0ACyADQQFqIgMgBkcNAAsgASgCiAEhBiABKAKMASEDCyAAIAIpAwA3AwggAEIBNwMAIABBEGogDCkDADcDACAAQRhqIAopAwA3AwAgAEEgaiAIKQMANwMAIAEgAyAGayIAQQAgACADTRs2AowBDAELIABCADcDAAsgAkHgAGokAAu6BQENfyMAQeAAayICJAACQCABKAKMAUUEQCAAQgA3AwAMAQsgAUEoaiEDAkAgASkDAFBFBEAgAkHYAGogAUEgaikDADcDACACQdAAaiABQRhqKQMANwMAIAJByABqIAFBEGopAwA3AwAgAiABKQMINwNAIAJBQGsgA0EgEOYJRQ0BCyACQThqIANBGGopAwA3AwAgAkEwaiADQRBqKQMANwMAIAJBKGogA0EIaikDADcDACACIAMpAwA3AyAgAkHYAGogAUHgAGopAwA3AwAgAkHQAGogAUHYAGopAwA3AwAgAkHIAGogAUHQAGopAwA3AwAgAiABKQNINwNAA0AgAkEgaiAEaiIFIAUpAwAgAkFAayAE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RiADQRBqIARGcQ0CIAQgAREBACADKAJEQQNHDQEMBAsLIAMoAkRBA0YNAiACIAgQjwEMAgsgA0HwAGoiASADQRBqQcAAEOcJGiAAQQxqIAFBARCbBCAAQQhqIANB6ABqKAIANgIADAILIAIgA0FAayADKAJUIANB2ABqKAIAEPoIAAsgA0HwAGogA0EQakHAABDnCRogA0G4AWogA0GYAWopAgA3AwAgAyADKQKQATcDsAEgAEEMaiADQbABahCLBiAAQQhqIAUoAgA2AgALIAAgAykDYDcCACADQcABaiQAC50FAQd/IwBBwAFrIgMkACADQcwAakEAOgAAIANByABqIAIoAogBNgIAIANBxABqIghBADYCACADQRhqIAFBCGopAgA3AwAgA0EgaiABQRBqKQIANwMAIANBKGogAUEYaikCADcDACADQQA2AjAgAyACQYwBajYCQCADIAEpAgA3AxAgAkGQAWoiBxD0ByEEIAdBAiADQRBqEM8FIAIoAowBIgVB+AFqENsGIgZB/wFxIglFIARBAXMgBkEIdkH/AXEgCUZyRXJFBEAgBUHsAWpBARDIBgsgA0GIAWogAUE4aigCADYCACADQYABaiABQTBqKQIANwMAIANB+ABqIAFBKGopAgA3AwAgA0EBOgCMASADIAEpAiA3A3AgA0HQAGogA0HwAGoQlQQCQAJAIAMoAlBFBEAgA0HoAGoiBSADQdwAaigCADYCACADIAMpAlQ3A2AgAygCREEDRg0BIAJBoAFqIQYCQANAAkAgA0EIaiAHEKQBAn8gAygCCCIBBEAgAygCDAwBCwNAIANB8ABqIAYQjwIgAygCcCIBQQJGDQALIAFBAWsNASADKAJ0IQEgAygCeAshBCABQQJGIANBEGogBEZxDQIgBCABEQEAIAMoAkRBA0cNAQwECwsgAygCREEDRg0CIAIgCBCPAQwCCyADQfAAaiIBIANBEGpBwAAQ5wkaIABBDGogAUEBEJwEIABBCGogA0HoAGooAgA2AgAMAgsgAiADQUBrIAMoAlQgA0HYAGooAgAQ+ggACyADQfAAaiADQRBqQcAAEOcJGiADQbgBaiADQZgBaikCADcDACADIAMpApABNwOwASAAQQxqIANBsAFqEIsGIABBCGogBSgCADYCAAsgACADKQNgNwIAIANBwAFqJAALnQUBB38jAEHAAWsiAyQAIANBzABqQQA6AAAgA0HIAGogAigCiAE2AgAgA0HEAGoiCEEANgIAIANBGGogAUEIaikCADcDACADQSBqIAFBEGopAgA3AwAgA0EoaiABQRhqKQIANwMAIANBADYCMCADIAJBjAFqNgJAIAMgASkCADcDECACQZABaiIHEPQHIQQgB0EBIANBEGoQzwUgAigCjAEiBUH4AWoQ2wYiBkH/AXEiCUUgBEEBcyAGQQh2Qf8BcSAJRnJFckUEQCAFQewBakEBEMgGCyADQYgBaiABQThqKAIANgIAIANBgAFqIAFBMGopAgA3AwAgA0H4AGogAUEoaikCADcDACADQQA6AIwBIAMgASkCIDcDcCADQdAAaiADQfAAahCUBAJAAkAgAygCUEUEQCADQegAaiIFIANB3ABqKAIANgIAIAMgAykCVDcDYCADKAJEQQNGDQEgAkGgAWohBgJAA0ACQCADQQhqIAcQpAECfyADKAIIIgEEQCADKAIMDAELA0AgA0HwAGogBhCPAiADKAJwIgFBAkYNAAsgAUEBaw0BIAMoAnQhASADKAJ4CyEEIAFBAUYgA0EQaiAERnENAiAEIAERAQAgAygCREEDRw0BDAQLCyADKAJEQQNGDQIgAiAIEI8BDAILIANB8ABqIgEgA0EQakHAABDnCRogAEEMaiABQQAQmwQgAEEIaiADQegAaigCADYCAAwCCyACIANBQGsgAygCVCADQdgAaigCABD6CAALIANB8ABqIANBEGpBwAAQ5wkaIANBuAFqIANBmAFqKQIANwMAIAMgAykCkAE3A7ABIABBDGogA0GwAWoQiwYgAEEIaiAFKAIANgIACyAAIAMpA2A3AgAgA0HAAWokAAudBQEHfyMAQcABayIDJAAgA0HMAGpBADoAACADQcgAaiACKAKIATYCACADQcQAaiIIQQA2AgAgA0EYaiABQQhqKQIANwMAIANBIGogAUEQaikCADcDACADQShqIAFBGGopAgA3AwAgA0EANgIwIAMgAkGMAWo2AkAgAyABKQIANwMQIAJBkAFqIgcQ9AchBCAHQQIgA0EQahDPBSACKAKMASIFQfgBahDbBiIGQf8BcSIJRSAEQQFzIAZBCHZB/wFxIAlGckVyRQRAIAVB7AFqQQEQyAYLIANBiAFqIAFBOGooAgA2AgAgA0GAAWogAUEwaikCADcDACADQfgAaiABQShqKQIANwMAIANBADoAjAEgAyABKQIgNwNwIANB0ABqIANB8ABqEJUEAkACQCADKAJQRQRAIANB6ABqIgUgA0HcAGooAgA2AgAgAyADKQJUNwNgIAMoAkRBA0YNASACQaABaiEGAkADQAJAIANBCGogBxCkAQJ/IAMoAggiAQRAIAMoAgwMAQsDQCADQfAAaiAGEI8CIAMoAnAiAUECRg0ACyABQQFrDQEgAygCdCEBIAMoAngLIQQgAUECRiADQRBqIARGcQ0CIAQgAREBACADKAJEQQNHDQEMBAsLIAMoAkRBA0YNAiACIAgQjwEMAgsgA0HwAGoiASADQRBqQcAAEOcJGiAAQQxqIAFBABCcBCAAQQhqIANB6ABqKAIANgIADAILIAIgA0FAayADKAJUIANB2ABqKAIAEPoIAAsgA0HwAGogA0EQakHAABDnCRogA0G4AWogA0GYAWopAgA3AwAgAyADKQKQATcDsAEgAEEMaiADQbABahCLBiAAQQhqIAUoAgA2AgALIAAgAykDYDcCACADQcABaiQAC8AFAgV/AX4jAEEgayIBJAAgASAAEOAFIAEoAgBFBEAgAUEIai0AACEFIAEoAgQiBEE0ai0AAEUEQCAEQQE6ADQgBEEMaigCACICBEAgBEEIaigCACEAIAJBDGwhAgNAIAAoAgBBDGoiAyADKAIAIgNBAiADGzYCACAAQQxqIQAgAkEMayICDQALCyAEQRhqIgIoAgAhACACQQA2AgAgAUEANgIQIAEgBEEQajYCCCABIAA2AgwgASAEQRRqKAIAIgI2AgAgASACIABBDGxqNgIEAkAgAEUNAANAIAEgAkEMajYCACACKAIAIgBFDQEgAEEMaiIDIAMoAgAiAyACKQIEIganIAMbNgIAIAEgBjcCGCABIAA2AhQgACAAKAIAIgBBAWs2AgAgAEEBRgRAIAFBFGoQhwYLIAEoAgAiAiABKAIERw0ACwsgARD0ASAEQSRqKAIAIgIEQCAEQSBqKAIAIQAgAkEMbCECA0AgACgCAEEMaiIDIAMoAgAiA0ECIAMbNgIAIABBDGohACACQQxrIgINAAsLIARBMGoiAigCACEAIAJBADYCACABQQA2AhAgASAEQShqNgIIIAEgADYCDCABIARBLGooAgAiAjYCACABIAIgAEEMbGo2AgQCQCAARQ0AA0AgASACQQxqNgIAIAIoAgAiAEUNASAAQQxqIgMgAygCACIDIAIpAgQiBqcgAxs2AgAgASAGNwIYIAEgADYCFCAAIAAoAgAiAEEBazYCACAAQQFGBEAgAUEUahCHBgsgASgCACICIAEoAgRHDQALCyABEPQBCwJAIAUNAEHszcMAKAIAQf////8HcUUNABDtCQ0AIARBAToAAQsgBEEAOgAAIAFBIGokAA8LIAEgASgCBDYCFCABIAFBCGotAAA6ABhBxM7AAEErIAFBFGpB8M7AAEHUz8AAEPYEAAv/BQEFfyAAQQhrIgEgAEEEaygCACIDQXhxIgBqIQICQAJAAkACQCADQQFxDQAgA0EDcUUNASABKAIAIgMgAGohACABIANrIgFBoNHDACgCAEYEQCACKAIEQQNxQQNHDQFBmNHDACAANgIAIAIgAigCBEF+cTYCBCABIABBAXI2AgQgAiAANgIADwsgASADEKgBCwJAAkAgAigCBCIDQQJxRQRAIAJBpNHDACgCAEYNAiACQaDRwwAoAgBGDQUgAiADQXhxIgIQqAEgASAAIAJqIgBBAXI2AgQgACABaiAANgIAIAFBoNHDACgCAEcNAUGY0cMAIAA2AgAPCyACIANBfnE2AgQgASAAQQFyNgIEIAAgAWogADYCAAsgAEGAAkkNAiABIAAQ2gFBACEBQbjRwwBBuNHDACgCAEEBayIANgIAIAANAUGAz8MAKAIAIgAEQANAIAFBAWohASAAKAIIIgANAAsLQbjRwwBB/x8gASABQf8fTRs2AgAPC0Gk0cMAIAE2AgBBnNHDAEGc0cMAKAIAIABqIgA2AgAgASAAQQFyNgIEQaDRwwAoAgAgAUYEQEGY0cMAQQA2AgBBoNHDAEEANgIACyAAQbDRwwAoAgAiA00NAEGk0cMAKAIAIgJFDQBBACEBAkBBnNHDACgCACIEQSlJDQBB+M7DACEAA0AgAiAAKAIAIgVPBEAgBSAAKAIEaiACSw0CCyAAKAIIIgANAAsLQYDPwwAoAgAiAARAA0AgAUEBaiEBIAAoAggiAA0ACwtBuNHDAEH/HyABIAFB/x9NGzYCACADIARPDQBBsNHDAEF/NgIACw8LIABBeHFBiM/DAGohAgJ/QZDRwwAoAgAiA0EBIABBA3Z0IgBxRQRAQZDRwwAgACADcjYCACACDAELIAIoAggLIQAgAiABNgIIIAAgATYCDCABIAI2AgwgASAANgIIDwtBoNHDACABNgIAQZjRwwBBmNHDACgCACAAaiIANgIAIAEgAEEBcjYCBCAAIAFqIAA2AgALlgUBC38jAEEwayIDJAAgA0EkaiABNgIAIANBAzoALCADQSA2AhwgA0EANgIoIAMgADYCICADQQA2AhQgA0EANgIMAn8CQAJAAkAgAigCECILRQRAIAJBDGooAgAiAEUNASACKAIIIgEgAEEDdGohBCAAQQFrQf////8BcUEBaiEIIAIoAgAhAANAIABBBGooAgAiBgRAIAMoAiAgACgCACAGIAMoAiQoAgwRBgANBAsgASgCACADQQxqIAFBBGooAgARAwANAyAFQQFqIQUgAEEIaiEAIAFBCGoiASAERw0ACwwBCyACQRRqKAIAIgBFDQAgAEEFdCEMIABBAWtB////P3FBAWohCCACKAIIIQYgAigCACEAA0AgAEEEaigCACIBBEAgAygCICAAKAIAIAEgAygCJCgCDBEGAA0DCyADIAUgC2oiAUEQaigCADYCHCADIAFBHGotAAA6ACwgAyABQRhqKAIANgIoIAFBDGooAgAhB0EAIQpBACEEAkACQAJAIAFBCGooAgBBAWsOAgACAQsgB0EDdCAGaiINKAIEQdEDRw0BIA0oAgAoAgAhBwtBASEECyADIAc2AhAgAyAENgIMIAFBBGooAgAhBAJAAkACQCABKAIAQQFrDgIAAgELIARBA3QgBmoiBygCBEHRA0cNASAHKAIAKAIAIQQLQQEhCgsgAyAENgIYIAMgCjYCFCAGIAFBFGooAgBBA3RqIgEoAgAgA0EMaiABQQRqKAIAEQMADQIgCUEBaiEJIABBCGohACAMIAVBIGoiBUcNAAsLIAggAigCBE8NASADKAIgIAIoAgAgCEEDdGoiACgCACAAKAIEIAMoAiQoAgwRBgBFDQELQQEMAQtBAAsgA0EwaiQAC6oFAgl/An4jAEFAaiICJAAgACgCBCIEQYABaiIFIAAoAgAiByABEPoBAkAgBCgCxAEgBCgCAGogBCgCQCAEKALIAUF/c3FGBEAgBCgCyAEgBCgCQHFFDQELIAEoAgBBDGoiAyADKAIAIgNBASADGzYCAAsgASgCACEBIAAoAggiACkDACELIAAoAggiAEGAlOvcA0YhBgJAAkADQAJAAkACQAJAIAEoAgwiAwRAIANBAWtBAkkNAQwHCyAGDQEQ+QYgAikDGCIMIAtUIAIoAiAiAyAASSALIAxRcXINAiABIAEoAgwiAEEBIAAbNgIMIABFIABBAWtBAklyDQAgAA0GQfzNwABBKEH40sAAEMwGAAsgAkE0aiAFEOAFIAIoAjQNAiACKAI4IgNBBGohCCACQTxqLQAAIQkgA0EMaigCACIGQQxsIQAgA0EIaigCACEBQX8hBQJAAkADQCAARQ0BIABBDGshACAFQQFqIQUgASgCBCEKIAFBDGohASAHIApHDQALIAJBNGogCCAFQYDUwAAQ2QUgAygCDCEGDAELIAJBADYCNAtBACEAIARBnAFqIAYEfyAABSADQRhqKAIARQs6AAACQCAJDQBB7M3DACgCAEH/////B3FFDQAQ7QkNACADQQE6AAELIANBADoAACACKAI0RQ0EIAJBMGogAkE8aigCADYCACACIAIpAjQiCzcDKCALpyIAIAAoAgAiAEEBazYCACAAQQFHDQUgAkEoahCHBgwFCxDRAwwCCyACQQhqIAsgACAMIAMQgwMgAikDCCACKAIQENIDDAELCyACIAIoAjg2AiggAiACQTxqLQAAOgAsQcTOwABBKyACQShqQZDUwABBsNTAABD2BAALQfDMwABBK0GI08AAEMwGAAsgAkFAayQAC6MFAgl/An4jAEFAaiICJAAgACgCBCIEQaABaiIFIAAoAgAiByABEPoBAkAgBCgCACAEKAJAIAQoAsgBQX9zcUYEQCAEKALIASAEKAJAcUUNAQsgASgCAEEMaiIDIAMoAgAiA0EBIAMbNgIACyABKAIAIQEgACgCCCIAKQMAIQsgACgCCCIAQYCU69wDRiEGAkACQANAAkACQAJAAkAgASgCDCIDBEAgA0EBa0ECSQ0BDAcLIAYNARD5BiACKQMYIgwgC1QgAigCICIDIABJIAsgDFFxcg0CIAEgASgCDCIAQQEgABs2AgwgAEUgAEEBa0ECSXINACAADQZB/M3AAEEoQdjSwAAQzAYACyACQTRqIAUQ4AUgAigCNA0CIAIoAjgiA0EEaiEIIAJBPGotAAAhCSADQQxqKAIAIgZBDGwhACADQQhqKAIAIQFBfyEFAkAC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QGsLIgIpAwAgAkEIaikDABDdBgJ/IANByABqIgICfwJAIAICfwJAAkACQCABLQCwAiIGRQRAIApBAWsOAgMFAQsCQAJAAkAgCkEBaw4CAQIACyADQdAAaiABQQhqQYABEOcJGiADQcgAaiADQegAaikDADcDACADQUBrIANB4ABqKQMANwMAIAMgAykDWDcDOAwDCyABQQhqDAQLIAFBCGoMBQsgA0HQAGogAUEIakGAARDnCRogA0HIAGogA0GAAWopAwA3AwAgA0FAayADQfgAaikDADcDACADIANB8ABqKQMANwM4CyADIANBOGo2AlwgAyADQQRqNgJYIAMgA0EQaiICNgJUIAMgATYCUCADQdAAahCMAiABKAJ0IQUgACACQSgQ5wkaIAFB+ABqDAQLIAFBIGoLIgJBEGopAwA3AwAgA0FAayACQQhqKQMANwMAIAMgAikDADcDOCADIANBOGo2AlwgAyADQQRqNgJYIAMgA0EQaiICNgJUIAMgATYCUCADQdAAahCMAiABQYwBaigCACEFIAAgAkEoEOcJGiABQZABagwCCyABQSBqCyICQRBqKQMANwMAIANBQGsgAkEIaikDADcDACADIAIpAwA3AzggAyADQThqNgJcIAMgA0EEajYCWCADIANBEGoiAjYCVCADIAE2AlAgA0HQAGoQjAIgASgCbCEFIAAgAkEoEOcJGiABQfAAagshASAAIAY6ADggACAFNgIsIABBATYCNCAAIAEoAgA2AjAgACAFQQFrNgIoIAMoAgQEQCADKAIIEGsLIANB0AFqJAAMAQtB4I/AAEEZQeyYwAAQzAYACyAAIAQ2AkAgDkHwAGokAAwFCyAGQQhqKQMAIRQgBikDACEVIAhBCGoiBiATIBICfwJAAkACQEICIAEpAwBCAn0iEiASQgJaG6ciDUEBaw4CAQIACyABQfQAagwCCyABQYwBagwBCyABQewAagsoAgAiBSAEEJ8FIAhB2AFqIBUgFCAFIAQQnwUgCEHwAGogBkHoABDnCRpBgc3DAC0AABpB0AFBCBCECSIHRQ0BIAcgCEHwAGpB0AEQ5wkhBSADIAJBIGoiAkYEQEG868EAIQoMBAsgAUH0AGohCSABQYwBaiELIAFB7ABqIQxBvOvBACEKA0AgAkEIaikDACESIAkhBgJAAkACQCANQQFrDgIAAQILIAshBgwBCyAMIQYLIAhB8ABqIAIpAwAgEiAGKAIAIAQQnwVBgc3DAC0AABpB8ABBCBCECSIHRQ0DIAcgCEHwAGpB6AAQ5wkiBiAKNgJsIAYgBTYCaEHY68EAIQogBiEFIAMgAkEQaiICRw0ACwwDCyAIQfwAakIANwIAIAhBATYCdCAIQeTowQA2AnAgCEGw0sEANgJ4IAhB8ABqQZTpwQAQ/AYAC0EIQdABEN8JAAtBCEHwABDfCQALIAAgASAHIAoQVCAAIAQ2AkALIAhBwAJqJAAL0xACDX8EfiMAQcACayIIJAACQAJAAkACQCACIANHBEAgAkEIaikDACESIAIpAwAhEyADIAJBEGoiBkYEQCMAQfAAayIOJAAgDkEIaiICIBMgEgJ/AkACQAJAQgIgASkDAEICfSISIBJCAlobp0EBaw4CAQIACyABQfQAagwCCyABQYwBagwBCyABQewAagsoAgAgBBCfBSMAQdABayIDJAACfwJAAkACQEICIAEpAwBCAn0iEiASQgJaG6ciCkEBaw4CAQIACyABQfQAaiEGIAFB+ABqDAILIAFBjAFqIQYgAUGQAWoMAQsgAUHsAGohBiABQfAAagsgBjUCACESNQIAIRMgA0HQAGoiBiACQegAEOcJGiADIBM3A8ABIAMgEjcDuAEgA0EEaiELIwBBsAFrIgIkAAJAAkACQCAGQegAagJ+AkACQCAGKAJgIgVFDQAgBiAFQQFrNgJgIAYpAxBCAlIEQCACQRBqIAZBEGoiBRDfASACKQMQpw0CIAVCAjcDAAsgBikDAFANACAGKQMIDAILIAtBADYCCCALQoCAgICAATcCAAwCCyACKQMYCxC9BiETIAJBCGpBBCAGKAJgIgkEfyAGKQMAIRICQCAGKQMQQgJRBEBBf0EAIBJCAFIbIQUMAQsgElAEQCAGKAJYIgVFDQQgBSAGKAJcTSEFDAELQX8hBSAGKAJYRQ0DCyAFIAkgBSAJSRsFQQALQQFqIgVBfyAFGyIFIAVBBE0bQQAQzgUgAigCCCEFIAIoAgwiCSATNwMAIAJBNGoiEEEBNgIAIAIgCTYCMCACIAU2AiwgAkE4aiIFIAZB+AAQ5wkaIAJBLGohCSMAQSBrIgwkAAJAIAUoAmAiBkUNACAFQegAaiERIAVBEGohDwNAIAUgBkEBazYCYCARAn4CQCAFKQMQQgJSBEAgDEEIaiAPEN8BIAwpAwinDQEgD0ICNwMACyAFKQMAUA0DIAUpAwgMAQsgDCkDEAsQvQYhEyAFKAJgIQYgCSgCCCINIAkoAgBGBEAgCSANIAYEfyAFKQMAIRICQCAFKQMQQgJRBEBBf0EAIBJCAFIbIQcMAQsgElAEQCAFKAJYIgdFDQcgByAFKAJcTSEHDAELQX8hByAFKAJYRQ0GCyAHIAYgBiAHSxsFQQALQQFqIgdBfyAHGxCuBgsgCSgCBCANQQN0aiATNwMAIAkgDUEBajYCCCAGDQALCyAMQSBqJAAgC0EIaiAQKAIANgIAIAsgAikCLDcCAAsgAkGwAWokACADQRBqIAFBoAJqKAIAQQFqIAMoAgwCfwJAAkACQCAKQQFrDgIBAgALIAFByABqDAILIAFB0ABqDAELIAFBQGsLIgIpAwAgAkEIaikDABDdBgJ/IANByABqIgICfwJAIAICfwJAAkACQCABLQCwAiIGRQRAIApBAWsOAgMFAQsCQAJAAkAgCkEBaw4CAQIACyADQdAAaiABQQhqQYABEOcJGiADQcgAaiADQegAaikDADcDACADQUBrIANB4ABqKQMANwMAIAMgAykDWDcDOAwDCyABQQhqDAQLIAFBCGoMBQsgA0HQAGogAUEIakGAARDnCRogA0HIAGogA0GAAWopAwA3AwAgA0FAayADQfgAaikDADcDACADIANB8ABqKQMANwM4CyADIANBOGo2AlwgAyADQQRqNgJYIAMgA0EQaiICNgJUIAMgATYCUCADQdAAahCMAiABKAJ0IQUgACACQSgQ5wkaIAFB+ABqDAQLIAFBIGoLIgJBEGopAwA3AwAgA0FAayACQQhqKQMANwMAIAMgAikDADcDOCADIANBOGo2AlwgAyADQQRqNgJYIAMgA0EQaiICNgJUIAMgATYCUCADQdAAahCMAiABQYwBaigCACEFIAAgAkEoEOcJGiABQZABagwCCyABQSBqCyICQRBqKQMANwMAIANBQGsgAkEIaikDADcDACADIAIpAwA3AzggAyADQThqNgJcIAMgA0EEajYCWCADIANBEGoiAjYCVCADIAE2AlAgA0HQAGoQjAIgASgCbCEFIAAgAkEoEOcJGiABQfAAagshASAAIAY6ADggACAFNgIsIABBATYCNCAA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AEEcaigCADYCACABIAM2AhAgASAAKQIENwIUIwBBIGsiBCQAIAFBEGoiAigCECEGIAIoAgwhByACKAIIIQUgAigCACEIIAIoAgQhCSAEQRhqIAJBHGooAgA2AgAgBCACKQIUNwMQIAQgCCgCACAJKAIAa0EBIAUoAgAgBSgCBCAHIAYgBEEQahB3IAQpAwAhCiABQQxqIAQoAgg2AgAgASAKNwIEIAFBADYCACAEQSBqJAACfyABKAIARQRAIAFBDGooAgAhA0EBIQQgASgCBCECIAFBCGooAgAMAQtBAiEEIAEoAgQhAiABQQhqKAIACyEFIABBIGoQzAcgAEEsaiADNgIAIABBKGogBTYCACAAQSRqIAI2AgAgACAENgIgIAAoAjAhAwJAIABBPGotAAAiBEUEQCADKAIAIQMMAQsgAygCACIDIAMoAgAiAkEBajYCACACQQBIDQIgASADNgIQCyAAQTRqIgIoAgAgAkEDNgIAQQJGBEAgA0FAayAAQThqKAIAEIoJCwJAIARFDQAgASgCECIAIAAoAgAiAEEBazYCACAAQQFHDQAgAUEQahCXAgsgAUEwaiQADwtBlIrAAEErQeyLwAAQzAYACwALmQQCCX8BfiMAQTBrIgEkACAAKAIAIQMgAEEANgIAAkAgAwRAIAFBHGogAEEMaikCADcCACABQSRqIABBFGopAgA3AgAgAUEsaiAAQRxqKAIANgIAIAEgAzYCECABIAApAgQ3AhQjAEEgayIEJAAgAUEQaiICKAIQIQYgAigCDCEHIAIoAgghBSACKAIAIQggAigCBCEJIARBGGogAkEcaigCADYCACAEIAIpAhQ3AxAgBCAIKAIAIAkoAgBrQQEgBSgCACAFKAIEIAcgBiAEQRBqEHYgBCkDACEKIAFBDGogBCgCCDYCACABIAo3AgQgAUEANgIAIARBIGokAAJ/IAEoAgBFBEAgAUEMaigCACEDQQEhBCABKAIEIQIgAUEIaigCAAwBC0ECIQQgASgCBCECIAFBCGooAgALIQUgAEEgahDMByAAQSxqIAM2AgAgAEEoaiAFNgIAIABBJGogAjYCACAAIAQ2AiAgACgCMCEDAkAgAEE8ai0AACIERQRAIAMoAgAhAwwBCyADKAIAIgMgAygCACICQQFqNgIAIAJBAEgNAiABIAM2AhALIABBNGoiAigCACACQQM2AgBBAkYEQCADQUBrIABBOGooAgAQigkLAkAgBEUNACABKAIQIgAgACgCACIAQQFrNgIAIABBAUcNACABQRBqEJcCCyABQTBqJAAPC0GUisAAQStB7IvAABDMBgALAAvpAgEFfwJAQc3/e0EQIAAgAEEQTRsiAGsgAU0NACAAQRAgAUELakF4cSABQQtJGyIEakEMahBCIgJFDQAgAkEIayEBAkAgAEEBayIDIAJxRQRAIAEhAAwBCyACQQRrIgUoAgAiBkF4cSACIANqQQAgAGtxQQhrIgIgAEEAIAIgAWtBEE0baiIAIAFrIgJrIQMgBkEDcQRAIAAgAyAAKAIEQQFxckECcjYCBCAAIANqIgMgAygCBEEBcjYCBCAFIAIgBSgCAEEBcXJBAnI2AgAgASACaiIDIAMoAgRBAXI2AgQgASACEJMBDAELIAEoAgAhASAAIAM2AgQgACABIAJqNgIACwJAIAAoAgQiAUEDcUUNACABQXhxIgIgBEEQak0NACAAIAQgAUEBcXJBAnI2AgQgACAEaiIBIAIgBGsiBEEDcjYCBCAAIAJqIgIgAigCBEEBcjYCBCABIAQQkwELIABBCGohAwsgAwuNAwEBfwJAIAIEQCABLQAAQTBNDQEgBUECOwEAAkACQAJAIAPBIgZBAEoEQCAFIAE2AgQgA0H//wNxIgMgAk8NASAFQQI7ARggBUECOwEMIAUgAzYCCCAFQSBqIAIgA2siAjYCACAFQRxqIAEgA2o2AgAgBUEUakEBNgIAIAVBEGpB/J/DADYCAEEDIQEgAiAETw0DIAQgAmshBAwCCyAFQQI7ARggBUEAOwEMIAVBAjYCCCAFQf2fwwA2AgQgBUEgaiACNgIAIAVBHGogATYCACAFQRBqQQAgBmsiAzYCAEEDIQEgAiAETw0CIAQgAmsiAiADTQ0CIAIgBmohBAwBCyAFQQA7AQwgBSACNgIIIAVBEGogAyACazYCACAERQRAQQIhAQwCCyAFQQI7ARggBUEgakEBNgIAIAVBHGpB/J/DADYCAAsgBUEAOwEkIAVBKGogBDYCAEEEIQELIAAgATYCBCAAIAU2AgAPC0G8nMMAQSFBiJ/DABDMBgALQZifwwBBH0G4n8MAEMwGAAv6AwEFfyMAQeAAayICJAAgACgCACEBIABBADYCAAJAIAEEQCACQSRqIABBBGpBOBDnCRogAiABNgIgIAJBBGohAyMAQUBqIgEkACABIAJBIGoiBEE8EOcJIQFBgIDAABDHBiIFRQRAQYSAwABBNkGsgcAAEMwGAAsgASAEIAUQZyADQQA2AgAgA0EUaiABQRBqKQMANwIAIANBDGogAUEIaikDADcCACADIAEpAwA3AgQgAUFAayQAAn8gAigCBEUEQCACQShqIAJBGGopAgA3AwAgAiACQRBqKQIANwMgQQEhASACQQxqKAIADAELQQIhASACQQxqKAIACyEDIAIoAgghBCAAQTxqEN4GIABBxABqIAM2AgAgAEFAayAENgIAIAAgATYCPCAAQcgAaiACKQMgNwIAIABB0ABqIAJBKGopAwA3AgAgACgCWCEBAkAgAEHkAGotAAAiA0UEQCABKAIAIQEMAQsgASgCACIBIAEoAgAiBEEBajYCACAEQQBIDQIgAiABNgIgCyAAQdwAaiIEKAIAIARBAzYCAEECRgRAIAFBQGsgAEHgAGooAgAQigkLAkAgA0UNACACKAIgIgAgACgCACIAQQFrNgIAIABBAUcNACACQSBqEJcCCyACQeAAaiQADwtBlIrAAEErQeyLwAAQzAYACwAL+gMBBX8jAEHgAGsiAiQAIAAoAgAhASAAQQA2AgACQCABBEAgAkEkaiAAQQRqQTgQ5wkaIAIgATYCICACQQRqIQMjAEFAaiIBJAAgASACQSBqIgRBPBDnCSEBQYCAwAAQxwYiBUUEQEGEgMAAQTZBrIHAABDMBgALIAEgBCAFEGYgA0EANgIAIANBFGogAUEQaikDADcCACADQQxqIAFBCGopAwA3AgAgAyABKQMANwIEIAFBQGskAAJ/IAIoAgRFBEAgAkEoaiACQRhqKQIANwMAIAIgAkEQaikCADcDIEEBIQEgAkEMaigCAAwBC0ECIQEgAkEMaigCAAshAyACKAIIIQQgAEE8ahDeBiAAQcQAaiADNgIAIABBQGsgBDYCACAAIAE2AjwgAEHIAGogAikDIDcCACAAQdAAaiACQShqKQMANwIAIAAoAlghAQJAIABB5ABqLQAAIgNFBEAgASgCACEBDAELIAEoAgAiASABKAIAIgRBAWo2AgAgBEEASA0CIAIgATYCIAsgAEHcAGoiBCgCACAEQQM2AgBBAkYEQCABQUBrIABB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KQMQQgJSBEAgBEUNAQNAAkAgA0EYaiAHEGQgAykDGFANACAFQQFrIgUNAQwDCwsgBUUNASABQgI3AxAgASkDACEICyAFQQAgCFAbIQYLIAEgASgCoAEiBSAEIAZrIgZrIgQ2AqABIAIgBmsiAiAFIAZGckUEQCABIARBAWs2AqABIAEpAxBCAlIEQCADQRhqIAcQZCADKQMYQgBSDQQgB0ICNwMACyABKQMAQgBSDQILIAFCAjcDAAsgASkDqAFCAlINA0IADAQLIAEpAwgMAQsgAykDIAshCUIBDAELIANBCGogAUGoAWogAhDMASADKQMQIQkgAykDCAshCCAAIAk3AwggACAINwMAIANBQGskAAvlAwEFfyMAQeAAayIBJAAgACgCBCECIABBADYCBAJAIAIEQCABQSRqIABBCGpBOBDnCRogASACNgIgIAFBBGohAyMAQUBqIgIkACACIAFBIGoiBEE8EOcJIQJBgIDAABDHBiIFRQRAQYSAwABBNkGcgcAAEMwGAAsgAiAEIAUQZiADQQA2AgAgA0EUaiACQRBqKQMANwIAIANBDGogAkEIaikDADcCACADIAIpAwA3AgQgAkFAayQAAn8gASgCBEUEQCABQShqIAFBGGopAgA3AwAgASABQRBqKQIANwMgQQEhAiABQQxqKAIADAELQQIhAiABQQxqKAIACyEDIAEoAgghBCAAQUBrEN4GIABByABqIAM2AgAgAEHEAGogBDYCACAAIAI2AkAgAEHMAGogASkDIDcCACAAQdQAaiABQShqIgIpAwA3AgAgAUEgaiAAKAIAEOIFIAEoAiANASACLQAAIQIgASgCJCIAQQE6AAICQCACDQBB7M3DACgCAEH/////B3FFDQAQ7QkNACAAQQE6AAELIABBADoAACABQeAAaiQADwtBlIrAAEErQeyLwAAQzAYACyABIAEoAiQ2AgQgASACLQAAOgAIQb+KwABBKyABQQRqQeyKwABB3IvAABD2BAAL5QMBBX8jAEHgAGsiASQAIAAoAgQhAiAAQQA2AgQCQCACBEAgAUEkaiAAQQhqQTgQ5wkaIAEgAjYCICABQQRqIQMjAEFAaiICJAAgAiABQSBqIgRBPBDnCSECQYCAwAAQxwYiBUUEQEGEgMAAQTZBnIHAABDMBgALIAIgBCAFEGcgA0EANgIAIANB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MCADIAVrIgBrNgIwIAEgAGshAgsgBEEgaiQAIAILmgICBX8BfiMAQUBqIgQkAAJAIAAoAqgBIgUEQCAAQagBaiEDIAFBAWohASAAQawBaigCACEGA0AgAUEBRg0CIARBCGogBSAGKAIMEQAAIAFBAWshASAEKAIIQQFGDQALIAFFDQEgAxC2ByADQQA2AgALIAApAwAiB0ICUQRAIAEhAgwBCyAAKAKgASICIAEgASACSxsiAyECAkAgACkDEEICUgRAQQAhBSADRQ0BIABBEGohBgNAAkAgBEEYaiAGEGQgBCkDGFANACACQQFrIgINAQwDCwsgAkUNASAAQgI3AxAgACkDACEHCyACQQAgB1AbIQULIAAgACgCoAEgAyAFayIAazYCoAEgASAAayECCyAEQUBrJAAgAguVAgIFfwF+IwBBIGsiBCQAAkAgACgCMCIFBEAgAEEwaiEDIAFBAWohASAAQTRqKAIAIQYDQCABQQFGDQIgBEEQaiAFIAYoAgwRAAAgAUEBayEBIAQoAhBBAUYNAAsgAUUNASADELYHIANBADYCAAsgACkDACIHQgJRBEAgASECDAELIAAoAigiAiABIAEgAksbIgMhAgJAIAAvARBBAkcEQEEAIQUgA0UNASAAQRBqIQYDQAJAIARBCGogBhChAyAELwEIRQ0AIAJBAWsiAg0BDAMLCyACRQ0BIABBAjsBECAAKQMAIQcLIAJBACAHUBshBQsgACAAKAIoIAMgBWsiAGs2AiggASAAayECCyAEQSBqJAAgAguaAgIFfwF+IwBBQGoiBCQAAkAgACgCqAEiBQRAIABBqAFqIQMgAUEBaiEBIABBrAFqKAIAIQYDQCABQQFGDQIgBEEIaiAFIAYoAgwRAAAgAUEBayEBIAQoAghBAUYNAAsgAUUNASADELYHIANBADYCAAsgACkDACIHQgJRBEAgASECDAELIAAoAqABIgIgASABIAJLGyIDIQICQCAAKQMQQgJSBEBBACEFIANFDQEgAEEQaiEGA0ACQCAEQRhqIAYQYyAEKQMYUA0AIAJBAWsiAg0BDAMLCyACRQ0BIABCAjcDECAAKQMAIQcLIAJBACAHUBshBQsgACAAKAKgASADIAVrIgBrNgKgASABIABrIQILIARBQGskACACC5UCAgV/AX4jAEEgayIEJAACQCAAKAI4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IANBEGoiACgCFCEHIAAoAhghBiAAKAIAIQUgACgCBCEIIAAoAgghASAAKAIMIQkgAiAAKAIQNgIgIAIgCTYCHCACIAE2AhggAiAINgIUIAIgBTYCECACIAEoAgA2AowBIAJBADYCiAEgAiAGNgKAASACIAJBEGo2AoQBIwBBIGsiACQAIABBCGogAkGAAWoiBkEMaigCACIBIAYoAghrIghBACABIAhPGxDLBSAAQRxqIgxBADYCACAAIAApAwg3AhQjAEEQayIIJAAgBkEMaigCACIBIAYoAghrIgpBACABIApPGyIPIABBFGoiASgCACABKAIIIgprSwRAIAEgCiAPEKwGIAEoAgghCgsgCCABKAIENgIMIAggCjYCCCAIIAFBCGo2AgQjAEEgayIBJAAgBkEMaigCACEPIAYoAgghCiABQRBqIAhBBGoiDUEIaigCADYCACABIA0pAgA3AwggASAGKQIANwIUIAogD0kEQCMAQSBrIgAkACABQRRqIgEoAgAgAEEQaiABKAIEIgFBCGopAgA3AwAgAEEYaiABQRBqKAIANgIAIAAgCjYCHCAAIAEpAgA3AwgjAEEwayICJAAgAkEANgIYIAJBgICAgHg2AiAgAkEYaiILIQMjAEEQayIEJAAoAgAiByAHKAIAIgFBAWo2AgAgAUEASARAAAsgAkEMaiEIIABBCGohBSAEQQRqIQkjAEEwayIAJAAgA0EMaikCACEuIAMoAgghAQJ/IAMoAgBFBEAQ8AcMAQsgAygCBAsaIAAgAUGAgICAeEYEf0EABSAAIC43AgggACABNgIEIABBEGogAEEEahDfAiAAKAIQQYCAgIB4RwRADBILIABBGGooAgAhASAAKAIUCyABEKYDIgY2AgAgBiAGKAIAIgFBAWo2AgACQAJAAkACQCABQQBIDQBBgc3DAC0AABpBGEEEEIQJIgNFDQEgA0EANgIMIAMgBzYCCCADQoKAgIAQNwIAIAAgAzYCEEEAEMAGIgcEQCAHIAcoAgAiAUEBajYCACABQQBIDQELIAAgBxDABiIBNgIgAkAgAUUNACABIAEoAgAiAUEBazYCACABQQFHDQAgAEEgahCZBgsgACgCECIKKAIIIgEEQCABQQhqEOMFC0GBzcMALQAAGkEkQQQQhAkiAUUNAiABIAc2AgggASADNgIEIAEgBjYC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ACgCACEBQdDRwwAgAzYCACAAIAE2AkggAUUNACABIAEoAgAiAUEBazYCACABQQFHDQAgAEHIAGoQhwYLIAApAzAiLkL/AYNCAlENAiAMIC43AgAMAwsgDEGBAjsBAAJAIA0NAEHszcMAKAIAQf////8HcUUNABDtCQ0AIAFBAToAAQsgAUEAOgAADAILIAAgACgCTDYCMCAAIABB0ABqLQAAOgA0QcTOwABBKyAAQTBqQfDOwABBhNDAABD2BAALEJgDGkHwzMAAQStBtNXAABDMBgALIABB4ABqJAALIAstAAghACAVIAsoAgw2AgQgFSAANgIAIAtBEGokACACKAIIDQMgECgCCCIAIAIoAgwiAU0NBCAbIAJBQGsiAyAGIAlBAXMiCRsiAEEIaikDADcDACACIAApAwA3A3ggAiAAKAIQNgKIASACIAApAxg3A3AgECgCBCEIIAYgAyAJGyIAKQMAIS4gACgCECELIAAoAhghAyAAQQhqKQMAIS8gACgCHCIFBEAgA0EAIAVBA3QQ5AkaCyACQZABaiAIIAFBBXRqIgAQ4gUgAigCkAEEQCACIAItAJgBOgC0ASACIAIoApQBNgKwAUG8gcAAQSsgAkGwAWpBiILAAEHIg8AAEPYEAAsgAigClAEiAS0AAkUNBSACLQCYASEIIAJBkAFqIABBBGoQ4AUgAigCkAENBiACLQCYASEMIAIoApQBIQAgAkGgAWogLzcDACACIC43A5gBIAIgCzYCqAEgAiAFNgKUASACIAM2ApABIAIgAEEUaikCADcCwAEgAiAAQQxqKQIANwK4ASACIAApAgQ3ArABIAJB2AFqIApBEGooAgA2AgAgAkHQAWogCkEIaikCADcDACACIAopAgA3A8gBIAJBkAFqIAJBsAFqIAJB8ABqIAJByAFqIAIoAmggAigCbBBRAkAgDA0AQezNwwAoAgBB/////wdxRQ0AEO0JDQAgAEEBOgABCyAAQQA6AAAgAUEAOgACAkAgCA0AQezNwwAoAgBB/////wdxRQ0AEO0JDQAgAUEBOgABCyABQQA6AAAgEkEBayISDQALIAlFDQYMBwsMGQtBvIHAAEErIAJBkAFqQeiBwABBiIPAABD2BAALQbyBwABBKyACQZABakH4gcAAQaiDwAAQ9gQACyABIABBuIPAABDABQALQdiDwABB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gAEgASADRw0AIAAgBjYCBCAAQQE2AgAgAEEIaiAHNgIADAELIAAgAjYCAAsgBEEMahD3BiAEQRBqJAAL+gECA38CfiMAQTBrIgIkACACIAE2AiggAkEYaiACQShqEO4GIAIoAighASAAAn8gAigCGEUEQCAAIAE2AgRBAQwBCyACKQMgIQUgAULAABAAIgMQASEEIANBhAFPBEAgAxACCyABQYQBTwRAIAEQAgsgAiAENgIsIAJBCGogAkEsahDuBgJAIAIoAghFBEAgAigCLCEBDAELIAIpAxAiBhADIQEgAigCLCABEAQgAUGEAU8EQCABEAILIAIoAiwhAUUNACABQYQBTwRAIAEQAgsgACAFNwMIIABBEGogBjcDAEEADAELIAAgATYCBEEBCzYCACACQTBqJAAL+gECA38CfiMAQTBrIgIkACACIAE2AiggAkEYaiACQShqEO4GIAIoAighASAAAn8gAigCGEUEQCAAIAE2AgRBAQwBCyACKQMgIQUgAULAABAAIgMQASEEIANBhAFPBEAgAxACCyABQYQBTwRAIAEQAgsgAiAENgIsIAJBCGogAkEsahDuBgJAIAIoAghFBEAgAigCLCEBDAELIAIpAxAiBhAAIQEgAigCLCABEAQgAUGEAU8EQCABEAILIAIoAiwhAUUNACABQYQBTwRAIAEQAgsgACAFNwMIIABBEGogBjcDAEEADAELIAAgATYCBEEBCzYCACACQTBqJAAL9AYCCn8FfAJAAkAgASgCACIHKAJEIgZBAXQiBQRAIAQgBCAFbiINIAVsayIEQQAgBkH/////B3EiBSAEIAVJIgwbayEGIwBBIGsiBCQAQZzGwwAtAABB/wFGBEAQ2AkLIAQgBygCRCIFNgIAIAQgAzYCBAJAAkACQAJAIAMgBUYEQCADIAZNDQEgB0EMaigCACEIIAcoAgghBSAHKAIEIQogBygCACELIAQgAzYCACADaUEBRw0CIAcoAkAhCSAEIAo2AgQgAyAKRw0DAkACQAJAAkAgCQRAIANBAWshByADIAluQQFrDgIDAgELQdDCwgBBGUH8zcIAEMwGAAsgAyAIIAMgCEkbIgNFDQIDQCALIAUoAgAgBmwgB3FBBHRqIggrAwAhDyACQQhqIAgrAwg5AwAgAiAPOQMAIAVBBGohBSACQRBqIQIgA0EBayID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AAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDPASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvuAQIFfwJ+IwBBMGsiAyQAAkACQCABKAKoASIERQ0AIAFBqAFqIQUgAkEBaiECIAFBrAFqKAIAIQYCQAJAAkACQANAIAJBAUYNASADQSBqIAQgBigCDCIHEQAAIAJBAWshAiADKAIgQQFGDQALIAJFDQEMAgsgBigCDCEHCyADQRBqIAQgBxEAACADKQMQIginDQFBACECCyAFELYHIAVBADYCAAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDNASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvrAQIFfwJ+IwBBMGsiAyQAAkACQCABKAIwIgRFDQAgAUEwaiEFIAJBAWohAiABQTRqKAIAIQYCQAJAAkACQANAIAJBAUYNASADQSBqIAQgBigCDCIHEQAAIAJBAWshAiADKAIgQQFGDQALIAJFDQEMAgsgBigCDCEHCyADQRBqIAQgBxEAACADKQMQIginDQFBACECCyAFELYHIAVBADYCAAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDQASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvrAQIFfwJ+IwBBMGsiAyQAAkACQCABKAI4IgRFDQAgAUE4aiEFIAJBAWohAiABQTxqKAIAIQYCQAJAAkACQANAIAJBAUYNASADQSBqIAQgBigCDCIHEQAAIAJBAWshAiADKAIgQQFGDQALIAJFDQEMAgsgBigCDCEHCyADQRBqIAQgBxEAACADKQMQIginDQFBACECCyAFELYHIAVBADYCAAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDXASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvtAQIFfwJ+IwBBMGsiAyQAAkACQCABKAJIIgRFDQAgAUHIAGohBSACQQFqIQIgAUHMAGooAgAhBgJAAkACQAJAA0AgAkEBRg0BIANBIGogBCAGKAIMIgcRAAAgAkEBayECIAMoAiBBAUYNAAsgAkUNAQwCCyAGKAIMIQcLIANBEGogBCAHEQAAIAMpAxAiCKcNAUEAIQILIAUQtgcgBUEANgIADAELIAMpAxghCQwBCyABKQMAQgJRBEBCACEIDAELIAMgASACENIBIAMpAwghCSADKQMAIQgLIAAgCTcDCCAAIAg3AwAgA0EwaiQAC+4BAgV/An4jAEEwayIDJAACQAJAIAEoAqgBIgRFDQAgAUGoAWohBSACQQFqIQIgAUGsAWooAgAhBgJAAkACQAJAA0AgAkEBRg0BIANBIGogBCAGKAIMIgcRAAAgAkEBayECIAMoAiBBAUYNAAsgAkUNAQwCCyAGKAIMIQcLIANBEGogBCAHEQAAIAMpAxAiCKcNAUEAIQILIAUQtgcgBUEANgIADAELIAMpAxghCQwBCyABKQMAQgJRBEBCACEIDAELIAMgASACEMwBIAMpAwghCSADKQMAIQgLIAAgCTcDCCAAIAg3AwAgA0EwaiQAC+0BAgV/An4jAEEwayIDJAACQAJAIAEoAkgiBEUNACABQcgAaiEFIAJBAWohAiABQcwAaigCACEGAkACQAJAAkADQCACQQFGDQEgA0EgaiAEIAYoAgwiBxEAACACQQFrIQIgAygCIEEBRg0ACyACRQ0BDAILIAYoAgwhBwsgA0EQaiAEIAcRAAAgAykDECIIpw0BQQAhAgsgBRC2ByAFQQA2AgAMAQsgAykDGCEJDAELIAEpAwBCAlEEQEIAIQgMAQsgAyABIAIQ0wEgAykDCCEJIAMpAwAhCAsgACAJNwMIIAAgCDcDACADQTBqJAAL7QECBX8CfiMAQTBrIgMkAAJAAkAgASgCaCIERQ0AIAFB6ABqIQUgAkEBaiECIAFB7ABqKAIAIQYCQAJAAkACQANAIAJBAUYNASADQSBqIAQgBigCDCIHEQAAIAJBAWshAiADKAIgQQFGDQALIAJFDQEMAgsgBigCDCEHCyADQRBqIAQgBxEAACADKQMQIginDQFBACECCyAFELYHIAVBADYCAAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDWASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvrAQIFfwJ+IwBBMGsiAyQAAkACQCABKAIoIgRFDQAgAUEoaiEFIAJBAWohAiABQSxqKAIAIQYCQAJAAkACQANAIAJBAUYNASADQSBqIAQgBigCDCIHEQAAIAJBAWshAiADKAIgQQFGDQALIAJFDQEMAgsgBigCDCEHCyADQRBqIAQgBxEAACADKQMQIginDQFBACECCyAFELYHIAVBADYCAAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDAASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvrAQIFfwJ+IwBBMGsiAyQAAkACQCABKAI4IgRFDQAgAUE4aiEFIAJBAWohAiABQTxqKAIAIQYCQAJAAkACQANAIAJBAUYNASADQSBqIAQgBigCDCIHEQAAIAJBAWshAiADKAIgQQFGDQALIAJFDQEMAgsgBigCDCEHCyADQRBqIAQgBxEAACADKQMQIginDQFBACECCyAFELYHIAVBADYCAAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDUASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvuAQICfwN+IwBBQGoiAiQAAkAgASgCqAEiAwRAIAJBCGogAyABQawBaigCACgCDBEAACACKQMQIQUgAikDCCIEQv////8PgyIGQgFRDQEgAUGoAWoiAxC2ByADQQA2AgAgBkIAUg0BCwJAIAEpAwAiBEICUgRAIAEoAqABIgMNAQtCACEEDAELIAEgA0EBazYCoAECQCABKQMQQgJSBEAgAkEYaiABQRBqEGQgAikDGEIAUg0BIAFCAjcDECABKQMAIQQLIAEpAwghBQwBCyACKQMgIQVCASEECyAAIAU3AwggACAENwMAIAJBQGskAAvuAQICfwN+IwBBQGoiAiQAAkAgASgCqAEiAwRAIAJBCGogAyABQawBaigCACgCDBEAACACKQMQIQUgAikDCCIEQv////8PgyIGQgFRDQEgAUGoAWoiAxC2ByADQQA2AgAgBkIAUg0BCwJAIAEpAwAiBEICUgRAIAEoAqABIgMNAQtCACEEDAELIAEgA0EBazYCoAECQCABKQMQQgJSBEAgAkEYaiABQRBqEGMgAikDGEIAUg0BIAFCAjcDECABKQMAIQQLIAEpAwghBQwBCyACKQMgIQVCASEECyAAIAU3AwggACAENwMAIAJBQGsk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aCADIBE2AmQgAyAQNgJgIAMgDzYCXCADIA42AlggAyANNgJUIAMgCjYCUCADIAk2AkwgAyAINgJIIAMgFDYCOCADIBY5AzAgAyAMNgIcIAMgBzYCGCADIAs2AgQgAyAGNgIAIANBEGogAkEQaikDADcDACADQShqIAJBIGopAwA3AwAMAgsgAigCLCEBIANBAjYCACADIAE2AgQMAQsgAigCLCEBIANBAjYCACADIAE2AgQLIAJBQGskACAAAn4gBSgCCEECRwRAIABBCGogBUEIakH4ABDnCRpCAQwBCyAAIAUoAgw2AghCAgs3AwAMAQsgBSgCDCEBIABCAjcDACAAIAE2AggLIAVBgAFqJAAL5wECAn8DfiMAQSBrIgIkAAJAIAEoAkgiAwRAIAJBEGogAyABQcwAaigCACgCDBEAACACKQMYIQUgAikDECIEQv////8PgyIGQgFRDQEgAUHIAGoiAxC2ByADQQA2AgAgBkIAUg0BCwJAIAEpAwAiBEICUgRAIAEoAkAiAw0BC0IAIQQMAQsgASADQQFrNgJAAkAgASkDEEICUgRAIAIgAUEQahCyAyACKQMApw0BIAFCAjcDECABKQMAIQQLIAEpAwghBQwBCyACKQMIIQVCASEECyAAIAU3AwggACAENwMAIAJBIGokAAvnAQICfwN+IwBBIGsiAiQAAkAgASgCSCIDBEAgAkEQaiADIAFBzABqKAIAKAIMEQAAIAIpAxghBSACKQMQIgRC/////w+DIgZCAVENASABQcgAaiIDELYHIANBADYCACAGQgBSDQELAkAgASkDACIEQgJSBEAgASgCQCIDDQELQgAhBAwBCyABIANBAWs2AkACQCABKQMQQgJSBEAgAiABQRBqELEDIAIpAwCnDQEgAUICNwMQIAEpAwAhBAsgASkDCCEFDAELIAIpAwghBUIBIQQLIAAgBTcDCCAAIAQ3AwAgAkEgaiQAC9ABAQh/IwBBEGsiAyQAAkAgAUEUaigCACIIIAEoAhAiBUYEQEEBIQQMAQsgASAFQQN0aiEGQQEhBANAAkAgASAFQQFqIgU2AhAgBkEEaigCACEJIANBCGogByAEIAYoAgAiAiACIARJGyIEENYHIAMoAghFDQAgAygCDCECIAMgCSAEENYHIAMoAgBFDQAgAiACIAMoAgRqIgJLDQAgBkEI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BiMAQdAAayICJAACQCABKAIIIgUgASgCDEYEQEICIQgMAQsgASAFQQRqNgIIIAJBKGogBSgCABB7An4gAigCKARAIAIoAiwhASACQSUQ8AUgAigCACEHIAIoAgRBr4/BAEElEOcJIQUgAkElNgIQIAIgBTYCDCACIAc2AgggBUElEAUhBSACQQhqEP8HIAFBhAFPBEAgARACCwJAIAYoAgBFDQAgBigCBCIBQYQBSQ0AIAEQAgsgBiAFNgIEIAZBATYCAEIADAELIAJBIGogAkHIAGopAwA3AwAgAkEYaiACQUBrKQMANwMAIAJBEGogAkE4aikDADcDACACIAIpAzA3AwhCAQshCCAEIAIpAwg3AwggBEEgaiACQSBqKQMANwMAIARBGGogAkEYaikDADcDACAEQRBqIAJBEGopAwA3AwALIAQgCDcDACACQdAAaiQAIAACfgJAIAMpAygiCEICUQ0AIANBIGoiASADQcgAaikDADcDACADQRhqIgIgA0FAaykDADcDACADQRBqIgQgA0E4aikDADcDACADIAMpAzA3AwggCFANACAAIAMpAwg3AwggAEEgaiABKQMANwMAIABBGGogAikDADcDACAAQRBqIAQpAwA3AwBCAQwBC0IACzcDACADQdAAaiQAC40EAgZ/AX4jAEHQAGsiAyQAIANBKGohBCABKAIQIQYjAEHQAGsiAiQAAkAgASgCCCIFIAEoAgxGBEBCAiEIDAELIAEgBUEEajYCCCACQShqIAUoAgAQiAICfiACKAIoBEAgAigCLCEBIAJBJRDwBSACKAIAIQcgAigCBEHljsEAQSUQ5wkhBSACQSU2AhAgAiAFNgIMIAIgBzYCCCAFQSUQBSEFIAJBCGoQ/wcgAUGEAU8EQCABEAILAkAgBigCAEUNACAGKAIEIgFBhAFJDQAgARACCyAGIAU2AgQgBkEBNgIAQgAMAQsgAkEgaiACQcgAaikDADcDACACQRhqIAJBQGspAwA3AwAgAkEQaiACQThqKQMANwMAIAIgAikDMDcDCEIBCyEIIAQgAikDCDcDCCAEQSBqIAJBIGopAwA3AwAgBEEYaiACQRhqKQMANwMAIARBEGogAkEQaikDADcDAAsgBCAINwMAIAJB0ABqJAAgAAJ+AkAgAykDKCIIQgJRDQAgA0EgaiIBIANByABqKQMA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CGogASAEIANBFGoQywIgAygCDCEBIAMoAghFBEAgACAENgIAIAAgATYCBAwCCyABQYGAgIB4Rg0BIAFFDQAgASADQRBqKAIAEN8JAAsQ+wYACyADQSBqJAALyQEBA38jAEEgayICJAACQAJAIAFBAWoiAUUNAEEIIAAoAgAiBEEBdCIDIAEgASADSRsiASABQQhNGyIDQX9zQR92IQECQCAERQRAIAJBADYCGAwBCyACIAQ2AhwgAkEBNgIYIAIgACgCBDYCFAsgAkEIaiABIAMgAkEUahDLAiACKAIMIQEgAigCCEUEQCAAIAM2AgAgACABNgIEDAILIAFBgYCAgHhGDQEgAUUNACABIAJBEGooAgAQ3wkACxD7BgALIAJBIGokAAvLAQECfyMAQTBrIgUkACAFIAI2AgACQCACBEAgASgCCCIGIAJwRQ0BIAVBKGpBKTYCACAFQRBqQgI3AgAgBUEDNgIIIAVByLjAADYCBCAFQRY2AiAgBSAGNgIsIAUgBUEcajYCDCAFIAU2AiQgBSAFQSxqNgIcIAVBBGpB4LjAABD8BgALQYCgwABBOUHAt8AAEMwGAAsgACADNwMAIAAgAjYCECAAIAQ3AwggACABKQIANwIUIABBHGogAUEIaigCADYCACAFQTBqJAAL6wEDAX8BfAF+IwBBMGsiAyQAIAEoAgBFBEAgAyAAIAErAwggAUEQaisDABDmAiADKwMAIgQgBBCGCKEgArqiEIYIIgREAAAAAAAA4MNmIQACfiAEmUQAAAAAAADgQ2MEQCAEsAwBC0KAgICAgICAgIB/CyEFIANBMGokACACQv///////////wAgBUKAgICAgICAgIB/IAAbIARE////////30NkG0IAIAQgBGEbIgJCP4eDIAJ8DwsgA0EgakIANwIAIANBATYCGCADQfjGwQA2AhQgAyADQSxqNgIcIANBFGpBsMfBABD8BgALqwEBAX8gAAJ/AkACfwJAAkAgAQRAIAJBAEgNASADKAIEBEAgA0EIaigCACIEBEAgAygCACAEIAEgAhCNCAwFCwsgAkUNAkGBzcMALQAAGiACIAEQhAkMAwsgAEEANgIEIABBCGogAjYCAAwDCyAAQQA2AgQMAgsgAQsiAwRAIAAgAzYCBCAAQQhqIAI2AgBBAAwCCyAAIAE2AgQgAEEIaiACNgIA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MGokACAIKAIIIQECQCAIKAIYIgJBgICAgHhHBEAgACAIKQIMNwIEIABBDGogCEEUaigCADYCACAAQRRqIAhBHGpBJBDnCRogACACNgIQDAELIABBgYCAgHg2AhALIAAgATYCAAsgCEFAayQAC8IEAgl/A34jAEEwayICJAAgAkEANgIEIAJBIGogAUEIaikCADcDACACIAEpAgA3AxggAiACQQRqNgIoIAJBDGohByMAQUBqIgEkACABQRhqIAJBGGoiAxD9AgJAIAEpAxhQBEAgB0EANgIIIAdCgICAgIABNwIAIAMQ5wUMAQsgARDMBSABQShqIgUpAwAhCyABQTBqKQMAIQwgAUE4aikDACENIAEoAgAhBiABKAIEIgQgASkDIDcDACAEQRhqIA03AwAgBEEQaiAMNwMAIARBCGogCzcDACABQRRqIgpBATYCACABIAQ2AhAgASAGNgIMIAUgA0EQaigCADYCACABQSBqIANBCGopAgA3AwAgASADKQIANwMYIwBBMGsiAyQAIANBCGogAUEYaiIJEP0CIAMpAwhQRQRAIAFBDGohBCADQRBqIQUDQCAEKAIIIgYgBCgCAEYEQCAEIAYQqQYLIAQoAgQgBkEFdGoiCCAFKQMANwMAIAhBGGogBUEYaikDADcDACAIQRBqIAVBEGopAwA3AwAgCEEIaiAFQQhqKQMANwMAIAQgBkEBajYCCCADQQhqIAkQ/QIgAykDCFBFDQALCyAJEOcFIANBMGokACAHQQhqIAooAgA2AgAgByABKQIMNwIACyABQUBrJAACQCACKAIERQRAIAAgAikCDDcCACAAQQhqIAJBFGooAgA2AgAMAQsgACACKAIINgIEIABBgICAgHg2AgAgAigCDEUNACACKAIQEGsLIAJBMGokAAvCBAIJfwN+IwBBMGsiAiQAIAJBADYCBCACQSBqIAFBCGopAgA3AwAgAiABKQIANwMYIAIgAkEEajYCKCACQQxqIQcjAEFAaiIBJAAgAUEYaiACQRhqIgMQ/AICQCABKQMYUARAIAdBADYCCCAHQoCAgICAATcCACADEOcFDAELIAEQzAUgAUEoaiIFKQMAIQsgAUEwaikDACEMIAFBOGopAwAhDSABKAIAIQYgASgCBCIEIAEpAyA3AwAgBEEYaiANNwMAIARBEGogDDcDACAEQQhq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CGoiBCgCRCILQf8BTQRAIAJB2ABqIgVB4JnAACkDACIhNwMAIAJB0ABqIgxB2JnAACkDACIiNwMAIAJByABqIhFB0JnAACkDACIjNwMAIAJByJnAACkDACIkNwNAIAJBQGsiDSALEMoCIAJBOGoiCyAFKQMANwMAIAJBMGoiDiAMKQMANwMAIAJBKGoiEiARKQMANwMAIAIgAikDQDcDICAFICE3AwAgDCAiNwMAIBEgIzcDACACICQ3A0AgAkEgaiANEKsBIAJBGGogCykDADcDACACQRBqIA4pAwA3AwAgAkEIaiASKQMANwMAIAIgAikDIDcDACAFIARBGGopAwA3AwAgDCAEQRBqKQMANwMAIBEgBEEIaikDADcDACACIAQpAwA3A0ADQCACQUBrIAhqIgQgBCkDACACIAhqKQMAgzcDACAIQQhqIghBIEcNAAsgByACKQNANwMAIAdBGGogAkHYAGopAwA3AwAgB0EQaiACQdAAaikDADcDACAHQQhqIAJByABqKQMANwMADAELIAcgBCkDADcDACAHQRhqIARBGGopAwA3AwAgB0EQaiAEQRBqKQMANwMAIAdBCGogBEEIaikDADcDAAsgAkHgAGokAAsgA0HwAGokACAGRQ0BIBNBgAFqIQtBACENIwBBgAFrIgQkAAJAIAogBmdBH3NsIhZB/wFNBEAgBEH4AGoiAiALQRhqKQMANwMAIARB8ABqIgMgC0EQaikDADcDACAEQegAaiIHIAtBCGopAwA3AwAgBCALKQMANwNgIARB4ABqIBZBAWtBARDkASAEQdgAaiACKQMANwMAIARB0ABqIAMpAwA3AwAgBEHIAGogBykDADcDACAEIAQpA2A3A0ADQCAEQUBrIA1qIgIgAikDACANQcjKwQBqKQMAgzcDACANQQhqIg1BIEcNAAsgBEEYaiAEQdgAaiIXKQMANwMAIARBEGogBEHQAGoiGCkDADcDACAEQQhqIARByABqIhkpAwA3AwAgBCAEKQNANwMAQQAhDSAEQfgAaiIaQfjLwQApAwA3AwAgBEHwAGoiG0Hwy8EAKQMANwMAIARB6ABqIhxB6MvBACkDADcDACAEQeDLwQApAwA3A2BBACECIwBBgAFrIgMkACAEQZCLwQAQuQNBAWpB/wFxQQJPBEAgA0EYaiAEQRhqIgIpAwA3AwAg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E0EQahD0BSEBQQAMAQtBASElIBMoAhALIQIgACAlNgIIIAAgAjYCBCAAIAE2AgAgE0HQAWokAAvvEgIafwN+IwBBwAJrIg8kAAJAIAEEQCABKAIAIhNBf0YNAUEBIRcgASATQQFqNgIAIA9BCGohFCMAQcACayINJAAgDUEIaiEYIwBBwAJrIgwkACAMQQhqIgcgAUEIaiIFENsFAn9B8ABB9AAgDCkDCFAbIAdqLQAIBEAgDEEIaiMAQcACayIHJAACQAJAQQBBkN7AACgCABEFACIQBEAgECgCAA0BIBBBfzYCACAQQQhqIQ4jAEHAAWsiAyQAAkAgBRDhBSIaRQRAIANBCGogBUGUAmooAgAgBUGYAmooAgAQlAYgAygCDCECIAMoAgghBAJAAkACQEICIAUpAwBCAn0iHCAcQgJaGyIcp0EBaw4CAQIACyADQUBrIAVBCGpBgAEQ5wkaIANBOGogA0HwAGopAwA3AwAgA0EwaiADQegAaikDADcDACADIANB4ABqKQMANwMoDAMLIANBOGogBUEwaikDADcDACADQTBqIAVBKGopAwA3AwAgAyAFQSBqKQMANwMoDAILIANBOGogBUEwaikDADcDACADQTBqIAVBKGopAwA3AwAgAyAFQSBqKQMANwMoDAELIAMgBUGkAmooAgAgBUGoAmooAgAQlAYgAygCBCECIAMoAgAhBAJAAkACQEICIAUpAwBCAn0iHCAcQgJaGyIcp0EBaw4CAQIACyADQUBrIAVBCGpBgAEQ5wkaIANBOGogA0HYAGopAwA3AwAgA0EwaiADQdAAaikDADcDACADIAMpA0g3AygMAgsgA0E4aiAFQRhqKQMANwMAIANBMGogBUEQaikDADcDACADIAUpAwg3AygMAQsgA0E4aiAFQRhqKQMANwMAIANBMGogBUEQaikDADcDACADIAUpAwg3AygLIANBGGogA0EwaikDADcDACADQSBqIANBOGopAwA3AwAgAyAENgJAIAMgAykDKDcDECADIAI2AkQgB0GQAmohESADQUBrIRIgAkEGdEHAAWohAiADQRBqIRsCfwJAAkACQCAcp0EBaw4CAQIACyAFQcgAagwCCyAFQdAAagwBCyAFQUBrCyIEKQMAIRwgBEEIaikDACEdIwBBQGoiCCQAIAhBCGogAiASKAIEQQFqIgZs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IANBQGsgBUEIakGAARDnCRogA0E4aiADQfAAaikDADcDACADQTBqIANB6ABqKQMANwMAIAMgA0HgAGopAwA3AygMAwsgA0E4aiAFQTBqKQMANwMAIANBMGogBUEoaikDADcDACADIAVBIGopAwA3AygMAgsgA0E4aiAFQTBqKQMANwMAIANBMGogBUEoaikDADcDACADIAVBIGopAwA3AygMAQsgAyAFQaQCaigCACAFQagCaigCABCUBiADKAIEIQIgAygCACEIAkACQAJAQgIgBSkDAEICfSIcIBxCAlobIhynQQFrDgIBAgALIANBQGsgBUEIakGAARDnCRogA0E4aiADQdgAaikDADcDACADQTBqIANB0ABqKQMANwMAIAMgAykDSDcDKAwCCyADQThqIAVBGGopAwA3AwAgA0EwaiAFQRBqKQMANwMAIAMgBSkDCDcDKAwBCyADQThqIAVBGGopAwA3AwAgA0EwaiAFQRBqKQMANwMAIAMgBSkDCDcDKAsgA0EYaiADQTBqKQMANwMAIANBIGogA0E4aikDADcDACADIAg2AkAgAyADKQMoNwMQIAMgAjYCRCAKQZACaiEZIANBQGshCCACQQZ0QcABaiEEIANBEGohGgJ/AkACQAJAIBynQQFrDgIBAgALIAVByABqDAILIAVB0ABqDAELIAVBQGsLIgIpAwAhHCACQQhqKQMAIR1BwARqIQxBACECIwBB0ABrIgkkACAIKAIEIAlCADcDGCAJQgA3AxADQCAJQRBqIAJqIAwQ1QY6AAAgAkEBaiICQRBHDQALIAkpAxghHiAJKQMQIR8gCUEIaiAEQQEQzgUgCSAENgJMIAkgCSkDCDcCRCAJQRBqIQcgCUHEAGohBkEBaiELIwBBIGsiAiQAAkACQCAcIB2EUEUgHHsgHXt8QgJacUUEQCAGKAIIRQ0BIwBBIGsiBCQAIBwgHYRQIBx7IB17fEICVHJFBEAgBEEUakIANwIAIARBATYCDCAEQei9wAA2AgggBEH8n8AANgIQIARBCGpB3MXAABD8BgALIAcgHDcDECAHIB83AwAgByALNgIgIAdBGGogHTcDACAHIB43AwggByAGKQIANwIkIAdBLGogBkEIaigCADYCACAEQSBqJAAgAkEgaiQADAILIAJBFGpCADcCACACQQE2AgwgAkHg3MAA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ADcDkARQDQYgHCkDACE+IAMpA6gEIT8gAykDmAQhQCADKALEBCEmIAspAwALIT0gAygCwAQhCSADKAK8BCENIAMoArgEIQogA0HICWogPTcDACADQbgJaiA+NwMAIAMgPzcDwAkgAyBANwOwCSADICY2AtwJIAMgCTYC2AkgAyANNgLUCSADIAo2AtAJIAMgBTYCrAkgAyAINgKoCSADQZgOaiADQagJaiADKALwBBEAACADKAKYDiITRQ0FIANB4AxqIAdBNBDnCRogAygC+AQiHSADKAL8BEYNBSADIB1BCGo2AvgEIANBrAxqIANB4AxqQTQQ5wkaIANBqAlqIBIQigMgAygC4AoiHkUNBSADQZgOaiADQagJaiIKQbgBEOcJGiADKALkCiEFIAogFBCKAyADKALgCiIRRQRAIB4QawwGCyADQbAGaiIIIANBqAlqIh9BuAEQ5wkaIAMoAuQKIQkgA0HgDGoiCiADQZgOaiINQbgBEOcJGiAPIApBuAEQ5wkhCiAHIANBrAxqQTQQ5wkaIAMgEzYCmA4gHSkDACE9IB8gCkG4ARDnCRogAyAFNgLkCiADIB42AuAKIA4gCEG4ARDnCRogAyAJNgKkDCADIBE2AqAMIAQgDSA9ICIgHxBGIAMoAuAKEGsgAygCoAwQayADKALcBCINIAMoAuAEIgVPDQALDAQLIAMgCjYC7AcgBhCDByEAIANBDGpBzgA2AgAgA0G0CWpCAjcCACADQc4ANgIEIAMgADYCkAQgA0EDNgKsCSADQdycwQA2AqgJIAMgA0GQBGo2AgggAyADQewHajYCACADIAM2ArAJIANBqAlqQYigwQAQ/AYACyAEENgHIQAgA0EMakHPADYCACADQbQJakICNwIAIAMgAEEBajYC7AcgA0HPADYCBCADQQM2AqwJIANBvJ7BADYCqAkgAyAGKAIgNgKQBCADIANBkARqNgIIIAMgA0HsB2o2AgAgAyADNgKwCSADQagJakGYoMEAEPwGAAsgA0EMakHNADYCACADQbQJakICNwIAIAMgDTYC7AcgA0EDNgKsCSADQfCfwQA2AqgJIANBzQA2AgQgAyAKNgKQBCADIAM2ArAJIAMgA0GQBGo2AgggAyADQewHajYCACADQagJakGooMEAEPwGAAsgAyADLQCoCToAkARB0JPBAEErIANB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DAELIAgoAgghASAAQgU3AwAgACABNgIICyAIQZACaiQAC48BAgN/AX4jAEEgayICJAAgASgCAEGAgICAeEYEQCABKAIMIQMgAkEcaiIEQQA2AgAgAkKAgICAEDcCFCACQRRqQZztwgAgAxBsGiACQRBqIAQoAgAiAzYCACACIAIpAhQiBTcDCCABQQhqIAM2AgAgASAFNwIACyAAQaj4wgA2AgQgACABNgIAIAJBIGokAAuNAgEDfyMAQTBrIgUkACAFIAE2AgwgAWlBAUcEQCAFQRxqQgE3AgAgBUECNgIUIAVBvJTAADYCECAFQRY2AiwgBSAFQShqNgIYIAUgBUEMajYCKCAFQRBqQcyUwAAQ/AYACyAFQRBqIgYgAUEBdBCeBCMAQTBrIgQkACAGKAIIIgFpQQFHBEAgBEEUakIBNwIAIARBATYCDCAEQZyTwAA2AgggBEEWNgIoIAQgATYCLCAEIARBJGo2AhAgBCAEQSxqNgIkIARBCGpB3JPAABD8BgALIARBEGogBkEIaigCADYCACAEIAYpAgA3AwggACAEQQhqIAFBAXYgAiADEJYCIARBMGokACAFQTBqJAALiwECAn8BfiMAQSBrIgIkACABIABBGGoQpQQiA0UEQCACIAA1AhA3AwggASgCECgCACACQQhqIgNBCBCLCSACIAA1AhQ3AwggASgCECgCACADQQgQiwkgACkDACEEIAIgAEEIaikDADcDECACIAQ3AwggAkHAADYCGCADIAEQkAYhAwsgAkEgaiQAIAMLjgEBBn8jAEEQayIDJAAgASgCACIFRQRAQZSKwABBK0GEisAAEMwGAAsgASgCDCEGIAEoAhAhByABKAIIIQQgASgCBCEIIANBCGogAUEcaigCADYCACADIAEpAhQ3AwAgACAFKAIAIAgoAgBrIAIgBCgCACAEKAIEIAYgByADEHYgAUEgahDMByADQRBqJAALjgEBBn8jAEEQayIDJAAgASgCACIFRQRAQZSKwABBK0GEisAAEMwGAAsgASgCDCEGIAEoAhAhByABKAIIIQQgASgCBCEIIANBCGogAUEcaigCADYCACADIAEpAhQ3AwAgACAFKAIAIAgoAgBrIAIgBCgCACAEKAIEIAYgByADEHcgAUEgahDMByADQRBqJAALfgEBfyMAQUBqIgIkACACQczfwAA2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IQogAygCICEUIAhFDQIgCiAIQQN0IgRqIRUgCiECA0AgAiANENUGrUIBgzcDACACQQhqIQIgBEEIayIEDQALIAMgBSkDACIdNwNIIAMgBUEIaikDACIeNwNQIANB2ABqIAkgHSAeEJwFIANB+ABqIAcpAwAgB0EIaikDABDOAyAdeyAee3whISADQfAAaigCACIQQQN0IhZBCGshFyADQewAaigCACIJIBBBAWsiEUEDdGohGCAHQShqKAIAIQ4gA0HIAmohGUIBISAgCCENIAohBwNAIA1FICCnRXINBSAZIBw3AwAgAyAfNwPAAiADQQE2ArwCIAMgDjYCuAIgA0EIaiADQbgCahCRByADKAIYIhpFDQUgEEUNBCAIQQFrIg8gCEshGyAHKQMAISMgA0H4AGogCSARIB0gHhC1BgJAICFCAVINACADQcgAakGEq8EAEIsDISQgEUUNACAXIQQgCSECA0AgAiACKQMAICR+NwMAIAJBCGohAiAEQQhrIgQNAAsLIAdBCGohB0EAIA8gGxsgIEIAIAhBAUsbISAgDUEBayENIA5BCGohDiAYIBopAwA3AwAgFiEEIAkhAgNAIAIgAikDACAjfjcDACACQQhqIQIgBEEIayIEDQALIAUgA0HYAGoQ4AYhCCAHIBVHDQALDAQLIANB1ABqQSw2AgAgAyAcNwPAAiADIB83A7gCIANCAjcChAEgA0EDNgJ8IANBuKnBADYCeCADQSw2AkwgAyAdNwNgIAMgHjcDWCADIANByABqNgKAASADIANB2ABqNgJQIAMgA0G4Amo2AkggA0EoaiADQThqIANB+ABqQeSqwQAQhQcACyADQeQAakHOADYCACADQYQBakICNwIAIAMgCUEBazYCSCADQQM2AnwgA0G8qsEANgJ4IANBzgA2AlwgAyACQQFrNgK4AiADIANB2ABqNgKAASADIANBuAJqNgJgIAMgA0HIAGo2AlggA0H4AGpB9KrBABD8BgALIANB2ABqIAkgHiAdEJwFIANB+ABqIAcpAwAgB0EIaikDABDOAwwBC0H/oMAAQStB7LbAABDMBgALIAUgIhDhBiADKAKwAhBrIAMoAmgEQCADQewAaigCABBrCyAUBEAgChBrCyADQdACaiQAIAYgEiATbCAMbjYCLCAGIAw2AiggBkEBNgIkIAYgDEEBazYC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aikDADcDACACIAFBIGopAwA3A0gMAgsgAkHYAGogAUEwaikDADcDACACQdAAaiABQShqKQMANwMAIAIgAUEgaikDADcDSAwBCyACIAFBpAJqKAIAIAFBqAJqKAIAEJQGIAIoAgQhAyACKAIAIQUCQAJAAkBCAiABKQMAIhFCAn0iECAQQgJaG6dBAWsOAgECAAsgAkHgAGogAUEIakGAARDnCRogAkHYAGogAkH4AGopAwA3AwAgAkHQAGogAkHwAGopAwA3AwAgAiACKQNoNwNIDAILIAJB2ABqIAFBGGopAwA3AwAgAkHQAGogAUEQaikDADcDACACIAEpAwg3A0gMAQsgAkHYAGogAUEYaikDADcDACACQdAAaiABQRBqKQMANwMAIAIgASkDCDcDSAsgAkEYaiACQdAAaikDADcDACACQSBqIAJB2ABqKQMANwMAIAIgBTYCYCACIAIpA0g3AxAgAiADNgJkIAJBKGohCSACQeAAaiELIAJBEGohDiMAQSBrIgUkAAJAAn8CQAJAAkBCAiABKQMAQgJ9IhAgEEICWhunIgZBAWsOAgECAAsgAUH0AGohAyABQfgAagwCCyABQYwBaiEDIAFBkAFqDAELIAFB7ABqIQMgAUHwAGoLKAIAIAMoAgBsIgMEQCAHBEAgBSALKAIEQQFqAn8CQAJAAkAgBkEBaw4CAQIACyABQcgAagwCCyABQdAAagwBCyABQUBrCyIGKQMAIAZBCGopAwAQnAVCgICAgICAgICAfyADrYAgEiAHrYJ+IRAjAEFAaiIDJAACQAJAIAVBGGooAgAiCkEBayIGIAsoAgQiD0YEQCAKRQ0BIAVBFGooAgAhCiAFKQMAIRIgA0EgaiAFQQhqKQMAIhM3AwAgAyASNwMYIAMgCjYCECADIAY2AhQgAyATNwMwIAMgEjcDKCADIAogBkEDdGo2AjggCyADQRBqIANBKGogECAOIAwQ2wEgA0FAayQADAILIANBHGpBzgA2AgAgA0E0akICNwIAIAMgBjYCCCADQQM2AiwgA0HYpsEANgIoIANBzgA2AhQgAyAPNgIMIAMgA0EQajYCMCADIANBDGo2AhggAyADQQhqNgIQIANBKGpB8KbBABD8BgALQf+gwABBK0HstsAAEMwGAAsgCUEYaiAFQRhqKQMANwMAIAlBEGogBUEQaikDADcDACAJQQhqIAVBCGopAwA3AwAgCSAFKQMANwMAIAVBIGokAAwCC0Hg+MAAQTlBoPrAABDMBgALQdD5wABBGUGQ+sAAEMwGAAsCQCAHBEACfwJAAkACQEICIBFCAn0iESARQgJaG6dBAWsOAgECAAsgAUH0AGohAyABQfgAagwCCyABQYwBaiEDIAFBkAFqDAELIAFB7ABqIQMgAUHwAGoLIQEgBCACKQMoNwMAIAQgDToAMCAEIAc2AiggBEEBNgIkIAQgB0EBazYCICAEQQhqIAJBMGopAwA3AwAgBEEQaiACQThqKQMANwMAIARBGGogAkFAaykDADcDACAEIAMoAgAgASgCAGwgB242AiwgAkHgAWokAAwBC0HQ+cAAQRlBsPrAABDMBgALIAggCCgCAEEBajYCACAEKAIQQYCAgIB4Rw0CC0HChsAAQcYAIARBP2pBiIfAAEHoh8AAEPYEAAsQsgYACyAAIARBOBDnCRogBEFAayQAC34BAn8jAEEQayICJAAgASgCBCEDIAIgACABKAIIIgEQ6QUgAigCBCEAIAIoAgBFBEAgAQRAIAFBA3QhASAAKAIQIQADQCACIAMpAwA3AwggACgCACACQQhqQQgQiwkgA0EIaiEDIAFBCGsiAQ0ACwtBACEACyACQRBqJAAgAAueBQIKfwJ+IwBB0ANrIgUkACAFQQhqIAEQ0gYgBSgCDCEIIAVBEGohByAFKAIIIQEjAEHAA2siBiQAIwBB4ANrIgQkACAEQcgDaiACEJECAn8gBCgCyAMEQCAEKALMAyEBQfSFwABBHBAFIQMgAUGEAU8EQCABEAILIAQgAzYCEEEEIQFBAAwBCyAEQQhqIQkgBCkD0AMhDSAEQdgDaikDACEOIwBB8AlrIgMkAAJAAkACQCABQewAaigCAEECaw4DAAEAAQsgA0EIaiIKIA0gDhDOAyADQcgBaiILIApBmITCABCbAiADQegHaiABQYABEOcJGiADQgI3A+AHIAkgCyADQeAHahCiAiADQYAGaigCABBrIAMoAoADEGsgA0HABGooAgAQayADQcAHaigCABBrIANByAdqEP8HIAMoAtQHBEAgA0HYB2ooAgAQawsgCUGwAmogAUGAAWpBkAEQ5wkaIAMoAsABEGsgA0HwCWokAAwBCyADQdQBakIANwIAIANBATYCzAEgA0GIhcIANgLIASADQbDwwQA2AtABIANByAFqQZCFwgAQ/AYACyAEKAIIIQEgBCgCDAshAyAGQQhqIARBEGpBuAMQ5wkaIAYgAzYCBCAGIAE2AgAgBEHgA2okAAJAIAYpAwBCBVIEQCAHIAZBwAMQ5wkaDAELIAZBDGooAgAhASAGKAIIIQNBpI3CAEEQEAUhBCAHQgQ3AwAgByAENgIIIAMgASgCABEBACABKAIERQ0AIAEoAggaIAMQawsgBkHAA2okACAIIAgoAgBBAWs2AgACfyAFKQMQQgRSBEAgBUEQahDzBSECQQAMAQtBASEMIAUoAhgLIQEgACAMNgIIIAAgATYCBCAAIAI2AgAgBUHQA2okAAuFAQICfwF+IwBBIGsiAiQAIAEgAEEYahD3BCIDRQRAIAIgADUCEDcDCCABKAIAIAJBCGoiA0EIEIsJIAIgADUCFDcDCCABKAIAIANBCBCLCSAAKQMAIQQgAiAAQQhqKQMANwMQIAIgBDcDCCACQcAANgIYIAMgARCfBiEDCyACQSBqJAAgAwuCAQEDfyMAQRBrIgIkACACQgA3AwggAAJ/IAEoAgQiA0EITwRAIAJBCGpBCCABKAIAIgRBCEGw2MAAEN4HIAEgA0EIazYCBCABIARBCGo2AgAgACACKwMIOQMIQQAMAQsgAkKBygA3AwggACACQQhqELsHNgIEQQELNgIAIAJBEGokAAuAAQECfyMAQTBrIgIkACACIAE2AgQgAkEEahDmBSEBIAJBEGpCADcDACACQgA3AwggAiABNgIYIAJBJGogAkEIahDQBSACKAIsIgEgAigCKEkEQCACQSRqIAEQ3QcgAigCLCEBCyACKAIkIQMgACABNgIEIAAgAzYCACACQTBqJAALvwsCEn8CfiMAQSBrIgkkACAJQQhqIAIQ0gYgCSgCDCERIAlBFGohDiAJKAIIIQIjAEEQayILJAAgC0EEaiEPIwBBMGsiBiQAIAZBCGogARCRAgJ/AkAgBigCCARAIAYoAgwhAiAGQSUQ8AUgBigCACEFIAYoAgRB4ITAAEElEOcJIQMgBkElNgIsIAYgAzYCKCAGIAU2AiQgA0ElEAUhAyAGQSRqEP8HIAJBhAFJDQEgAhACDAELIAYpAxAhFSAGQRhqKQMAIRYjAEGAAWsiCCQAIAggAhDbBSAIQewAaigCABCdByEDIwBBgAFrIg0kACANQQhqIgUgFSAWAn8CQAJAAkBCAiACKQMAQgJ9IhUgFUICWhunQQFrDgIBAgALIAJB9ABqDAILIAJBjAFqDAELIAJB7ABqCygCACADEJ8FIA0gAjYCdCANIA1B/wBqNgJwIwBBsAFrIgMkAAJAAkACQAJAAkAgBSgCYCIERQ0AIAUgBEEBazYCYAJ+AkAgBSkDEEICUgRAIANBEGogBUEQaiIEEN4BIAMpAxCnDQEgBEICNwMACyAFKQMAUA0CIAUpAwgMAQsgAykDGAshFSAFQewAaigCACEEIAMgFTcDqAEgA0E4aiAEIANBqAFqEKQEIAMoAkhBgICAgHhHDQELIAhBADYCCCAIQoCAgICAATcCAAwBCyADQQhqQQQgBSgCYCIHBH8gBSkDACEVAkAgBSkDEEICUQRAQX9BACAVQgBSGyEEDAELIBVQBEAgBSgCWCIERQ0EIAQgBSgCXE0hBAwBC0F/IQQgBSgCWEUNAwsgBCAHIAQgB0kbBUEAC0EBaiIEQX8gBBsiBCAEQQRNGxDJBSADKAIIIQcgAygCDCADQThqIgRBOBDjCSEMIANBNGoiE0EBNgIAIAMgDDYCMCADIAc2AiwgBCAFQfAAEOcJGiADQSxqIQwjAEHgAGsiBSQAAkAgBCgCYCIHRQ0AIARBEGohEgNAIAQgB0EBazYCYAJ+AkAgBCkDEEICUgRAIAVBCGogEhDeASAFKQMIpw0BIBJCAjcDAAsgBCkDAFANAyAEKQMIDAELIAUpAxALIRUgBCgCbCEHIAUgFTcDWCAFQSBqIAcgBUHYAGoQpAQgBSgCMEGAgICAeEYNASAEKAJgIQcgDCgCCCIQIAwoAgBGBEAgDCAQIAcEfyAEKQMAIRUCQCAEKQMQQgJRBEBBf0EAIBVCAFIbIQoMAQsgFVAEQCAEKAJYIgpFDQcgCiAEKAJcTSEKDAELQX8hCiAEKAJYRQ0GCyAKIAcgByAKSxsFQQALQQFqIgpBfyAKGxCoBgsgDCgCBCAQQThsaiAFQSBqQTgQ5wkaIAwgEEEBajYCCCAHDQALCyAFQeAAaiQAIAhBCGogEygCADYCACAIIAMpAiw3AgALIANBsAFqJAAMAQtB4I/AAEEZQeyYwAAQzAYACyANQYABaiQAIAZBCGoiA0EANgIAIANBDGogCEEIaigCADYCACADIAgpAwA3AgQgCEGAAWokACAGKAIIRQRAIAZBFGooAgAhAiAGQRBqKAIAIQMgBigCDAwCCyAGKQIMIRUgBiAGQRRqKAIANgIQIAYgFTcDCCAGQQhqEKAFIQMLQYCAgIB4CyEFIA8gAjYCCCAPIAM2AgQgDyAFNgIAIAZBMGokAAJAIAsoAgRBgYCAgHhHBEAgDiALKQIENwIAIA5BCGogC0EMaigCADYCAAwBCyALQQxqKAIAIQIgCygCCCEGQaSNwgBBEBAFIQMgDkGAgICAeDYCACAOIAM2AgQgBiACKAIAEQEAIAIoAgRFDQAgAigCCBogBhBrCyALQRBqJAAgESARKAIAQQFrNgIAAn8gCSgCFEGAgICAeEcEQCAJQRRqENYGIQFBAAwBC0EBIRQgCSgCGAshAiAAIBQ2AgggACACNgIEIAAgATYCACAJQSBqJAALvwsCEn8CfiMAQSBrIgkkACAJQQhqIAIQ0gYgCSgCDCERIAlBFGohDiAJKAIIIQIjAEEQayILJAAgC0EEaiEPIwBBMGsiBiQAIAZBCGogARCRAgJ/AkAgBigCCARAIAYoAgwhAiAGQSUQ8AUgBigCACEFIAYoAgRB4ITAAEElEOcJIQMgBkElNgIsIAYgAzYCKCAGIAU2AiQgA0ElEAUhAyAGQSRqEP8HIAJBhAFJDQEgAhACDAELIAYpAxAhFSAGQRhqKQMAIRYjAEGAAWsiCCQAIAggAhDcBSAIQewAaigCABCdByEDIwBBgAFrIg0kACANQQhqIgUgFSAWAn8CQAJAAkBCAiACKQMAQgJ9IhUgFUICWhunQQFrDgIBAgALIAJB9ABqDAILIAJBjAFqDAELIAJB7ABqCygCACADEJ8FIA0gAjYCdCANIA1B/wBqNgJwIwBBsAFrIgMkAAJAAkACQAJAAkAgBSgCYCIERQ0AIAUgBEEBazYCYAJ+AkAgBSkDEEICUgRAIANBEGogBUEQaiIEEN4BIAMpAxCnDQEgBEICNwMACyAFKQMAUA0CIAUpAwgMAQsgAykDGAshFSAFQewAaigCACEEIAMgFTcDqAEgA0E4aiAEIANBqAFqEKMEIAMoAkhBgICAgHhHDQELIAhBADYCCCAIQoCAgICAATcCAAwBCyADQQhqQQQgBSgCYCIHBH8gBSkDACEVAkAgBSkDEEICUQRAQX9BACAVQgBSGyEEDAELIBVQBEAgBSgCWCIERQ0EIAQgBSgCXE0hBAwBC0F/IQQgBSgCWEUNAwsgBCAHIAQgB0kbBUEAC0EBaiIEQX8gBBsiBCAEQQRNGxDJBSADKAIIIQcgAygCDCADQThqIgRBOBDjCSEMIANBNGoiE0EBNgIAIAMgDDYCMCADIAc2AiwgBCAFQfAAEOcJGiADQSxqIQwjAEHgAGsiBSQAAkAgBCgCYCIHRQ0AIARBEGohEgNAIAQgB0EBazYCYAJ+AkAgBCkDEEICUgRAIAVBCGogEhDeASAFKQMIpw0BIBJCAjcDAAsgBCkDAFANAyAEKQMIDAELIAUpAxALIRUgBCgCbCEHIAUgFTcDWCAFQSBqIAcgBUHYAGoQowQgBSgCMEGAgICAeEYNASAEKAJgIQcgDCgCCCIQIAwoAgBGBEAgDCAQIAcEfyAEKQMAIRUCQCAEKQMQQgJRBEBBf0EAIBVCAFIbIQoMAQsgFVAEQCAEKAJYIgpFDQcgCiAEKAJcTSEKDAELQX8hCiAEKAJYRQ0GCyAKIAcgByAKSxsFQQALQQFqIgpBfyAKGxCoBgsgDCgCBCAQQThsaiAFQSBqQTgQ5wkaIAwgEEEBajYCCCAHDQALCyAFQeAAaiQAIAhBCGogEygCADYCACAIIAMpAiw3AgALIANBsAFqJAAMAQtB4I/AAEEZQeyYwAAQzAYACyANQYABaiQAIAZBCGoiA0EANgIAIANBDGogCEEIaigCADYCACADIAgpAwA3AgQgCEGAAWokACAGKAIIRQRAIAZBFGooAgAhAiAGQRBqKAIAIQMgBigCDAwCCyAGKQIMIRUgBiAGQRRqKAIANgIQIAYgFTcDCCAGQQhqEKAFIQMLQYCAgIB4CyEFIA8gAjYCCCAPIAM2AgQgDyAFNgIAIAZBMGokAAJAIAsoAgRBgYCAgHhHBEAgDiALKQIENwIAIA5BCGogC0EMaigCADYCAAwBCyALQQxqKAIAIQIgCygCCCEGQaSNwgBBEBAFIQMgDkGAgICAeDYCACAOIAM2AgQgBiACKAIAEQEAIAIoAgRFDQAgAigCCBogBhBrCyALQRBqJAAgESARKAIAQQFrNgIAAn8gCSgCFEGAgICAeEcEQCAJQRRqENYGIQFBAAwBC0EBIRQgCSgCGAshAiAAIBQ2AgggACACNgIEIAAgATYCACAJQSBqJAALvwsCEn8CfiMAQSBrIgkkACAJQQhqIAIQ0gYgCSgCDCERIAlBFGohDiAJKAIIIQIjAEEQayILJAAgC0EEaiEPIwBBMGsiBiQAIAZBCGogARCRAgJ/AkAgBigCCARAIAYoAgwhAiAGQSUQ8AUgBigCACEFIAYoAgRB4ITAAEElEOcJIQMgBkElNgIsIAYgAzYCKCAGIAU2AiQgA0ElEAUhAyAGQSRqEP8HIAJBhAFJDQEgAhACDAELIAYpAxAhFSAGQRhqKQMAIRYjAEGAAWsiCCQAIAggAhDeBSAIQewAaigCABCdByEDIwBBgAFrIg0kACANQQhqIgUgFSAWAn8CQAJAAkBCAiACKQMAQgJ9IhUgFUICWhunQQFrDgIBAgALIAJB9ABqDAILIAJBjAFqDAELIAJB7ABqCygCACADEJ8FIA0gAjYCdCANIA1B/wBqNgJwIwBBsAFrIgMkAAJAAkACQAJAAkAgBSgCYCIERQ0AIAUgBEEBazYCYAJ+AkAgBSkDEEICUgRAIANBEGogBUEQaiIEEN4BIAMpAxCnDQEgBEICNwMACyAFKQMAUA0CIAUpAwgMAQsgAykDGAshFSAFQewAaigCACEEIAMgFTcDqAEgA0E4aiAEIANBqAFqEKIEIAMoAkhBgICAgHhHDQELIAhBADYCCCAIQoCAgICAATcCAAwBCyADQQhqQQQgBSgCYCIHBH8gBSkDACEVAkAgBSkDEEICUQRAQX9BACAVQgBSGyEEDAELIBVQBEAgBSgCWCIERQ0EIAQgBSgCXE0hBAwBC0F/IQQgBSgCWEUNAwsgBCAHIAQgB0kbBUEAC0EBaiIEQX8gBBsiBCAEQQRNGxDJBSADKAIIIQcgAygCDCADQThqIgRBOBDjCSEMIANBNGoiE0EBNgIAIAMgDDYCMCADIAc2AiwgBCAFQfAAEOcJGiADQSxqIQwjAEHgAGsiBSQAAkAgBCgCYCIHRQ0AIARBEGohEgNAIAQgB0EBazYCYAJ+AkAgBCkDEEICUgRAIAVBCGogEhDeASAFKQMIpw0BIBJCAjcDAAsgBCkDAFANAyAEKQMIDAELIAUpAxALIRUgBCgCbCEHIAUgFTcDWCAFQSBqIAcgBUHYAGoQogQgBSgCMEGAgICAeEYNASAEKAJgIQcgDCgCCCIQIAwoAgBGBEAgDCAQIAcEfyAEKQMAIRUCQCAEKQMQQgJRBEBBf0EAIBVCAFIbIQoMAQsgFVAEQCAEKAJYIgpFDQcgCiAEKAJcTSEKDAELQX8hCiAEKAJYRQ0GCyAKIAcgByAKSxsFQQALQQFqIgpBfyAKGxCoBgsgDCgCBCAQQThsaiAFQSBqQTgQ5wkaIAwgEEEBajYCCCAHDQALCyAFQeAAaiQAIAhBCGogEygCADYCACAIIAMpAiw3AgALIANBsAFqJAAMAQtB4I/AAEEZQeyYwAAQzAYACyANQYABaiQAIAZBCGoiA0EANgIAIANBDGogCEEIaigCADYCACADIAgpAwA3AgQgCEGAAWokACAGKAIIRQRAIAZBFGooAgAhAiAGQRBqKAIAIQMgBigCDAwCCyAGKQIMIRUgBiAGQRRqKAIANgIQIAYgFTcDCCAGQQhqEKAFIQMLQYCAgIB4CyEFIA8gAjYCCCAPIAM2AgQgDyAFNgIAIAZBMGokAAJAIAsoAgRBgYCAgHhHBEAgDiALKQIENwIAIA5BCGogC0EMaigCADYCAAwBCyALQQxqKAIAIQIgCygCCCEGQaSNwgBBEBAFIQMgDkGAgICAeDYCACAOIAM2AgQgBiACKAIAEQEAIAIoAgRFDQAgAigCCBogBhBrCyALQRBqJAAgESARKAIAQQFrNgIAAn8gCSgCFEGAgICAeEcEQCAJQRRqENYGIQFBAAwBC0EBIRQgCSgCGAshAiAAIBQ2AgggACACNgIEIAAgATYCACAJQSBqJAALyAsCE38DfiMAQSBrIggkACAIQQhqIAIQ0gYgCCgCDCESIAhBFGohDiAIKAIIIQIjAEEQayIKJAAgCkEEaiEPIwBBMGsiBCQAIARBCGogARCRAgJ/AkAgBCgCCARAIAQoAgwhAiAEQSUQ8AUgBCgCACEFIAQoAgRB4ITAAEElEOcJIQYgBEElNgIsIAQgBjYCKCAEIAU2AiQgBkElEAUhBiAEQSRqEP8HIAJBhAFJDQEgAhACDAELIARBCGohECAEKQMQIRYgBEEYaikDACEXIwBBEGsiCyQAAn8CQAJAAkBCAiACKQMAQgJ9IhggGEICWhunQQFrDgIBAgALIAJB9ABqDAILIAJBjAFqDAELIAJB7ABqCygCABCdByEGIwBBgAFrIg0kACANQQhqIgUgFiAXAn8CQAJAAkBCAiACKQMAQgJ9IhYgFkICWhunQQFrDgIBAgALIAJB9ABqDAILIAJBjAFqDAELIAJB7ABqCygCACAGEJ8FIA0gAjYCdCANIA1B/wBqNgJwIwBBoAFrIgYkAAJAAkACQAJAAkAgBSgCYCIDRQ0AIAUgA0EBazYCYAJ+AkAgBSkDEEICUgRAIAZBCGogBUEQaiIDEN4BIAYpAwinDQEgA0ICNwMACyAFKQMAUA0CIAUpAwgMAQsgBikDEAshFiAGQTBqIAVB7ABqKAIAIBYQTCAGKAJAQYCAgIB4Rw0BCyALQQA2AgggC0KAgICAgAE3AgAMAQsgBkEEIAUoAmAiBwR/IAUpAwAhFgJAIAUpAxBCAlEEQEF/QQAgFkIAUhshAwwBCyAWUARAIAUoAlgiA0UNBCADIAUoAlxNIQMMAQtBfyEDIAUoAlhFDQMLIAMgByADIAdJGwVBAAtBAWoiA0F/IAMbIgMgA0EETRsQyQUgBigCACEHIAYoAgQgBkEwaiIDQTgQ4wkhDCAGQSxqIhRBATYCACAGIAw2AiggBiAHNgIkIAMgBUHwABDnCRogBkEkaiEMIwBB0ABrIgUkAAJAIAMoAmAiB0UNACADQRBqIRMDQCADIAdBAWs2AmACfgJAIAMpAxBCAlIEQCAFIBMQ3gEgBSkDAKcNASATQgI3AwALIAMpAwBQDQMgAykDCAwBCyAFKQMICyEWIAVBGGogAygCbCAWEEwgBSgCKEGAgICAeEYNASADKAJgIQcgDCgCCCIRIAwoAgBGBEAgDCARIAcEfyADKQMAIRYCQCADKQMQQgJRBEBBf0EAIBZCAFIbIQkMAQsgFlAEQCADKAJYIglFDQcgCSADKAJcTSEJDAELQX8hCSADKAJYRQ0GCyAJIAcgByAJSxsFQQALQQFqIglBfyAJGxCoBgsgDCgCBCARQThsaiAFQRhqQTgQ5wkaIAwgEUEBajYCCCAHDQALCyAFQdAAaiQAIAtBCGogFCgCADYCACALIAYpAiQ3AgALIAZBoAFqJAAMAQtB4I/AAEEZQeyYwAAQzAYACyANQYABaiQAIBBBADYCACAQQQxqIAtBCGooAgA2AgAgECALKQMANwIEIAtBEGokACAEKAIIRQRAIARBFGooAgAhAiAEQRBqKAIAIQYgBCgCDAwCCyAEKQIMIRYgBCAEQRRqKAIANgIQIAQgFjcDCCAEQQhqEKAFIQYLQYCAgIB4CyEFIA8gAjYCCCAPIAY2AgQgDyAFNgIAIARBMGokAAJAIAooAgRBgYCAgHhHBEAgDiAKKQIENwIAIA5BCGogCkEMaigCADYCAAwBCyAKQQxqKAIAIQIgCigCCCEEQaSNwgBBEBAFIQYgDkGAgICAeDYCACAOIAY2AgQgBCACKAIAEQEAIAIoAgRFDQAgAigCCBogBBBrCyAKQRBqJAAgEiASKAIAQQFrNgIAAn8gCCgCFEGAgICAeEcEQCAIQRRqENYGIQFBAAwBC0EBIRUgCCgCGAshAiAAIBU2AgggACACNgIEIAAgATYCACAIQSBqJAALiwsCEn8DfiMAQSBrIggkACAIQQhqIAIQ0gYgCCgCDCEQIAhBEGohDCAIKAIIIQMjAEEQayICJAAjAEEwayIGJAAgBkEIaiABEJECAkAgBigCCARAIAYoAgwhAyAGQSUQ8AUgBigCACEEIAYoAgRB4ITAAEElEOcJIQUgBkElNgIsIAYgBTYCKCAGIAQ2AiQgBUElEAUhByAGQSRqEP8HIANBhAFPBEAgAxACC0ECIQMMAQsgBikDECEVIAZBGGopAwAhFyMAQYABayIOJAAgDiADENsFIAZBCGoiEkEEaiENIA5B7ABqKAIAEJ0HIQQjAEGAAWsiCiQAIApBCGoiBSAVIBcCfwJAAkACQEICIAMpAwBCAn0iFSAVQgJaG6dBAWsOAgECAAsgA0H0AGoMAgsgA0GMAWoMAQsgA0HsAGoLKAIAIAQQnwUgCiADNgJ0IAogCkH/AGo2AnAjAEGwAWsiAyQAAkACQAJAAkACQCAFKAJgIgRFDQAgBSAEQQFrNgJgAn4CQCAFKQMQQgJSBEAgA0EQaiAFQRBqIgQQ3gEgAykDEKcNASAEQgI3AwALIAUpAwBQDQIgBSkDCAwBCyADKQMYCyEVIAVB7ABqKAIAIQQgAyAVNwOoASADQThqIAQgA0GoAWoQoQQgAy0AeEECRw0BCyANQQA2AgggDUKAgICAgAE3AgAMAQsgA0EIakEEIAUoAmAiBAR/IAUpAwAhFQJAIAUpAxBCAlEEQEF/QQAgFUIAUhshBwwBCyAVUARAIAUoAlgiB0UNBCAHIAUoAlxNIQcMAQtBfyEHIAUoAlhFDQMLIAcgBCAEIAdLGwVBAAtBAWoiBEF/IAQbIgQgBEEETRsQxwUgAygCCCEHIAMoAgwgA0E4aiIEQcgAEOMJIQkgA0E0aiITQQE2AgAgAyAJNgIwIAMgBzYCLCAEIAVB8AAQ5wkaIANBLGohCyMAQfAAayIFJAACQCAEKAJgIglFDQAgBEEQaiERA0AgBCAJQQFrNgJgAn4CQCAEKQMQQgJSBEAgBUEIaiAREN4BIAUpAwinDQEgEUICNwMACyAEKQMAUA0DIAQpAwgMAQsgBSkDEAshFSAEKAJsIQcgBSAVNwNoIAVBIGogByAFQegAahChBCAFLQBgQQJGDQEgBCgCYCEJIAsoAggiDyALKAIARgRAIAsgDyAJBH8gBCkDACEVAkAgBCkDEEICUQRAQX9BACAVQgBSGyEHDAELIBVQBEAgBCgCWCIHRQ0HIAcgBCgCXE0hBwwBC0F/IQcgBCgCWEUNBgsgByAJIAcgCUkbBUEAC0EBaiIHQX8gBxsQqgYLIAsoAgQgD0HIAGxqIAVBIGpByAAQ5wkaIAsgD0EBajYCCCAJDQALCyAFQfAAaiQAIA1BCGogEygCADYCACANIAMpAiw3AgALIANBsAFqJAAMAQtB4I/AAEEZQeyYwAAQzAYACyAKQYABaiQAIBJBADYCACAOQYABaiQAIAYoAggiA0ECRwRAIAYpAhAhFiAGKAIMIQcMAQsgBigCDCEDIAYgBkEQaikCADcCDCAGIAM2AgggBkEIahCgBSEHQQIhAwsgAiAWNwIIIAIgBzYCBCACIAM2AgAgBkEwaiQAAkAgAigCAEEDRwRAIAwgAikCADcCACAMQQhqIAJBCGopAgA3AgAMAQsgAkEIaigCACEDIAIoAgQhBkGkjcIAQRAQBSEFIAxBAjYCACAMIAU2AgQgBiADKAIAEQEAIAMoAgRFDQAgAygCCBogBhBrCyACQRBqJAAgECAQKAIAQQFrNgIAAn8gCCgCEEECRwRAIAhBEGoQ1wYhAUEADAELQQEhFCAIKAIUCyECIAAgFDYCCCAAIAI2AgQgACABNgIAIAhBIGokAAuMBQIJfwF+IwBBIGsiBSQAIAVBCGogAhDSBiAFKAIMIQogBUEUaiEIIAUoAgghBCMAQRBrIgYkACAGQQRqIQkjAEHQAGsiAiQAIAJBCGogARCIAgJ/AkAgAigCCARAIAIoAgwhBCACQSUQ8AUgAigCACEHIAIoAgRBhYXAAEElEOcJIQMgAkElNgI4IAIgAzYCNCACIAc2AjAgA0ElEAUhAyACQTBqEP8HIARBhAFJDQEgBBACDAELIAJByABqIAJBKGopAwA3AwAgAkFAayACQSBqKQMANwMAIAJBOGogAkEYaikDADcDACACIAIpAxA3AzAjAEGAAWsiAyQAIAMgBBDbBSADIAQgAkEwaiADQewAaigCABCgBxD/BCACQQhqIgdBADYCACAHQQxqIANBCGooAgA2AgAgByADKQMANwIEIANBgAFqJAAgAigCCEUEQCACQRRqKAIAIQQgAkEQaigCACEDIAIoAgwMAgsgAikCDCEMIAIgAkEUaigCADYCECACIAw3AwggAkEIahCgBSEDC0GAgICAeAshByAJIAQ2AgggCSADNgIEIAkgBzYCACACQdAAaiQAAkAgBigCBEGBgICAeEcEQCAIIAYpAgQ3AgAgCEEIaiAGQQxqKAIANgIADAELIAZBDGooAgAhAiAGKAIIIQRBpI3CAEEQEAUhAyAIQYCAgIB4NgIAIAggAzYCBCAEIAIoAgARAQAgAigCBEUNACACKAIIGiAEEGsLIAZBEGokACAKIAooAgBBAWs2AgACfyAFKAIUQYCAgIB4RwRAIAVBFGoQ1gYhAUEADAELQQEhCyAFKAIYCyECIAAgCzYCCCAAIAI2AgQgACABNgIAIAVBIGokAAuMBQIJfwF+IwBBIGsiBSQAIAVBCGogAhDSBiAFKAIMIQogBUEUaiEIIAUoAgghBCMAQRBrIgYkACAGQQRqIQkjAEHQAGsiAiQAIAJBCGogARCIAgJ/AkAgAigCCARAIAIoAgwhBCACQSUQ8AUgAigCACEHIAIoAgRBhYXAAEElEOcJIQMgAkElNgI4IAIgAzYCNCACIAc2AjAgA0ElEAUhAyACQTBqEP8HIARBhAFJDQEgBBACDAELIAJByABqIAJBKGopAwA3AwAgAkFAayACQSBqKQMANwMAIAJBOGogAkEYaikDADcDACACIAIpAxA3AzAjAEGAAWsiAyQAIAMgBBDcBSADIAQgAkEwaiADQewAaigCABCgBxCEBSACQQhqIgdBADYCACAHQQxqIANBCGooAgA2AgAgByADKQMANwIEIANBgAFqJAAgAigCCEUEQCACQRRqKAIAIQQg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KAIARQRAIAEEQCABQQN0IQEgACgCACEAA0AgAiADKQMANwMIIAAgAkEIakEIEIsJIANBCGohAyABQQhrIgENAAsLQQAhAAsgAkEQaiQAIAAL1gQBCn8jAEHQA2siBSQAIAVBCGogARDSBiAFKAIMIQggBUEQaiEGIAUoAgghByMAQfAGayICJAAgAkGwA2ohCSMAQSBrIgMkAAJAAkACQCAHQewAaigCAEECaw4DAAEAAQsjAEHQBGsiASQAAkACQEEAQayBwgAoAgARBQAiBARAIAQoAgANASAEQX82AgAgAUHAAmogB0GAARDnCRogAUICNwO4AiABQQhqIARBCGogAUG4AmoQogIgBCAEKAIAQQFqNgIAIAEpAwhCBFINAgtBwobAAEHGACABQc8EakGIh8AAQeiHwAAQ9gQACxCyBgALIAkgAUEIakGwAhDnCRogAUHQBGokACAJQbACaiAHQYABakGQARDnCRogA0EgaiQADAELIANBFGpCADcCACADQQE2AgwgA0GIhcIANgIIIANBsPDBADYCECADQQhqQaCFwgAQ/AYACyACKAK8AyEBIAIoArgDIQMgAigCsAMhBCACKAK0AyEHIAIgAkHAA2pBsAMQ5wkhAgJAIAStIAetQiCGhEIEUgRAIAYgATYCDCAGIAM2AgggBiAHNgIEIAYgBDYCACAGQRBqIAJBsAMQ5wkaDAELQaSNwgBBEBAFIQQgBkIENwMAIAYgBDYCCCADIAEoAgARAQAgASgCBEUNACABKAIIGiADEGsLIAJB8AZqJAAgCCAIKAIAQQFrNgIAAn8gBSkDEEIEUgRAIAVBEGoQ8wUhCkEADAELQQEhCyAFKAIYCyEBIAAgCzYCCCAAIAE2AgQgACAKNgIAIAVB0ANqJAALgQEBBH8jAEEQayICJAAgAkEAOgAHAkAgASgCBCIEBEAgAkEHakEBIAEoAgAiBUEBQbDYwAAQ3gcgASAEQQFrNgIEIAEgBUEBajYCACAAIAItAAc6AAEMAQsgAkKBygA3AwggACACQQhqELsHNgIEQQEhAwsgACADOgAAIAJBEGokAAvbBgIHfwF+IwBBwAFrIggkACAIQQhqIgQgAgJ/AkACQAJAQgIgASkDAEICfSILIAtCAlobp0EBaw4CAQIACyABQfQAagwCCyABQYwBagwBCyABQewAagso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AgJ/AkACQAJAIAQtALACIgZFBEAgE0EBaw4CAwUBCwJAAkACQCATQQFrDgIBAgALIANB0ABqIARBCGpBgAEQ5wkaIANByABqIANB6ABqKQMANwMAIANBQGsgA0HgAGopAwA3AwAgAyADKQNYNwM4DAMLIARBCGoMBAsgBEEIagwFCyADQdAAaiAEQQhqQYABEOcJGiADQcgAaiADQYABaikDADcDACADQUBrIANB+ABqKQMANwMAIAMgA0HwAGopAwA3AzgLIAMgA0E4ajYCXCADIANBBGo2AlggAyADQRBqIgI2AlQgAyAENgJQIANB0ABqEIwCIAQoAnQhBSAKIAJBKBDnCRogBEH4AGoMBAsgBEEgagsiAkEQaikDADcDACADQUBrIAJBCGopAwA3AwAgAyACKQMANwM4IAMgA0E4ajYCXCADIANBBGo2AlggAyADQRBqIgI2AlQgAyAENgJQIANB0ABqEIwCIARBjAFqKAIAIQUgCiACQSgQ5wkaIARBkAFqDAILIARBIGoLIgJBEGopAwA3AwAgA0FAayACQQhqKQMANwMAIAMgAikDADcDOCADIANBOGo2AlwgAyADQQRqNgJYIAMgA0EQaiICNgJUIAMgBDYCUCADQdAAahCMAiAEKAJsIQUgCiACQSgQ5wkaIARB8ABqCyECIAogBjoAOCAKIAU2AiwgCkEBNgI0IAogAigCADYCMCAKIAVBAWs2AiggAygCBARAIAMoAggQawsgA0HQAWokAAwBC0Hgj8AAQRlB7JjAABDMBgALIAogETYCQCAXQdAAaiQADAULIAMpAwAhHSAJQQhqIgMgAQJ/AkACQAJAQgIgBCkDAEICfSIBIAFCAlobpyITQQFrDgIBAgALIARB9ABqDAILIARBjAFqDAELIARB7ABqCygCACIGIBEQtgUgCUGYAWogHSAGIBEQtgUgCUHQAGogA0HIABDnCRpBgc3DAC0AABpBkAFBCBCECSILRQ0BIAsgCUHQAGpBkAEQ5wkhAyASIAJBEGoiD0YEQEGc7cEAIQwMBAsgBEH0AGohBiAEQYwBaiEFIARB7ABqIQhBnO3BACEMA0AgBiECAkACQAJAIBNBAWsOAgABAgsgBSECDAELIAghAgsgCUHQAGogDykDACACKAIAIBEQtgVBgc3DAC0AABpB0ABBCBCECSILRQ0D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Cwt/AQJ/IwBBEGsiAyQAIAAgARCaBCICRQRAIAMgADUCKDcDCCABKAIQKAIAIANBCGoiAkEIEIsJIAMgADUCLDcDCCABKAIQKAIAIAJBCBCLCSADIAA1AjA3AwggASgCECgCACACQQgQiwkgAEE0aiABEJIGIQILIANBEGokACACC3kBAX8gACgCACICIAAoAgRGBEBBAw8LIAAgAkEEajYCAEEBQQIgAigCABAXIgBBAUYbQQAgABsiAEECRgR/QdSPwQBBFhAFIQACQCABKAIARQ0AIAEoAgQiAkGEAUkNACACEAILIAEgADYCBCABQQE2AgBBAgUgAAsLfgEBfyMAQUBqIgAkACAAQQo2AhAgAEGwxMIANgIMIABBAToAFyAAQSRqQgI3AgAgAEE8akGmAzYCACAAQQI2AhwgAEHA4sIANgIYIABBGDYCNCAAIABBMGo2AiAgACAAQRdqNgI4IAAgAEEMajYCMCAAQRhqQbDjwgAQ/AYAC44BAQN/IwBBIGsiACQAAkACQEHE0cMAKAIAIgFFBEAQrwMhAUHE0cMAKAIADQFBxNHDACABNgIACyABIAEoAgAiAkEBajYCACACQQBIDQEgAEEgaiQAIAEPCyAAQRRqQgA3AgAgAEEBNgIMIABBjOvCADYCCCAAQfzqwgA2AhAgAEEIakHk68IAEPwGAAsAC4cBAgN/AX4jAEEgayICJAAgASgCBCIDRQRAIAJBFGpCADcCACACQQE2AgwgAkGktsAANgIIIAJB/J/AADYCECACQQhqQay2wAAQ/AYACyABQRBqKQMAIQUgASgCACEEIAAgASkDCDcDCCAAIAM2AgQgACAENgIAIABBEGogBTcDACACQSBqJAALggEBAX8jAEEwayIEJAAgBEEMaiABEJ4EIAQoAhRFBEAgBEEkakIANwIAIARBATYCHCAEQaS2wAA2AhggBEH8n8AANgIgIARBGGpBrLbAABD8BgALIAAgAjcDACAAIAQpAgw3AhAgACADNwMIIABBGGogBEEUaigCADYCACAEQTBqJAALhwECA38BfiMAQSBrIgIkACABKAIEIgNFBEAgAkEUakIANwIAIAJBATYCDCACQdiuwAA2AgggAkH8n8AANgIQIAJBCGpBkK/AABD8BgALIAFBIGopAwAhBSABKAIAIQQgACABKQMYNwMIIAAg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cUUgAUEFdBD9CCABQYCAgIABSSIEIAFBBHQiARD9CCEDQcAAENEHIgIgA0HAABDRB2oiAyACTyADEP0IIQIgBCABEP0IIQEgACACQcAAENEHIgIgAUHAABDRB2oiASACTyABEP0INgIEIABBwAA2AgALwgQBBn8jAEEQayIGJAACQCABKAIEIgVFBEAgAEGAgICAeDYCAAwBCyABIAVBAWs2AgQgBkEEaiEFIAEoAgAhByMAQRBrIgMkACADQgA3AwgCQAJAAn8gBygCBCIEQQdNBEAgA0KBygA3AwggA0EIahC7BwwBCyADQQhqQQggBygCACIBQQhBsNjAABDeByAHIARBCGs2AgQgByABQQhqNgIAIAMgAykDCBDeAiADKAIARQ0BIAMoAgQLIQEgBUGAgICAeDYCACAFIAE2AgQMAQsgAygCBCEBIwBB4ABrIgIkACACIAc2AhQgAiABNgIYIAJBCGpBpJIBIAEgAUGkkgFPGxDJBSACQQA2AiQgAiACKQMINwIcIAJBKGogAkEUahCmAgJAAkAgAigCQCIEQYGAgIB4RwRAA0AgBEGAgICAeEYNAiACKAIkIgQgAigCHEYEQCACQRxqIAQQpwYgAigCJCEECyACKAIgIARBOGxqIAJBKGoiAUE4EOcJGiACIARBAWo2AiQgASACQRRqEKYCIAIoAkAiBEGBgICAeEcNAAsLIAUgAigCKDYCBCAFQYCAgIB4NgIAIAJBHGoQnQYgAigCHEUNASACKAIgEGsMAQsgBSACKQIcNwIAIAVBCGogAkEkaigCADYCAAsgAkHgAGokAAsgA0EQaiQAIAYoAgQiAUGAgICAeEcEQCAAIAYpAgg3AgQgACABNgIADAELIAYoAgghASAAQYGAgIB4NgIAIAAgATYCBAsgBkEQaiQAC9kEAQZ/IwBBEGsiBiQAAkAgASgCBCIFRQRAIABBgICAgHg2AgAMAQsgASAFQQFrNgIEIAZBBGohBSABKAIAIQcjAEEQayIDJAACQAJAAkAgB0IIEKIGIgENACADQgA3AwggBygCDCICKAIEIgRBB00EQCADQoKAgICAvokINwMIIANBCGoQuwchAQwBCyADQQhqQQggAigCACIBQQhBxMvAABDeByACIARBCGs2AgQgAiABQQhqNgIAIAMgAykDCBDeAiADKAIARQ0BIAMo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AARAIABBA3QhAQNAIANCCBCMBiIADQIgAUEIayIBDQALC0EAIQALIAJBEGokACAAC3MBAn8jAEEQayICJAACQCABKAIEIgNFBEAgAEEANgIADAELIAEgA0EBazYCBCACQQhqIAEoAgAQqQMgAigCCEUEQCAAIAIoAgw2AgQgAEEBNgIADAELIAIoAgwhASAAQQI2AgAgACABNgIECyACQRBqJAALcwECfyMAQRBrIgIkAAJAIAEoAgQiA0UEQCAAQQA2AgAMAQsgASADQQFrNgIEIAJBCGogASgCABCAAyACKAIIRQRAIAAgAigCDDYCBCAAQQE2AgAMAQsgAigCDCEBIABBAjYCACAAIAE2AgQLIAJBEGokAAt2AAJAIAIEQCACZ0EfcyICQRFPDQEgAEEAOwEgIAAgATsBHCAAQRA2AhggACACNgIUIABBADsBECAAIAM2AiggAEIANwMIIABCATcDACAAQX8gAnRBf3M7AR4PC0GYycEAEP0GAAtB8JfAAEEyQcyYwAAQzAYAC3wBAn8jAEEQayICJAACfwJAAkACQEECIAAoAgAiAC0AAEEEa0H/AXEiAyADQQJPG0EBaw4CAQIACyABQcirwgBBHBCFCAwCCyABQeSrwgBBGhCFCAwBCyACIAA2AgwgAUH+q8IAQQcgAkEMakGIrMIAEMwCCyACQRBqJAALbQEBfyMAQTBrIgMkACADIAA2AgAgAyABNgIEIANBFGpCAjcCACADQSxqQRY2AgAgA0ECNgIMIANB1KjDADYCCCADQRY2AiQgAyADQSBqNgIQIAMgA0EEajYCKCADIAM2AiAgA0EIaiACEPwGAAttAQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EUakICNwIAIANBLGpBFjYCACADQQI2AgwgA0H8osMANgIIIANBFjYCJCADIANBIGo2AhAgAyADNgIoIAMgA0EEajYCICADQQhqIAIQ/AYAC20BAX8jAEEwayIDJAAgAyAANgIAIAMgATYCBCADQRRqQgI3AgAgA0EsakEWNgIAIANBAjYCDCADQfSowwA2AgggA0EWNgIkIAMgA0EgajYCECADIANBBGo2AiggAyADNgIgIANBCGogAhD8BgALbQEBfyMAQTBrIgMkACADIAA2AgAgAyABNgIEIANBFGpCAjcCACADQSxqQRY2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AGsiAyQAIAdBBGoiBSgCBCEEIAUoAgAgASACRwRAIAUoAgggBEE4bGohBSAEIAIgAWtByABuIgJqIQQDQCADQUBrIgogAUEwEOcJGiADQQhqIgsgChCfAiADIAFBQGstAAA6ADggAyABQThqKAIANgI0IAMgAUE0aigCADYCMCADIAFBPGooAgA2AiwgAyABQTBqKAIANgIoIAFByABqIQEgBSALQTgQ5wlBOGohBSACQQFrIgINAAsLIAQ2AgAgA0HwAGokACAHQRBqJAAgAEEIaiAIKAIANgIAIAAgBikCFDcCACAGQSBqJAALawECfyMAQSBrIgEkACABIAAoAgAiAEEBcSICNgIEIAJFBEAgAUEgaiQAIABBAXYPCyABQgA3AhQgAUH8n8AANgIQIAFBATYCDCABQeSnwAA2AgggAUEEakGMp8AAIAFBCGpBmKjAABCLBwALVAEDfyAAKAIMIgEgACgCCCICRwRAIAEgAmtBAnYhAQNAIAIoAgAiA0GEAU8EQCADEAILIAJBBGohAiABQQFrIgENAAsLIAAoAgQEQCAAKAIAEGsLC2gAIwBBMGsiACQAQYDNwwAtAAAEQCAAQRhqQgE3AgAgAEECNgIQIABB+PbCADYCDCAAQRY2AiggACABNgIsIAAgAEEkajYCFCAAIABBLGo2AiQgAEEMakGg98IAEPwGAAsgAEEwaiQAC00BAX8jAEEQayIDJAAgA0GHgICAeDYCACADEM0GIAMgAq03AwAgASgCECgCACADQQgQiwlBACECIAAgATYCBCAAIAI2AgAgA0EQaiQAC0IBAn8jAEEQayICJAAgAkGHgICAeDYCBCACQQRqEM0GIAEgASkDAEIIfDcDACAAIAE2AgQgACADNgIAIAJBEGokAAuZAQECfyMAQbABayIBJAAjAEHAAWsiAiQAAkACQCAABEAgACgCAA0BIABBADYCACACQQhqIABBuAEQ5wkaIAEgAkEQakGwARDnCRogABBrIAJBwAFqJAAMAgsQ0gkACxDTCQALIAFBjAFqKAIABEAgAUGQAWooAgAQawsgAUHIAGooAgAEQCABQcwAaigCABBrCyABQbABaiQAC1YBAX4CQCADQcAAcUUEQCADRQ0BIAJBACADa0E/ca2GIAEgA0E/ca0iBIiEIQEgAiAEiCECDAELIAIgA0E/ca2I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AgAiAUEDRiABQQJGcg0AAkAgAUUEQCAAKAIEIgBBgwFLDQEMAgsgACgCBCIBQYQBTwRAIAEQAgsgACgCCCIAQYQBSQ0BCyAAEAILC4UBAQF+AkACQCAArSABrX4iAkIgiKcNACACpyIAQUBLIABBAEhyDQBBgc3DAC0AABogAEHAABCECSIBDQFBwAAgABDfCQALIwBBIGsiACQAIABBFGpCADcCACAAQQE2AgwgAEGg5sIANgIIIABBjObCADYCECAAQQhqQYTnwgAQ/AYACyABC1sBAX8jAEEgayIDJAAgAkUEQCADQRRqQgA3AgAgA0EBNgIMIANBkLzAADYCCCADQfyfwAA2AhAgA0EIakHEvMAAEPwGAAsgACACNgIEIAAgATYCACADQSBqJAALWgIBfwF+IwBBEGsiAiQAIAApAwAhAyACIABBCGopAwA3AwggAiADNwMAIAEoAhAiASgCACACQRAQiwkgAiAANQIQNwMAIAEoAgAgAkEIEIsJIAJBEGokAEEAC04BAX8CQCACIANNBEAgASgCBCIFIANJDQEgASgCACEBIAAgAyACazYCBCAAIAEgAkEDdGo2AgAPCyACIAMgBBDCBQALIAMgBSAEEMEFAAtWAQF/IwBBEGsiAiQAAkAgAC0AAEUEQCACQQA2AgggASgCECgCACACQQhqQQQQiwkMAQsgAkEBNgIMIAEoAhAoAgAgAkEMakEEEIsJCyACQRBqJABBAAswAQF/IABBBGohAQJAIAAoAgBFBEAMAQsgARCdBgsgASgCAARAIABBCGooAgAQawsLWwEBfyMAQSBrIgMkACACRQRAIANBFGpCADcCACADQQE2AgwgA0Hw/8EANgIIIANBsPDBADYCECADQQhqQaiAwgAQ/AYACyAAIAI2AgQgACABNgIAIANBIGokAAtKAQF/IwBBEGsiAiQAAkAgACgCACIABEAgAiABNgIEIAJBkwI2AgAgACACEJgCDAELIAFBfHEiAEEMahDWAyAAEGsLIAJBEGokAAtQAQF/AkAgACgCACIBRQ0AIAEgASgCACIBQQFrNgIAIAFBAUYEQCAAEPwFCyAAKAIEIgEgASgCACIBQQFrNgIAIAFBAUcNACAAQQRqEMEDCwuMAwIJfwF+IwBBEGsiAiQAIAIgARC+ASACKAIAIQEgAiACKAIEIgMgAigC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DQEgACkDECIDUA0CIAIgA3wiAyACVA0DIAIgBFQNBCADQoCAgICAgICAIFoNBSAaIAAvARgiADsBCCAaIAIgBH0iBDcDACAAIABBIGsgACADQoCAgIAQVCIBGyIYQRBrIBggA0IghiADIAEbIgNCgICAgICAwABUIgEbIhhBCGsgGCADQhCGIAMgARsiA0KAgICAgICAgAFUIgEbIhhBBGsgGCADQgiGIAMgARsiA0KAgICAgICAgBBUIgEbIhhBAmsgGCADQgSGIAMgARsiA0KAgICAgICAgMAAVCIBGyADQgKGIAMgARsiBUIAWSIYayIBa8EiIUEASA0GIBpCfyAhrSIGiCIDIASDNwMQIAMgBFQNCiAaIAA7AQggGiACNwMAIBogAiADgzcDECACIANWDQpBoH8gAWvBQdAAbEGwpwVqQc4QbSIAQdEATw0HIABBBHQiAEGAkMMAaikDACIHQv////8PgyIDIAIgBkI/gyIChiIIQiCIIhF+IglCIIgiFSAHQiCIIgYgEX58IAYgCEL/////D4MiB34iCEIgiCIWfCELIAlC/////w+DIAMgB35CIIh8IAhC/////w+DfEKAgICACHxCIIghEkIBQQAgASAAQYiQwwBqLwEAamtBP3GtIgmGIgdCAX0hDCADIAQgAoYiAkIgiCIEfiIIQv////8PgyADIAJC/////w+DIgJ+QiCIfCACIAZ+IgJC/////w+DfEKAgICACHxCIIghDyAEIAZ+IQQgAkIgiCECIAhCIIghCCAAQYqQwwBqLwEAIQEgBiAFIBithiIFQiCIIhN+IhQgAyATfiIKQiCIIg18IAYgBUL/////D4MiBX4iDkIgiCIQfCAKQv////8PgyADIAV+QiCIfCAOQv////8Pg3xCgICAgAh8QiCIIg58QgF8IgogCYinIgBBkM4ATwRAIABBwIQ9SQ0JIABBgMLXL08EQEEIQQkgAEGAlOvcA0kiGBshIUGAwtcvQYCU69wDIBgbDAsLQQZBByAAQYCt4gRJIhgbISFBwIQ9QYCt4gQgGBsMCgsgAEHkAE8EQEECQQMgAEHoB0kiGBshIUHkAEHoByAYGwwKC0EKQQEgAEEJSyIhGwwJC0HTi8MAQRxB0JrDABDMBgALQYCMwwBBHUHgmsMAEMwGAAtBsIzDAEEcQfCawwAQzAYAC0GUjsMAQTZBrJzDABDMBgALQcyNwwBBN0GcnMMAEMwGAAtBkJvDAEEtQcCbwwAQzAYAC0HDiMMAQR1BhInDABDMBgALIABB0QBBwJrDABDABQALQQRBBSAAQaCNBkkiGBshIUGQzgBBoI0GIBgbCyEYIAsgEnwhCyAKIAyDIQMgISABa0EBaiEdIAogBCAIfCACfCAPfCIPfSIXQgF8IgUgDIMhBEEAIQECQAJAAkACQAJAAkACQAJAA0AgACAYbiEeIAFBEUYNAiABICJqIiMgHkEwaiIgOgAAAkAgACAYIB5sayIArSAJhiIIIAN8IgIgBVoEQCABICFHDQEgAUEBaiEBQgEhAgNAIAIhBSAEIQYgAUERTw0GIAEgImogA0IKfiIDIAmIp0EwaiIYOgAAIAFBAWohASAFQgp+IQIgBkIKfiIEIAMgDIMiA1gNAAsgAiAKIAt9fiIJIAJ8IQggBCADfSAHVCIADQcgCSACfSIJIANWDQMMBwsgBSACfSIEIBitIAmGIgVUIRggCiALfSIJQgF8IQcgBCAFVCAJQgF9IgkgAlhyDQUgAyAFfCICIBV8IBZ8IBJ8IAYgESATfX58IA19IBB9IA59IQYgDSAQfCAOfCAUfCEEQgAgCyADIAh8fH0hC0ICIA8gAiAIfHx9IQwDQCACIAh8Ig0gCVQgBCALfCAGIAh8WnJFBEAgAyAIfCECQQAhGAwHCyAjICBBAWsiIDoAACADIAV8IQMgBCAMfCEKIAkgDVYEQCAFIAZ8IQYgAiAFfCECIAQgBX0hBCAFIApYDQELCyAFIApWIRggAyAIfCECDAULIAFBAWohASAYQQpJIBhBCm4hGEUNAAtB4JvDAEEZQdCbwwAQzAYACyABICJqQQFrISEgBkIKfiADIAd8fSEKIAcgC0IKfiANIBB8IA58IBR8Qgp+fSAFfnwhCyAJIAN9IQxCACEGA0AgAyAHfCICIAlUIAYgDHwgAyALfFpyRQRAQQAhAAwFCyAhIBhBAWsiGDoAACAGIAp8Ig0gB1QhACACIAlaDQUgBiAHfSEGIAIhAyAHIA1YDQALDAQLQRFBEUH8m8MAEMAFAAsgAUERQYycwwAQwAUACwJAIAIgB1ogGHINACAHIAIgBXwiA1ggByACfSADIAd9VHENACAbQQA2AgAMBAsgAiAXQgN9WCACQgJacUUEQCAbQQA2AgAMBAsgGyAdOwEIIBsgAUEBajYCBAwCCyADIQILAkAgAiAIWiAAcg0AIAggAiAHfCIDWCAIIAJ9IAMgCH1UcQ0AIBtBADYCAAwCCyACIAVCWH4gBHxYIAIgBUIUflpxRQRAIBtBADYCAAwCCyAbIB07AQggGyABNgIECyAbICI2AgALIBpBMGokAAwBCyAaQQA2AhgjAEEQayIAJAAgACAaNgIMIAAgGkEQajYCCEEAIABBCGpBjKPDACAAQQxqQYyjwwAgGkEYakGUicMAEKIBAAsCQCAZKAIgRQRAIBlB0ABqIS0gGUEPaiEjIwBBoAprIgEkAAJAAkACQAJAAkACQAJAAkACQAJAIAECfwJAAkACQAJAAkACQAJAAkACQAJAAkAgGUHgAGoiACkDACICUEUEQCAAKQMIIgNQDQEgACkDECIEUA0CIAIgBHwiBSACVA0DIAIgA1QNBCAALAAaIScgAC8BGCEAIAEgAj4CACABQQFBAiACQoCAgIAQVCIYGzYCoAEgAUEAIAJCIIinIBgbNgIEIAFBCGpBAEGYARDkCRogASADPgKkASABQQFBAiADQoCAgIAQVCIYGzYCxAIgAUEAIANCIIinIBgbNgKoASABQawBakEAQZgBEOQJGiABIAQ+AsgCIAFBAUECIARCgICAgBBUIhgbNgLoAyABQQAgBEIgiKcgGBs2AswCIAFB0AJqQQBBmAEQ5AkaIAFB8ANqQQBBnAEQ5AkaIAFBATYC7AMgAUEBNgKMBSAArcMgBUIBfXl9QsKawegEfkKAoc2gtAJ8QiCIpyIYwSEkAkAgAMEiGkEATgRAIAEgABCNARogAUGkAWogABCNARogAUHIAmogABCNARoMAQsgAUHsA2pBACAaa8EQjQEaCwJAICRBAEgEQCABQQAgJGtB//8DcSIAEFIgAUGkAWogABBSIAFByAJqIAAQUgwBCyABQewDaiAYQf//A3EQUgsgASgCoAEhGCABQfwIaiABQaABEOcJGiABIBg2ApwKIBggASgC6AMiGiAYIBpLGyIbQShLDRQgG0UEQEEAIRsMBwsgG0EBcSEeIBtBAUYNBSAbQX5xISAgAUH8CGohACABQcgCaiEdA0AgACAcIAAoAgAiKSAdKAIAaiIhaiIcNgIAIABBBGoiIiAiKAIAIiwgHUEEaigCAGoiIiAhIClJIBwgIUlyaiIhNgIAICIgLEkgISAiSXIhHCAdQQhqIR0gAEEIaiEAICAgH0ECaiIfRw0ACwwFC0HTi8MAQRxB8IvDABDMBgALQYCMwwBBHUGgjMMAEMwGAAtBsIzDAEEcQcyMwwAQzAYAC0GUjsMAQTZBzI7DABDMBgALQcyNwwBBN0GEjsMAEMwGAAsgHgR/IB9BAnQiACABQfwIamoiHyAfKAIAIh8gAUHIAmogAGooAgBqIgAgHGoiITYCACAAIB9JIAAgIUtyBSAcC0UNACAbQSdLDQEgAUH8CGogG0ECdGpBATYCACAbQQFqIRsLIAEgGzYCnAogASgCjAUiHyAbIBsgH0kbIgBBKU8NDiAAQQJ0IQACQANAIAAEQEF/IABBBGsiACABQfwIamooAgAiGyAAIAFB7ANqaigCACIhRyAbICFLGyIdRQ0BDAILC0F/QQAgABshHQsgHSAnTgRAIBhFBEBBACEYDAQLIBhBAWtB/////wNxIgBBAWoiG0EDcSEdIABBA0kEQCABIQBCACECDAMLIBtB/P///wdxISEgASEAQgAhAgNAIAAgADUCAEIKfiACfCICPgIAIABBBGoiGyAbNQIAQgp+IAJCIIh8IgI+AgAgAEEIaiIbIBs1AgBCCn4gAkIgiHwiAj4CACAAQQxqIhsgGzUCAEIKfiACQiCIfCICPgIAIAJCIIghAiAAQRBqIQAgIUEEayIhDQALDAILICRBAWohJAwJCyAbQShB+LvDABDABQALIB0EQANAIAAgADUCAEIKfiACfCICPgIAIABBBGohACACQiCIIQIgHUEBayIdDQALCyACpyIARQ0AIBhBJ0sNASABIBhBAnRqIAA2AgAgGEEBaiEYCyABIBg2AqABIAEoAsQCIhhBKU8NE0EAIRtBACAYRQ0CGiAYQQFrQf////8DcSIAQQFqIiFBA3EhHSAAQQNJBEAgAUGkAWohAEIAIQIMAgsgIUH8////B3EhISABQaQBaiEAQgAhAgNAIAAgADUCAEIKfiACfCICPgIAIABBBGoiIiAiNQIAQgp+IAJCIIh8IgI+AgAgAEEIaiIiICI1AgBCCn4gAkIgiHwiAj4CACAAQQxqIiIgIjUCAEIKfiACQiCIfCICPgIAIAJCIIghAiAAQRBqIQAgIUEEayIhDQALDAELIBhBKEH4u8MAEMAFAAsgHQRAA0AgACAANQIAQgp+IAJ8IgI+AgAgAEEEaiEAIAJCIIghAiAdQQFrIh0NAAsLIBggAqciAEUNABogGEEnSw0BIAFBpAFqIBhBAnRqIAA2AgAgGEEBags2AsQCIBpFDQIgGkEBa0H/////A3EiAEEBaiIYQQNxIR0gAEEDSQRAIAFByAJqIQBCACECDAILIBhB/P///wdxISEgAUHIAmohAEIAIQIDQCAAIAA1AgBCCn4gAnwiAj4CACAAQQRqIhggGDUCAEIKfiACQiCIfCICPgIAIABBCGoiGCAYNQIAQgp+IAJCIIh8IgI+AgAgAEEMaiIYIBg1AgBCCn4gAkIgiHwiAj4CACACQiCIIQIgAEEQaiEAICFBBGsiIQ0ACwwBCyAYQShB+LvDABDABQALIB0EQANAIAAgADUCAEIKfiACfCICPgIAIABBBGohACACQiCIIQIgHUEBayIdDQALCyACpyIARQRAIAEgGjYC6AMMAgsgGkEnSw0CIAFByAJqIBpBAnRqIAA2AgAgGkEBaiEbCyABIBs2AugDCyABQZAFaiIYIAFB7ANqIgBBoAEQ5wkaIAEgHzYCsAYgGEEBEI0BITMgASgCjAUhGCABQbQGaiIaIABBoAEQ5wkaIAEgGDYC1AcgGkECEI0BITQgASgCjAUhGCABQdgHaiIaIABBoAEQ5wkaIAEgGDYC+AggGkEDEI0BITUCQCABKAKgASIfIAEoAvgIIiwgHyAsSxsiG0EoTQRAIAFBjAVqITYgAUGwBmohNyABQdQHaiE4IAEoAowFISkgASgCsAYhLyABKALUByExQQAhGgNAIBohISAbQQJ0IQACQANAIAAEQEF/IAAgOGooAgAiGCAAQQRrIgAgAWooAgAiGkcgGCAaSxsiHUUNAQwCCwtBf0EAIAAbIR0LQQAhHgJAAkACQAJAAkACQCABAn8gHUEBTQRAIBsEQEEBIRxBACEfIBtBAUcEQCAbQX5xISIgASIAQdgHaiEdA0AgACAcIAAoAgAiHiAdKAIAQX9zaiIYaiIcNgIAIABBBGoiGiAaKAIAIiAgHUEEaigCAEF/c2oiGiAYIB5JIBggHEtyaiIYNgIAIBogIEkgGCAaSXIhHCAdQQhqIR0gAEEIaiEAICIgH0ECaiIfRw0ACwsgG0EBcQR/IAEgH0ECdCIAaiIYIBgoAgAiGCAAIDVqKAIAQX9zaiIAIBxqIho2AgAgACAYSSAAIBpLcgUgHAtFDRELIAEgGzYCoAFBCCEeIBshHwsCQAJAAkACQAJAIB8gMSAfIDFLGyIYQSlJBEAgGEECdCEAAkADQCAABEBBfyAAIDdqKAIAIhogAEEEayIAIAFqKAIAIhtHIBogG0sbIh1FDQEMAgsLQX9BACAAGyEdCwJAIB1BAUsEQCAfIRgMAQsgGARAQQEhHEEAIR8gGEEBRwRAIBhBfnEhIiABIgBBtAZqIR0DQCAAIBwgACgCACIgIB0oAgBBf3NqIhpqIhw2AgAgAEEEaiIbIBsoAgAiKCAdQQRqKAIAQX9zaiIbIBogIEkgGiAcS3JqIho2AgAgGyAoSSAaIBtJciEcIB1BCGohHSAAQQhqIQAgIiAfQQJqIh9HDQALCyAYQQFxBH8gASAfQQJ0IgBqIhogGigCACIaIAAgNGooAgBBf3NqIgAgHGoiGzYCACAAIBpJIAAgG0tyBSAcC0UNFwsgASAYNgKgASAeQQRyIR4LIBggLyAYIC9LGyIaQSlPDQEgGkECdCEAAkADQCAABEBBfyAAIDZqKAIAIhsgAEEEayIAIAFqKAIAIh9HIBsgH0sbIh1FDQEMAgsLQX9BACAAGyEdCwJAIB1BAUsEQCAYIRoMAQsgGgRAQQEhHEEAIR8gGkEBRwRAIBpBfnEhIiABIgBBkAVqIR0DQCAAIBwgACgCACIgIB0oAgBBf3NqIhhqIhw2AgAgAEEEaiIbIBsoAgAiKCAdQQRqKAIAQX9zaiIbIBggIEkgGCAcS3JqIhg2AgAgGyAoSSAYIBtJciEcIB1BCGohHSAAQQhqIQAgIiAfQQJqIh9HDQALCyAaQQFxBH8gASAfQQJ0IgBqIhggGCgCACIYIAAgM2ooAgBBf3NqIgAgHGoiGzYCACAAIBhJIAAgG0tyBSAcC0UNFwsgASAaNgKgASAeQQJqIR4LIBogKSAaIClLGyIbQSlPDRMgG0ECdCEAAkADQCAABEBBfyAAQQRrIgAgAUHsA2pqKAIAIhggACABaigCACIfRyAYIB9LGyIdRQ0BDAILC0F/QQAgABshHQsCQCAdQQFLBEAgGiEbDAELIBsEQEEBIRxBACEfIBtBAUcEQCAbQX5xISIgASIAQewDaiEdA0AgACAcIAAoAgAiICAdKAIAQX9zaiIYaiIcNgIAIABBBGoiGiAaKAIAIiggHUEEaigCAEF/c2oiGiAYICBJIBggHEtyaiIYNgIAIBogKEkgGCAaSXIhHCAdQQhqIR0gAEEIaiEAICIgH0ECaiIfRw0ACwsgG0EBcQR/IAEgH0ECdCIAaiIYIBgoAgAiGCABQewDaiAAaigCAEF/c2oiACAcaiIaNgIAIAAgGEkgACAaS3IFIBwLRQ0XCyABIBs2AqABIB5BAWohHgsgIUERRg0DICEgI2ogHkEwajoAACAbIAEoAsQCIiIgGyAiSxsiAEEpTw0UICFBAWohGiAAQQJ0IQACQANAIAAEQEF/IABBBGsiACABQaQBamooAgAiGCAAIAFqKAIAIh9HIBggH0sbIhhFDQEMAgsLQX9BACAAGyEYCyABQfwIaiABQaABEOcJGiABIBs2ApwKIBsgASgC6AMiICAbICBLGyIeQShLDQQCQCAeRQRAQQAhHgwBC0EAIRxBACEfIB5BAUcEQCAeQX5xITkgAUH8CGohACABQcgCaiEdA0AgACAcIAAoAgAiOiAdKAIAaiIoaiIqNgIAIABBBGoiHCAcKAIAIisgHUEEaigCAGoiHCAoIDpJICggKktyaiIoNgIAIBwgK0kgHCAoS3IhHCAdQQhqIR0gAEEIaiEAIDkgH0ECaiIfRw0ACwsgHkEBcQR/IB9BAnQiACABQfwIamoiHyAfKAIAIh8gAUHIAmogAGooAgBqIgAgHGoiHTYCACAAIB9JIAAgHUtyBSAcC0UNACAeQSdLDQMgAUH8CGogHkECdGpBATYCACAeQQFqIR4LIAEgHjYCnAogKSAeIB4gKUkbIgBBKU8NFCAAQQJ0IQACQANAIAAEQEF/IABBBGsiACABQfwIamooAgAiHyAAIAFB7ANqaigCACIdRyAdIB9JGyIdRQ0BDAILC0F/QQAgABshHQsCQCAYICdIIgBFIB0gJ05xRQRAIB0gJ04NFCAADQEMEwtBACEYQQAgG0UNBxogG0EBa0H/////A3EiAEEBaiIfQQNxIR0gAEEDSQRAIAEhAEIAIQIMBwsgH0H8////B3EhISABIQBCACECA0AgACAANQIAQgp+IAJ8IgI+AgAgAEEEaiIfIB81AgBCCn4gAkIgiHwiAj4CACAAQQhqIh8gHzUCAEIKfiACQiCIfCICPgIAIABBDGoiHyAfNQIAQgp+IAJCIIh8IgI+AgAgAkIgiCECIABBEGohACAhQQRrIiENAAsMBgsgAUEBEI0BGiABKAKgASIAIAEoAowFIhggACAYSxsiAEEpTw0UIABBAnQhACABQQRrIRggAUHoA2ohGwJAA0AgAARAIAAgGGohHyAAIBtqISIgAEEEayEAQX8gIigCACIiIB8oAgAiH0cgHyAiSRsiHUUNAQwCCwtBf0EAIAAbIR0LIB1BAkkNEQwSCwwbCyAaQShB+LvDABDBBQALIB5BKEH4u8MAEMAFAAtBEUERQZyNwwAQwAUACyAeQShB+LvDABDBBQALIB0EQANAIAAgADUCAEIKfiACfCICPgIAIABBBGohACACQiCIIQIgHUEBayIdDQALCyAbIAKnIgBFDQAaIBtBJ0sNASABIBtBAnRqIAA2AgAgG0EBagsiHzYCoAEgIkUNAiAiQQFrQf////8DcSIAQQFqIhhBA3EhHSAAQQNJBEAgAUGkAWohAEIAIQIMAgsgGEH8////B3EhISABQaQBaiEAQgAhAgNAIAAgADUCAEIKfiACfCICPgIAIABBBGoiGCAYNQIAQgp+IAJCIIh8IgI+AgAgAEEIaiIYIBg1AgBCCn4gAkIgiHwiAj4CACAAQQxqIhggGDUCAEIKfiACQiCIfCICPgIAIAJCIIghAiAAQRBqIQAgIUEEayIhDQALDAELIBtBKEH4u8MAEMAFAAsgHQRAA0AgACAANQIAQgp+IAJ8IgI+AgAgAEEEaiEAIAJCIIghAiAdQQFrIh0NAAsLIAKnIgBFBEAgIiEYDAELICJBJ0sNASABQaQBaiAiQQJ0aiAANgIAICJBAWohGAsgASAYNgLEAiAgRQRAQQAhIAwDCyAgQQFrQf////8DcSIAQQFqIhhBA3EhHSAAQQNJBEAgAUHIAmohAEIAIQIMAgsgGEH8////B3EhISABQcgCaiEAQgAhAgNAIAAgADUCAEIKfiACfCICPgIAIABBBGoiGCAYNQIAQgp+IAJCIIh8IgI+AgAgAEEIaiIYIBg1AgBCCn4gAkIgiHwiAj4CACAAQQxqIhggGDUCAEIKfiACQiCIfCICPgIAIAJCIIghAiAAQRBqIQAgIUEEayIhDQALDAELICJBKEH4u8MAEMAFAAsgHQRAA0AgACAANQIAQgp+IAJ8IgI+AgAgAEEEaiEAIAJCIIghAiAdQQFrIh0NAAsLIAKnIgBFDQAgIEEnSw0DIAFByAJqICBBAnRqIAA2AgAgIEEBaiEgCyABICA2AugDIB8gLCAfICxLGyIbQShNDQALCwwECyAgQShB+LvDABDABQALIBpBKEH4u8MAEMAFAAsgGiAjaiEYICEhAEF/IR0CQANAIABBf0YNASAdQQFqIR0gACAjaiAAQQFrIQAtAABBOUYNAAsgACAjaiIYQQFqIhsgGy0AAEEBajoAACAAQQJqICFLDQEgGEECakEwIB0Q5AkaDAELICNBMToAACAhBEAgI0EBakEwICEQ5AkaCyAaQRFJBEAgGEEwOgAAICRBAWohJCAhQQJqIRoMAQsgGkERQayNwwAQwAUACyAaQRFNBEAgLSAkOwEIIC0gGjYCBCAtICM2AgAgAUGgCmokAAwFCyAaQRFBvI3DABDBBQALIBtBKEH4u8MAEMEFAAsgAEEoQfi7wwAQwQUAC0GIvMMAQRpB+LvDABDMBgALIBlB2ABqIBlBKGooAgA2AgAgGSAZKQIgNwNQCyAZIBkoAlAgGSgCVCAZLwFYQQAgGUEgahCdASAZKAIEIQAgGSgCAAwDCyAZQQM2AiggGUGBoMMANgIkIBlBAjsBIEEBIQBBqIjDACElIBlBIGoMAgsgGUEDNgIoIBlBhKDDADYCJCAZQQI7ASAgGUEgagwBCyAZQQI7ASAgGUEBNgIoIBlBh6DDADYCJCAZQSBqCyEBIBlB3ABqIAA2AgAgGSABNgJYIBkgLjYCVCAZICU2AlAgGUHQAGoQeCAZQYABaiQADwsgGEEoQfi7wwAQwQUAC/0FAgZ+BH8jAEEgayIMJAAgASEEQgAhASMAQSBrIgokAAJAAkACQCADUARAIAJQIAJQIAMgBFZxcg0BIApBEGogA0IAQcAAIAJ5p2siC0H/AHEQ7QVCASALQT9xrYYhCCAKQRhqKQMAIQYgCikDECEHA0AgAiAGfSAEIAdUrX0iAUIAWQRAIAUgCIQhBSABUCAEIAd9IgQgA1RxDQQgASECCyAGQj+GIAdCAYiEIQcgCEIBiCEIIAZCAYghBgwACwALAkACQAJAAkAgAlBFBEAgAiADVA0DIAIgA1ENASACIAIgA4AiCCADfn0hASADQoCAgIAQWg0CIARC/////w+DIAFCIIYgBEIgiIQiASABIAOAIgEgA359QiCGhCICIAMgAiADgCICfn0hBCABQiCGIAKEIQUgAUIgiCAIhCEIQgAhAQwHCyAEIAQgA4AiBSADfn0hBAwFCyAEIAQgAoAiBSACfn0hBEIBIQgMBQsgAVAgAyAEVnENASADQgGIIQYgA0I/hiEHQoCAgICAgICAgH8hAgNAAkAgASAGfSAEIAdUrX0iBUIAWQRAIAQgB30hBCACIAmEIQkgBVANASAFIQELIAZCP4YgB0IBiIQhByACQgGIIQIgBkIBiCEGDAELCyAEIAOAIgEgCYQhBSAEIAEgA359IQRCACEBDAQLIAogA0IAQT8gA3mnIgsgAnmnIg1rQUBrIAsgDUYbIgsQ7QVCASALQT9xrYYhASAKQQhqKQMAIQYgCikDACEHA0ACQCACIAZ9IAQgB1StfSIFQgBZBEAgBCAHfSEEIAEgCYQhCSAFUA0BIAUhAgsgBkI/hiAHQgGIhCEHIAFCAYghASAGQgGIIQYMAQsLIAQgA4AiASAJhCEFIAQgASADfn0hBEIAIQEMAgsMAgsgAiEBC0IAIQgLIAwgBDcDECAMIAU3AwAgDEEYaiILIAE3AwAgDCAINwMIIApBIGokACAMKQMQIQEgACALKQMANwMIIAAgATcDACAMQSBqJAAL4AMCB38EfiABKAIAIQcgASgCBCECIAEoAighAyABKAIsIQQgASgCMCEIIAEoAjQhBSABKQMIIQsgAUEQaikDACEMIAEpAxghCSABQSBqKQMAIQojAEHgAGsiASQAIAEgBDYCECABIAM2AgwgASAFNgIUAkACQCAJIAqEUEUgCXsgCnt8QgJacUUEQCADIARsIAVsIgZFDQEgAiAGcEUNAiABQdQAakEoNgIAIAFBzABqQSo2AgAgAUHEAGpBKzYCACABQTxqQRY2AgAgAUEkakIFNwIAIAEgBjYCWCABQQU2AhwgAUH0wsAANgIYIAFBFjYCNCABIAI2AlwgASABQTBqNgIgIAEgAUEQajYCUCABIAFBDGo2AkggASABQRRqNgJAIAEgAUHcAGo2AjggASABQdgAajYCMCABQRhqQZzDwAAQ/AYACyABQTxqQgA3AgAgAUEBNgI0IAFB6L3AADYCMCABQfyfwAA2AjggAUEwakHYwcAAEPwGAAtBgKDAAEE5QejBwAAQzAYACyAAIAk3AxggACALNwMIIAAgBTYCNCAAIAg2AjAgACAENgIsIAAgAzYCKCAAIAI2AgQgACAHNgIAIABBIGogCjcDACAAQRBqIAw3AwAgAUHgAGokAAs3AQJ/IAAoAhBBAWsiAUUEQEHgn8AAQRlBvLnAABDMBgALIAAoAhQiACABbiICIAAgASACbEdqCzwAAkAgACABEJIHIgANACABQggQjAYiAA0AIAFCCBCMBiIADQAgAUIIEIwGIgANACABQgQQjAYhAAsgAAs+AQF/IAIgASgCACABKAIIIgNrSwRAQeyDwQBBL0GchMEAEMwGAAsgACACNgIEIAAgASgCBCADQThsajYCAAs5AQF/IAAoAgAhACABKAIcIgJBEHFFBEAgAkEgcUUEQCAAIAEQ0gcPCyAAIAEQ2AMPCyAAIAEQ1wMLOQEBfyMAQRBrIgIkACACIAA2AgwgAUHEjMIAIABBDGpBzIzCACACQQxqQdyMwgAQxgIgAkEQaiQACzsBAn8jAEGQAmsiACQAIABCADcDACAAQQhqQYCCwgBB+AAQ5wkaIABBAjYCgAEgABD4BSAAQZACaiQACzsBAn8jAEGQAmsiACQAIABCADcDACAAQQhqQfiCwgBB+AAQ5wkaIABBAjYCgAEgABD4BSAAQZACaiQACz4BAX9Bgc3DAC0AABpBDEEEEIQJIgFFBEBBBEEMEN8JAAsgASAAKQIANwIAIAFBCGogAEEIaigCADYCACABCzkBAX8jAEEQayICJAAgAiABKAIAED4gAigCACEBIAAgAikDCDcDCCAAIAFBAEetNwMAIAJBEGokAAunBAIGfwN+IAAoAgAhAiABKAIcIgBBEHFFBEAgAEEgcUUEQCACIAEQiggPCwJ/QQAhACMAQYABayIEJAAgAkEIaikDACEJIAIpAwAhCEGAASECIARBgAFqIQUCQAJAA0AgAkUNASAFQQFrQTBBNyAIpyIGQQ9xIgNBCkkbIANqOgAAAkAgCVAiByAIQhBUcQRAIAJBAWshAgwBCyAFQQJrIgVBMEE3IAZB/wFxIgNBoAFJGyADQQR2ajoAACAJQjiGIAhCgAJUIQMgAkECayECIAlCCIghCSAIQgiIhCEIIAMgB3FFDQELCyACQYABSw0BIAIhAAsgAUEBQaylwwBBAiAAIARqQYABIABrEF8gBEGAAWokAAwBCyACQYABQZylwwAQvwUACw8LAn9BACEAIwBBgAFrIgQkACACQQhqKQMAIQkgAikDACEIQYABIQIgBEGAAWohBQJAAkADQCACRQ0BIAVBAWtBMEHXACAIpyIGQQ9xIgNBCkkbIANqOgAAAkAgCVAiByAIQhBUcQRAIAJBAWshAgwBCyAFQQJrIgVBMEHXACAGQf8BcSIDQaABSRsgA0EEdmo6AAAgCUI4hiAIQoACVCEDIAJBAmshAiAJQgiIIQkgCEIIiIQhCCADIAdxRQ0BCwsgAkGAAUsNASACIQALIAFBAUGspcMAQQIgACAEakGAASAAaxBfIARBgAFqJAAMAQsgAkGAAUGcpcMAEL8FAAsLQgIBfwF+QYHNwwAtAAAaQfgFQQQQhAkiAUUEQEEEQfgFEN8JAAsgACABQQBB+AUQ5AmtQiCGIgI3A0AgACACNwMACzkBAX8jAEEQayICJAAgAiAANgIMIAFB7KrCACAAQQxqQfSqwgAgAkEMakGEq8IAEMYCIAJBEGokAAs1AQF/IAAoAgAiAEFAaxDBBwJAIABBf0YNACAAIAAoAgQiAUEBazYCBCABQQFHDQAgABBrCwu+AgEDfyAAKAIAIQAgASgCHCIDQRBxRQRAIANBIHFFBEAgACABEL0JDwsjAEGAAWsiBCQAIAAtAAAhAANAIAIgBGpB/wBqQTBBNyAAQQ9xIgNBCkkbIANqOgAAIAJBAWshAiAAIgNBBHYhACADQRBPDQALIAJBgAFqIgBBgAFLBEAgAEGAAUGcpcMAEL8FAAsgAUEBQaylwwBBAiACIARqQYABakEAIAJrEF8gBEGAAWokAA8LIwBBgAFrIgQkACAALQAAIQADQCACIARqQf8AakEwQdcAIABBD3EiA0EKSRsgA2o6AAAgAkEBayECIAAiA0EEdiEAIANBEE8NAAsgAkGAAWoiAEGAAUsEQCAAQYABQZylwwAQvwUACyABQQFBrKXDAEECIAIgBGpBgAFqQQAgAmsQXyAEQYABaiQACzkBAX8gACgCACEAIAEoAhwiAkEQcUUEQCACQSBxRQRAIAAgARC8CQ8LIAAgARDYAw8LIAAgARDXAws4AQF/IwBBEGsiAyQAIANBCGogASACEI8GIAMoAgwhASAAIAMoAgg2AgAgACABNgIEIANBEGokAAs3AQF/AkAgACgCAEUNACAAKAIEIgFFDQAgASABKAIAIgFBAWs2AgAgAUEBRw0AIABBBGoQhwYLCz0BAX8CQCAAKAIAIgBFDQAgACAAKAKQCCIBQQFrNgKQCCABQQFHDQAgAEEANgIEIAAoApQIDQAgABD9AQsLQAEBfyMAQSBrIgAkACAAQRRqQgA3AgAgAEEBNgIMIABB9O7CADYCCCAAQfzqwgA2AhAgAEEIakH87sIAEPwGAAtAAQF/IwBBIGsiACQAIABBFGpCADcCACAAQQE2AgwgAEH8/cIANgIIIABB/OrCADYCECAAQQhqQbT+wgAQ/AYAC0ABAX8jAEEgayIAJAAgAEEUakIANwIAIABBATYCDCAAQeD+wgA2AgggAEH86sIANgIQIABBCGpBoP/CABD8BgALQAEBfyMAQSBrIgAkACAAQRRqQgA3AgAgAEEBNgIMIABB+IXDADYCCCAAQaCFwwA2AhAgAEEIakGAhsMAEPwGAAu4AgECfyMAQSBrIgIkACACQQE7ARwgAiABNgIYIAIgADYCFCACQaCiwwA2AhAgAkGoiMMANgIMIwBBEGsiASQAIAJBDGoiACgCCCICRQRAQfDswgBBK0GY+MIAEMwGAAsgASAAKAIMNgIMIAEgADYCCCABIAI2AgQjAEEQayIAJAAgAUEEaiIBKAIAIgJBDGooAgAhAwJAAn8CQAJAIAIoAgQOAgABAwsgAw0CQQAhAkH86sIADAELIAMNASACKAIAIgMoAgQhAiADKAIACyEDIAAgAjYCBCAAIAM2AgAgAEHI+MIAIAEoAgQiACgCCCABKAIIIAAtABAgAC0AERDhAgALIAAgAjYCDCAAQYCAgIB4NgIAIABB3PjCACABKAIEIgAoAgggASgCCCAALQAQIAAtABEQ4QIACz0BAX8jAEEgayIBJAAgAUEUakIANwIAIAFBATYCDCABQfCgwwA2AgggAUGoiMMANgIQIAFBCGogABD8BgALkwEBBX8jAEEQayIEJAAgBEEEaiECIAAoAgQhBQJAAkACQAJAIAAoAggiAUUEQEEBIQMMAQsgAUEASA0BQYHNwwAtAAAaIAFBARCECSIDRQ0CCyADIAUgARDnCSEDIAIgATYCCCACIAM2AgQgAiABNgIADAILEPsGAAtBASABEN8JAAsgAhDtBiAAEP8HIARBEGokAAvtAwIGfwR+IAEoAgAhBiABKAIEIQIgASgCKCEDIAEoAiwhBCABKAIwIQcgASkDCCEKIAFBEGopAwAhCyABKQMYIQggAUEgaikDACEJIwBB0ABrIgEkACABIAQ2AgwgASADNgIIAkACQAJAIAggCYRQRSAIeyAJe3xCAlpxRQRAIAJFDQEgAyAEbCIFRQ0CIAIgBXBFDQMgAUHEAGpBKDYCACABQTxqQSo2AgAgAUE0akEWNgIAIAFBHGpCBDcCACABIAU2AkggAUEFNgIUIAFBgMDAADYCECABQRY2AiwgASACNgJMIAEgAUEoajYCGCABIAFBDGo2AkAgASABQQhqNgI4IAEgAUHMAGo2AjAgASABQcgAajYCKCABQRBqQajAwAAQ/AYACyABQTRqQgA3AgAgAUEBNgIsIAFB6L3AADYCKCABQfyfwAA2AjAgAUEoakGovsAAEPwGAAsgAUE0akIANwIAIAFBATYCLCABQfC+wAA2AiggAUH8n8AANgIwIAFBKGpB+L7AABD8BgALQYCgwABBOUGIv8AAEMwGAAsgACAINwMYIAAgCjcDCCAAIAc2AjAgACAENgIsIAAgAzYCKCAAIAI2AgQgACAGNgIAIABBIGogCTcDACAAQRBqIAs3AwAgAUHQAGokAAsyAQF/IwBBEGsiAiQAIAIgACkDADcDACACIABBCGopAwA3AwggAiABEIoIIAJBEGokAAs2AQF/IAAoAiwgACgCJCAAKAIgbGwiAQRAIABBOGooAgAgAW4PC0Hgn8AAQRlB7KjAABDMBgALMAEBfyAARQRAQeCfwABBGUG8ucAAEMwGAAsgASAAbiICIAEgACACbEdqIABsIAFqCzYBAX8gACgCLCAAKAIkIAAoAiBsbCIBBEAgAEE4aigCACABbg8LQeCfwABBGUGsw8AAEMwGAAs5AQF/IwBBEGsiBCQAIAQgATYCDCAEIAA2AghBACAEQQhqQcyUwQAgBEEMakHMlMEAIAIgAxCiAQALOQEBfyMAQRBrIgQkACAEIAE2AgwgBCAANgIIQQAgBEEIakHclMEAIARBDGpB3JTBACACIAMQogEACzkBAX8jAEEQayIEJAAgBCABNgIMIAQgADYCCEEAIARBCGpB/JTBACAEQQxqQfyUwQAgAiADEKIBAAs5AQF/IwBBEGsiBCQAIAQgATYCDCAEIAA2AghBACAEQQhqQYyVwQAgBEEMakGMlcEAIAIgAxCiAQALNgEBfyMAQRBrIgIkACACIAA2AgwgAUG0jcIAQQVBuY3CACACQQxqQcCNwgAQpwMgAkEQaiQACzYBAX8jAEEQayICJAAgAiAANgIMIAFB8KfCAEEUQYSowgAgAkEMakGIqMIAEKcDIAJBEGokAAs5AQF/IwBBEGsiBCQAIAQgATYCDCAEIAA2AghBACAEQQhqQYTAwgAgBEEMakGEwMIAIAIgAxCiAQALOQEBfyMAQRBrIgQkACAEIAE2AgwgBCAANgIIQQAgBEEIakGUwMIAIARBDGpBlMDCACACIAMQogEACzkBAX8jAEEQayIEJAAgBCABNgIMIAQgADYCCEEAIARBCGpBrOLCACAEQQxqQaziwgAgAiADEKIBAAs0AQF/IwBBEGsiAiQAIAIgACgCADYCDCABQdfJwABBCCACQQxqQbTJwAAQzAIgAkEQaiQACzQBAX8jAEEQayICJAAgAiAAKAIANgIMIAFBy8nAAEEMIAJBDGpBtMnAABDMAiACQRBqJAALNAEBfyMAQRBrIgIkACACIAAoAgA2AgwgAUHfycAAQQ4gAkEMakG0ycAAEMwCIAJBEGokAAs5ACABKAIERQRAQQBBAEGUtMAAEMAFAAsgACABKQMINwMAIAAgASgCADYCECAAIAFBEGopAwA3AwgLOQAgASgCBEUEQEEAQQBBhLTAABDABQALIAAgASkDCDcDACAAIAEoAgA2AhAgACABQRBqKQMANwMICzIAAkAgASAAQRhqELoFIgANACABQggQjAYiAA0AIAFCCBCMBiIADQAgARD8ByEACyAACygBAX8gACgCCCIBIAAoAgwgAWtBOG4QuQYgACgCBARAIAAoAgAQawsLKAEBfyAAKAIIIgEgACgCDCABa0EMbhDEBiAAKAIEBEAgACgCABBrCws0AQF/IwBBEGsiAiQAIAIgACgCADYCDCABQeXQwQBBByACQQxqQezQwQAQzAIgAkEQaiQACzIBAX8gASgCHCICQRBxRQRAIAJBIHFFBEAgACABELwJDwsgACABENgDDwsgACABENcDCzIBAX8gASgCHCICQRBxRQRAIAJBIHFFBEAgACABENIHDwsgACABENgDDwsgACABENcDCy4AAkAgA2lBAUdBgICA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DQAgASAAKAIEIgAoAgARAQAgACgCBEUNACAAKAIIGiABEGsLCzEBAX8jAEEQayICJAAgAiAANgIMIAFBhO/BAEEMIAJBDGpBkO/BABDMAiACQRBqJAALMQEBfyMAQRBrIgIkACACIAA2AgwgAUGwicIAQQwgAkEMakG8icIAEMwCIAJBEGokAAssAQF/IwBBEGsiACQAIABBCGoiAiABQdCNwgBBCRDIByACELADIABBEGokAAssAQF/IwBBEGsiACQAIABBCGoiAiABQdmNwgBBCxDIByACELADIABBEGokAAsxAQF/IwBBEGsiASQAIAFBgICAgHg2AgQgASAAKQIANwIIIAFBBGoQ7QYgAUEQaiQACzEBAX8jAEEQayICJAAgAiAANgIMIAFBrKLCAEEIIAJBDGpBtKLCABDMAiACQRBqJAALLAEBfyMAQRBrIgAkACAAQQhqIgIgAUHMtcIAQQsQyAcgAhCwAyAAQRBqJAALLAEBfyMAQRBrIgAkACAAQQhqIgIgAUGU7sIAQQsQyAcgAhC5BSAAQRBqJAALOgEBfyAAKAIAIQECQCAALQAEDQBB7M3DACgCAEH/////B3FFDQAQ7QkNACABQQE6AAELIAFBADoAAAstACABIAJJBEBByNTBAEEhQezUwQAQzAYACyABIAJrIgEgACABQQN0aiACEHALHQAgACgCAEF8cSIAKAIEBEAgACgCABBrCyAAEGsLLwAgAEG078IANgIEIABBAjoAACABIAIoAgARAQAgAigCBARAIAIoAggaIAEQawsLjQICBH4DfwJAIAEoAgAhByABKAIEIQYgASgCKCEIIAEpAwghBCABQRBqKQMAIQUgASkDGCECIAFBIGopAwAhAyMAQSBrIgEkAAJAIAIgA4RQRSACeyADe3xCAlpxRQRAIAZFDQEgACACNwMYIAAgBDcDCCAAIAg2AiggACAGNgIEIAAgBzYCACAAQSBqIAM3AwAgAEEQaiAFNwMAIAFBIGokAAwCCyABQRRqQgA3AgAgAUEBNgIMIAFB6L3AADYCCCABQfyfwAA2AhAgAUEIakH0w8AAEPwGAAsgAUEUakIANwIAIAFBATYCDCABQbzEwAA2AgggAUH8n8AANgIQIAFBCGpBxMTAABD8BgALCzAAIAAgASgCACABKAIEIAEoAiggASkDCCABQRBqKQMAIAEpAxggAUEgaikDABCOBAsrACABIAJJBEBBidLBAEEjQZTUwQAQzAYACyACIAAgAkEDdGogASACaxBwC90CAQN/AkACQAJAIAAoAgBBAWsOAgECAAsjAEEQayICJAAgAEEEaigCACIAIAAoAoACIgFBAWs2AoACAkAgAUEBRw0AIAAgACgCQCIBIAAoAsgBIgNyNgJAIAEgA3FFBEAgAEGgAWoQlwELIAAtAIgCIABBAToAiAJFDQAgAiAANgIMIAJBDGoQ1AYLIAJBEGokAA8LIwBBEGsiAiQAIABBBGooAgAiACAAKALAASIBQQFrNgLAAQJAIAFBAUcNACAAIAAoAkAiAUEBcjYCQCABQQFxRQRAIABBgAFqEJcBCyAALQDIASAAQQE6AMgBRQ0AIAIgADYCDCACQQxqEPYHCyACQRBqJAAPCyMAQRBrIgIkACAAQQRqKAIAIgAgACgCOCIBQQFrNgI4AkAgAUEBRw0AIAAQaiAALQBAIABBAToAQEUNACACIAA2AgwgAkEMahDjBwsgAkEQaiQACzIBAX9Bgc3DAC0AABpBCEEEEIQJIgJFBEBBBEEIEN8JAAsgAiABNgIEIAIgADYCACACCzAAIAEoAhQgAiADIAFBGGooAgAoAgwRBgAhAiAAQQA6AAUgACACOgAEIAAgATYCAAsqAQF/IAAoAgAiASAAKAIEIgAoAgARAQAgACgCBARAIAAoAggaIAEQawsLKAEBfwJAIAAoAgAiAUGAgICAeEYNACAAEJ4GIAFFDQAgACgCBBBrCwspAQF/An9BvKfCABDHBiIABEAgAEGMAWoMAQsQ7AMLKAIAQYQCaigCAAsuAAJAAkACQCAAKAIADgIBAgALIABBBGoQyQcLDwsgACgCBCAAQQxqKAIAELkGCyoBAX8gACgCECIBBEAgAEEcaigCACABbg8LQeCfwABBGUHMscAAEMwGAAuaAQEDfyMAQRBrIgMkACADQQRqIQEjAEEQayICJAACQAJAIAAEQCAAKAIADQEgAEEANgIAIAJBCGogAEEIaikCADcDACACIAApAgA3AwAgASACKQIENwIAIAFBCGogAkEMaigCADYCACAAEGsgAkEQaiQADAILENIJAAsQ0wkACyABEJ4GIAEoAgAEQCABKAIEEGsLIANBEGokAAs6AQJ/QYzNwwAtAAAhAUGMzcMAQQA6AABBkM3DACgCACECQZDNwwBBADYCACAAIAI2AgQgACABNgIACycAIABCADcAACAAQRhqQgA3AAAgAEEQakIANwAAIABBCGpCADcAAAsgAQF/IAAgACABakEBayICSwRAEOwJAAsgAkEAIAFrcQsiACAAKAIAIgCtIABBf3OsQgF8IABBAE4iABsgACABEMkBC5sBAQN/IAAoAggiAiABTwRAIAEgACgCCE0EQCAAIAE2AggLDwsgASACayICIAAoAgAgACgCCCIDa0sEQCAAIAMgAhCtBgsgACgCBCIEIAAoAggiAWohAwJAAkAgAkECTwRAIANBACACQQFrIgIQ5AkaIAQgASACaiIBaiEDDAELIAJFDQELIANBADoAACABQQFqIQELIAAgATYCCAsjABD6BiAAQQhqIAI6AAAgACABNgIEIAAgAS0AAUEARzYCAAsuAQF/QYHNwwAtAAAaQYwIQQQQhAkiAUUEQEEEQYwIEN8JAAsgASAAQYwIEOcJCyMBAX8gACABIAJqQQFrIgNBACACa3E2AgQgACABIANNNgIACyYAIAAgASkDCDcDCCAAIAEpAwA3AwAgAEEQaiABQRBqKQMANwMACycBAX8gACgCDCIBBEAgACgCCCABbg8LQeCfwABBGUHEs8AAEMwGAAsiAQF/IwBBkAJrIgEkACABIAAQ8QUgARD4BSABQZACaiQACyYBAX9Bgc3DAC0AABpB4AJBBBCECSIABEAgAA8LQQRB4AIQ3wkACyoBAX8gACgCECIBRQRAQbDPwgBBGUGcz8IAEMwGAAsgAEEMaigCACABbgsmACAAIAAoAgAgACgCBEEDdEHAACABQQN0EI0INgIAIAAgATYCBAsmACAAIAAoAgAgACgCBEEEdEHAACABQQR0EI0INgIAIAAgATYCBAsfACABIANGBEAgACACIAEQ5wkaDwsgASADIAQQwwUACyUAIABFBEBBgJ7CAEEyENEJAAsgACACIAMgBCAFIAEoAhARDwALKAAgASAAKAIALQAAQQJ0IgBB7OrCAGooAgAgAEHc6sIAaigCABCFCAsgAQJ+IAApAwAiAiACQj+HIgOFIAN9IAJCAFkgARDJAQvlAQIDfwJ+IAEoAgAhBCABKAIEIQMgASgCGCECIAEpAwghBSABQRBqKQMAIQYjAEEwayIBJAAgASACNgIAAkAgAgRAIAMgAnBFDQEgAUEoakEpNgIAIAFBEGpCAjcCACABQQM2AgggAUHIuMAANgIEIAFBFjYCICABIAM2AiwgASABQRxqNgIMIAEgATYCJCABIAFBLGo2AhwgAUEEakHguMAAEPwGAAtBgKDAAEE5QcC3wAAQzAYACyAAIAU3AwggACACNgIYIAAgAzYCBCAAIAQ2AgAgAEEQaiAGNwMAIAFBMGokAAsbACAAKAIAIgBBBGoQhgYgAEEcahCGBiAAEGsLJQAgASAALQAAQQJ0IgBBiNHBAGooAgAgAEH80MEAaigCABCFCAsdACACIAOEUEUEQCAAIAEgAhCHAw8LIAAgARDuAwvKAQECfyMAQRBrIgEkACMAQSBrIgIkAAJAAkAgAARAIAAoAgANASAAQQA2AgAgAkEQaiAAQQhqKQIANwMAIAJBGGogAEEQaigCADYCACACIAApAgA3AwggASACKQIMNwIAIAFBCGogAkEUaikCADcCACAAEGsgAkEgaiQADAILENIJAAsQ0wkACyABQQRqIQACQCABKAIARQRAIAAoAgBFDQEgAUEIaigCABBrDAELIAAQnQYgACgCAARAIAAoAgQQawsLIAFBEGokAAsjACAARQRAQYCewgBBMhDRCQALIAAgAiADIAQgASgCEBEHAAsjACAARQRAQYCewgBBMhDRCQALIAAgAiADIAQgASgCEBEiAAsjACAARQRAQYCewgBBMhDRCQALIAAgAiADIAQgASgCEBFAAAsjACAARQRAQYCewgBBMhDRCQALIAAgAiADIAQgASgCEBEVAAsjACAARQRAQYCewgBBMhDRCQALIAAgAiADIAQgASgCEBFCAAsiACAAIAEoAkAiAUEEdDYCBCAAIAFBgICAgAFJQQZ0NgIACycBAX8gACgCECIBRQRAQbDPwgBBGUHMz8IAEMwGAAsgACgCBCABbgsZAQF/IAEgA0YEfyAAIAIgARDmCUUFIAQLCx8AIAAoAgBBgICAgHhyQYCAgIB4RwRAIAAoAgQQawsLJQEBf0HUzcMAKAIAIgAEQCAAQQFrDwtB1M3DAEGBIDYCAEGAIAslACABIAAtAABBAnQiAEGcg8MAaigCACAAQfiBwwBqKAIAEIUIC7cBAQJ/QaDGwwApAwBQBH8jAEHQDGsiASQAAkAgAARA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gAFqIQIgOkEBaiI6ID1HDQALCyAEQeAAaiQADAQLIARBADYCBCAEQcwAaiAEIARBBGpB1NfCABCMBwALIARBADYCBCAEQcwAaiAEIARBBGpBxNfCABCMBwALIARBADYCBCAEQcwAaiAEIARBBGpBtNfCABCMBwALIARBADYCBCAEQcwAaiAEIARBBGpBpNfCABCMBwALC5gNAjF8CH8CQCMAQeAAayIEJAAgBEEgNgIAIAQgATYCTCABQSBGBEAgBCADNgJMIANBIEYEQCAEIAU2AkwgBUEgRgRAIAQgBzYCTCAHQSBGBEAgAEGAAWohB0GAfyEBA0AgASACaiIDQYgEaiAAIAFqIgVBiAFqKwMAIg8gBUGIA2orAwAiEKEiFyAFQYACaisDACIRIAVBgARqKwMAIhihIhmhOQMAIANBgARqIAVBgAFqKwMAIhIgBUGAA2orAwAiCKEiCiAFQYgCaisDACINIAVBiARqKwMAIgmhIgugOQMAIANBiANqIA8gEKAiDyANIAmgIhChOQMAIANBgANqIBIgCKAiEiARIBigIhGhOQMAIANBiAJqIBcgGaA5AwAgA0GAAmogCiALoTkDACADQYgBaiAPIBCgOQMAIANBgAFqIBIgEaA5AwAgAUEQaiIBDQALIARChICAgBA3AkQgBEEANgI8IAQgADYCQCAEIABBQGsiATYCOCAEQoSAgIAQNwJYIAQgATYCVCAEQQA2AlAgBCAHNgJMIARBBGogBEE4aiAEQcwAahCXAwJAQQQgBCgCMCAEKAIsIgVrIgEgAUEETxsiPUUNACAEKAIMIgdFDQAgBCgCKCIBQQR0IT4gBCgCFCIDQQR0IT8gBCgCICABIAVsQQR0aiE6IAcgAyAFbEEEdGohOyADIAEgASADSxsiQEEARyEDA0AgQARAIAYgOUEHdGoiASsDcCEPIAErA2AhECABKwNQIRcgASsDQCERIAErAzAhGCABKwMgIRkgASsDECESIAFB+ABqKwMAIiOaISQgAUHoAGorAwAiJZohJiABQdgAaisDACInmiEoIAFByABqKwMAIimaISogAUE4aisDACIrmiEsIAFBKGorAwAiLZohLiABQRhqKwMAIi+aITBBACEHIAMhAQNAIAIgB2oiBUHwAGorAwAhCCAFQfgAaisDACEKIBggBUE4aisDACIaICsg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QQR0IRAgCCgCGCABIARsQQR0aiEMIAgoAgQgAyAEbEEEdGohDSADIAEgASADSxsiEUEARyEFIAAhASACIQMDQCARBEAgBiALQQh0aiIEKwPwASEqIAQrA+ABISAgBCsD0AEhKyAEKwPAASEsIAQrA7ABITMgBCsDoAEhISAEKwOQASEtIAQrA4ABITQgBCsDcCE1IAQrA2AhIiAEKwNQITYgBCsDQCE3IAQrAzAhOCAEKwMgIUAgBCsDECFBIARB+AFqKwMAIkuaIUwgBEHoAWorAwAiTZohTiAEQdgBaisDACJPmiFQIARByAFqKwMAIlGaIVIgBEG4AWorAwAiU5ohVCAEQagBaisDACJVmiFWIARBmAFqKwMAIleaIVggBEGIAWorAwAiWZohWiAEQfgAaisDACJbmiFcIARB6ABqKwMAIl2aIV4gBEHYAGorAwAiX5ohYCAEQcgAaisDACJhmiFiIARBOGorAwAiY5ohZCAEQShqKwMAImWaIWYgBEEYaisDACJnmiFoQQAhCiAFIQQDQCAKIA1qIhIrAwAhGCABIApqIglBgAhqKwMAIRkgCUGADGorAwAhGiAJQYAEaisDACEjIAlBgApqKwMAIRYgCUGAAmorAwAhFCAJQYAOaisDACEkIAlBgAZqKwMAISUgCiAMaiITKwMAIRsgCUGACWorAwAhJiAJQYANaisDACEnIAlBgAVqKwMAISggCUGAC2orAwAhFSAJQYADaisDACE5IAlBgA9qKwMAIS4gCUGAB2orAwAhLyADIApqIgdBCGogEkEIaisDACI6IAlBiAhqKwMAIjCgIhwgCUGIBGorAwAiQiAJQYgMaisDACJDoCIdoCIeIAlBiAJqKwMAIjsgCUGICmorAwAiRKAiHyAJQYgGaisDACJFIAlBiA5qKwMAIkagIjGgIhegIikgE0EIaisDACJpIAlBiAlqKwMAImqgIjwgCUGIBWorAwAiayAJQYgNaisDACJsoCI9oCI+IAlBiANqKwMAIm0gCUGIC2orAwAibqAiPyAJQYgHaisDACJvIAlBiA9qKwMAInCgIkegIjKgIkigOQMAIAcgGCAZoCJxICMgGqAicqAiSSAUIBagInMgJSAkoCJ0oCJ1oCJ2IBsgJqAidyAoICegInigIkogOSAVoCJ5IC8gLqAieqAie6AifKA5AwAg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WCAEQYgBaisDACJZmiFaIARB+ABqKwMAIluaIVwgBEHoAGorAwAiXZohXiAEQdgAaisDACJfmiFgIARByABqKwMAImGaIWIgBEE4aisDACJjmiFkIARBKGorAwAiZZohZiAEQRhqKwMAImeaIWhBACEKIAUhBANAIAogDWoiEisDACEcIAEgCmoiCUGAAmorAwAhICAJQYADaisDACEdIAlBgAFqKwMAISEgCUHAAmorAwAhFyAJQUBrKwMAIRQgCUHAA2orAwAhIiAJQcABaisDACEjIAogDGoiEysDACEeIAlBoAJqKwMAISQgCUGgA2orAwAhJSAJQaABaisDACEmIAlB4AJqKwMAIRUgCUHgAGorAwAhLCAJQeADaisDACEnIAlB4AFqKwMAISggAyAKaiIHQQhqIBJBCGorAwAiLSAJQYgCaisDACIpoCIYIAlBiAFqKwMAIjcgCUGIA2orAwAiOKAiGaAiGiAJQcgAaisDACIuIAlByAJqKwMAIjmgIhsgCUHIAWorAwAiOiAJQcgDaisDACI7oCIqoCIWoCIfIBNBCGorAwAiaSAJQagCaisDACJqoCIvIAlBqAFqKwMAImsgCUGoA2orAwAibKAiMKAiMSAJQegAaisDACJtIAlB6AJqKwMAIm6gIjIgCUHoAWorAwAibyAJQegDaisDACJwoCI8oCIroCI9oDkDACAHIBwgIKAicSAhIB2gInKgIj4gFCAXoCJzICMgIqAidKAidaAidiAeICSgIncgJiAloCJ4oCI/ICwgFaAieSAoICegInqgInugInygOQMAIAdByAFqIDYgGiAWoSIaID8ge6EiFqAiPyBRID4gdaEiPiAxICuhIjGhIiuiEOUJOQMAIAdBwAFqIDYgKyA/IFKiEOUJOQMAIAdBiAFqIEMgHyA9oSIfIFkgdiB8oSIrohDlCTkDACAHQYABaiBDICsgHyBaohDlCTkDACAHQcgAaiBHIBogFqEiGiBhID4gMaAiFqIQ5Qk5AwAgB0FAayBHIBYgGiBiohDlCTkDACAHQegBaiA0IBggGaEiGCBzIHShIhmgIhogLyAwoSIWIHkgeqEiH6AiLyB3IHihIjAgMiA8oSIxoSIyoETNO39mnqDmP6IiPKAiKyBNIHEgcqEiPSAbICqhIhuhIiogMiAvoUTNO39mnqDmP6IiL6Ai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KwMAIgwgBUGIDGorAwAiDaAiECAFQYgIaisDACIRIAVBiBBqKwMAIhigIimhIhKhOQMAIANBiApqIBwgFaAiHCAQICmgIhWhOQMAIANBgApqIAggC6AiCCAWICigIhahOQMAIANBiAZqIB4gNaE5AwAgA0GABmogDyASoDkDACADQYgCaiAcIBWgOQMAIANBgAJqIAggFqA5AwAgA0GIEGogGyAUoSIbIBcgCaEiFKAiHCAMIA2hIhUgJiAnoSIeoCIWICQgJaEiJCARIBihIiWhIiagRM07f2aeoOY/oiInoDkDACADQYAQaiA2IAqhIiggHSAjoSIdoSIjICYgFqFEzTt/Zp6g5j+iIhagOQMAIANBiAxqIBsgFKEiGyAVIB6hIhQgJCAloCIVoUTNO39mnqDmP6IiHqE5AwAgA0GADGogKCAdoCIdIBQgFaBEzTt/Zp6g5j+iIhShOQMAIANBiAhqIBwgJ6E5AwAgA0GACGogIyAWoTkDACADQYgEaiAbIB6gOQMAIANBgARqIB0gFKA5AwAgAUEQaiIBDQALIARCiICAgBA3AkQgBEEANgI8IAQgADYCQCAEIABBgAFqIgE2AjggBEKIgICAEDcCWCAEIAE2AlQgBEEANgJQIAQgBzYCTCAEQQRqIARBOGogBEHMAGoQlwNBCCAEKAIwIAQoAiwiBWsiASABQQhPGyJ1BEAgBCgCKCIBQQR0IXYgBCgCFCIDQQR0IXcgBCgCICABIAVsQQR0aiFzIAQoAgwgAyAFbEEEdGohdCADIAEgASADSxsieEEARyEDA0AgeARAIAYgckEIdGoiASsD8AEhGyABKwPgASEUIAErA9ABIRwgASsDwAEhHSABKwOwASEjIAErA6ABIRUgASsDkAEhHiABKwOAASEkIAErA3AhJSABKwNgIRYgASsDUCEmIAErA0AhJyABKwMwISggASsDICE1IAErAxAhNiABQfgBaisDACJFmiFGIAFB6AFqKwMAIkeaIUggAUHYAWorAwAiSZohSiABQcgBaisDACJLmiFMIAFBuAFqKwMAIk2aIU4gAUGoAWorAwAiT5ohUCABQZgBaisDACJRmiFSIAFBiAFqKwMAIlOaIVQgAUH4AGorAwAiVZohViABQegAaisDACJXmiFYIAFB2ABqKwMAIlmaIVogAUHIAGorAwAiW5oh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A0GIAmogJyAooDkDACADQYACaiApICqgOQMAIAFBEGoiAQ0ACyAEQoKAgIAQNwJEIARBADYCPCAEIAA2AkAgBCAAQSBqIgE2AjggBEKCgICAEDcCWCAEIAE2AlQgBEEANgJQIAQgAEFAazYCTCAEQQRqIARBOGogBEHMAGoQlwNBAiAEKAIwIAQoAiwiBWsiASABQQJPGyJ1BEAgBCgCKCIBQQR0IXYgBCgCFCIDQQR0IXcgBCgCICABIAVsQQR0aiFzIAQoAgwgAyAFbEEEdGohdCADIAEgASADSxsieEEARyEDA0AgeARAIAYgckEIdGoiASsD8AEhJyABKwPgASEoIAErA9ABISkgASsDwAEhKiABKwOwASE6IAErA6ABITsgASsDkAEhPCABKwOAASE9IAErA3AhPiABKwNgIT8gASsDUCFAIAErA0AhQSABKwMwIUIgASsDICFDIAErAxAhRCABQfgBaisDACJFmiFGIAFB6AFqKwMAIkeaIUggAUHYAWorAwAiSZohSiABQcgBaisDACJLmiFMIAFBuAFqKwMAIk2aIU4gAUGoAWorAwAiT5ohUCABQZgBaisDACJRmiFSIAFBiAFqKwMAIlOaIVQgAUH4AGorAwAiVZohViABQegAaisDACJXmiFYIAFB2ABqKwMAIlmaIVogAUHIAGorAwAiW5ohXCABQThqKwMAIl2aIV4gAUEoaisDACJfmiFgIAFBGGorAwAiYZohYkEAIQcgAyEBA0AgAiAHaiIFQfABaisDACEKIAVB+AFqKwMAIQggPiAFQfgAaisDACIcIFUgBUHwAGorAwAiIqIQ5QkhFiAnIAggRSAKohDlCSEJIAVBsAFqKwMAIQsgBUG4AWorAwAhECBCIAVBOGorAwAiIyBdIAVBMGorAwAiMaIQ5QkhDSA6IBAgTSALohDlCSEOIAVB0AFqKwMAIREgBUHYAWorAwAhEiBAIAVB2ABqKwMAIiQgWSAFQdAAaisDACIlohDlCSEXICkgEiBJIBGiEOUJISsgBUGQAWorAwAhEyAFQZgBaisDACEPIEQgBUEYaisDACIyIGEgBUEQaisDACImohDlCSEdIDwgDyBRIBOiEOUJIRggBUHgAWorAwAhFCAFQegBaisDACEMID8gBUHoAGorAwAiMyBXIAVB4ABqKwMAIjSiEOUJIR4g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IAVB6ANqIBggHqAiCCAPIBWgIhVERo0yz2uQ7T8gESALoCILRGSprqbifdi/ohDlCSIKoDkDACAFQeADaiAdIA6gIgkgC0RGjTLPa5DtPyAVRGSprqbifdg/ohDlCSILoDkDACAFQegBaiAIIAqhOQMAIAVB4AFqIAkgC6E5AwAgB0EQaiEHIAFBAWsiAQ0ACwsgAEEQaiEAIHMgdmohcyB0IHdqIXQgAkGAAmohAiByQQFqInIgdUcNAAsLIARB4ABqJAAMBAsgBEEANgIEIARBzABqIAQgBEEEakGs2sIAEIwHAAsgBEEANgIEIARBzABqIAQgBEEEakGc2sIAEIwHAAsgBEEANgIEIARBzABqIAQgBEEEakGM2sIAEIwHAAsgBEEANgIEIARBzABqIAQgBEEEakH82cIAEIwHAAsLuCMCanwIfwJAIwBB4ABrIgQkACAEQYACNgIAIAQgATYCTCABQYACRgRAIAQgAzYCTCADQYACRgRAIAQgBTYCTCAFQYACRgRAIAQgBzYCTCAHQYACRgRAIABBgAJqIQcgAEGABGohckGAfiEBA0AgACABaiIDQYASaisDACEbIANBgAJqKwMAIRwgA0GAGmorAwAhHSADQYAKaisDACEsIANBgBZqKwMAIR4gA0GABmorAwAhHyADQYAeaisDACEgIANBgA5qKwMAISEgA0GIFGorAwAhIiADQYgEaisDACEVIANBiBxqKwMAIS0gA0GIDGorAwAhIyADQYgYaisDACEWIANBiAhqKwMAIS4gA0GIIGorAwAhJCADQYgQaisDACEKIAEgAmoiBUGIGmogA0GIAmorAwAiCCADQYgSaisDACIToCIJIANBiApqKwMAIgwgA0GIGmorAwAiF6AiC6AiDiADQYgGaisDACIYIANBiBZqKwMAIhGgIg8gA0GIDmorAwAiMCADQYgeaisDACIZoCINoCIQoSIUIANBgARqKwMAIiUgA0GAFGorAwAiEqAiKCADQYAMaisDACIpIANBgBxqKwMAIiagIiegIhogA0GACGorAwAiMSADQYAYaisDACIvoCIqIANBgBBqKwMAIjQgA0GAIGorAwAiNaAiMqAiK6EiNqE5AwAgBUGAGmogHCAboCIzICwgHaAiPaAiNyAfIB6gIj4gISAgoCI/oCJAoSJBIBUgIqAiQiAjIC2g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QQA2AgQgCEHMAGogCCAIQQRqQazawgAQjAcACyAIQQA2AgQgCEHMAGogCCAIQQRqQZzawgAQjAcACyAIQQA2AgQgCEHMAGogCCAIQQRqQYzawgAQjAcACyAIQQA2AgQgCEHMAGogCCAIQQRqQfzZwgAQjAcACwu4IwJqfAh/AkAjAEHgAGsiBCQAIARBgAI2AgAgBCABNgJMIAFBgAJGBEAgBCADNgJMIANBgAJGBEAgBCAFNgJMIAVBgAJGBEAgBCAHNgJMIAdBgAJGBEAgAEGAAmohByAAQYAEaiFyQYB+IQEDQCAAIAFqIgNBgBJqKwMAIRwgA0GAAmorAwAhHSADQYAaaisDACEeIANBgApqKwMAISsgA0GAFmorAwAhHyADQYAGaisDACEgIANBgB5qKwMAISEgA0GADmorAwAhIiADQYgUaisDACEjIANBiARqKwMAIRUgA0GIHGorAwAhLCADQYgMaisDACEkIANBiBhqKwMAIRYgA0GICGorAwAhLSADQYggaisDACElIANBiBBqKwMAIQogASACaiIFQYgaaiADQYgCaisDACIIIANBiBJqKwMAIhOgIgkgA0GICmorAwAiDSADQYgaaisDACIXoCILoCIMIANBiAZqKwMAIhggA0GIFmorAwAiEaAiDyADQYgOaisDACIwIANBiB5qKwMAIhmgIg6gIhChIhQgA0GABGorAwAiJiADQYAUaisDACISoCInIANBgAxqKwMAIiggA0GAHGorAwAiLqAiGqAiGyADQYAIaisDACIxIANBgBhqKwMAIi+gIikgA0GAEGorAwAiNCADQYAgaisDACI1oCIyoCIqoSI2oDkDACAFQYAaaiAdIBygIjMgKyAeoCI9oCI3ICAgH6AiPiAiICGgIj+gIkChIkEgFSAjoCJCICQgLKAiQ6AiRCAtIBagIkUgCiAloCJGoCJHoSJIoTkDACAFQYgSaiAMIBCgIgwgRCBHoCIQoTkDACAFQYASaiA3IECgIjcgGyAqoCIboTkDACAFQYgKaiAUIDahOQMAIAVBgApqIEEgSKA5AwAgBUGIAmogDCAQoDkDACAFQYACaiA3IBugOQMAIAVBiB5qIAkgC6EiCSA+ID+hIgugIgwgQiBDoSIQICkgMqEiFKAiGyAnIBqhIicgRSBGoSIaoSIpoETNO39mnqDmP6Ii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IAJBBGogAiACQQhqQYzawgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBnNrCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakGs2sIAEIwHAAsLgwMBCHwCQCMAQSBrIgIkACACQQQ2AgAgAiABNgIEAkACQAJAIAFBBEYEQCACIAM2AgQgA0EERw0BIAIgBTYCBCAFQQRHDQIgAiAHNgIEIAdBBEcNAyAAIAArAwAiCiAAKwMgIgugIgggACsDECIMIAArAzAiDaAiCaE5AyAgACAIIAmgOQMAIABBOGoiASsDACEIIAEgACsDCCIJIABBKGoiASsDACIOoSIPIAwgDaEiDKA5AwAgACAKIAuhIgogAEEYaiIDKwMAIgsgCKEiDaE5AzAgASAJIA6gIgkgCyAIoCIIoTkDACADIA8gDKE5AwAgACAKIA2gOQMQIAAgCSAIoDkDCCACQSBqJAAMBAsgAkEANgIIIAJBBGogAiACQQhqQfzZwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBjNrCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakGc2sIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQazawgAQjAcACwufDQI4fAl/AkAjAEEgayICJAAgAkEQNgIAIAIgATYCBAJAAkACQCABQRBGBEAgAiADNgIEIANBEEcNASACIAU2AgQgBUEQRw0CIAIgBzYCBCAHQRBHDQMgAEGYAWoiASsDACEIIABBGGoiAysDACEJIABB2AFqIgQrAwAhDSAAQdgAaiIFKwMAIQ4gAEG4AWoiBisDACEKIABBOGoiBysDACEPIABB+AFqIkArAwAhECAAQfgAaiJBKwMAIREgAEGIAWoiQisDACESIABByAFqIkMrAwAhGiAAQcgAaiJEKwMAIRsgAEGoAWoiRSsDACETIABBKGoiRisDACEcIABB6AFqIkcrAwAhFCAAQegAaiJIKwMAIR0gACsDCCEeIAAgACsDACIfIAArA4ABIiWgIhUgACsDQCIgIAArA8ABIiGgIhagIgsgACsDICImIAArA6ABIiKgIhcgACsDYCInIAArA+ABIiigIiOgIgygIhggACsDECIwIAArA5ABIjGgIikgACsDUCIyIAArA9ABIjOgIiqgIhkgACsDMCI0IAArA7ABIjWgIisgACsDcCI2IAArA/ABIjegIiygIiSgIi2hOQOAASAAIBggLaA5AwAgQyAeIBKgIhggGyAaoCItoCIuIBwgE6AiOCAdIBSgIjmgIi+hIjogGSAkoSIZoTkDACAAIAsgDKEiCyAJIAigIgwgDiANoCIkoCI7IA8gCqAiPCARIBCgIj2gIj6hIj+gOQPAASBCIC4gL6AiLiA7ID6gIi+hOQMAIEQgOiAZoDkDACAAIAsgP6E5A0AgACAuIC+gOQMIIEcgGCAtoSILIBcgI6EiF6EiIyAMICShIgwgKyAsoSIYoSIZICkgKqEiKSA8ID2hIiqgIiuhRM07f2aeoOY/oiIsoDkDACAAIBUgFqEiFSA4IDmhIhagIiQgKyAZoETNO39mnqDmP6IiGaA5A+ABIEUgCyAXoCILICkgKqEiFyAMIBigIgygRM07f2aeoOY/oiIYoTkDACAAIBUgFqEiFSAXIAyhRM07f2aeoOY/oiIWoTkDoAEgSCAjICyhOQMAIAAgJCAZoTkDYCBGIAsgGKA5AwAgACAVIBagOQMgIEAgHiASoSISICAgIaEiHqEiFSAcIBOhIhMgJyAooSIcoSIgICYgIqEiISAdIBShIhSgIh2hRM07f2aeoOY/oiIWoCILIAkgCKEiCCAyIDOhIgmhIiYgDyAKoSIKIDYgN6EiD6EiIiA0IDWhIhcgESAQoSIQoCIRoUTNO39mnqDmP6IiJ6AiKERGjTLPa5DtPyAwIDGhIiMgDiANoSINoCIOIBEgIqBEzTt/Zp6g5j+iIhGgIiJEZKmupuJ92L+iEOUJIgygOQMAIAAgHyAloSIfIBsgGqEiGqAiGyAdICCgRM07f2aeoOY/oiIdoCIlICJERo0yz2uQ7T8gKERkqa6m4n3YP6IQ5QkiIKA5A/ABIAQgEiAeoCISICEgFKEiFCATIBygIhOgRM07f2aeoOY/oiIcoSIeIAggCaAiCCAXIBChIgkgCiAPoCIKoETNO39mnqDmP6IiD6EiEERkqa6m4n3YPyAjIA2hIg0gCSAKoUTNO39mnqDmP6IiCaEiCkRGjTLPa5Dtv6IQ5QkiIaA5AwAgACAfIBqhIhogFCAToUTNO39mnqDmP6IiE6EiFCAKRGSprqbifdg/IBBERo0yz2uQ7T+iEOUJIgqgOQPQASAGIBUgFqEiECAmICehIh9EZKmupuJ92D8gDiARoSIOREaNMs9rkO0/ohDlCSIRoTkDACAAIBsgHaEiGyAORGSprqbifdg/IB9ERo0yz2uQ7b+iEOUJIg6hOQOwASABIBIgHKAiEiAIIA+gIghERo0yz2uQ7T8gDSAJoCIJRGSprqbifdg/ohDlCSINoTkDACAAIBogE6AiDyAJREaNMs9rkO0/IAhEZKmupuJ92L+iEOUJIgihOQOQASBBIAsgDKE5AwAgACAlICChOQNwIAUgHiAhoTkDACAAIBQgCqE5A1AgByAQIBGgOQMAIAAgGyAOoDkDMCADIBIgDaA5AwAgACAPIAigOQMQIAJBIGokAAwECyACQQA2AgggAkEEaiACIAJBCGpB/NnCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakGM2sIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQZzawgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBrNrCABCMBwALC8UFARh8AkAjAEEgayICJAAgAkEINgIAIAIgATYCBAJAAkACQCABQQhGBEAgAiADNgIEIANBCEcNASACIAU2AgQgBUEIRw0CIAIgBzYCBCAHQQhHDQMgACAAKwMAIgwgACsDQCINoCIIIAArAyAiDiAAKwNgIhCgIgmgIgogACsDECIRIAArA1AiEqAiCyAAKwMwIhMgACsDcCIUoCIPoCIVoTkDQCAAIAogFaA5AwAgAEHoAGoiASAAKwMIIgogAEHIAGoiAysDACIVoCIWIABBKGoiBCsDACIYIAErAwAiGaAiF6EiGiALIA+hIguhOQMAIAAgCCAJoSIIIABBGGoiASsDACIJIABB2ABqIgUrAwAiD6AiGyAAQThqIgYrAwAiHCAAQfgAaiIHKwMAIh2gIh6hIh+gOQNgIAMgFiAXoCIWIBsgHqAiF6E5AwAgBCAaIAugOQMAIAAgCCAfoTkDICAAIBYgF6A5AwggByAKIBWhIgggDiAQoSIOoSIQIAkgD6EiCSATIBShIgqhIgsgESASoSIRIBwgHaEiEqAiE6FEzTt/Zp6g5j+iIhSgOQMAIAAgDCANoSIMIBggGaEiDaAiDyATIAugRM07f2aeoOY/oiILoDkDcCAFIAggDqAiCCARIBKhIg4gCSAKoCIJoETNO39mnqDmP6IiCqE5AwAgACAMIA2hIgwgDiAJoUTNO39mnqDmP6IiDaE5A1AgBiAQIBShOQMAIAAgDyALoTkDMCABIAggCqA5AwAgACAMIA2gOQMQIAJBIGokAAwECyACQQA2AgggAkEEaiACIAJBCGpB/NnCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakGM2sIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQZzawgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBrNrCABCMBwALCxMAIABBGTYCBCAAQYjiwgA2AgALEAAgACgCACAAKAIEIAEQUAsRACAAKAIAIAAoAgQgARDiCQsRACABIAAoAgAgACgCBBCFCAsiACAAQpzKtJyT4uSVzwA3AwggAELRxe/NzYLN4f8ANwMACyAAIABC5N7HhZDQhd59NwMIIABCwff56MyTstFBNwMACyIAIABCjYSZ6OiU74GjfzcDCCAAQqSF9JiC9Ziku383AwALIAAgAELrnd3g6M63nQc3AwggAEL9xtfm68XEvTM3AwALEwAgAEG4+MIANgIEIAAgATYCAAsQACABIAAoAgAgACgCBBBOCw0AIAAgASACEIsJQQALCgAgACgCuAEQawsNACAAIAEgAhCJCUEACw0AIAAoAgQgACgCAGsLDgAgACgCABoDQAwACwALDgAgADUCAEEBIAEQyQELDgAgADEAAEEBIAEQyQELDgAgACkDAEEBIAEQyQELvAICAn8BfgJ/IAAoAgApAwAhBCMAQYABayIDJAACQAJAAn8CQCABKAIcIgBBEHFFBEAgAEEgcQ0BIARBASABEMkBDAILQQAhAANAIAAgA2pB/wBqQTBB1wAgBKdBD3EiAkEKSRsgAmo6AAAgAEEBayEAIARCEFQgBEIEiCEERQ0ACyAAQYABaiICQYABSw0CIAFBAUGspcMAQQIgACADakGAAWpBACAAaxBfDAELQQAhAANAIAAgA2pB/wBqQTBBNyAEp0EPcSICQQpJGyACajoAACAAQQFrIQAgBEIQVCAEQgSIIQRFDQALIABBgAFqIgJBgAFLDQIgAUEBQaylwwBBAiAAIANqQYABakEAIABrEF8LIANBgAFqJAAMAgsgAkGAAUGcpcMAEL8FAAsgAkGAAUGcpcMAEL8FAAsLCwAgACMAaiQAIwALDgAgAUGogsAAQQkQhQgLDgAgAUGxgsAAQQwQhQgLBwAg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AAAtAAAAPQEQAEsAAAAEAwAASAAAAEZhaWxlZCB0byBjb252ZXJ0IHRoZSB2YWx1ZSB0byBhIHUxMjhGYWlsZWQgdG8gY29udmVydCB0aGUgdmFsdWUgdG8gYSBVMjU2RmFpbGVkIHRvIGNvbnZlcnQgdGhlIHZhbHVlIHRvIGEgaTEyOEZhaWxlZCB0byBjb252ZXJ0IHRoZSB2YWx1ZSB0byBhIEkyNTZWYWx1ZSBkb2VzIG5vdCBmaXQgaW4gYSB1MTI4UHVibGljS2V5IHVzaW5nIGJpZyBwYXJhbWV0ZXJzIG5vdCBjb21wYXRpYmxlIHdhc21jYW5ub3QgYWNjZXNzIGEgVGhyZWFkIExvY2FsIFN0b3JhZ2UgdmFsdWUgZHVyaW5nIG9yIGFmdGVyIGRlc3RydWN0aW9uDQAAAAAAAAABAAAADgAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbG9jYWwucnMAmAMQAE8AAAD2AAAAGgAAAHRmaGUvc3JjL3Nob3J0aW50L2VuZ2luZS9tb2QucnMA+AMQAB8AAAAvAQAAPwAAAHRmaGUvc3JjL2hpZ2hfbGV2ZWxfYXBpL2dsb2JhbF9zdGF0ZS5ycwAoBBAAJwAAAIUAAAAgAAAAKAQQACcAAACJAAAADgAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGUvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yYXlvbi1jb3JlLTEuMTIuMS9zcmMvam9iLnJzAJgEEABbAAAA5gAAACAAAACYBBAAWwAAAGYAAAAgAAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZWNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAAA8AAAAIAAAABAAAAAgAAAAvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yYXlvbi1jb3JlLTEuMTIuMS9zcmMvbGF0Y2gucnMAAAB8BRAAXQAAAAsBAAAqAAAAmAQQAFsAAAB3AAAALgAAABIAAAATAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY29uc29sZV9lcnJvcl9wYW5pY19ob29rLTAuMS43L3NyYy9saWIucnMEBhAAaAAAAJUAAAAOAAAAZmFpbGVkIHRvIHNwYXduIHRocmVhZAAAGQAAAAgAAAAEAAAAGgAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvc2NvcGVkLnJzpAYQAFAAAADCAAAALgAAAGEgc2NvcGVkIHRocmVhZCBwYW5pY2tlZAQHEAAYAAAAGwAAAAwAAAAEAAAAHAAAAB0AAAAeAAAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseQAfAAAAAAAAAAEAAAAgAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAIQHEABLAAAAMwoAAA4AAABhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZUVycm9yaW52YWxpZCB2YWx1ZTogLCBleHBlY3RlZCAAKQgQAA8AAAA4CBAACwAAAGludmFsaWQgbGVuZ3RoIABUCBAADwAAADgIEAALAAAASW8AACEAAAAEAAAABAAAACIAAABJbnZhbGlkVXRmOEVuY29kaW5nACEAAAAEAAAABAAAACMAAABJbnZhbGlkQm9vbEVuY29kaW5nACEAAAAEAAAABAAAACQAAABJbnZhbGlkQ2hhckVuY29kaW5nSW52YWxpZFRhZ0VuY29kaW5nAAAAIQAAAAQAAAAEAAAAJQAAAERlc2VyaWFsaXplQW55Tm90U3VwcG9ydGVkU2l6ZUxpbWl0U2VxdWVuY2VNdXN0SGF2ZUxlbmd0aEN1c3RvbQAhAAAABAAAAAQAAAAmAAAATHdlQ29tcGFjdFB1YmxpY0tleSBjb250YWluZXIgbGVuIG11c3QgYmUgYSBwb3dlciBvZiAyLCBnb3QgbGVuID0gAABYCRAAQgAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2VudGl0aWVzL2x3ZV9jb21wYWN0X3B1YmxpY19rZXkucnMApAkQADcAAABLAAAACQAAAEx3ZUNvbXBhY3RQdWJsaWNLZXkgb25seSBzdXBwb3J0cyBwb3dlciBvZiAyIEx3ZURpbWVuc2lvbi4gR290IGx3ZV9kaW1lbnNpb24gPSAu7AkQAE8AAAA7ChAAAQAAAKQJEAA3AAAArgAAAAkAAABTZWVkZWQgZW50aXRpZXMgYXJlIG5vdCB5ZXQgY29tcGF0aWJsZSB3aXRoIG5vbiBwb3dlciBvZiAyIG1vZHVsaS4AAFwKEABCAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZW50aXRpZXMvc2VlZGVkX2x3ZV9jb21wYWN0X3B1YmxpY19rZXkucnMAAKgKEAA+AAAAaAAAAAkAAABTZWVkZWRMd2VDb21wYWN0UHVibGljS2V5IGNvbnRhaW5lciBsZW4gbXVzdCBiZSBhIHBvd2VyIG9mIDIsIGdvdCBsZW4gPSD4ChAASAAAAKgKEAA+AAAAbQAAAAkAAABTZWVkZWRMd2VDb21wYWN0UHVibGljS2V5IG9ubHkgc3VwcG9ydHMgcG93ZXIgb2YgMiBMd2VEaW1lbnNpb24uIEdvdCBsd2VfZGltZW5zaW9uID0gAAAAWAsQAFUAAAA7ChAAAQAAAKgKEAA+AAAA2AAAAAkAQfCXwAAL2QFhc3NlcnRpb24gZmFpbGVkOiBiaXRzX3Blcl9ibG9jayA8PSBUOjpCSVRTIGFzIHUzMnRmaGUvc3JjL2ludGVnZXIvYmxvY2tfZGVjb21wb3NpdGlvbi5ycwAAACIMEAAnAAAAdAAAAAkAAAAiDBAAJwAAAHgAAAA6AAAAIgwQACcAAACwAAAAIgAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYubnVtX2JpdHNfaW5fbWFzayA8PSBWOjpCSVRTIGFzIHUzMgAAACIMEAAnAAAAvwAAAAkAAAABAEHomcAAC74FdGZoZS9zcmMvaGlnaF9sZXZlbF9hcGkvaW50ZWdlcnMvbW9kLnJzAOgMEAAnAAAAIQAAAC4AAADoDBAAJwAAACEAAAAJAAAAMC4zaGlnaF9sZXZlbF9hcGk6OkNvbXByZXNzZWRGaGVVaW50aGlnaF9sZXZlbF9hcGk6OkNvbXBhY3RGaGVJbnRoaWdoX2xldmVsX2FwaTo6RmhlSW50aGlnaF9sZXZlbF9hcGk6OkNvbXByZXNzZWRGaGVJbnRoaWdoX2xldmVsX2FwaTo6Q29tcGFjdEZoZUJvb2xoaWdoX2xldmVsX2FwaTo6RmhlVWludGhpZ2hfbGV2ZWxfYXBpOjpDb21wYWN0RmhlVWludGhpZ2hfbGV2ZWxfYXBpOjpDb21wcmVzc2VkRmhlQm9vbGhpZ2hfbGV2ZWxfYXBpOjpGaGVCb29sAAAwDRAAAwAAANwNEAAeAAAAT24gZGVzZXJpYWxpemF0aW9uLCBleHBlY3RlZCB0eXBlICwgZ290IHR5cGUgAAAARA4QACIAAABmDhAACwAAAE9uIGRlc2VyaWFsaXphdGlvbiwgZXhwZWN0ZWQgc2VyaWFsaXphdGlvbiB2ZXJzaW9uICwgZ290IHZlcnNpb24gAAAAhA4QADMAAAC3DhAADgAAAMUNEAAXAAAAVA0QAB0AAACnDRAAHgAAAHENEAAWAAAAMw0QACEAAAD6DRAAIQAAAIcNEAAgAAAAGw4QABcAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9jb21tb25zL251bWVyaWMvdW5zaWduZWQucnMYDxAAMAAAAAcBAAABAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9pdGVyLnJzAEGwn8AAC7srYXR0ZW1wdCB0byBkaXZpZGUgYnkgemVybwAAAFgPEABOAAAAWwcAABEAAAAAAAAAYXR0ZW1wdCB0byBkaXZpZGUgYnkgemVybwAAAAAAAABhdHRlbXB0IHRvIGNhbGN1bGF0ZSB0aGUgcmVtYWluZGVyIHdpdGggYSBkaXZpc29yIG9mIHplcm9jaHVuayBzaXplIG11c3QgYmUgbm9uLXplcm85EBAAGwAAAGFzc2VydGlvbiBmYWlsZWQ6IG1pZCA8PSBzZWxmLmxlbigpY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZS9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JheW9uLTEuMTAuMC9zcmMvc2xpY2UvbW9kLnJzAACqEBAAXAAAAEsDAAAoAAAATWlzbWF0Y2hlZCBDaXBoZXJ0ZXh0TW9kdWx1cyBiZXR3ZWVuIGlucHV0IFNlZWRlZEdsd2VDaXBoZXJ0ZXh0ICgpIGFuZCBvdXRwdXQgR2x3ZUNpcGhlcnRleHQgKCkAGBEQAEEAAABZERAAHQAAAHYREAABAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vYWxnb3JpdGhtcy9zZWVkZWRfZ2x3ZV9jaXBoZXJ0ZXh0X2RlY29tcHJlc3Npb24ucnMAkBEQAEcAAAAZAAAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IGNpcGhlcnRleHRfbW9kdWx1cy5pc19jb21wYXRpYmxlX3dpdGhfbmF0aXZlX21vZHVsdXMoKZAREABHAAAAJQAAAAUAAACQERAARwAAAC0AAAAgAAAAkBEQAEcAAAAyAAAACgAAAEV4cGVjdGVkIGFuIHVuc2lnbmVkIGludGVnZXIgd2l0aCAgYml0cywgZm91bmQgIGJpdHMgZHVyaW5nIGRlc2VyaWFsaXphdGlvbiBvZiBDaXBoZXJ0ZXh0TW9kdWx1cywgaGF2ZSB5b3UgbWl4ZWQgdHlwZXMgZHVyaW5nIGRlc2VyaWFsaXphdGlvbj8AAGASEAAiAAAAghIQAA0AAACPEhAAXwAAAEAAAABDYW5ub3QgZ2V0IHNjYWxpbmcgZm9yIG5vbiBwb3dlciBvZiB0d28gbW9kdWx1cyAMExAAMAAAAENpcGhlcnRleHRNb2R1bHVzKDJeRBMQABQAAAB2ERAAAQAAAENpcGhlcnRleHRNb2R1bHVzKAAAaBMQABIAAAB2ERAAAQAAAAAAAABDYW5ub3QgY29udmVydCBhIFBvbHlub21pYWxTaXplIHRoYXQgaXMgbm90IGEgbXVsdGlwbGUgb2YgMiB0byBGb3VyaWVyUG9seW5vbWlhbFNpemWQExAAVAAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2NvbW1vbnMvcGFyYW1ldGVycy5ycwAA7BMQACoAAAB1AAAACQAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2NvbW1vbnMvdHJhaXRzL2NvbnRpZ3VvdXNfZW50aXR5X2NvbnRhaW5lci5ycwAAKBQQAEIAAAB5AAAAHAAAACgUEABCAAAAowAAADsAAAAoFBAAQgAAANMAAAAOAAAAVGhlIGN1cnJlbnQgY29udGFpbmVyIGhhcyAgZW50aXRpZXMsIHdoaWNoIGlzIG5vdCBkaXZpZGFibGUgYnkgdGhlIHJlcXVlc3RlZCBjaHVua19zaXplOiAAAAAoFBAAQgAAAE0BAAAOAAAAKBQQAEIAAACZAQAADgAAACgUEABCAAAApAEAAA0AAAAoFBAAQgAAAK8BAAAOAAAALCBwcmV2ZW50aW5nIGNodW5rc19leGFjdF9tdXQgZnJvbSByZXR1cm5pbmcgYW4gaXRlcmF0b3IuAAAAnBQQABoAAAC2FBAAPwAAADgVEAA5AAAAKBQQAEIAAACjAQAACQAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2VudGl0aWVzL2NvbXByZXNzZWRfbW9kdWx1c19zd2l0Y2hlZF9sd2VfY2lwaGVydGV4dC5yc01pc21hdGNoIGJldHdlZW4gYWN0dWFsKD0pIGFuZCBleHBlY3RlZCg9KSBDb21wcmVzc2VkTW9kdWx1c1N3aXRjaGVkTHdlQ2lwaGVydGV4dCBwYWNrZWRfY29lZmZzIHNpemUA5xUQABkAAAAAFhAAEAAAABAWEAA7AAAAnBUQAEsAAACxAAAACQAAAC4gR290IGNvbnRhaW5lciBsZW5ndGg6ICBhbmQgZ2x3ZV9zaXplOiAsIHBvbHlub21pYWxfc2l6ZTogLlRoZSBwcm92aWRlZCBjb250YWluZXIgbGVuZ3RoIGlzIG5vdCB2YWxpZC4gRXhwZWN0ZWQgbGVuZ3RoIG9mIC5Hb3QgY29udGFpbmVyIGxlbmd0aDogIGFuZCBkZWNvbXBfbGV2ZWxfY291bnQ6ICwgIGdsd2Vfc2l6ZTogR290IGFuIGVtcHR5IGNvbnRhaW5lciB0byBjcmVhdGUgYSBHbHdlQm9keS0XEAArAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZW50aXRpZXMvZ2x3ZV9jaXBoZXJ0ZXh0LnJzYBcQ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cmVhdGUgYSBTZWVkZWRHbHdlQ2lwaGVydGV4dAAEIhAANwAAALwhEAA3AAAAggAAAAkAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9lbnRpdGllcy9zZWVkZWRfZ2x3ZV9jaXBoZXJ0ZXh0X2xpc3QucnNUIhAAPAAAAHQAAAAJAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZW50aXRpZXMvc2VlZGVkX2x3ZV9jaXBoZXJ0ZXh0X2xpc3QucnMAoCIQADsAAABnAAAACQAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2VudGl0aWVzL3NlZWRlZF9sd2Vfa2V5c3dpdGNoX2tleS5ycwAAAOwiEAA5AAAAigAAAAkAAABHb3QgYW4gZW1wdHkgY29udGFpbmVyIHRvIGNyZWF0ZSBhbiBTZWVkZWRMd2VLZXlzd2l0Y2hLZXkAAAA4IxAAOQAAAOwiEAA5AAAAjwAAAAkAAADsIhAAOQAAAJQAAAANAAAAVGhlIHByb3ZpZGVkIGNvbnRhaW5lciBsZW5ndGggaXMgbm90IHZhbGlkLiBJdCBuZWVkcyB0byBiZSBkaXZpZGFibGUgYnkgZGVjb21wX2xldmVsX2NvdW50OiCcIxAAXAAAAHQWEAAYAAAABhcQABkAAACvFhAAAQAAAOwiEAA5AAAAkwAAAAkAAADsIhAAOQAAALgAAAAWAAAAdGZoZS9zcmMvaW50ZWdlci9jaXBoZXJ0ZXh0L2NvbXBhY3RfbGlzdC5ycwA4JBAAKwAAAEIAAAAJAAAAdGZoZS9zcmMvc2hvcnRpbnQvY2lwaGVydGV4dC9jb21wYWN0X2xpc3QucnN0JBAALAAAADsAAAAOAAAAOAAAADkAAAAEAAAABAAAACUAAABMd2VTaXplTHdlRGltZW5zaW9uR2x3ZVNpemVQb2x5bm9taWFsU2l6ZURlY29tcG9zaXRpb25MZXZlbENvdW50dmFyaWFudCBpbmRleCAwIDw9IGkgPCAyBCUQABgAAAA5AAAACAAAAAQAAAA6AAAAPAAAAAAAAAABAAAAPQAAADwAAAAAAAAAAQAAAD4AAAA/AAAAQAAAAEEAAAD//////////2AlEABB+MrAAAvbLS9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy9pby9pbXBscy5ycwB4JRAASwAAACkBAAARAAAAZmFpbGVkIHRvIGZpbGwgd2hvbGUgYnVmZmVyANQlEAAbAAAAJQAAAE9uY2UgaW5zdGFuY2UgaGFzIHByZXZpb3VzbHkgYmVlbiBwb2lzb25lZAAA/CUQACoAAABvbmUtdGltZSBpbml0aWFsaXphdGlvbiBtYXkgbm90IGJlIHBlcmZvcm1lZCByZWN1cnNpdmVseTAmEAA4AAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZS9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy9zeW5jL21wbWMvbGlzdC5yc5smEABRAAAA7wAAAEMAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlmyYQAFEAAAC/AQAAKgAAAJsmEABRAAAAwQEAADkAAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlAEIAAAAIAAAABAAAAAoAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L3N0ZC9zcmMvc3luYy9tcG1jL3plcm8ucnMAAACAJxAAUQAAAB4BAAArAAAAgCcQAFEAAACEAAAANgAAAIAnEABRAAAAfQAAADYAAACAJxAAUQAAAOkAAAArAAAAgCcQAFEAAAAIAQAAJgAAAIAnEABRAAAACgEAAEsAAACAJxAAUQAAAAoBAAAnAAAAgCcQAFEAAAAOAQAASwAAAIAnEABRAAAADgEAACcAAACAJxAAUQAAABQBAABAAAAAgCcQAFEAAACsAAAALQAAAIAnEABRAAAApQAAACsAAACAJxAAUQAAAMEAAAAmAAAAgCcQAFEAAADDAAAASQAAAIAnEABRAAAAxAAAAEcAAACAJxAAUQAAAMMAAAAnAAAAgCcQAFEAAADIAAAASQAAAIAnEABRAAAAyQAAAEcAAACAJxAAUQAAAMgAAAAnAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3N5bmMvbXBtYy9hcnJheS5ycwAABCkQAFIAAACQAQAAKgAAAAQpEABSAAAAkgEAADkAAAAEKRAAUgAAAF0BAAAqAAAABCkQAFIAAABfAQAANwAAAEMAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L3N0ZC9zcmMvc3luYy9tcG1jL3dha2VyLnJzAACcKRAAUgAAAF0AAAArAAAAnCkQAFIAAAA7AAAAKAAAAEIAAAAIAAAABAAAAAoAAACcKRAAUgAAAL0AAAArAAAAnCkQAFIAAACjAAAAKwAAAJwpEABSAAAArgAAAC8AAACcKRAAUgAAAJoAAAArAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3N5bmMvbXBtYy9jb250ZXh0LnJzYCoQAFQAAAAxAAAAHgAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy9zeW5jL29uY2UucnPEKhAATAAAANAAAAAxAAAAxCoQAEwAAACVAAAAMgAAAABjYW5ub3QgcmVjdXJzaXZlbHkgYWNxdWlyZSBtdXRleAAAADErEAAgAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3N5cy93YXNtLy4uL3Vuc3VwcG9ydGVkL2xvY2tzL211dGV4LnJzAABcKxAAZgAAABQAAAAJAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYmluY29kZS0xLjMuMy9zcmMvZGUvcmVhZC5ycwDUKxAAWwAAAE4AAAANAAAA/////y9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy9zeXMvd2FzbS8uLi91bnN1cHBvcnRlZC9sb2Nrcy9yd2xvY2sucnMARCwQAGcAAAA/AAAACQAAAE1pc21hdGNoZWQgTHdlRGltZW5zaW9uIGJldHdlZW4gaW5wdXQgTHdlU2VjcmV0S2V5ICBhbmQgb3V0cHV0IEx3ZVB1YmxpY0tleSC8LBAAMwAAAO8sEAAZAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vYWxnb3JpdGhtcy9sd2VfcHVibGljX2tleV9nZW5lcmF0aW9uLnJzGC0QADwAAAAcAAAABQAAACBhbmQgb3V0cHV0IFNlZWRlZEx3ZVB1YmxpY0tleSAAvCwQADMAAABkLRAAHwAAABgtEAA8AAAApAAAAAUAAABHb3QgYW4gZW1wdHkgY29udGFpbmVyIHRvIGNyZWF0ZSBhbiBMd2VQdWJsaWNLZXmkLRAAMAAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2VudGl0aWVzL2x3ZV9wdWJsaWNfa2V5LnJzANwtEAAvAAAAZAAAAAkAAABTZWVkZWQgZW50aXRpZXMgYXJlIG5vdCB5ZXQgY29tcGF0aWJsZSB3aXRoIG5vbiBwb3dlciBvZiAyIG1vZHVsaS4AABwuEABCAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZW50aXRpZXMvc2VlZGVkX2x3ZV9wdWJsaWNfa2V5LnJzAABoLhAANgAAAIoAAAAJAAAAR290IGFuIGVtcHR5IGNvbnRhaW5lciB0byBjcmVhdGUgYSBTZWVkZWRMd2VQdWJsaWNLZXkAAACwLhAANQAAAGguEAA2AAAAjwAAAAkAAAA8AAAAAAAAAAEAAABEAAAARQAAAHRmaGUvc3JjL3Nob3J0aW50L3BhcmFtZXRlcnMvbW9kLnJzV29wYnNPbmx5IHBhcmFtZXRlcnMgZG8gbm90IGhhdmUgYSBNYXhOb2lzZUxldmVsIGluZm9ybWF0aW9uADcvEAA8AAAAFC8QACMAAAABAgAAEQAAAHN0cnVjdCBTZXJpYWxpYXphYmxlTHdlQ2lwaGVydGV4dE1vZHVsdXMgd2l0aCAyIGVsZW1lbnRzjC8QADgAAABGAAAACAAAAAQAAAA6AAAAc3RydWN0IEdhdXNzaWFuIHdpdGggMiBlbGVtZW50cwDcLxAAHwAAAHN0cnVjdCBUVW5pZm9ybSB3aXRoIDIgZWxlbWVudHMABDAQAB8AAABMd2VEaW1lbnNpb25GAAAABAAAAAQAAAAlAAAAc3RydWN0IENvbXByZXNzZWRNb2R1bHVzU3dpdGNoZWRMd2VDaXBoZXJ0ZXh0IHdpdGggNCBlbGVtZW50cwAAAEgwEAA9AAAAc3RydWN0IEdsd2VDaXBoZXJ0ZXh0IHdpdGggMyBlbGVtZW50cwAAAJAwEAAlAAAAc3RydWN0IEdsd2VTZWNyZXRLZXkgd2l0aCAyIGVsZW1lbnRzwDAQACQAAABzdHJ1Y3QgTHdlQ2lwaGVydGV4dCB3aXRoIDIgZWxlbWVudHPsMBAAJAAAAHN0cnVjdCBMd2VDaXBoZXJ0ZXh0TGlzdCB3aXRoIDMgZWxlbWVudHMYMRAAKAAAAHN0cnVjdCBMd2VDb21wYWN0Q2lwaGVydGV4dExpc3Qgd2l0aCA0IGVsZW1lbnRzAEgxEAAvAAAAc3RydWN0IEx3ZUNvbXBhY3RQdWJsaWNLZXkgd2l0aCAxIGVsZW1lbnQAAACAMRAAKQAAAHN0cnVjdCBMd2VQdWJsaWNLZXkgd2l0aCAxIGVsZW1lbnQAALQxEAAiAAAAc3RydWN0IEx3ZVNlY3JldEtleSB3aXRoIDEgZWxlbWVudAAA4DEQACIAAABzdHJ1Y3QgU2VlZGVkR2dzd0NpcGhlcnRleHRMaXN0IHdpdGggNyBlbGVtZW50cwAMMhAALwAAAHN0cnVjdCBTZWVkZWRHbHdlQ2lwaGVydGV4dCB3aXRoIDQgZWxlbWVudHMARDIQACsAAABzdHJ1Y3QgU2VlZGVkTHdlQm9vdHN0cmFwS2V5IHdpdGggMSBlbGVtZW50AHgyEAArAAAAc3RydWN0IFNlZWRlZEx3ZUNpcGhlcnRleHQgd2l0aCA0IGVsZW1lbnRzAACsMhAAKgAAAHN0cnVjdCBTZWVkZWRMd2VDaXBoZXJ0ZXh0TGlzdCB3aXRoIDQgZWxlbWVudHMAAOAyEAAuAAAAc3RydWN0IFNlZWRlZEx3ZUNvbXBhY3RQdWJsaWNLZXkgd2l0aCAxIGVsZW1lbnQAGDMQAC8AAABzdHJ1Y3QgU2VlZGVkTHdlS2V5c3dpdGNoS2V5IHdpdGggNiBlbGVtZW50c1AzEAAsAAAAc3RydWN0IFNlZWRlZEx3ZU11bHRpQml0Qm9vdHN0cmFwS2V5IHdpdGggMiBlbGVtZW50c4QzEAA0AAAAc3RydWN0IFNlZWRlZEx3ZVB1YmxpY0tleSB3aXRoIDEgZWxlbWVudMAzEAAoAAAAc3RydWN0IEJhc2VSYWRpeENpcGhlcnRleHQgd2l0aCAxIGVsZW1lbnQAAADwMxAAKQAAAHN0cnVjdCBCYXNlU2lnbmVkUmFkaXhDaXBoZXJ0ZXh0IHdpdGggMSBlbGVtZW50ACQ0EAAvAAAAc3RydWN0IENvbXBhY3RDaXBoZXJ0ZXh0TGlzdCB3aXRoIDIgZWxlbWVudHNcNBAALAAAAHN0cnVjdCBDbGllbnRLZXkgd2l0aCAxIGVsZW1lbnQAkDQQAB8AAABzdHJ1Y3QgQ29tcGFjdFB1YmxpY0tleSB3aXRoIDEgZWxlbWVudAAAuDQQACYAAABzdHJ1Y3QgQ29tcHJlc3NlZENvbXBhY3RQdWJsaWNLZXkgd2l0aCAxIGVsZW1lbnToNBAAMAAAAHN0cnVjdCBDb21wcmVzc2VkUHVibGljS2V5IHdpdGggMSBlbGVtZW50AAAAIDUQACkAAABzdHJ1Y3QgUHVibGljS2V5IHdpdGggMSBlbGVtZW50AFQ1EAAfAAAAc3RydWN0IENvbXByZXNzZWRTZXJ2ZXJLZXkgd2l0aCAxIGVsZW1lbnQAAAB8NRAAKQAAAHN0cnVjdCBDb21wYWN0Q2lwaGVydGV4dExpc3Qgd2l0aCA2IGVsZW1lbnRzsDUQACwAAABzdHJ1Y3QgQ29tcHJlc3NlZENpcGhlcnRleHQgd2l0aCA2IGVsZW1lbnRzAOQ1EAArAAAAc3RydWN0IENvbXByZXNzZWRNb2R1bHVzU3dpdGNoZWRDaXBoZXJ0ZXh0IHdpdGggNSBlbGVtZW50cwAAGDYQADoAAABzdHJ1Y3QgQ2lwaGVydGV4dCB3aXRoIDYgZWxlbWVudHMAAABcNhAAIQAAAHN0cnVjdCBDbGllbnRLZXkgd2l0aCAzIGVsZW1lbnRziDYQACAAAABzdHJ1Y3QgTXVsdGlCaXRQQlNQYXJhbWV0ZXJzIHdpdGggMTcgZWxlbWVudHMAAACwNhAALQAAAHN0cnVjdCBXb3Bic1BhcmFtZXRlcnMgd2l0aCAxOCBlbGVtZW50cwDoNhAAJwAAAHN0cnVjdCBDbGFzc2ljUEJTUGFyYW1ldGVycyB3aXRoIDE1IGVsZW1lbnRzGDcQACwAAAB2YXJpYW50IGluZGV4IDAgPD0gaSA8IDJMNxAAGAAAAHZhcmlhbnQgaW5kZXggMCA8PSBpIDwgM2w3EAAYAAAAdHVwbGUgdmFyaWFudCBTaG9ydGludFBhcmFtZXRlclNldElubmVyOjpQQlNBbmRXb3BicyB3aXRoIDIgZWxlbWVudHOMNxAARAAAAHN0cnVjdCBTaG9ydGludFBhcmFtZXRlclNldCB3aXRoIDEgZWxlbWVudAAA2DcQACoAAABzdHJ1Y3QgQ29tcGFjdFB1YmxpY0tleSB3aXRoIDMgZWxlbWVudHMADDgQACcAAABzdHJ1Y3QgQ29tcHJlc3NlZENvbXBhY3RQdWJsaWNLZXkgd2l0aCAzIGVsZW1lbnRzAAAAPDgQADEAAABzdHJ1Y3QgQ29tcHJlc3NlZFB1YmxpY0tleSB3aXRoIDMgZWxlbWVudHMAAHg4EAAqAAAAc3RydWN0IFB1YmxpY0tleSB3aXRoIDMgZWxlbWVudHOsOBAAIAAAAHN0cnVjdCB2YXJpYW50IFNob3J0aW50Q29tcHJlc3NlZEJvb3RzdHJhcHBpbmdLZXk6Ok11bHRpQml0IHdpdGggMiBlbGVtZW50cwDUOBAASwAAAHN0cnVjdCBDb21wcmVzc2VkU2VydmVyS2V5IHdpdGggOCBlbGVtZW50cwAAKDkQACoAAABzdHJ1Y3QgSW50ZWdlckNsaWVudEtleSB3aXRoIDIgZWxlbWVudHMAXDkQACcAAABzdHJ1Y3QgSW50ZWdlckNvbXByZXNzZWRTZXJ2ZXJLZXkgd2l0aCAxIGVsZW1lbnSMORAAMAAAAHN0cnVjdCBJbnRlZ2VyQ29tcGFjdFB1YmxpY0tleSB3aXRoIDEgZWxlbWVudAAAAMQ5EAAtAAAAc3RydWN0IEludGVnZXJDb21wcmVzc2VkQ29tcGFjdFB1YmxpY0tleSB3aXRoIDEgZWxlbWVudAD8ORAANwAAAHN0cnVjdCBGaGVCb29sIHdpdGggMSBlbGVtZW50AAAAPDoQAB0AAABzdHJ1Y3QgQ29tcGFjdEZoZUJvb2wgd2l0aCAxIGVsZW1lbnRkOhAAJAAAAHN0cnVjdCBDb21wYWN0RmhlQm9vbExpc3Qgd2l0aCAxIGVsZW1lbnSQOhAAKAAAAHN0cnVjdCBGaGVJbnQgd2l0aCAyIGVsZW1lbnRzAAAAwDoQAB0AAABzdHJ1Y3QgQ29tcGFjdEZoZUludCB3aXRoIDIgZWxlbWVudHPoOhAAJAAAAHN0cnVjdCBDb21wYWN0RmhlSW50TGlzdCB3aXRoIDIgZWxlbWVudHMUOxAAKAAAAHN0cnVjdCBDb21wcmVzc2VkRmhlSW50IHdpdGggMiBlbGVtZW50cwBEOxAAJwAAAHN0cnVjdCBGaGVVaW50IHdpdGggMiBlbGVtZW50cwAAdDsQAB4AAABzdHJ1Y3QgQ29tcGFjdEZoZVVpbnQgd2l0aCAyIGVsZW1lbnRzAAAAnDsQACUAAABzdHJ1Y3QgQ29tcGFjdEZoZVVpbnRMaXN0IHdpdGggMiBlbGVtZW50cwAAAMw7EAApAAAAc3RydWN0IENvbXByZXNzZWRGaGVVaW50IHdpdGggMiBlbGVtZW50cwA8EAAoAAAAYXNzZXJ0aW9uIGZhaWxlZDogbWlkIDw9IHNlbGYubGVuKCkAQeD4wAALZ2F0dGVtcHQgdG8gY2FsY3VsYXRlIHRoZSByZW1haW5kZXIgd2l0aCBhIGRpdmlzb3Igb2YgemVyb2NhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUwPBAAQdD5wAALggVhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvdGZoZS9zcmMvc2hvcnRpbnQvZW5naW5lL2NsaWVudF9zaWRlLnJz6TwQACcAAABFAAAAFQAAAOk8EAAnAAAASgAAABEAAADpPBAAJwAAAHYAAAAdAAAA6TwQACcAAAC6AAAAHQAAAOk8EAAnAAAAvwAAABUAAAB0ZmhlL3NyYy9zaG9ydGludC9lbmdpbmUvcHVibGljX3NpZGUucnMAYD0QACcAAACRAAAAHQAAAGA9EAAnAAAAlgAAABUAAABgPRAAJwAAAMEAAAAdAAAAYD0QACcAAADGAAAAFQAAAHRmaGUvc3JjL3Nob3J0aW50L2VuZ2luZS9zZXJ2ZXJfc2lkZS5ycwDIPRAAJwAAALwAAABHAAAAdGZoZS9zcmMvc2hvcnRpbnQvZW5naW5lL21vZC5ycwAAPhAAHwAAAD0AAAAaAAAAAD4QAB8AAABUAAAABQAAAAA+EAAfAAAAWAAAAAUAAAAAPhAAHwAAAGUAAAAUAAAAAD4QAB8AAAB6AAAAHwAAAAA+EAAfAAAAdAAAABgAAABUaGUgc2VydmVyIGtleSB3YXMgbm90IHByb3Blcmx5IGluaXRpYWxpemVkLgpEaWQgeW91IGZvcmdldCB0byBjYWxsIGBzZXRfc2VydmVyX2tleWAgaW4gdGhlIGN1cnJlbnQgdGhyZWFkID8KICAgICAgICAgICAgAAAAgD4QAHkAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL2l0ZXIucnMAQeD+wAALqQxhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvdG9vIG1hbnkgdmFsdWVzIHB1c2hlZCB0byBjb25zdW1lcgB5PxAAIgAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JheW9uLTEuMTAuMC9zcmMvaXRlci9jb2xsZWN0L2NvbnN1bWVyLnJzpD8QAGgAAAB+AAAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IGluZGV4IDw9IGxlbgAApD8QAGgAAABhAAAADQAAAGFsaWduX29mZnNldDogYWxpZ24gaXMgbm90IGEgcG93ZXItb2YtdHdvAAAATEAQACkAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL3B0ci9tdXRfcHRyLnJzAIBAEABPAAAAYwYAAA0AAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAASAAAAAQAAAAEAAAASQAAAGV4cGVjdGVkICB0b3RhbCB3cml0ZXMsIGJ1dCBnb3QgSEEQAAkAAABRQRAAFwAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JheW9uLTEuMTAuMC9zcmMvaXRlci9jb2xsZWN0L21vZC5ycwB4QRAAYwAAAGQAAAAFAAAAYXNzZXJ0aW9uIGZhaWxlZDogdmVjLmNhcGFjaXR5KCkgLSBzdGFydCA+PSBsZW4ApD8QAGgAAAASAAAACQAAAAQ/EABOAAAAWwcAABEAAAAKcmVxdWVzdGVkIGFsaWdubWVudCBpcyBsZXNzIHRoYW4gdGhlIG1pbmltdW0gdmFsaWQgYWxpZ25tZW50IGZvciBgYDoKIC0gcmVxdWVzdGVkIGFsaWdubWVudDogCiAtIG1pbmltdW0gYWxpZ25tZW50OiAKAAA8QhAAQwAAAH9CEAAbAAAAmkIQABcAAACxQhAAAQAAAApidWZmZXIgaXMgbm90IGxhcmdlIGVub3VnaCB0byBhbGxvY2F0ZSBhbiBhcnJheSBvZiB0eXBlIGBgIG9mIHRoZSByZXF1ZXN0ZWQgbGVuZ3RoOgogLSByZW1haW5pbmcgYnVmZmVyIGxlbmd0aCAoYWZ0ZXIgYWRqdXN0aW5nIGZvciBhbGlnbm1lbnQpOiAsCiAtIHJlcXVlc3RlZCBhcnJheSBsZW5ndGg6ICAoIGJ5dGVzKSwKAAAA1EIQADoAAAAOQxAAVwAAAGVDEAAdAAAAgkMQAAIAAACEQxAACQAAAApidWZmZXIgaXMgbm90IGxhcmdlIGVub3VnaCB0byBhY2NvbW9kYXRlIHRoZSByZXF1ZXN0ZWQgYWxpZ25tZW50CiAtIGJ1ZmZlciBsZW5ndGg6IAogLSByZXF1ZXN0ZWQgYWxpZ25tZW50OiAKIC0gYnl0ZSBvZmZzZXQgZm9yIGFsaWdubWVudDoguEMQAFQAAAAMRBAAGQAAACVEEAAfAAAAsUIQAAEAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9lbnRpdGllcy9jb21wcmVzc2VkX21vZHVsdXNfc3dpdGNoZWRfbHdlX2NpcGhlcnRleHQucnMAZEQQAEsAAAD5AAAAFQAAAGREEABLAAAA+wAAADgAAABkRBAASwAAAP4AAAArAAAAZEQQAEsAAADcAAAAJwAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2ZmdF9pbXBsL2ZmdDY0L2NyeXB0by9ib290c3RyYXAucnMA8EQQADcAAAAFAQAAFgAAAPBEEAA3AAAACAEAACMAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9mZnRfaW1wbC9mZnQ2NC9jcnlwdG8vZ2dzdy5ycwAASEUQADIAAAAqAgAAFgBBsIvBAAsBAQBB0IvBAAvVPmFyZ3VtZW50IG9mIGludGVnZXIgbG9nYXJpdGhtIG11c3QgYmUgcG9zaXRpdmUAANBFEAAuAAAAdGZoZS9zcmMvaW50ZWdlci9iaWdpbnQvc3RhdGljX3NpZ25lZC5ycwhGEAAoAAAATwAAAAkAAAAzNDAyODIzNjY5MjA5Mzg0NjM0NjMzNzQ2MDc0MzE3NjgyMTE0NTUxMjh0ZmhlL3NyYy9qc19vbl93YXNtX2FwaS9qc19oaWdoX2xldmVsX2FwaS9pbnRlZ2Vycy5ycwBqRhAANQAAABoAAAAtAAAAdmFsdWUgaXMgb3V0IG9mIHJhbmdlIGZvciB1MjU2AABqRhAANQAAAEsAAAAtAAAAakYQADUAAABNAAAALwAAAAEAAAB0ZmhlL3NyYy9oaWdoX2xldmVsX2FwaS9ib29sZWFucy9jb21wYWN0LnJzAPRGEAArAAAAiAAAABEAAAD0RhAAKwAAAIkAAABaAAAARmFpbGVkIHRvIGNvbnZlcnQgdGhlIHZhbHVlIHRvIGEgdTEyOEZhaWxlZCB0byBjb252ZXJ0IHRoZSB2YWx1ZSB0byBhIFUyNTZGYWlsZWQgdG8gY29udmVydCB0aGUgdmFsdWUgdG8gYSBpMTI4RmFpbGVkIHRvIGNvbnZlcnQgdGhlIHZhbHVlIHRvIGEgSTI1NlZhbHVlIGlzIG5vdCBhIGJvb2xlYW5Ob25lU29tZQAASgAAAAQAAAAEAAAAJAAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvY29yZS9zcmMvbnVtL21vZC5ycwAESBAASwAAAJEEAAAFAAAAYXR0ZW1wdCB0byBkaXZpZGUgYnkgemVybwAAAARIEABLAAAAqQQAAAUAAAAAAAAAYXR0ZW1wdCB0byBjYWxjdWxhdGUgdGhlIHJlbWFpbmRlciB3aXRoIGEgZGl2aXNvciBvZiB6ZXJvYXNzZXJ0aW9uIGZhaWxlZDogbWlkIDw9IHNlbGYubGVuKClhc3NlcnRpb24gZmFpbGVkOiBzdGVwICE9IDAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL2l0ZXIvYWRhcHRlcnMvc3RlcF9ieS5ycwdJEABZAAAAIQAAAAkAAABjaHVuayBzaXplIG11c3QgYmUgbm9uLXplcm8AcEkQABsAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlAFYAAAABAAAAAQAAAFcAAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlAFgAAAAEAAAABAAAAFkAAABaAAAAAAAAAAEAAABbAAAAXAAAAAgAAAAEAAAACAAAAF0AAAAIAAAABAAAAAoAAABdAAAACAAAAAQAAAAKAAAAWAAAAAQAAAAEAAAAXgAAAFgAAAAEAAAABAAAAF8AAABYAAAABAAAAAQAAABgAAAAWAAAAAQAAAAEAAAAYQAAAFgAAAAEAAAABAAAAGIAAABTaXplT3ZlcmZsb3dGb3JrVG9vTGFyZ2VaZXJvQ2hpbGRyZW5Db3VudFplcm9CeXRlc1BlckNoaWxkIGluIG91dHB1dCwgYW5kICBpbiBzZWNyZXQga2V5LnRmaGUvc3JjL2NvcmVfY3J5cHRvL2FsZ29yaXRobXMvZ2dzd19lbmNyeXB0aW9uLnJzRmFpbGVkIHRvIHNwbGl0IGdlbmVyYXRvciBpbnRvIGdnc3cgbGV2ZWxzYXNzZXJ0aW9uIGZhaWxlZDogY2lwaGVydGV4dF9tb2R1bHVzLmlzX2NvbXBhdGlibGVfd2l0aF9uYXRpdmVfbW9kdWx1cygpRmFpbGVkIHRvIHNwbGl0IGdlbmVyYXRvciBpbnRvIGdsd2X1ShAAMgAAAHIBAAAKAAAA9UoQADIAAAB5AQAABQAAAPVKEAAyAAAAhQEAAC4AAAD1ShAAMgAAAIoBAAAOAAAA9UoQADIAAADxAgAACQAAAPVKEAAyAAAA6QIAABcAAABNaXNtYXRjaGVkIG1vZHVsaSBiZXR3ZWVuIG91dHB1dF9tYXNrICgpIGFuZCBvdXRwdXRfYm9keSAoKQAcTBAAJwAAAENMEAATAAAAVkwQAAEAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL2dsd2VfZW5jcnlwdGlvbi5ycwAAcEwQADIAAAAlAAAABQAAAHBMEAAyAAAALwAAAAUAAABwTBAAMgAAADoAAAAwAAAATWlzbWF0Y2ggYmV0d2VlbiBHbHdlRGltZW5zaW9uIG9mIG91dHB1dCBjaXBoZXJ0ZXh0IGFuZCBpbnB1dCBzZWNyZXQga2V5LiBHb3QgAADUTBAATgAAANZKEAAQAAAA5koQAA8AAABNaXNtYXRjaCBiZXR3ZWVuIFBvbHlub21pYWxTaXplIG9mIG91dHB1dCBjaXBoZXJ0ZXh0IGFuZCBpbnB1dCBzZWNyZXQga2V5LiBHb3QgADxNEABPAAAA1koQABAAAADmShAADwAAAHBMEAAyAAAAzgAAAAUAAABwTBAAMgAAANUAAAAFAAAATWlzbWF0Y2hlZCBMd2VEaW1lbnNpb24gYmV0d2VlbiBpbnB1dCBMV0Ugc2VjcmV0IGtleSBhbmQgTFdFIGJvb3RzdHJhcCBrZXkuIElucHV0IExXRSBzZWNyZXQga2V5IEx3ZURpbWVuc2lvbjogLCBMV0UgYm9vdHN0cmFwIGtleSBpbnB1dCBMd2VEaW1lbnNpb24gLgDETRAAbwAAADNOEAAnAAAAWk4QAAEAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL2x3ZV9ib290c3RyYXBfa2V5X2dlbmVyYXRpb24ucnNNaXNtYXRjaGVkIEdsd2VTaXplIGJldHdlZW4gb3V0cHV0IEdMV0Ugc2VjcmV0IGtleSBhbmQgTFdFIGJvb3RzdHJhcCBrZXkuIE91dHB1dCBHTFdFIHNlY3JldCBrZXkgR2x3ZVNpemU6ICwgTFdFIGJvb3RzdHJhcCBrZXkgR2x3ZVNpemUgALNOEABrAAAAHk8QAB0AAABaThAAAQAAAE1pc21hdGNoZWQgUG9seW5vbWlhbFNpemUgYmV0d2VlbiBvdXRwdXQgR0xXRSBzZWNyZXQga2V5IGFuZCBMV0UgYm9vdHN0cmFwIGtleS4gT3V0cHV0IEdMV0Ugc2VjcmV0IGtleSBQb2x5bm9taWFsU2l6ZTogLCBMV0UgYm9vdHN0cmFwIGtleSBQb2x5bm9taWFsU2l6ZSAAAFRPEAB3AAAAy08QACMAAABaThAAAQAAAHROEAA/AAAAjgEAAAUAAAB0ThAAPwAAAJYBAAAFAAAAdE4QAD8AAACeAQAABQAAAHROEAA/AAAAsgEAAAoAAABhc3NlcnRpb24gZmFpbGVkOiBvdXRwdXRfbHdlX2NpcGhlcnRleHRfbGlzdC5lbnRpdHlfY291bnQoKSA9PQogICAgaW5wdXRfbHdlX2NvbXBhY3RfY2lwaGVydGV4dF9saXN0Lmx3ZV9jaXBoZXJ0ZXh0X2NvdW50KCkuMHRmaGUvc3JjL2NvcmVfY3J5cHRvL2FsZ29yaXRobXMvbHdlX2NvbXBhY3RfY2lwaGVydGV4dF9saXN0X2V4cGFuc2lvbi5ycwAAAMVQEABIAAAAFAAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiBvdXRwdXRfbHdlX2NpcGhlcnRleHRfbGlzdC5sd2Vfc2l6ZSgpID09CiAgICBpbnB1dF9sd2VfY29tcGFjdF9jaXBoZXJ0ZXh0X2xpc3QubHdlX3NpemUoKQDFUBAASAAAABkAAAAFAAAAxVAQAEgAAAAsAAAAHwAAAE1pc21hdGNoZWQgbW9kdWxpIGJldHdlZW4gbWFzayAoKSBhbmQgYm9keSAorFEQACAAAADMURAADAAAAFZMEAABAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vYWxnb3JpdGhtcy9sd2VfZW5jcnlwdGlvbi5ycwAAAPBREAAxAAAAJQAAAAUAAADwURAAMQAAAFgAAAAFAAAA8FEQADEAAABiAAAABQAAAPBREAAxAAAAeAAAADQAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2Rl8FEQADEAAAB8AAAAKQAAAPBREAAxAAAAlAAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiAhY2lwaGVydGV4dF9tb2R1bHVzLmlzX2NvbXBhdGlibGVfd2l0aF9uYXRpdmVfbW9kdWx1cygpAAAA8FEQADEAAACeAAAABQAAAE1pc21hdGNoIGJldHdlZW4gTHdlRGltZW5zaW9uIG9mIG91dHB1dCBjaXBoZXJ0ZXh0IGFuZCBpbnB1dCBzZWNyZXQga2V5LiBHb3QgAAAACFMQAE0AAADWShAAEAAAAOZKEAAPAAAA8FEQADEAAAD/AAAABQAAAPBREAAxAAAAJwIAAAUAAADwURAAMQAAADECAAAFAAAA8FEQADEAAAA+AgAANgAAAPBREAAxAAAAQQIAACkAAADwURAAMQAAAE4CAAAFAAAA8FEQADEAAABYAgAABQAAAE1pc21hdGNoIGJldHdlZW4gbnVtYmVyIG9mIG91dHB1dCBjaXBoZXJ0ZXh0cyBhbmQgaW5wdXQgcGxhaW50ZXh0cy4gR290ICBwbGFpbnRleHRzLCBhbmQgIGNpcGhlcnRleHQuAAAA4FMQAEgAAAAoVBAAEQAAADlUEAAMAAAA8FEQADEAAADAAgAABQAAAPBREAAxAAAAygIAAAoAAABNaXNtYXRjaGVkIG1vZHVsaSBiZXR3ZWVuIGx3ZV9wdWJsaWNfa2V5ICgpIGFuZCBvdXRwdXQgKIBUEAAqAAAAqlQQAA4AAABWTBAAAQAAAPBREAAxAAAAvwMAAAUAAABNaXNtYXRjaCBiZXR3ZWVuIEx3ZURpbWVuc2lvbiBvZiBvdXRwdXQgY2lwaGVydGV4dCBhbmQgaW5wdXQgcHVibGljIGtleS4gR290ICBpbiBwdWJsaWMga2V5LuBUEABNAAAA1koQABAAAAAtVRAADwAAAPBREAAxAAAAxwMAAAUAAADwURAAMQAAADUEAAAFAAAA8FEQADEAAAA9BAAABQAAAPBREAAxAAAAWwQAACQAAABNaXNtYXRjaGVkIEx3ZURpbWVuc2lvbiBiZXR3ZWVuIGlucHV0IEx3ZVNlY3JldEtleSAgYW5kIG91dHB1dCBTZWVkZWRMd2VDaXBoZXJ0ZXh0TGlzdCAAlFUQADMAAADHVRAAJAAAAFpOEAABAAAA8FEQADEAAACABAAABQAAAPBREAAxAAAAhwQAAAUAAADwURAAMQAAAJYEAAAKAAAA8FEQADEAAAAgBwAABQAAAE1pc21hdGNoIGJldHdlZW4gQ2lwaGVydGV4dE1vZHVsdXMgb2Ygb3V0cHV0IGNpcGhlcnRleHQgYW5kIGlucHV0IHB1YmxpYyBrZXkuIEdvdCAAAERWEABSAAAA1koQABAAAAAtVRAADwAAAPBREAAxAAAAKAcAAAUAAABUaGlzIG9wZXJhdGlvbiBvbmx5IHN1cHBvcnRzIG5hdGl2ZSBtb2R1bGkAAMBWEAAqAAAA8FEQADEAAAAwBwAABQAAAPBREAAxAAAAsQgAAAUAAADwURAAMQAAALkIAAAFAAAATWlzbWF0Y2ggYmV0d2VlbiBMd2VDaXBoZXJ0ZXh0Q291bnQgb2Ygb3V0cHV0IGNpcGhlcnRleHQgYW5kIFBsYWludGV4dENvdW50IG9mIGlucHV0IGxpc3QuIEdvdCAgaW4gaW5wdXQgcGxhaW50ZXh0IGxpc3QuJFcQAF8AAADWShAAEAAAAINXEAAZAAAA8FEQADEAAADBCAAABQAAAPBREAAxAAAAyQgAAAUAAABNaXNtYXRjaGVkIG1vZHVsaSBiZXR3ZWVuIGxocyAoKSBhbmQgcmhzICgpIEx3ZUNpcGhlcnRleHQAAADUVxAAHwAAAPNXEAALAAAA/lcQAA8AAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL2x3ZV9saW5lYXJfYWxnZWJyYS5ycwAAAChYEAA1AAAAXAAAAAUAAAAoWBAANQAAAGQAAAAFAAAAKFgQADUAAABxAAAABQAAAChYEAA1AAAAeQAAAAUAAAAoWBAANQAAAC4BAAAFAAAAKFgQADUAAAA1AQAALgAAAChYEAA1AAAARQEAAAUAAABNaXNtYXRjaGVkIG1vZHVsaSBiZXR3ZWVuIG91dHB1dCAoKSBhbmQgbGhzICgAAADQWBAAIgAAAPJYEAALAAAA/lcQAA8AAAAoWBAANQAAAIACAAAFAAAAKFgQADUAAACHAgAAFQAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2FsZ29yaXRobXMvbHdlX211bHRpX2JpdF9ib290c3RyYXBfa2V5X2dlbmVyYXRpb24ucnMAAAA4WRAASQAAAAcCAAAFAAAAOFkQAEkAAAAPAgAABQAAADhZEABJAAAAFwIAAAUAAAA4WRAASQAAACQCAAAFAAAAOFkQAEkAAAAsAgAABQAAADhZEABJAAAANAIAAAUAAAA4WRAASQAAAEQCAAAKAAAAOFkQAEkAAABRAgAAEgAAADhZEABJAAAAXAIAAA4AAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL2x3ZV9tdWx0aV9iaXRfcHJvZ3JhbW1hYmxlX2Jvb3RzdHJhcHBpbmcucnMAFFoQAEsAAAAoAAAALgAAABRaEABLAAAALQAAAAoAAABNaXNtYXRjaGVkIGlucHV0IEx3ZURpbWVuc2lvbi4gTHdlQ2lwaGVydGV4dCBpbnB1dCBMd2VEaW1lbnNpb24gLiBGb3VyaWVyTHdlTXVsdGlCaXRCb290c3RyYXBLZXkgaW5wdXQgTHdlRGltZW5zaW9uIIBaEABAAAAAwFoQADQAAABaThAAAQAAABRaEABLAAAAMAEAAAUAAABNaXNtYXRjaGVkIEdsd2VTaXplLiBBY2N1bXVsYXRvciBHbHdlU2l6ZSAuIEZvdXJpZXJMd2VNdWx0aUJpdEJvb3RzdHJhcEtleSBHbHdlU2l6ZSAcWxAAKgAAAEZbEAAqAAAAWk4QAAEAAAAUWhAASwAAADkBAAAFAAAATWlzbWF0Y2hlZCBQb2x5bm9taWFsU2l6ZS4gQWNjdW11bGF0b3IgUG9seW5vbWlhbFNpemUgLiBGb3VyaWVyTHdlTXVsdGlCaXRCb290c3RyYXBLZXkgUG9seW5vbWlhbFNpemUgAACYWxAANgAAAM5bEAAwAAAAWk4QAAEAAAAUWhAASwAAAEIBAAAFAAAATWlzbWF0Y2hlZCBDaXBoZXJ0ZXh0TW9kdWx1cyBiZXR3ZWVuIGlucHV0ICgpIGFuZCBhY2N1bXVsYXRvciAoAChcEAAsAAAAVFwQABMAAABWTBAAAQAAABRaEABLAAAASwEAAAUAAABHb3QgdGhyZWFkX2NvdW50ID09IDAsIHRoaXMgaXMgbm90IHN1cHBvcnRlZJBcEAAsAAAAFFoQAEsAAABTAQAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IGFjY3VtdWxhdG9yLmNpcGhlcnRleHRfbW9kdWx1cygpLmlzX2NvbXBhdGlibGVfd2l0aF9uYXRpdmVfbW9kdWx1cygpAAAUWhAASwAAAFgBAAAFAAAAYXNzZXJ0aW9uIGZhaWxlZDogd29ya19xdWV1ZS5sZW4oKSA9PSBsd2VfbWFzay5sd2VfZGltZW5zaW9uKCkuMCAvIGdyb3VwaW5nX2ZhY3Rvci4wFFoQAEsAAABtAQAABQAAABRaEABLAAAAkgEAAAUAAAAUWhAASwAAAJoBAAAwAAAAFFoQAEsAAACeAQAAPAAAABRaEABLAAAApQEAAE0AAAAUWhAASwAAAK0BAABKAAAAFFoQAEsAAAC7AQAAIwAAABRaEABLAAAAqgEAAEsAAAAUWhAASwAAACgCAAAFAAAAFFoQAEsAAAAxAgAABQAAABRaEABLAAAAOgIAAAUAAAAUWhAASwAAAEMCAAAFAAAAFFoQAEsAAABLAgAABQAAABRaEABLAAAAYQIAAAUAAAAUWhAASwAAAIICAAAFAAAAFFoQAEsAAACOAgAANAAAABRaEABLAAAAkAIAAE0AAAAUWhAASwAAAJgCAABKAAAAFFoQAEsAAACeAgAANQAAABRaEABLAAAAowIAABYAAAAUWhAASwAAAJUCAABLAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vYWxnb3JpdGhtcy9wb2x5bm9taWFsX2FsZ29yaXRobXMucnPgXhAAOAAAACEAAAAFAAAA4F4QADgAAACBAAAAMwAAAE91dHB1dCBwb2x5bm9taWFsIHNpemUgIGlzIG5vdCB0aGUgc2FtZSBhcyBpbnB1dCBsaHMgcG9seW5vbWlhbCA4XxAAFwAAAE9fEAApAAAAWk4QAAEAAADgXhAAOAAAAK8AAAAFAAAAIGlzIG5vdCB0aGUgc2FtZSBhcyBpbnB1dCByaHMgcG9seW5vbWlhbCAAAAA4XxAAFwAAAKBfEAApAAAAWk4QAAEAAADgXhAAOAAAALUAAAAFAAAA4F4QADgAAADhAAAAHQAAAOBeEAA4AAAACwEAAB0AAAAgaXMgbm90IHRoZSBzYW1lIGFzIGlucHV0IHBvbHlub21pYWwgc2l6ZSAAADhfEAAXAAAAFGAQACoAAABaThAAAQAAAOBeEAA4AAAAQwEAAAUAAADgXhAAOAAAAEsBAAAcAAAA4F4QADgAAADHAQAABQAAAOBeEAA4AAAAzwEAABwAAADgXhAAOAAAALUCAAAFAAAA4F4QADgAAAC7AgAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IHBvbHlfc2l6ZS5pc19wb3dlcl9vZl90d28oKQAAAOBeEAA4AAAAxQIAAAUAAADgXhAAOAAAANMCAAAkAAAA4F4QADgAAADTAgAAOAAAAOBeEAA4AAAA1AIAACQAAADgXhAAOAAAANQCAAA1AAAA4F4QADgAAADVAgAAKwAAAOBeEAA4AAAA1QIAAD8AAADgXhAAOAAAANYCAAArAAAA4F4QADgAAADWAgAAPwAAAOBeEAA4AAAAAgMAACgAAADgXhAAOAAAAAIDAAA8AAAA4F4QADgAAAADAwAAKAAAAOBeEAA4AAAAAwMAADkAAADgXhAAOAAAAAkDAAAkAAAA4F4QADgAAADuAgAAHwAAAE1pc21hdGNoZWQgQ2lwaGVydGV4dE1vZHVsdXMgYmV0d2VlbiBpbnB1dCBTZWVkZWRMd2VDaXBoZXJ0ZXh0TGlzdCAoKSBhbmQgb3V0cHV0IEx3ZUNpcGhlcnRleHRMaXN0ICjYYRAARAAAABxiEAAgAAAAVkwQAAEAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL3NlZWRlZF9sd2VfY2lwaGVydGV4dF9saXN0X2RlY29tcHJlc3Npb24ucnMAVGIQAEsAAAAbAAAABQAAAEVycm9yIHdoaWxlIGZvcmtpbmcgZ2VuZXJhdG9yIGZvciBTZWVkZWRMd2VDaXBoZXJ0ZXh0TGlzdCBkZWNvbXByZXNzaW9uLlRiEABLAAAALQAAAAoAAABUYhAASwAAAEAAAAAoAAAAbm90IHlldCBpbXBsZW1lbnRlZDogVGhpcyBkaXN0cmlidXRpb24gZG9lcyBub3Qgc3VwcG9ydCBjdXN0b20gbW9kdWx1cyBnZW5lcmF0aW9uIGF0IHRoaXMgdGltZS4AGGMQAF8AAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9jb21tb25zL21hdGgvcmFuZG9tL21vZC5ycwCAYxAALwAAAD8AAAAJAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZW50aXRpZXMvc2VlZGVkX2x3ZV9tdWx0aV9iaXRfYm9vdHN0cmFwX2tleS5ycwDAYxAAQwAAAG4BAAANAAAATXVsdGkgQml0IEJTSyByZXF1aXJlcyBpbnB1dCBMV0UgZGltZW5zaW9uICgpIHRvIGJlIGEgbXVsdGlwbGUgb2YgAAAUZBAALAAAAEBkEAAWAAAAwGMQAEMAAABtAQAACQAAAHRmaGUvc3JjL2ludGVnZXIvZW5jcnlwdGlvbi5ycwAAeGQQAB4AAABNAAAAKwAAAHRmaGUvc3JjL2ludGVnZXIvYmlnaW50L2FsZ29yaXRobXMucnMAAACoZBAAJQAAAHQAAAAqAAAAYXNzZXJ0aW9uIGZhaWxlZDogbGhzLmxlbigpID49IHJocy5sZW4oKahkEAAlAAAAqQAAAAUAAACoZBAAJQAAAL0AAAAiAEHIysEACwEBAEHoysEAC/oGqGQQACUAAAA0AQAAEQAAAKhkEAAlAAAAOgEAABgAAACoZBAAJQAAAEIBAAAcAAAAqGQQACUAAABeAQAAEQAAAKhkEAAlAAAAYwEAABwAAAB0ZmhlL3NyYy9pbnRlZ2VyL2NsaWVudF9rZXkvbW9kLnJzAAAAAAAA/////////////////////////////////////////3+4ZRAAIgAAALMAAAAuAAAAuGUQACIAAABjAQAARQAAAGFzc2VydGlvbiBmYWlsZWQ6IG1lc3NhZ2VfbW9kdWx1cy5pc19wb3dlcl9vZl90d28oKQC4ZRAAIgAAALsBAAAJAAAAuGUQACIAAADDAQAAMwAAAHRmaGUvc3JjL2ludGVnZXIvcHVibGljX2tleS9zdGFuZGFyZC5ycwB0ZhAAJwAAAEEAAAAuAAAAYwAAAE1vZHVsdXMgc3dpdGNoIGNvbXByZXNzaW9uIGFuZCBtdWx0aSBiaXQgUEJTIGFyZSBjdXJyZW50bHkgbm90IGNvbXBhdGlibGUAAACwZhAASQAAAHRmaGUvc3JjL3Nob3J0aW50L3NlcnZlcl9rZXkvbW9kdWx1c19zd2l0Y2hlZF9jb21wcmVzc2lvbi5ycwRnEAA8AAAAawAAAA0AAAB0ZmhlL3NyYy9zaG9ydGludC9zZXJ2ZXJfa2V5L21vZC5ycwBQZxAAIwAAAJcFAAASAAAAMTI4NjQwdGZoZS9zcmMvaGlnaF9sZXZlbF9hcGkvaW50ZWdlcnMvbW9kLnJzAAAAimcQACcAAAAhAAAALgAAAIpnEAAnAAAAIQAAAAkAAAB2YXJpYW50IGluZGV4IDAgPD0gaSA8IDLUZxAAGAAAAFgAAAAIAAAABAAAADoAAABQbGFpbnRleHRDb3VudAAAWAAAAAQAAAAEAAAAJQAAAEx3ZUNpcGhlcnRleHRDb3VudEx3ZURpbWVuc2lvbkdsd2VTaXplR2x3ZURpbWVuc2lvblBvbHlub21pYWxTaXplTWVzc2FnZVgAAAAEAAAABAAAACYAAAAMAAAAEQAAABEAAACoShAAtEoQAMVKEAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL2l0ZXIucnMAQfDRwQALiTBhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvYXNzZXJ0aW9uIGZhaWxlZDogbWlkIDw9IHNlbGYubGVuKCl1NjQAYWxpZ25fb2Zmc2V0OiBhbGlnbiBpcyBub3QgYSBwb3dlci1vZi10d28AAAAwaRAAKQAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvY29yZS9zcmMvcHRyL211dF9wdHIucnMAZGkQAE8AAABjBgAADQAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvbW9kLnJzAAAAxGkQAE0AAABoDQAACQAAAGNodW5rIHNpemUgbXVzdCBiZSBub24temVybwAkahAAGwAAAGFzc2VydGlvbiBmYWlsZWQ6IGsgPD0gc2VsZi5sZW4oKQAAAMRpEABNAAAAkw0AAAkAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAAZQAAAAgAAAAEAAAACgAAAGYAAAAIAAAABAAAAAoAAACUaBAATgAAAFsHAAARAAAACnJlcXVlc3RlZCBhbGlnbm1lbnQgaXMgbGVzcyB0aGFuIHRoZSBtaW5pbXVtIHZhbGlkIGFsaWdubWVudCBmb3IgYGA6CiAtIHJlcXVlc3RlZCBhbGlnbm1lbnQ6IAogLSBtaW5pbXVtIGFsaWdubWVudDogCgAABGsQAEMAAABHaxAAGwAAAGJrEAAXAAAAeWsQAAEAAAAKYnVmZmVyIGlzIG5vdCBsYXJnZSBlbm91Z2ggdG8gYWxsb2NhdGUgYW4gYXJyYXkgb2YgdHlwZSBgYCBvZiB0aGUgcmVxdWVzdGVkIGxlbmd0aDoKIC0gcmVtYWluaW5nIGJ1ZmZlciBsZW5ndGggKGFmdGVyIGFkanVzdGluZyBmb3IgYWxpZ25tZW50KTogLAogLSByZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoOiAgKCBieXRlcyksCgAAAJxrEAA6AAAA1msQAFcAAAAtbBAAHQAAAEpsEAACAAAATGwQAAkAAAAKYnVmZmVyIGlzIG5vdCBsYXJnZSBlbm91Z2ggdG8gYWNjb21vZGF0ZSB0aGUgcmVxdWVzdGVkIGFsaWdubWVudAogLSBidWZmZXIgbGVuZ3RoOiAKIC0gcmVxdWVzdGVkIGFsaWdubWVudDogCiAtIGJ5dGUgb2Zmc2V0IGZvciBhbGlnbm1lbnQ6IIBsEABUAAAA1GwQABkAAADtbBAAHwAAAHlrEAABAAAATWlzbWF0Y2hlZCBpbnB1dCBMd2VEaW1lbnNpb24uIEx3ZUtleXN3aXRjaEtleSBpbnB1dCBMd2VEaW1lbnNpb246ICwgaW5wdXQgTHdlQ2lwaGVydGV4dCBMd2VEaW1lbnNpb24gLgAsbRAAQwAAAG9tEAAjAAAAkm0QAAEAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL2x3ZV9rZXlzd2l0Y2gucnOsbRAAMAAAAGsAAAAFAAAATWlzbWF0Y2hlZCBvdXRwdXQgTHdlRGltZW5zaW9uLiBMd2VLZXlzd2l0Y2hLZXkgb3V0cHV0IEx3ZURpbWVuc2lvbjogLCBvdXRwdXQgTHdlQ2lwaGVydGV4dCBMd2VEaW1lbnNpb24gAAAA7G0QAEUAAAAxbhAAJAAAAJJtEAABAAAArG0QADAAAABzAAAABQAAAE1pc21hdGNoZWQgQ2lwaGVydGV4dE1vZHVsdXMuIEx3ZUtleXN3aXRjaEtleSBDaXBoZXJ0ZXh0TW9kdWx1czogLCBvdXRwdXQgTHdlQ2lwaGVydGV4dCBDaXBoZXJ0ZXh0TW9kdWx1cyAAAIBuEABBAAAAwW4QACkAAACSbRAAAQAAAKxtEAAwAAAAfgAAAAUAAABUaGlzIG9wZXJhdGlvbiBjdXJyZW50bHkgb25seSBzdXBwb3J0cyBwb3dlciBvZiAyIG1vZHVsaRRvEAA4AAAArG0QADAAAACGAAAABQAAAKxtEAAwAAAAjQAAAAUAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL2x3ZV9wcm9ncmFtbWFibGVfYm9vdHN0cmFwcGluZy5ycwAAAHRvEABBAAAAFwEAAAUAAAApTWlzbWF0Y2hlZCBDaXBoZXJ0ZXh0TW9kdWx1cyBiZXR3ZWVuIGlucHV0IFNlZWRlZEx3ZUNpcGhlcnRleHQgKCkgYW5kIG91dHB1dCBMd2VDaXBoZXJ0ZXh0ICgAAADJbxAAQAAAAAlwEAAcAAAAyG8QAAEAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL3NlZWRlZF9sd2VfY2lwaGVydGV4dF9kZWNvbXByZXNzaW9uLnJzAABAcBAARgAAABQAAAAFAAAAQHAQAEYAAAAoAAAAJAAAAEBwEABGAAAAOwAAAAUAAABNaXNtYXRjaGVkIENpcGhlcnRleHRNb2R1bHVzIGJldHdlZW4gaW5wdXQgU2VlZGVkTHdlUHVibGljS2V5ICgpIGFuZCBvdXRwdXQgTHdlUHVibGljS2V5ICgAALhwEAA/AAAA93AQABsAAADIbxAAAQAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2FsZ29yaXRobXMvc2VlZGVkX2x3ZV9wdWJsaWNfa2V5X2RlY29tcHJlc3Npb24ucnMAACxxEABGAAAAEwAAAAUAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9jb21tb25zL3RyYWl0cy9jb250YWluZXIucnOEcRAAMAAAAFgAAAASAAAAhHEQADAAAABnAAAADgAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2VudGl0aWVzL2x3ZV9tdWx0aV9iaXRfYm9vdHN0cmFwX2tleS5yc9RxEAA8AAAAeAEAAA4AAADUcRAAPAAAAI0BAAAWAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZmZ0X2ltcGwvZmZ0NjQvY3J5cHRvL2Jvb3RzdHJhcC5ycwAwchAANwAAAPkAAAA1AAAAYXNzZXJ0aW9uIGZhaWxlZDogY2lwaGVydGV4dF9tb2R1bHVzLmlzX2NvbXBhdGlibGVfd2l0aF9uYXRpdmVfbW9kdWx1cygpMHIQADcAAAD9AAAACQAAADByEAA3AAAADgEAACoAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9mZnRfaW1wbC9mZnQ2NC9jcnlwdG8vZ2dzdy5ycwAA4HIQADIAAAA+AAAACQAAAOByEAAyAAAAjAAAAAkAAADgchAAMgAAAPcBAAAPAAAA4HIQADIAAABiAgAARwAAAOByEAAyAAAAYwIAADwAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9mZnRfaW1wbC9mZnQ2NC9tYXRoL2RlY29tcG9zaXRpb24ucnMAAABkcxAAOQAAACMAAAATAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZmZ0X2ltcGwvZmZ0NjQvbWF0aC9mZnQvbW9kLnJzALBzEAAzAAAAtwAAAC4AAACwcxAAMwAAAL8AAAAeAAAAsHMQADMAAACXAAAALQAAALBzEAAzAAAAoAEAABYAAACwcxAAMwAAALQBAAARAAAAsHMQADMAAAC1AQAAEQAAAEF0IGxlYXN0IG9uZSBtZXNzYWdlIGlzIHJlcXVpcmVkRHQQACAAAAB0ZmhlL3NyYy9pbnRlZ2VyL3B1YmxpY19rZXkvY29tcGFjdC5ycwAAbHQQACYAAABfAAAAHQAAAGcAAABgAAAACAAAAGgAAABpAAAAagAAAGsAAABsAAAAOAAAAAgAAABtAAAAbgAAAG8AAABwAAAAZwAAAHAAAAAIAAAAcQAAAHIAAABzAAAAdAAAAHUAAABAAAAACAAAAHYAAAB3AAAAeAAAAHkAAABnAAAAUAEAAAgAAAB6AAAAewAAAHwAAAB9AAAAfgAAALAAAAAIAAAAfwAAAIAAAACBAAAAggAAAGcAAADQAAAACAAAAIMAAACEAAAAhQAAAIYAAACHAAAAcAAAAAgAAACIAAAAiQAAAIoAAACLAAAAZwAAAFABAAAIAAAAjAAAAHsAAACNAAAAjgAAAH4AAACwAAAACAAAAI8AAACAAAAAkAAAAJEAAABnAAAA0AAAAAgAAACSAAAAhAAAAJMAAACUAAAAhwAAAHAAAAAIAAAAlQAAAIkAAACWAAAAlwAAAGcAAACQAAAACAAAAJgAAACZAAAAmgAAAJsAAACcAAAAUAAAAAgAAACdAAAAngAAAJ8AAACgAAAAZwAAAGAAAAAIAAAAoQAAAGkAAACiAAAAowAAAGwAAAA4AAAACAAAAKQAAABuAAAApQAAAKYAAABnAAAAUAAAAAgAAACnAAAAqAAAAKkAAACqAAAAqwAAADAAAAAIAAAArAAAAK0AAACuAAAArwAAAGcAAACQAAAACAAAALAAAACZAAAAsQAAALIAAACcAAAAUAAAAAgAAACzAAAAngAAALQAAAC1AAAAZwAAAFAAAAAIAAAAtgAAAKgAAAC3AAAAuAAAAKsAAAAwAAAACAAAALkAAACtAAAAugAAALsAAABnAAAAcAAAAAgAAAC8AAAAcgAAAL0AAAC+AAAAdQAAAEAAAAAIAAAAvwAAAHcAAADAAAAAwQAAAHRmaGUvc3JjL2ludGVnZXIvcHVibGljX2tleS9jb21wcmVzc2VkLnJzAAAARHcQACkAAAA+AAAALgAAAMIAAABMd2VEaW1lbnNpb27DAAAABAAAAAQAAAAlAAAAdmFyaWFudCBpbmRleCAwIDw9IGkgPCAyoHcQABgAAADDAAAACAAAAAQAAAA6AAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3N5bmMvb25jZS5yc9B3EABMAAAA0AAAABQAAAAAAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9jb3JlL3NyYy9udW0vbW9kLnJzAAAAAABhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvAAAAAAAAAGF0dGVtcHQgdG8gY2FsY3VsYXRlIHRoZSByZW1haW5kZXIgd2l0aCBhIGRpdmlzb3Igb2YgemVybwAAADB4EABLAAAAkQQAAAUAAAAweBAASwAAAKkEAAAFAAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZWNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAAMUAAAAEAAAABAAAAMYAAABNaXNtYXRjaCBiZXR3ZWVuIGVxdWl2YWxlbnQgTHdlRGltZW5zaW9uIG9mIGlucHV0IGNpcGhlcnRleHQgYW5kIG91dHB1dCBjaXBoZXJ0ZXh0LiBHb3QgIGZvciBpbnB1dCBhbmQgIGZvciBvdXRwdXQuAGR5EABYAAAAvHkQAA8AAADLeRAADAAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2FsZ29yaXRobXMvZ2x3ZV9zYW1wbGVfZXh0cmFjdGlvbi5ycwAAAPB5EAA5AAAAagAAAAUAAABNaXNtYXRjaGVkIG1vZHVsaSBiZXR3ZWVuIGlucHV0X2dsd2UgKCkgYW5kIG91dHB1dF9sd2UgKCkAAAA8ehAAJgAAAGJ6EAASAAAAdHoQAAEAAADweRAAOQAAAHAAAAAFAAAA8HkQADkAAAB9AAAAFgAAAPB5EAA5AAAAgAAAABcAAADweRAAOQAAAI4AAAA6AAAAVGhpcyBvcGVyYXRpb24gb25seSBzdXBwb3J0cyBuYXRpdmUgbW9kdWxpAADQehAAKgAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2FsZ29yaXRobXMvbHdlX2NvbXBhY3RfcHVibGljX2tleV9nZW5lcmF0aW9uLnJzBHsQAEQAAAAhAAAABQAAAE1pc21hdGNoZWQgTHdlRGltZW5zaW9uIGJldHdlZW4gaW5wdXQgTHdlU2VjcmV0S2V5ICBhbmQgb3V0cHV0IEx3ZUNvbXBhY3RQdWJsaWNLZXkgAFh7EAAzAAAAi3sQACAAAAAEexAARAAAACYAAAAFAAAABHsQAEQAAAByAAAABQAAAAR7EABEAAAAdwAAAAUAAAAsIGlucHV0OiB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL2x3ZV9rZXlzd2l0Y2hfa2V5X2dlbmVyYXRpb24ucnMsIG91dHB1dDogYXNzZXJ0aW9uIGZhaWxlZDogY2lwaGVydGV4dF9tb2R1bHVzLmlzX2NvbXBhdGlibGVfd2l0aF9uYXRpdmVfbW9kdWx1cygpVGhlIGRlc3RpbmF0aW9uIFNlZWRlZEx3ZUtleXN3aXRjaEtleSBpbnB1dCBMd2VEaW1lbnNpb24gaXMgbm90IGVxdWFsIHRvIHRoZSBpbnB1dCBMd2VTZWNyZXRLZXkgTHdlRGltZW5zaW9uLiBEZXN0aW5hdGlvbjogAAAAhnwQAHsAAADsexAACQAAAPV7EAA/AAAAAwEAAAUAAABUaGUgZGVzdGluYXRpb24gU2VlZGVkTHdlS2V5c3dpdGNoS2V5IG91dHB1dCBMd2VEaW1lbnNpb24gaXMgbm90IGVxdWFsIHRvIHRoZSBvdXRwdXQgTHdlU2VjcmV0S2V5IEx3ZURpbWVuc2lvbi4gRGVzdGluYXRpb246IAAAACR9EAB9AAAANHwQAAoAAAD1exAAPwAAAAoBAAAFAAAA9XsQAD8AAAAVAQAABQAAAPV7EAA/AAAAMQEAADIAAABsaHMgKGxlbjogKSBhbmQgcmhzIChsZW46ICkg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M2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3N5bmMvbXBtYy9tb2QucnMkhRAAUAAAAIUAAAAtAAAAdGhyZWFkIG5hbWUgbWF5IG5vdCBjb250YWluIGludGVyaW9yIG51bGwgYnl0ZXMAzgAAABAAAAAEAAAAzwAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbW9kLnJzAAAAxIUQAE0AAADcAQAAIAAAANAAAAAkAAAABAAAANEAAADSAAAAKAAAAAQAAADTAAAATnVsRXJyb3LUAAAABAAAAAQAAADVAAAA1AAAAAQAAAAEAAAA1gAAAFV0ZjhFcnJvcnZhbGlkX3VwX3RvZXJyb3JfbGVuAAAA1AAAAAQAAAAEAAAA1wAAAESGEAAAAAAAT3BlcmF0aW9uIEZhaWxlZEVycm9ya2luZAAAANQAAAAEAAAABAAAANgAAABTZW5kRXJyb3JQb2lzb25FcnJvctkAAAAMAAAABAAAANoAAADbAAAAHgAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkA3AAAAAAAAAABAAAA3QAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwBEhxAASwAAADMKAAAOAAAARXJyb3IKClN0YWNrOgoKCgoAAABJbnZhbGlkIHNpemUgOiBzaXplcyBtdXN0IGZpdCBpbiBhIHVzaXplICgwIHRvICm0hxAADQAAAMGHEAAiAAAA44cQAAEAAAD/////c3RyaW5nIGlzIG5vdCB2YWxpZCB1dGY4aW52YWxpZCB1OCB3aGlsZSBkZWNvZGluZyBib29sY2hhciBpcyBub3QgdmFsaWR0YWcgZm9yIGVudW0gaXMgbm90IHZhbGlkQmluY29kZSBkb2Vzbid0IHN1cHBvcnQgc2VyZGU6OkRlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemVfYW55dGhlIHNpemUgbGltaXQgaGFzIGJlZW4gcmVhY2hlZEJpbmNvZGUgY2FuIG9ubHkgZW5jb2RlIHNlcXVlbmNlcyBhbmQgbWFwcyB0aGF0IGhhdmUgYSBrbm93YWJsZSBzaXplIGFoZWFkIG9mIHRpbWVpbyBlcnJvcjogAA2JEAAKAAAAOiAAALSHEAAAAAAAIIkQAAIAAAAsIGV4cGVjdGVkIDAgb3IgMSwgZm91bmQgAAAAtIcQAAAAAAA0iRAAGQAAALSHEAAAAAAALCBmb3VuZCC0hxAAAAAAAGiJEAAIAAAAQmluY29kZSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBzZXJkZTo6RGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZV9hbnkgbWV0aG9kgIkQAEgAAABjYW5ub3QgYWNjZXNzIGEgVGhyZWFkIExvY2FsIFN0b3JhZ2UgdmFsdWUgZHVyaW5nIG9yIGFmdGVyIGRlc3RydWN0aW9uAADiAAAAAAAAAAEAAAAOAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwAoihAATwAAAPYAAAAaAAAARXJyb3Jvc19lcnJvcgAAAOMAAAAEAAAABAAAAOQAAABkZXNjcmlwdGlvbgDjAAAACAAAAAQAAADlAAAAaW50ZXJuYWxfY29kZQAAAOMAAAAEAAAABAAAAOYAAAB1bmtub3duX2NvZGVnZXRyYW5kb206IHRoaXMgdGFyZ2V0IGlzIG5vdCBzdXBwb3J0ZWRlcnJubzogZGlkIG5vdCByZXR1cm4gYSBwb3NpdGl2ZSB2YWx1ZVNlY1JhbmRvbUNvcHlCeXRlczogaU9TIFNlY3VyaXR5IGZyYW1ld29yayBmYWlsdXJlUnRsR2VuUmFuZG9tOiBXaW5kb3dzIHN5c3RlbSBmdW5jdGlvbiBmYWlsdXJlUkRSQU5EOiBmYWlsZWQgbXVsdGlwbGUgdGltZXM6IENQVSBpc3N1ZSBsaWtlbHlSRFJBTkQ6IGluc3RydWN0aW9uIG5vdCBzdXBwb3J0ZWRXZWIgQ3J5cHRvIEFQSSBpcyB1bmF2YWlsYWJsZUNhbGxpbmcgV2ViIEFQSSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzIGZhaWxlZHJhbmRTZWN1cmU6IFZ4V29ya3MgUk5HIG1vZHVsZSBpcyBub3QgaW5pdGlhbGl6ZWROb2RlLmpzIGNyeXB0byBDb21tb25KUyBtb2R1bGUgaXMgdW5hdmFpbGFibGVDYWxsaW5nIE5vZGUuanMgQVBJIGNyeXB0by5yYW5kb21GaWxsU3luYyBmYWlsZWROb2RlLmpzIEVTIG1vZHVsZXMgYXJlIG5vdCBkaXJlY3RseSBzdXBwb3J0ZWQsIHNlZSBodHRwczovL2RvY3MucnMvZ2V0cmFuZG9tI25vZGVqcy1lcy1tb2R1bGUtc3VwcG9ydAAAAOcAAABjcnlwdG8AACcAAAAmAAAAAAAAADIAAAAtAAAALwAAACEAAAAdAAAALQBB5JrCAAszMQAAAC0AAAAwAAAAZQAAAPCKEAAXixAAAAAAAD2LEABvixAAnIsQAMuLEADsixAACYwQAEGgm8IAC8UFNowQAGeMEACUjBAAxIwQAOgAAAByZXR1cm4gdGhpc2Nhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24AAADpAAAAAAAAAAEAAAAOAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwAYjhAATwAAAPYAAAAaAAAAVHJpZWQgdG8gc2hyaW5rIHRvIGEgbGFyZ2VyIGNhcGFjaXR5eI4QACQAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjLnJzpI4QAEwAAADPAQAACQAAAGNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkSnNWYWx1ZSgpADKPEAAIAAAAOo8QAAEAAABudWxsIHBvaW50ZXIgcGFzc2VkIHRvIHJ1c3RyZWN1cnNpdmUgdXNlIG9mIGFuIG9iamVjdCBkZXRlY3RlZCB3aGljaCB3b3VsZCBsZWFkIHRvIHVuc2FmZSBhbGlhc2luZyBpbiBydXN0AABUcmllZCB0byBzaHJpbmsgdG8gYSBsYXJnZXIgY2FwYWNpdHm4jxAAJAAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMucnPkjxAATAAAAM8BAAAJAAAA9wAAAAwAAAAEAAAA+AAAAPkAAAAeAAAA+wAAAAQAAAAEAAAA/ABBgKHCAAvWHmNvbmNyZXRlLWNzcHJuZy9zcmMvZ2VuZXJhdG9ycy9hZXNfY3RyL3N0YXRlcy5yc4CQEAAwAAAAJgAAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBzdGFydF9pbmRleCA8IGJvdW5kX2luZGV4Y29uY3JldGUtY3Nwcm5nL3NyYy9nZW5lcmF0b3JzL2Flc19jdHIvZ2VuZXJpYy5yc+uQEAAxAAAASQAAAAkAAABBZXNJbmRlePsAAAAEAAAABAAAAP0AAABCeXRlSW5kZXgAAAD7AAAABAAAAAQAAAAlAAAAVGFibGVJbmRleGFlc19pbmRleAD+AAAAEAAAAAgAAAD/AAAAYnl0ZV9pbmRleAAA+wAAAAQAAAAEAAAAAAEAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Flcy0wLjguMi9zcmMvc29mdC9maXhzbGljZTMyLnJzAKCREABfAAAAiQQAABIAAACgkRAAXwAAAIkEAAA9AAAAoJEQAF8AAAAUBQAAIgAAAKCREABfAAAAFAUAAAkAAAABAQAACAAAAAQAAAACAQAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQADAQAACAAAAAQAAAAIAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmF5b24tY29yZS0xLjEyLjEvc3JjL2xhdGNoLnJzAAAAjJIQAF0AAAALAQAAKgAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JheW9uLWNvcmUtMS4xMi4xL3NyYy9yZWdpc3RyeS5yc1RoZSBnbG9iYWwgdGhyZWFkIHBvb2wgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkLvySEABgAAAAqAAAAAoAAAD8khAAYAAAAMAAAAAWAAAA/JIQAGAAAAArAQAANgAAAAQBAAD8khAAYAAAADIDAAAvAAAA/JIQAGAAAAA4AwAAKgAAAPySEABgAAAAjwMAACYAAABUaHJlYWRQb29sQnVpbGRFcnJvcmtpbmQFAQAABAAAAAQAAAAGAQAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY3Jvc3NiZWFtLWVwb2NoLTAuOS4xNC9zcmMvaW50ZXJuYWwucnMAAAAYlBAAZQAAAIIBAAA5AAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZXRocmVhZCBuYW1lIG1heSBub3QgY29udGFpbiBpbnRlcmlvciBudWxsIGJ5dGVzAAAHAQAAQAAAAAQAAAAIAQAACQEAABAAAAAEAAAACgEAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbW9kLnJzAAAADJUQAE0AAADcAQAAIAAAAE51bEVycm9yCwEAAAQAAAAEAAAADAEAAAsBAAAEAAAABAAAANYAAABvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtlJUQACgAAAAkAAAAR2xvYmFsUG9vbEFscmVhZHlJbml0aWFsaXplZEN1cnJlbnRUaHJlYWRBbHJlYWR5SW5Qb29sSU9FcnJvcgAAAA0BAAAEAAAABAAAACIAAAAAY2Fubm90IHJlY3Vyc2l2ZWx5IGFjcXVpcmUgbXV0ZXgAAAAZlhAAIAAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy9zeXMvd2FzbS8uLi91bnN1cHBvcnRlZC9sb2Nrcy9tdXRleC5ycwAARJYQAGYAAAAUAAAACQAAAGNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24AAA4BAAAAAAAAAQAAAA4AAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzABSXEABPAAAA9gAAABoAAABhc3NlcnRpb24gZmFpbGVkOiB0LmdldCgpLmVxKCYoc2VsZiBhcyAqY29uc3QgXykpL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmF5b24tY29yZS0xLjEyLjEvc3JjL3JlZ2lzdHJ5LnJzAAAApZcQAGAAAACtAgAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IHQuZ2V0KCkuaXNfbnVsbCgpAKWXEABgAAAAwAIAAA0AAACllxAAYAAAAHUDAAAjAAAADwEAAAQAAAAEAAAAJAAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAEAEAAAgAAAAEAAAACAAAAGFzc2VydGlvbiBmYWlsZWQ6IG5fdGhyZWFkcyA8PSBUSFJFQURTX01BWC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JheW9uLWNvcmUtMS4xMi4xL3NyYy9zbGVlcC9tb2QucnMA0pgQAGEAAAA+AAAACQAAANKYEABhAAAAgwAAADQAAADSmBAAYQAAAIQAAAA8AAAA0pgQAGEAAAC8AAAAQwAAANKYEABhAAAAIgEAADQAAADSmBAAYQAAACQBAAA8AAAAT25jZSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAACUmRAAKgAAAG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1heSBub3QgYmUgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5yJkQADgAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3N5bmMvb25jZS5ycwAzmhAATAAAAJUAAAAyAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQASAQAACAAAAAQAAAAIAAAAUG9pc29uRXJyb3IvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yYXlvbi1jb3JlLTEuMTIuMS9zcmMvbGF0Y2gucnPXmhAAXQAAAPgAAAAnAAAA15oQAF0AAAD6AAAAKAAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JheW9uLWNvcmUtMS4xMi4xL3NyYy9yZWdpc3RyeS5yc1SbEABgAAAAdQMAACMAAABPbmNlIGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAAMSbEAAqAAAAb25lLXRpbWUgaW5pdGlhbGl6YXRpb24gbWF5IG5vdCBiZSBwZXJmb3JtZWQgcmVjdXJzaXZlbHn4mxAAOAAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L3N0ZC9zcmMvc3luYy9vbmNlLnJzAGOcEABMAAAAlQAAADIAAAABAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY3Jvc3NiZWFtLWVwb2NoLTAuOS4xNC9zcmMvc3luYy9saXN0LnJzAADEnBAAZgAAAOIAAAARAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY3Jvc3NiZWFtLWVwb2NoLTAuOS4xNC9zcmMvc3luYy9vbmNlX2xvY2sucnMAPJ0QAGsAAABOAAAAEwAAAAAAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL3N5bmMvYXRvbWljLnJzdGhlcmUgaXMgbm8gc3VjaCB0aGluZyBhcyBhIHJlbGVhc2UgZmFpbHVyZSBvcmRlcmluZwALnhAANAAAALydEABPAAAAMA0AAB0AAAB0aGVyZSBpcyBubyBzdWNoIHRoaW5nIGFzIGFuIGFjcXVpcmUtcmVsZWFzZSBmYWlsdXJlIG9yZGVyaW5nAAAAWJ4QAD0AAAC8nRAATwAAAC8NAAAcAAAAAAAAAHVuYWxpZ25lZCBwb2ludGVyAAAAtJ4QABEAAAAvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9jcm9zc2JlYW0tZXBvY2gtMC45LjE0L3NyYy9hdG9taWMucnMA0J4QAGMAAABxAAAABQAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9jcm9zc2JlYW0tZXBvY2gtMC45LjE0L3NyYy9pbnRlcm5hbC5ycxUBAEHkv8IAC+MCb58QAGUAAAB5AAAALAAAAG+fEABlAAAAggEAADkAAAAWAQAABAAAAAQAAAAXAQAAFgEAAAQAAAAEAAAAJQAAAGNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24AABgBAAAAAAAAAQAAAA4AAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAHygEABPAAAA9gAAABoAAABhc3NlcnRpb24gZmFpbGVkOiBtaWQgPD0gc2VsZi5sZW4oKS9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvY29yZS9zcmMvdGltZS5ycwBB0MLCAAvhIWF0dGVtcHQgdG8gZGl2aWRlIGJ5IHplcm9vdmVyZmxvdyBp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AFwAAADIAAAAEQAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2NvbmNyZXRlLWZmdC0wLjQuMS9zcmMvbGliLnJziKgQAFwAAACKAAAACgAAAIioEABcAAAAxQAAABEAAACIqBAAXAAAAMYAAAARAAAAiKgQAFwAAADHAAAAEQAAAIioEABcAAAAyAAAABEAAAAvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9jb25jcmV0ZS1mZnQtMC40LjEvc3JjL2xpYi5yczSpEABcAAAAigAAAAoAAAA0qRAAXAAAAMUAAAARAAAANKkQAFwAAADGAAAAEQAAADSpEABcAAAAxwAAABEAAAA0qRAAXAAAAMgAAAARAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY29uY3JldGUtZmZ0LTAuNC4xL3NyYy9saWIucnPgqRAAXAAAAIoAAAAKAAAA4KkQAFwAAADFAAAAEQAAAOCpEABcAAAAxgAAABEAAADgqRAAXAAAAMcAAAARAAAA4KkQAFwAAADIAAAAEQAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2NvbmNyZXRlLWZmdC0wLjQuMS9zcmMvbGliLnJzjKoQAFwAAACKAAAACgAAAIyqEABcAAAAxQAAABEAAACMqhAAXAAAAMYAAAARAAAAjKoQAFwAAADHAAAAEQAAAIyqEABcAAAAyAAAABEAAAAvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9jb25jcmV0ZS1mZnQtMC40LjEvc3JjL2xpYi5yczirEABcAAAAigAAAAoAAAA4qxAAXAAAAMUAAAARAAAAOKsQAFwAAADGAAAAEQAAADirEABcAAAAxwAAABEAAAA4qxAAXAAAAMgAAAARAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY29uY3JldGUtZmZ0LTAuNC4xL3NyYy9saWIucnPkqxAAXAAAAIoAAAAKAAAA5KsQAFwAAADFAAAAEQAAAOSrEABcAAAAxgAAABEAAADkqxAAXAAAAMcAAAARAAAA5KsQAFwAAADIAAAAEQAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2NvbmNyZXRlLWZmdC0wLjQuMS9zcmMvbGliLnJzkKwQAFwAAACKAAAACgAAAJCsEABcAAAAxQAAABEAAACQrBAAXAAAAMYAAAARAAAAkKwQAFwAAADHAAAAEQAAAJCsEABcAAAAyAAAABEAAABjYW4gbm90IGNvbnZlcnQgZmxvYXQgc2Vjb25kcyB0byBEdXJhdGlvbjogdmFsdWUgaXMgbmVnYXRpdmVjYW4gbm90IGNvbnZlcnQgZmxvYXQgc2Vjb25kcyB0byBEdXJhdGlvbjogdmFsdWUgaXMgZWl0aGVyIHRvbyBiaWcgb3IgTmFOL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9jb3JlL3NyYy90aW1lLnJzAAAAwa0QAEgAAAD6AgAAFwAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUKCmJ1ZmZlciBpcyBub3QgbGFyZ2UgZW5vdWdoIHRvIGFsbG9jYXRlIGFuIGFycmF5IG9mIHR5cGUgYGAgb2YgdGhlIHJlcXVlc3RlZCBsZW5ndGg6CiAtIHJlbWFpbmluZyBidWZmZXIgbGVuZ3RoIChhZnRlciBhZGp1c3RpbmcgZm9yIGFsaWdubWVudCk6ICwKIC0gcmVxdWVzdGVkIGFycmF5IGxlbmd0aDogICggYnl0ZXMpLAoAAABIrhAAOgAAAIKuEABXAAAA2a4QAB0AAAD2rhAAAgAAAPiuEAAJAAAACmJ1ZmZlciBpcyBub3QgbGFyZ2UgZW5vdWdoIHRvIGFjY29tb2RhdGUgdGhlIHJlcXVlc3RlZCBhbGlnbm1lbnQKIC0gYnVmZmVyIGxlbmd0aDogCiAtIHJlcXVlc3RlZCBhbGlnbm1lbnQ6IAogLSBieXRlIG9mZnNldCBmb3IgYWxpZ25tZW50OiAsrxAAVAAAAICvEAAZAAAAma8QAB8AAABHrhAAAQAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2NvbmNyZXRlLWZmdC0wLjQuMS9zcmMvb3JkZXJlZC5yc9ivEABgAAAARwAAACIAAABhc3NlcnRpb24gZmFpbGVkOiBuLmlzX3Bvd2VyX29mX3R3bygpAAAA2K8QAGAAAABqAAAABQAAANivEABgAAAAcAAAACMAAADYrxAAYAAAAHEAAAAiAAAA2K8QAGAAAABzAAAAJgAAANivEABgAAAAdwAAAB0AAADYrxAAYAAAALcAAAAKAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZdivEABgAAAAhgAAABIAAABudW1fY29tcGxleDo6Q29tcGxleDxmNjQ+AAAAJLEQAAAAAACnAQAABAAAAAQAAACoAQAAPgAAACSxEAAAAAAAPLEQAAEAAAAvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9ieXRlbXVjay0xLjE2LjAvc3JjL2ludGVybmFsLnJzAABQsRAAXgAAACAAAAADAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY29uY3JldGUtZmZ0LTAuNC4xL3NyYy9mZnRfc2ltZC5ycwAAAMCxEABhAAAALwEAAA4AQcDkwgALoiVhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvAAAAwLEQAGEAAAA7AQAADQAAAMCxEABhAAAAPAEAAA0AAADAsRAAYQAAAD0BAAANAAAAwLEQAGEAAAA+AQAADQAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2R5bi1zdGFjay0wLjkuMC9zcmMvc3RhY2tfcmVxLnJzAJyyEABfAAAAFAAAABEAAABjYXBhY2l0eSBvdmVyZmxvdwAAAAyzEAARAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYWxpZ25lZC12ZWMtMC41LjAvc3JjL3Jhdy5ycwAosxAAWwAAACUAAAAFAAAAYnl0ZSBhcnJheWJvb2xlYW4gYGCesxAACQAAAKezEAABAAAAaW50ZWdlciBgAAAAuLMQAAkAAACnsxAAAQAAAGZsb2F0aW5nIHBvaW50IGDUsxAAEAAAAKezEAABAAAAY2hhcmFjdGVyIGAA9LMQAAsAAACnsxAAAQAAAHN0cmluZyAAELQQAAcAAACUsxAACgAAAHVuaXQgdmFsdWUAACi0EAAKAAAAT3B0aW9uIHZhbHVlPLQQAAwAAABuZXd0eXBlIHN0cnVjdAAAULQQAA4AAABzZXF1ZW5jZWi0EAAIAAAAbWFwAHi0EAADAAAAZW51bYS0EAAEAAAAdW5pdCB2YXJpYW50kLQQAAwAAABuZXd0eXBlIHZhcmlhbnQApLQQAA8AAAB0dXBsZSB2YXJpYW50AAAAvLQQAA0AAABzdHJ1Y3QgdmFyaWFudAAA1LQQAA4AAAB1c2l6ZQAAAPS0EAAAAAAAVGFyZ2V0QWxpZ25tZW50R3JlYXRlckFuZElucHV0Tm90QWxpZ25lZE91dHB1dFNsaWNlV291bGRIYXZlU2xvcFNpemVNaXNtYXRjaEFsaWdubWVudE1pc21hdGNoAAAAKAAAABgAAAAMAAAAEQAAAPy0EAAktRAAPLUQAEi1EAByZWVudHJhbnQgaW5pdAAAfLUQAA4AAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL2NlbGwvb25jZS5ycwAAAJS1EABNAAAA2QAAAEIAAABvdmVyZmxvdyBpbiBEdXJhdGlvbjo6bmV3AAAA9LUQABkAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL3RpbWUucnMYthAASAAAAMoAAAAVAAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZQCyAQAADAAAAAQAAACzAQAAtAEAALUBAAB0b28gbWFueSBydW5uaW5nIHRocmVhZHMgaW4gdGhyZWFkIHNjb3BltLYQACgAAABsaWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL3Njb3BlZC5yc+S2EAAgAAAAMwAAAA0AAABBY2Nlc3NFcnJvcmxpYnJhcnkvc3RkL3NyYy90aHJlYWQvbW9kLnJzZmFpbGVkIHRvIGdlbmVyYXRlIHVuaXF1ZSB0aHJlYWQgSUQ6IGJpdHNwYWNlIGV4aGF1c3RlZAA8txAANwAAAB+3EAAdAAAAmAQAAA0AAABvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtjLcQACgAAAAkAAAAfLUQAAAAAABlbnRpdHkgbm90IGZvdW5kcGVybWlzc2lvbiBkZW5pZWRjb25uZWN0aW9uIHJlZnVzZWRjb25uZWN0aW9uIHJlc2V0aG9zdCB1bnJlYWNoYWJsZW5ldHdvcmsgdW5yZWFjaGFibGVjb25uZWN0aW9uIGFib3J0ZWRub3QgY29ubmVjdGVkYWRkcmVzcyBpbiB1c2VhZGRyZXNzIG5vdCBhdmFpbGFibGVuZXR3b3JrIGRvd25icm9rZW4gcGlwZWVudGl0eSBhbHJlYWR5IGV4aXN0c29wZXJhdGlvbiB3b3VsZCBibG9ja25vdCBhIGRpcmVjdG9yeWlzIGEgZGlyZWN0b3J5ZGlyZWN0b3J5IG5vdCBlbXB0eXJlYWQtb25seSBmaWxlc3lzdGVtIG9yIHN0b3JhZ2UgbWVkaXVtZmlsZXN5c3RlbSBsb29wIG9yIGluZGlyZWN0aW9uIGxpbWl0IChlLmcuIHN5bWxpbmsgbG9vcClzdGFsZSBuZXR3b3JrIGZpbGUgaGFuZGxlaW52YWxpZCBpbnB1dCBwYXJhbWV0ZXJpbnZhbGlkIGRhdGF0aW1lZCBvdXR3cml0ZSB6ZXJvbm8gc3RvcmFnZSBzcGFjZXNlZWsgb24gdW5zZWVrYWJsZSBmaWxlZmlsZXN5c3RlbSBxdW90YSBleGNlZWRlZGZpbGUgdG9vIGxhcmdlcmVzb3VyY2UgYnVzeWV4ZWN1dGFibGUgZmlsZSBidXN5ZGVhZGxvY2tjcm9zcy1kZXZpY2UgbGluayBvciByZW5hbWV0b28gbWFueSBsaW5rc2ludmFsaWQgZmlsZW5hbWVhcmd1bWVudCBsaXN0IHRvbyBsb25nb3BlcmF0aW9uIGludGVycnVwdGVkdW5zdXBwb3J0ZWR1bmV4cGVjdGVkIGVuZCBvZiBmaWxlb3V0IG9mIG1lbW9yeW90aGVyIGVycm9ydW5jYXRlZ29yaXplZCBlcnJvck9zY29kZQC2AQAABAAAAAQAAAC3AQAAa2luZLgBAAABAAAAAQAAALkBAABtZXNzYWdlALIBAAAMAAAABAAAALoBAABLaW5kRXJyb3IAAAC2AQAACAAAAAQAAAC7AQAAQ3VzdG9tZXJyb3IAtgEAAAQAAAAEAAAAvAEAACAob3MgZXJyb3IgKXy1EAAAAAAAMLsQAAsAAAA7uxAAAQAAAG1lbW9yeSBhbGxvY2F0aW9uIG9mICBieXRlcyBmYWlsZWQAAFS7EAAVAAAAabsQAA0AAABsaWJyYXJ5L3N0ZC9zcmMvYWxsb2MucnOIuxAAGAAAAGIBAAAJAAAAY2Fubm90IG1vZGlmeSB0aGUgcGFuaWMgaG9vayBmcm9tIGEgcGFuaWNraW5nIHRocmVhZLC7EAA0AAAAbGlicmFyeS9zdGQvc3JjL3Bhbmlja2luZy5yc+y7EAAcAAAAhwAAAAkAAADsuxAAHAAAAIQCAAAeAAAAsgEAAAwAAAAEAAAAvQEAALYBAAAIAAAABAAAAL4BAAC2AQAACAAAAAQAAAC/AQAAwAEAAMEBAAAQAAAABAAAAMIBAADDAQAAxAEAAAAAAAABAAAAxQEAAMYBAAAIAAAABAAAAMcBAADIAQAAxAEAAAAAAAABAAAAyQEAAE5vdEZvdW5kUGVybWlzc2lvbkRlbmllZENvbm5lY3Rpb25SZWZ1c2VkQ29ubmVjdGlvblJlc2V0SG9zdFVucmVhY2hhYmxlTmV0d29ya1VucmVhY2hhYmxlQ29ubmVjdGlvbkFib3J0ZWROb3RDb25uZWN0ZWRBZGRySW5Vc2VBZGRyTm90QXZhaWxhYmxlTmV0d29ya0Rvd25Ccm9rZW5QaXBlQWxyZWFkeUV4aXN0c1dvdWxkQmxvY2tOb3RBRGlyZWN0b3J5SXNBRGlyZWN0b3J5RGlyZWN0b3J5Tm90RW1wdHlSZWFkT25seUZpbGVzeXN0ZW1GaWxlc3lzdGVtTG9vcFN0YWxlTmV0d29ya0ZpbGVIYW5kbGVJbnZhbGlkSW5wdXRJbnZhbGlkRGF0YVRpbWVkT3V0V3JpdGVaZXJvU3RvcmFnZUZ1bGxOb3RTZWVrYWJsZUZpbGVzeXN0ZW1RdW90YUV4Y2VlZGVkRmlsZVRvb0xhcmdlUmVzb3VyY2VCdXN5RXhlY3V0YWJsZUZpbGVCdXN5RGVhZGxvY2tDcm9zc2VzRGV2aWNlc1Rvb01hbnlMaW5rc0ludmFsaWRGaWxlbmFtZUFyZ3VtZW50TGlzdFRvb0xvbmdJbnRlcnJ1cHRlZFVuc3VwcG9ydGVkVW5leHBlY3RlZEVvZk91dE9mTWVtb3J5T3RoZXJVbmNhdGVnb3JpemVkb3BlcmF0aW9uIHN1Y2Nlc3NmdWx0aW1lIG5vdCBpbXBsZW1lbnRlZCBvbiB0aGlzIHBsYXRmb3JtANa+EAAlAAAAbGlicmFyeS9zdGQvc3JjL3N5cy93YXNtLy4uL3Vuc3VwcG9ydGVkL3RpbWUucnMABL8QAC8AAAANAAAACQAAAGNvbmR2YXIgd2FpdCBub3Qgc3VwcG9ydGVkAABEvxAAGgAAAGxpYnJhcnkvc3RkL3NyYy9zeXMvd2FzbS8uLi91bnN1cHBvcnRlZC9sb2Nrcy9jb25kdmFyLnJzaL8QADgAAAAUAAAACQAAABAAAAARAAAAEgAAABAAAAAQAAAAEwAAABIAAAANAAAADgAAABUAAAAMAAAACwAAABUAAAAVAAAADwAAAA4AAAATAAAAJgAAADgAAAAZAAAAFwAAAAwAAAAJAAAACgAAABAAAAAXAAAAGQAAAA4AAAANAAAAFAAAAAgAAAAbAAAADgAAABAAAAAWAAAAFQAAAAsAAAAWAAAADQAAAAsAAAATAAAAyLcQANi3EADptxAA+7cQAAu4EAAbuBAALrgQAEC4EABNuBAAW7gQAHC4EAB8uBAAh7gQAJy4EACxuBAAwLgQAM64EADhuBAAB7kQAD+5EABYuRAAb7kQAHu5EACEuRAAjrkQAJ65EAC1uRAAzrkQANy5EADpuRAA/bkQAAW6EAAguhAALroQAD66EABUuhAAaboQAHS6EACKuhAAl7oQAKK6EAAIAAAAEAAAABEAAAAPAAAADwAAABIAAAARAAAADAAAAAkAAAAQ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', imports)} + + let initialized; + const initFhevm = async () => { + if (!initialized) { + try { + initialized = await __wbg_init(wasm); + } + catch (_) { + initialized = await __wbg_init(wasm()); + } } - }; - } catch (e) { - return { - then(_onFulfilled) { - return this; + return initialized; + }; + const asyncInitFhevm = async () => { + try { + await initFhevm(); + } + catch (err) { + throw new Error(`Error initializing FhenixClient ${err}`); + } + }; + + const PUBLIC_KEY_LENGTH_MIN = 15000; + + /* eslint-disable @typescript-eslint/no-explicit-any */ + const _sdkStore = createStore(() => ({ + fheKeysInitialized: false, + securityZones: [0], + fheKeys: {}, + accessRequirements: { + contracts: [], + projects: [], }, - catch(onRejected) { - return toThenable(onRejected)(e); + coFheUrl: undefined, + providerInitialized: false, + provider: undefined, + chainId: undefined, + signerInitialized: false, + signer: undefined, + account: undefined, + })); + // Store getters / setters + const _store_getFheKey = (chainId, securityZone = 0) => { + if (chainId == null || securityZone == null) + return undefined; + const serialized = _sdkStore.getState().fheKeys[chainId]?.[securityZone]; + if (serialized == null) + return undefined; + return TfheCompactPublicKey.deserialize(serialized); + }; + const _store_getConnectedChainFheKey = (securityZone = 0) => { + const state = _sdkStore.getState(); + if (securityZone == null) + return undefined; + if (state.chainId == null) + return undefined; + const serialized = state.fheKeys[state.chainId]?.[securityZone]; + if (serialized == null) + return undefined; + return TfheCompactPublicKey.deserialize(serialized); + }; + const _store_setFheKey = (chainId, securityZone, fheKey) => { + if (chainId == null || securityZone == null) + return; + _sdkStore.setState(produce((state) => { + if (state.fheKeys[chainId] == null) + state.fheKeys[chainId] = {}; + state.fheKeys[chainId][securityZone] = fheKey?.serialize(); + })); + }; + const getChainIdFromProvider = async (provider) => { + var chainId = null; + try { + chainId = await provider.getChainId(); + } + catch (err) { + const network = await provider.getNetwork(); + chainId = network.chainId; + } + if (chainId == null) + throw new Error("sdk :: getChainIdFromProvider :: provider.getChainId returned a null result, ensure that your provider is connected to a network"); + return chainId; + }; + // External functionality + const _store_initialize = async (params) => { + const { provider, signer, securityZones = [0], contracts: contractRequirements = [], projects: projectRequirements = [], coFheUrl = undefined, } = params; + _sdkStore.setState({ + providerInitialized: false, + signerInitialized: false, + accessRequirements: { + contracts: contractRequirements, + projects: projectRequirements, + }, + coFheUrl, + }); + // PROVIDER + // Fetch chain Id from provider + const chainId = await getChainIdFromProvider(provider); + const chainIdChanged = chainId != null && chainId !== _sdkStore.getState().chainId; + if (chainId != null && provider != null) { + _sdkStore.setState({ providerInitialized: true, provider, chainId }); + } + // SIGNER + // Account is fetched and stored here, the `account` field in the store is used to index which permits belong to which users + // In sdk functions, `state.account != null` is validated, this is a check to ensure that a valid signer has been provided + // which is necessary to interact with permits + const account = await signer?.getAddress(); + if (account != null && signer != null) { + _sdkStore.setState({ signerInitialized: true, account, signer }); + } + else { + _sdkStore.setState({ + signerInitialized: false, + account: undefined, + signer: undefined, + }); + } + // If chainId, securityZones, or CoFhe enabled changes, update the store and update fheKeys for re-initialization + const securityZonesChanged = securityZones !== _sdkStore.getState().securityZones; + if (chainIdChanged || securityZonesChanged) { + _sdkStore.setState({ + securityZones, + fheKeysInitialized: false, + }); + } + // Fetch FHE keys (skipped if hardhat) + if (!chainIsHardhat(chainId) && !_sdkStore.getState().fheKeysInitialized) { + await Promise.all(securityZones.map((securityZone) => _store_fetchFheKey(chainId, securityZone, true))); + } + _sdkStore.setState({ fheKeysInitialized: true }); + }; + /** + * Retrieves the FHE public key from the provider. + * If the key already exists in the store it is returned, else it is fetched, stored, and returned + * @param {string} chainId - The chain to fetch the FHE key for, if no chainId provided, undefined is returned + * @param securityZone - The security zone for which to retrieve the key (default 0). + * @returns {Promise} - The retrieved public key. + */ + const _store_fetchFheKey = async (chainId, securityZone = 0, forceFetch = false) => { + const storedKey = _store_getFheKey(chainId, securityZone); + if (storedKey != null && !forceFetch) + return storedKey; + const coFheUrl = _sdkStore.getState().coFheUrl; + if (coFheUrl == null || typeof coFheUrl !== "string") { + throw new Error("Error initializing fhenixjs; coFheUrl invalid, ensure it is set in `fhenixsdk.initialize`"); + } + let publicKey = undefined; + // Fetch publicKey from CoFhe + try { + // TODO: misspelling? + const res = await fetch(`${coFheUrl}/GetNetworkPublickKey`, { + method: "POST", + body: JSON.stringify({ + SecurityZone: securityZone, + }), + }); + const data = await res.json(); + publicKey = `0x${data.securityZone}`; + } + catch (err) { + throw new Error(`Error initializing fhenixjs; fetching FHE publicKey from CoFHE failed with error ${err}`); + } + if (publicKey == null || typeof publicKey !== "string") { + throw new Error(`Error initializing fhenixjs; FHE publicKey fetched from CoFHE invalid: not a string`); + } + if (publicKey === "0x") { + throw new Error("Error initializing fhenixjs; provided chain is not FHE enabled, no FHE publicKey found"); + } + if (publicKey.length < PUBLIC_KEY_LENGTH_MIN) { + throw new Error(`Error initializing fhenixjs; got shorter than expected FHE publicKey: ${publicKey.length}. Expected length >= ${PUBLIC_KEY_LENGTH_MIN}`); + } + const buff = fromHexString(publicKey); + try { + const key = TfheCompactPublicKey.deserialize(buff); + _store_setFheKey(chainId, securityZone, key); + return key; + } + catch (err) { + throw new Error(`Error deserializing public key ${err}`); + } + }; + + /** + * Encrypts a Uint8 value using TFHE (Fast Fully Homomorphic Encryption over the Torus). + * @param {boolean} value - The Boolean value to encrypt. + * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. + * @param securityZone - The security zone to encrypt the value on. + * @returns {EncryptedBool} - The encrypted value serialized as Uint8Array. + */ + const encrypt_bool = (value, publicKey, securityZone = 0) => { + const encrypted = CompactFheBool.encrypt_with_compact_public_key(value, publicKey); + return { + data: encrypted.serialize(), + securityZone, + }; + }; + /** + * Encrypts a Uint8 value using TFHE (Fast Fully Homomorphic Encryption over the Torus). + * @param {number} value - The Uint8 value to encrypt. + * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. + * @param securityZone - The security zone to encrypt the value on. + * @returns {EncryptedUint8} - The encrypted value serialized as Uint8Array. + */ + const encrypt_uint8 = (value, publicKey, securityZone = 0) => { + const encrypted = CompactFheUint8.encrypt_with_compact_public_key(value, publicKey); + return { + data: encrypted.serialize(), + securityZone, + }; + }; + /** + * Encrypts a Uint16 value using TFHE. + * @param {number} value - The Uint16 value to encrypt. + * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. + * @param securityZone - The security zone to encrypt the value on. + * @returns {EncryptedUint16} - The encrypted value serialized as Uint8Array. + */ + const encrypt_uint16 = (value, publicKey, securityZone = 0) => { + const encrypted = CompactFheUint16.encrypt_with_compact_public_key(value, publicKey); + return { + data: encrypted.serialize(), + securityZone, + }; + }; + /** + * Encrypts a Uint32 value using TFHE. + * @param {number} value - The Uint32 value to encrypt. + * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. + * @param securityZone - The security zone to encrypt the value on. + * @returns {EncryptedUint32} - The encrypted value serialized as Uint8Array. + */ + const encrypt_uint32 = (value, publicKey, securityZone = 0) => { + const encrypted = CompactFheUint32.encrypt_with_compact_public_key(value, publicKey); + return { + data: encrypted.serialize(), + securityZone, + }; + }; + /** + * Encrypts a Uint64 value using TFHE. + * @param {number} value - The Uint64 value to encrypt. + * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. + * @param securityZone - The security zone to encrypt the value on. + * @returns {EncryptedUint64} - The encrypted value serialized as Uint8Array. + */ + const encrypt_uint64 = (value, publicKey, securityZone = 0) => { + if (typeof value === "string") { + value = toBigInt(fromHexString(value)); + } + else { + value = value; + } + const encrypted = CompactFheUint64.encrypt_with_compact_public_key(value, publicKey); + return { + data: encrypted.serialize(), + securityZone, + }; + }; + /** + * Encrypts a Uint128 value using TFHE. + * @param {bigint} value - The Uint128 value to encrypt. + * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. + * @param securityZone - The security zone to encrypt the value on. + * @returns {EncryptedUint128} - The encrypted value serialized as Uint8Array. + */ + const encrypt_uint128 = (value, publicKey, securityZone = 0) => { + if (typeof value === "string") { + value = toBigInt(fromHexString(value)); + } + else { + value = value; + } + const encrypted = CompactFheUint128.encrypt_with_compact_public_key(value, publicKey); + return { + data: encrypted.serialize(), + securityZone, + }; + }; + /** + * Encrypts a Uint256 value using TFHE. + * @param {bigint} value - The Uint256 value to encrypt. + * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. + * @param securityZone - The security zone to encrypt the value on. + * @returns {EncryptedUint256} - The encrypted value serialized as Uint8Array. + */ + const encrypt_uint256 = (value, publicKey, securityZone = 0) => { + if (typeof value === "string") { + value = toBigInt(fromHexString(value)); + } + else { + value = value; + } + const encrypted = CompactFheUint256.encrypt_with_compact_public_key(value, publicKey); + return { + data: encrypted.serialize(), + securityZone, + }; + }; + /** + * Encrypts a Address value using TFHE. + * @param {bigint} value - The Address (Uint160) value to encrypt. + * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. + * @param securityZone - The security zone to encrypt the address on. + * @returns {EncryptedAddress} - The encrypted value serialized as Uint8Array. + */ + const encrypt_address = (value, publicKey, securityZone = 0) => { + if (typeof value === "string") { + value = toBigInt(fromHexString(value)); } - }; - } - }; - const persistImpl = (config, baseOptions) => (set, get, api) => { - let options = { - storage: createJSONStorage(() => localStorage), - partialize: (state) => state, - version: 0, - merge: (persistedState, currentState) => ({ - ...currentState, - ...persistedState - }), - ...baseOptions + else { + value = value; + } + const encrypted = CompactFheUint160.encrypt_with_compact_public_key(value, publicKey); + return { + data: encrypted.serialize(), + securityZone, + }; }; - let hasHydrated = false; - const hydrationListeners = /* @__PURE__ */ new Set(); - const finishHydrationListeners = /* @__PURE__ */ new Set(); - let storage = options.storage; - if (!storage) { - return config( - (...args) => { - console.warn( - `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.` - ); - set(...args); - }, - get, - api - ); - } - const setItem = () => { - const state = options.partialize({ ...get() }); - return storage.setItem(options.name, { - state, - version: options.version - }); + + // INFO: The existing `GetFhePublicKey` function has been replaced with `InitFhevm` + // `GetFhePublicKey` didn't allow security zones to be set, and was overloaded with initializing the Fhevm + // Public key fetching has been moved to the Async and Sync FhenixClient constructors (they handle it slightly differently) + // - arch 2024-08-28 + const InitFhevm = async () => { + // `asyncInitFhevm` in `/sdk/fhe/fhe.ts` in node env (noop) + // `asyncInitFhevm` in `/sdk/fhe/fhe-browser.ts` in browser env (init wasm) + await asyncInitFhevm(); }; - const savedSetState = api.setState; - api.setState = (state, replace) => { - savedSetState(state, replace); - void setItem(); + + /* eslint-disable @typescript-eslint/no-explicit-any */ + /** + * Initializes the `fhenixsdk` to enable encrypting input data, creating permits / permissions, and decrypting sealed outputs. + * Initializes `fhevm` client FHE wasm module and fetches the provided chain's FHE publicKey. + * If a valid signer is provided, a `permit/permission` is generated automatically + */ + const initialize = async (params) => { + // Initialize the fhevm + await InitFhevm().catch((err) => { + if (params.ignoreErrors) { + return undefined; + } + else { + return ResultErr(`initialize :: failed to initialize fhenixjs - is the network FHE-enabled? ${err}`); + } + }); + if (params.provider == null) + return ResultErr("initialize :: missing provider - Please provide an AbstractProvider interface"); + if (params.securityZones != null && params.securityZones.length === 0) + return ResultErr("initialize :: a list of securityZones was provided, but it is empty"); + await _store_initialize(params); + // `generatePermit` must set to `false` to early exit here + if (params.generatePermit === false) + return ResultOk(undefined); + // Return the existing active permit + const userActivePermit = getPermit(); + if (userActivePermit.success) + return userActivePermit; + // Create permit and return it + return createPermit(); }; - const configResult = config( - (...args) => { - set(...args); - void setItem(); - }, - get, - api - ); - api.getInitialState = () => configResult; - let stateFromStorage; - const hydrate = () => { - var _a, _b; - if (!storage) return; - hasHydrated = false; - hydrationListeners.forEach((cb) => { - var _a2; - return cb((_a2 = get()) != null ? _a2 : configResult); - }); - const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0; - return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => { - if (deserializedStorageValue) { - if (typeof deserializedStorageValue.version === "number" && deserializedStorageValue.version !== options.version) { - if (options.migrate) { - return [ - true, - options.migrate( - deserializedStorageValue.state, - deserializedStorageValue.version - ) - ]; - } - console.error( - `State loaded from storage couldn't be migrated since no migrate function was provided` - ); - } else { - return [false, deserializedStorageValue.state]; - } + /** + * Internal reusable initialization checker + */ + const _checkInitialized = (state, options) => { + if (options?.fheKeys !== false && !state.fheKeysInitialized) { + return ResultErr("fhenixsdk not initialized. Use `fhenixsdk.initialize(...)`."); } - return [false, void 0]; - }).then((migrationResult) => { - var _a2; - const [migrated, migratedState] = migrationResult; - stateFromStorage = options.merge( - migratedState, - (_a2 = get()) != null ? _a2 : configResult - ); - set(stateFromStorage, true); - if (migrated) { - return setItem(); - } - }).then(() => { - postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0); - stateFromStorage = get(); - hasHydrated = true; - finishHydrationListeners.forEach((cb) => cb(stateFromStorage)); - }).catch((e) => { - postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e); - }); + if (options?.coFheUrl !== false && !state.coFheUrl) + return ResultErr("fhenixsdk not initialized with a coFheUrl. Set `coFheUrl` in `fhenixsdk.initialize`."); + if (options?.provider !== false && !state.providerInitialized) + return ResultErr("fhenixsdk not initialized with valid provider. Use `fhenixsdk.initialize(...)` with a valid provider that satisfies `AbstractProvider`."); + if (options?.signer !== false && !state.signerInitialized) + return ResultErr("fhenixsdk not initialized with a valid signer. Use `fhenixsdk.initialize(...)` with a valid signer that satisfies `AbstractSigner`."); + return ResultOk(null); }; - api.persist = { - setOptions: (newOptions) => { - options = { - ...options, - ...newOptions + // Permit + /** + * Creates a new permit with options, prompts user for signature. + * Handles all `permit.type`s, and prompts for the correct signature type. + * The created PermitV2 will be inserted into the store and marked as the active permit. + * NOTE: This is a wrapper around `PermitV2.create` and `PermitV2.sign` + * + * @param {PermitV2Options} options - Partial PermitV2 fields to create the Permit with, if no options provided will be filled with the defaults: + * { type: "self", issuer: initializedUserAddress, projects: initializedProjects, contracts: initializedContracts } + * @returns {Result} - Newly created PermitV2 as a Result object + */ + const createPermit = async (options) => { + const state = _sdkStore.getState(); + const initialized = _checkInitialized(state); + if (!initialized.success) + return ResultErr(`${createPermit.name} :: ${initialized.error}`); + const optionsWithDefaults = { + type: "self", + issuer: state.account, + contracts: state.accessRequirements.contracts, + projects: state.accessRequirements.projects, + ...options, }; - if (newOptions.storage) { - storage = newOptions.storage; + let permit; + try { + permit = await PermitV2.createAndSign(optionsWithDefaults, state.chainId, state.signer); } - }, - clearStorage: () => { - storage == null ? void 0 : storage.removeItem(options.name); - }, - getOptions: () => options, - rehydrate: () => hydrate(), - hasHydrated: () => hasHydrated, - onHydrate: (cb) => { - hydrationListeners.add(cb); - return () => { - hydrationListeners.delete(cb); - }; - }, - onFinishHydration: (cb) => { - finishHydrationListeners.add(cb); - return () => { - finishHydrationListeners.delete(cb); - }; - } + catch (e) { + return ResultErr(`${createPermit.name} :: ${e}`); + } + permitStore.setPermit(state.account, permit); + permitStore.setActivePermitHash(state.account, permit.getHash()); + return ResultOk(permit); }; - if (!options.skipHydration) { - hydrate(); - } - return stateFromStorage || configResult; - }; - const persist = persistImpl; - - // src/utils/env.ts - var NOTHING = Symbol.for("immer-nothing"); - var DRAFTABLE = Symbol.for("immer-draftable"); - var DRAFT_STATE = Symbol.for("immer-state"); - - // src/utils/errors.ts - var errors = process.env.NODE_ENV !== "production" ? [ - // All error codes, starting by 0: - function(plugin) { - return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \`enable${plugin}()\` when initializing your application.`; - }, - function(thing) { - return `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`; - }, - "This object has been frozen and should not be mutated", - function(data) { - return "Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? " + data; - }, - "An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.", - "Immer forbids circular references", - "The first or second argument to `produce` must be a function", - "The third argument to `produce` must be a function or undefined", - "First argument to `createDraft` must be a plain object, an array, or an immerable object", - "First argument to `finishDraft` must be a draft returned by `createDraft`", - function(thing) { - return `'current' expects a draft, got: ${thing}`; - }, - "Object.defineProperty() cannot be used on an Immer draft", - "Object.setPrototypeOf() cannot be used on an Immer draft", - "Immer only supports deleting array indices", - "Immer only supports setting array indices and the 'length' property", - function(thing) { - return `'original' expects a draft, got: ${thing}`; - } - // Note: if more errors are added, the errorOffset in Patches.ts should be increased - // See Patches.ts for additional errors - ] : []; - function die(error, ...args) { - if (process.env.NODE_ENV !== "production") { - const e = errors[error]; - const msg = typeof e === "function" ? e.apply(null, args) : e; - throw new Error(`[Immer] ${msg}`); - } - throw new Error( - `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf` - ); - } - - // src/utils/common.ts - var getPrototypeOf = Object.getPrototypeOf; - function isDraft(value) { - return !!value && !!value[DRAFT_STATE]; - } - function isDraftable(value) { - if (!value) - return false; - return isPlainObject(value) || Array.isArray(value) || !!value[DRAFTABLE] || !!value.constructor?.[DRAFTABLE] || isMap(value) || isSet(value); - } - var objectCtorString = Object.prototype.constructor.toString(); - function isPlainObject(value) { - if (!value || typeof value !== "object") - return false; - const proto = getPrototypeOf(value); - if (proto === null) { - return true; - } - const Ctor = Object.hasOwnProperty.call(proto, "constructor") && proto.constructor; - if (Ctor === Object) - return true; - return typeof Ctor == "function" && Function.toString.call(Ctor) === objectCtorString; - } - function each(obj, iter) { - if (getArchtype(obj) === 0 /* Object */) { - Reflect.ownKeys(obj).forEach((key) => { - iter(key, obj[key], obj); - }); - } else { - obj.forEach((entry, index) => iter(index, entry, obj)); - } - } - function getArchtype(thing) { - const state = thing[DRAFT_STATE]; - return state ? state.type_ : Array.isArray(thing) ? 1 /* Array */ : isMap(thing) ? 2 /* Map */ : isSet(thing) ? 3 /* Set */ : 0 /* Object */; - } - function has(thing, prop) { - return getArchtype(thing) === 2 /* Map */ ? thing.has(prop) : Object.prototype.hasOwnProperty.call(thing, prop); - } - function set(thing, propOrOldValue, value) { - const t = getArchtype(thing); - if (t === 2 /* Map */) - thing.set(propOrOldValue, value); - else if (t === 3 /* Set */) { - thing.add(value); - } else - thing[propOrOldValue] = value; - } - function is(x, y) { - if (x === y) { - return x !== 0 || 1 / x === 1 / y; - } else { - return x !== x && y !== y; - } - } - function isMap(target) { - return target instanceof Map; - } - function isSet(target) { - return target instanceof Set; - } - function latest(state) { - return state.copy_ || state.base_; - } - function shallowCopy(base, strict) { - if (isMap(base)) { - return new Map(base); - } - if (isSet(base)) { - return new Set(base); - } - if (Array.isArray(base)) - return Array.prototype.slice.call(base); - const isPlain = isPlainObject(base); - if (strict === true || strict === "class_only" && !isPlain) { - const descriptors = Object.getOwnPropertyDescriptors(base); - delete descriptors[DRAFT_STATE]; - let keys = Reflect.ownKeys(descriptors); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const desc = descriptors[key]; - if (desc.writable === false) { - desc.writable = true; - desc.configurable = true; - } - if (desc.get || desc.set) - descriptors[key] = { - configurable: true, - writable: true, - // could live with !!desc.set as well here... - enumerable: desc.enumerable, - value: base[key] - }; - } - return Object.create(getPrototypeOf(base), descriptors); - } else { - const proto = getPrototypeOf(base); - if (proto !== null && isPlain) { - return { ...base }; - } - const obj = Object.create(proto); - return Object.assign(obj, base); - } - } - function freeze(obj, deep = false) { - if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) - return obj; - if (getArchtype(obj) > 1) { - obj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections; - } - Object.freeze(obj); - if (deep) - Object.entries(obj).forEach(([key, value]) => freeze(value, true)); - return obj; - } - function dontMutateFrozenCollections() { - die(2); - } - function isFrozen(obj) { - return Object.isFrozen(obj); - } - - // src/utils/plugins.ts - var plugins = {}; - function getPlugin(pluginKey) { - const plugin = plugins[pluginKey]; - if (!plugin) { - die(0, pluginKey); - } - return plugin; - } - - // src/core/scope.ts - var currentScope; - function getCurrentScope() { - return currentScope; - } - function createScope(parent_, immer_) { - return { - drafts_: [], - parent_, - immer_, - // Whenever the modified draft contains a draft from another scope, we - // need to prevent auto-freezing so the unowned draft can be finalized. - canAutoFreeze_: true, - unfinalizedDrafts_: 0 + /** + * Imports a fully formed existing permit, expected to be valid. + * Does not ask for user signature, expects to already be populated. + * Will throw an error if the imported permit is invalid, see `PermitV2.isValid`. + * The imported PermitV2 will be inserted into the store and marked as the active permit. + * + * @param {string | PermitV2Interface} imported - Permit to import as a text string or PermitV2Interface + */ + const importPermit = async (imported) => { + const state = _sdkStore.getState(); + const initialized = _checkInitialized(state); + if (!initialized.success) + return ResultErr(`${createPermit.name} :: ${initialized.error}`); + // Import validation + if (typeof imported === "string") { + try { + imported = JSON.parse(imported); + } + catch (e) { + return ResultErr(`importPermit :: json parsing failed - ${e}`); + } + } + const { success, data: parsedPermit, error: permitParsingError, } = PermitV2ParamsValidator.safeParse(imported); + if (!success) { + const errorString = Object.entries(permitParsingError.flatten().fieldErrors) + .map(([field, err]) => `- ${field}: ${err}`) + .join("\n"); + return ResultErr(`importPermit :: invalid permit data - ${errorString}`); + } + if (parsedPermit.type !== "self") { + if (parsedPermit.issuer === state.account) + parsedPermit.type = "sharing"; + else if (parsedPermit.recipient === state.account) + parsedPermit.type = "recipient"; + else { + return ResultErr(`importPermit :: invalid Permit - connected account <${state.account}> is not issuer or recipient`); + } + } + let permit; + try { + permit = await PermitV2.create(parsedPermit); + } + catch (e) { + return ResultErr(`importPermit :: ${e}`); + } + const { valid, error } = permit.isValid(); + if (!valid) { + return ResultErr(`importPermit :: newly imported permit is invalid - ${error}`); + } + permitStore.setPermit(state.account, permit); + permitStore.setActivePermitHash(state.account, permit.getHash()); + return ResultOk(permit); }; - } - function usePatchesInScope(scope, patchListener) { - if (patchListener) { - getPlugin("Patches"); - scope.patches_ = []; - scope.inversePatches_ = []; - scope.patchListener_ = patchListener; - } - } - function revokeScope(scope) { - leaveScope(scope); - scope.drafts_.forEach(revokeDraft); - scope.drafts_ = null; - } - function leaveScope(scope) { - if (scope === currentScope) { - currentScope = scope.parent_; - } - } - function enterScope(immer2) { - return currentScope = createScope(currentScope, immer2); - } - function revokeDraft(draft) { - const state = draft[DRAFT_STATE]; - if (state.type_ === 0 /* Object */ || state.type_ === 1 /* Array */) - state.revoke_(); - else - state.revoked_ = true; - } - - // src/core/finalize.ts - function processResult(result, scope) { - scope.unfinalizedDrafts_ = scope.drafts_.length; - const baseDraft = scope.drafts_[0]; - const isReplaced = result !== void 0 && result !== baseDraft; - if (isReplaced) { - if (baseDraft[DRAFT_STATE].modified_) { - revokeScope(scope); - die(4); - } - if (isDraftable(result)) { - result = finalize(scope, result); - if (!scope.parent_) - maybeFreeze(scope, result); - } - if (scope.patches_) { - getPlugin("Patches").generateReplacementPatches_( - baseDraft[DRAFT_STATE].base_, - result, - scope.patches_, - scope.inversePatches_ - ); - } - } else { - result = finalize(scope, baseDraft, []); - } - revokeScope(scope); - if (scope.patches_) { - scope.patchListener_(scope.patches_, scope.inversePatches_); - } - return result !== NOTHING ? result : void 0; - } - function finalize(rootScope, value, path) { - if (isFrozen(value)) - return value; - const state = value[DRAFT_STATE]; - if (!state) { - each( - value, - (key, childValue) => finalizeProperty(rootScope, state, value, key, childValue, path) - ); - return value; - } - if (state.scope_ !== rootScope) - return value; - if (!state.modified_) { - maybeFreeze(rootScope, state.base_, true); - return state.base_; - } - if (!state.finalized_) { - state.finalized_ = true; - state.scope_.unfinalizedDrafts_--; - const result = state.copy_; - let resultEach = result; - let isSet2 = false; - if (state.type_ === 3 /* Set */) { - resultEach = new Set(result); - result.clear(); - isSet2 = true; - } - each( - resultEach, - (key, childValue) => finalizeProperty(rootScope, state, result, key, childValue, path, isSet2) - ); - maybeFreeze(rootScope, result, false); - if (path && rootScope.patches_) { - getPlugin("Patches").generatePatches_( - state, - path, - rootScope.patches_, - rootScope.inversePatches_ - ); - } - } - return state.copy_; - } - function finalizeProperty(rootScope, parentState, targetObject, prop, childValue, rootPath, targetIsSet) { - if (process.env.NODE_ENV !== "production" && childValue === targetObject) - die(5); - if (isDraft(childValue)) { - const path = rootPath && parentState && parentState.type_ !== 3 /* Set */ && // Set objects are atomic since they have no keys. - !has(parentState.assigned_, prop) ? rootPath.concat(prop) : void 0; - const res = finalize(rootScope, childValue, path); - set(targetObject, prop, res); - if (isDraft(res)) { - rootScope.canAutoFreeze_ = false; - } else - return; - } else if (targetIsSet) { - targetObject.add(childValue); - } - if (isDraftable(childValue) && !isFrozen(childValue)) { - if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) { - return; - } - finalize(rootScope, childValue); - if ((!parentState || !parentState.scope_.parent_) && typeof prop !== "symbol" && Object.prototype.propertyIsEnumerable.call(targetObject, prop)) - maybeFreeze(rootScope, childValue); - } - } - function maybeFreeze(scope, value, deep = false) { - if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) { - freeze(value, deep); - } - } - - // src/core/proxy.ts - function createProxyProxy(base, parent) { - const isArray = Array.isArray(base); - const state = { - type_: isArray ? 1 /* Array */ : 0 /* Object */, - // Track which produce call this is associated with. - scope_: parent ? parent.scope_ : getCurrentScope(), - // True for both shallow and deep changes. - modified_: false, - // Used during finalization. - finalized_: false, - // Track which properties have been assigned (true) or deleted (false). - assigned_: {}, - // The parent draft state. - parent_: parent, - // The base state. - base_: base, - // The base proxy. - draft_: null, - // set below - // The base copy with any updated values. - copy_: null, - // Called by the `produce` function. - revoke_: null, - isManual_: false + /** + * Selects the active permit using its hash. + * If the hash is not found in the stored permits store, throws an error. + * The matched permit will be marked as the active permit. + * + * @param {string} hash - The `PermitV2.getHash` of the target permit. + */ + const selectActivePermit = (hash) => { + const state = _sdkStore.getState(); + const initialized = _checkInitialized(state); + if (!initialized.success) + return ResultErr(`${selectActivePermit.name} :: ${initialized.error}`); + const permit = permitStore.getPermit(state.account, hash); + if (permit == null) + return ResultErr(`${selectActivePermit.name} :: Permit with hash <${hash}> not found`); + permitStore.setActivePermitHash(state.account, permit.getHash()); + return ResultOk(permit); }; - let target = state; - let traps = objectTraps; - if (isArray) { - target = [state]; - traps = arrayTraps; - } - const { revoke, proxy } = Proxy.revocable(target, traps); - state.draft_ = proxy; - state.revoke_ = revoke; - return proxy; - } - var objectTraps = { - get(state, prop) { - if (prop === DRAFT_STATE) - return state; - const source = latest(state); - if (!has(source, prop)) { - return readPropFromProto(state, source, prop); - } - const value = source[prop]; - if (state.finalized_ || !isDraftable(value)) { - return value; - } - if (value === peek(state.base_, prop)) { - prepareCopy(state); - return state.copy_[prop] = createProxy(value, state); - } - return value; - }, - has(state, prop) { - return prop in latest(state); - }, - ownKeys(state) { - return Reflect.ownKeys(latest(state)); - }, - set(state, prop, value) { - const desc = getDescriptorFromProto(latest(state), prop); - if (desc?.set) { - desc.set.call(state.draft_, value); - return true; - } - if (!state.modified_) { - const current2 = peek(latest(state), prop); - const currentState = current2?.[DRAFT_STATE]; - if (currentState && currentState.base_ === value) { - state.copy_[prop] = value; - state.assigned_[prop] = false; - return true; + /** + * Retrieves a stored permit based on its hash. + * If no hash is provided, the currently active permit will be retrieved. + * + * @param {string} hash - Optional `PermitV2.getHash` of the permit. + * @returns {Result} - The active permit or permit associated with `hash` as a Result object. + */ + const getPermit = (hash) => { + const state = _sdkStore.getState(); + const initialized = _checkInitialized(state); + if (!initialized.success) + return ResultErr(`${getPermit.name} :: ${initialized.error}`); + if (hash == null) { + const permit = permitStore.getActivePermit(state.account); + if (permit == null) + return ResultErr(`getPermit :: active permit not found`); + return ResultOk(permit); } - if (is(value, current2) && (value !== void 0 || has(state.base_, prop))) - return true; - prepareCopy(state); - markChanged(state); - } - if (state.copy_[prop] === value && // special case: handle new props with value 'undefined' - (value !== void 0 || prop in state.copy_) || // special case: NaN - Number.isNaN(value) && Number.isNaN(state.copy_[prop])) - return true; - state.copy_[prop] = value; - state.assigned_[prop] = true; - return true; - }, - deleteProperty(state, prop) { - if (peek(state.base_, prop) !== void 0 || prop in state.base_) { - state.assigned_[prop] = false; - prepareCopy(state); - markChanged(state); - } else { - delete state.assigned_[prop]; - } - if (state.copy_) { - delete state.copy_[prop]; - } - return true; - }, - // Note: We never coerce `desc.value` into an Immer draft, because we can't make - // the same guarantee in ES5 mode. - getOwnPropertyDescriptor(state, prop) { - const owner = latest(state); - const desc = Reflect.getOwnPropertyDescriptor(owner, prop); - if (!desc) - return desc; - return { - writable: true, - configurable: state.type_ !== 1 /* Array */ || prop !== "length", - enumerable: desc.enumerable, - value: owner[prop] - }; - }, - defineProperty() { - die(11); - }, - getPrototypeOf(state) { - return getPrototypeOf(state.base_); - }, - setPrototypeOf() { - die(12); - } - }; - var arrayTraps = {}; - each(objectTraps, (key, fn) => { - arrayTraps[key] = function() { - arguments[0] = arguments[0][0]; - return fn.apply(this, arguments); + const permit = permitStore.getPermit(state.account, hash); + if (permit == null) + return ResultErr(`getPermit :: permit with hash <${hash}> not found`); + return ResultOk(permit); }; - }); - arrayTraps.deleteProperty = function(state, prop) { - if (process.env.NODE_ENV !== "production" && isNaN(parseInt(prop))) - die(13); - return arrayTraps.set.call(this, state, prop, void 0); - }; - arrayTraps.set = function(state, prop, value) { - if (process.env.NODE_ENV !== "production" && prop !== "length" && isNaN(parseInt(prop))) - die(14); - return objectTraps.set.call(this, state[0], prop, value, state[0]); - }; - function peek(draft, prop) { - const state = draft[DRAFT_STATE]; - const source = state ? latest(state) : draft; - return source[prop]; - } - function readPropFromProto(state, source, prop) { - const desc = getDescriptorFromProto(source, prop); - return desc ? `value` in desc ? desc.value : ( - // This is a very special case, if the prop is a getter defined by the - // prototype, we should invoke it with the draft as context! - desc.get?.call(state.draft_) - ) : void 0; - } - function getDescriptorFromProto(source, prop) { - if (!(prop in source)) - return void 0; - let proto = getPrototypeOf(source); - while (proto) { - const desc = Object.getOwnPropertyDescriptor(proto, prop); - if (desc) - return desc; - proto = getPrototypeOf(proto); - } - return void 0; - } - function markChanged(state) { - if (!state.modified_) { - state.modified_ = true; - if (state.parent_) { - markChanged(state.parent_); - } - } - } - function prepareCopy(state) { - if (!state.copy_) { - state.copy_ = shallowCopy( - state.base_, - state.scope_.immer_.useStrictShallowCopy_ - ); - } - } - - // src/core/immerClass.ts - var Immer2 = class { - constructor(config) { - this.autoFreeze_ = true; - this.useStrictShallowCopy_ = false; - /** - * The `produce` function takes a value and a "recipe function" (whose - * return value often depends on the base state). The recipe function is - * free to mutate its first argument however it wants. All mutations are - * only ever applied to a __copy__ of the base state. - * - * Pass only a function to create a "curried producer" which relieves you - * from passing the recipe function every time. - * - * Only plain objects and arrays are made mutable. All other objects are - * considered uncopyable. - * - * Note: This function is __bound__ to its `Immer` instance. - * - * @param {any} base - the initial state - * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified - * @param {Function} patchListener - optional function that will be called with all the patches produced here - * @returns {any} a new state, or the initial state if nothing was modified - */ - this.produce = (base, recipe, patchListener) => { - if (typeof base === "function" && typeof recipe !== "function") { - const defaultBase = recipe; - recipe = base; - const self = this; - return function curriedProduce(base2 = defaultBase, ...args) { - return self.produce(base2, (draft) => recipe.call(this, draft, ...args)); - }; - } - if (typeof recipe !== "function") - die(6); - if (patchListener !== void 0 && typeof patchListener !== "function") - die(7); - let result; - if (isDraftable(base)) { - const scope = enterScope(this); - const proxy = createProxy(base, void 0); - let hasError = true; - try { - result = recipe(proxy); - hasError = false; - } finally { - if (hasError) - revokeScope(scope); - else - leaveScope(scope); - } - usePatchesInScope(scope, patchListener); - return processResult(result, scope); - } else if (!base || typeof base !== "object") { - result = recipe(base); - if (result === void 0) - result = base; - if (result === NOTHING) - result = void 0; - if (this.autoFreeze_) - freeze(result, true); - if (patchListener) { - const p = []; - const ip = []; - getPlugin("Patches").generateReplacementPatches_(base, result, p, ip); - patchListener(p, ip); - } - return result; - } else - die(1, base); - }; - this.produceWithPatches = (base, recipe) => { - if (typeof base === "function") { - return (state, ...args) => this.produceWithPatches(state, (draft) => base(draft, ...args)); - } - let patches, inversePatches; - const result = this.produce(base, recipe, (p, ip) => { - patches = p; - inversePatches = ip; + /** + * Retrieves a stored permission based on the permit's hash. + * If no hash is provided, the currently active permit will be used. + * The `PermissionV2` is extracted from the permit. + * + * @param {string} hash - Optional hash of the permission to get, defaults to active permit's permission + * @returns {Result} - The active permission or permission associated with `hash`, as a result object. + */ + const getPermission = (hash) => { + const permitResult = getPermit(hash); + if (!permitResult.success) + return ResultErr(`${getPermission.name} :: ${permitResult.error}`); + return ResultOk(permitResult.data.getPermission()); + }; + /** + * Exports all stored permits. + * @returns {Result>} - All stored permits. + */ + const getAllPermits = () => { + const state = _sdkStore.getState(); + const initialized = _checkInitialized(state); + if (!initialized.success) + return ResultErr(`${getAllPermits.name} :: ${initialized.error}`); + return ResultOk(permitStore.getPermits(state.account)); + }; + async function encrypt(item) { + const state = _sdkStore.getState(); + // Only need to check `fheKeysInitialized`, signer and provider not needed for encryption + const initialized = _checkInitialized(state, { + provider: false, + signer: false, }); - return [result, patches, inversePatches]; - }; - if (typeof config?.autoFreeze === "boolean") - this.setAutoFreeze(config.autoFreeze); - if (typeof config?.useStrictShallowCopy === "boolean") - this.setUseStrictShallowCopy(config.useStrictShallowCopy); - } - createDraft(base) { - if (!isDraftable(base)) - die(8); - if (isDraft(base)) - base = current(base); - const scope = enterScope(this); - const proxy = createProxy(base, void 0); - proxy[DRAFT_STATE].isManual_ = true; - leaveScope(scope); - return proxy; - } - finishDraft(draft, patchListener) { - const state = draft && draft[DRAFT_STATE]; - if (!state || !state.isManual_) - die(9); - const { scope_: scope } = state; - usePatchesInScope(scope, patchListener); - return processResult(void 0, scope); + if (!initialized.success) + return ResultErr(`${encrypt.name} :: ${initialized.error}`); + // Permission + if (item === "permission") { + return getPermission(); + } + // EncryptableItem + if (isEncryptableItem(item)) { + // Early exit with mock encrypted value if chain is hardhat + // TODO: Determine how CoFHE encrypted items will be handled in hardhat + if (chainIsHardhat(state.coFheUrl)) + return ResultOk(hardhatMockEncrypt(BigInt(item.data))); + const fhePublicKey = _store_getConnectedChainFheKey(item.securityZone ?? 0); + if (fhePublicKey == null) + return ResultErr("encrypt :: fheKey for current chain not found"); + let preEncryptedItem; + // prettier-ignore + try { + switch (item.utype) { + case exports.FheUType.bool: { + preEncryptedItem = encrypt_bool(item.data, fhePublicKey, item.securityZone); + break; + } + case exports.FheUType.uint8: { + preEncryptedItem = encrypt_uint8(item.data, fhePublicKey, item.securityZone); + break; + } + case exports.FheUType.uint16: { + preEncryptedItem = encrypt_uint16(item.data, fhePublicKey, item.securityZone); + break; + } + case exports.FheUType.uint32: { + preEncryptedItem = encrypt_uint32(item.data, fhePublicKey, item.securityZone); + break; + } + case exports.FheUType.uint64: { + preEncryptedItem = encrypt_uint64(item.data, fhePublicKey, item.securityZone); + break; + } + case exports.FheUType.uint128: { + preEncryptedItem = encrypt_uint128(item.data, fhePublicKey, item.securityZone); + break; + } + case exports.FheUType.uint256: { + preEncryptedItem = encrypt_uint256(item.data, fhePublicKey, item.securityZone); + break; + } + case exports.FheUType.address: { + preEncryptedItem = encrypt_address(item.data, fhePublicKey, item.securityZone); + break; + } + } + } + catch (e) { + return ResultErr(`encrypt :: tfhe_encrypt_xxxx :: ${e}`); + } + // Send preEncryptedItem to CoFHE route `/UpdateCT`, receive `ctHash` to use as contract input + const res = (await fetch(`${state.coFheUrl}/UpdateCT`, { + method: "POST", + headers: { + "Content-Type": "application/json", // Ensure the server knows you're sending JSON + }, + body: JSON.stringify({ + UType: item.utype, + Value: toHexString$1(preEncryptedItem.data), + SecurityZone: item.securityZone, + }), + })); + const data = await res.json(); + // Transform data into final CoFHE input variable + return ResultOk({ + securityZone: item.securityZone, + hash: BigInt(`0x${data.ctHash}`), + utype: item.utype, + signature: data.signature, + }); + } + // Object | Array + if (typeof item === "object" && item !== null) { + if (Array.isArray(item)) { + // Array - recurse + const nestedItems = await Promise.all(item.map((nestedItem) => encrypt(nestedItem))); + // Any nested error break out + const nestedItemResultErr = nestedItems.find((nestedItem) => !nestedItem.success); + if (nestedItemResultErr != null) + return nestedItemResultErr; + return ResultOk(nestedItems.map((nestedItem) => nestedItem.data)); + } + else { + // Object - recurse + const nestedKeyedItems = await Promise.all(Object.entries(item).map(async ([key, value]) => ({ + key, + value: await encrypt(value), + }))); + // Any nested error break out + const nestedItemResultErr = nestedKeyedItems.find(({ value }) => !value.success); + if (nestedItemResultErr != null) + return nestedItemResultErr; + const result = {}; + nestedKeyedItems.forEach(({ key, value }) => { + result[key] = value.data; + }); + return ResultOk(result); + } + } + // Primitive + return ResultOk(item); } + // Unseal /** - * Pass true to automatically freeze all copies created by Immer. + * Unseals an encrypted message using the stored permit for a specific contract address. + * NOTE: Wrapper around `PermitV2.unseal` * - * By default, auto-freezing is enabled. + * @param {string} ciphertext - The encrypted message to unseal. + * @param {string} account - Users address, defaults to store.account + * @param {string} hash - The hash of the permit to use for this operation, defaults to active permitV2 hash + * @returns bigint - The unsealed message. */ - setAutoFreeze(value) { - this.autoFreeze_ = value; - } + const unsealCiphertext = (ciphertext, account, hash) => { + const state = _sdkStore.getState(); + const initialized = _checkInitialized(state); + if (!initialized.success) + return ResultErr(`${getAllPermits.name} :: ${initialized.error}`); + isString(ciphertext); + const resolvedAccount = account ?? state.account; + const resolvedHash = hash ?? permitStore.getActivePermitHash(resolvedAccount); + if (resolvedAccount == null || resolvedHash == null) { + return ResultErr(`unsealCiphertext :: PermitV2 hash not provided and active PermitV2 not found`); + } + const permit = permitStore.getPermit(resolvedAccount, resolvedHash); + if (permit == null) { + return ResultErr(`unsealCiphertext :: PermitV2 with account <${account}> and hash <${hash}> not found`); + } + let unsealed; + try { + unsealed = permit.unsealCiphertext(ciphertext); + } + catch (e) { + return ResultErr(`unsealCiphertext :: ${e}`); + } + return ResultOk(unsealed); + }; /** - * Pass true to enable strict shallow copy. + * Uses the privateKey of `permit.sealingPair` to recursively unseal any contained `SealedItems`. + * If `item` is a single `SealedItem` it will be individually. + * NOTE: Only unseals typed `SealedItem`s returned from `FHE.sealoutputTyped` and the FHE bindings' `e____.sealTyped`. * - * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties. + * @param {any | any[]} item - Array, object, or item. Any nested `SealedItems` will be unsealed. + * @returns - Recursively unsealed data in the target type, SealedBool -> boolean, SealedAddress -> string, etc. */ - setUseStrictShallowCopy(value) { - this.useStrictShallowCopy_ = value; - } - applyPatches(base, patches) { - let i; - for (i = patches.length - 1; i >= 0; i--) { - const patch = patches[i]; - if (patch.path.length === 0 && patch.op === "replace") { - base = patch.value; - break; + function unseal(item, account, hash) { + const resolvedAccount = account ?? _sdkStore.getState().account; + const resolvedHash = hash ?? permitStore.getActivePermitHash(resolvedAccount); + if (resolvedAccount == null || resolvedHash == null) { + return ResultErr(`unseal :: PermitV2 hash not provided and active PermitV2 not found`); } - } - if (i > -1) { - patches = patches.slice(i + 1); - } - const applyPatchesImpl = getPlugin("Patches").applyPatches_; - if (isDraft(base)) { - return applyPatchesImpl(base, patches); - } - return this.produce( - base, - (draft) => applyPatchesImpl(draft, patches) - ); - } - }; - function createProxy(value, parent) { - const draft = isMap(value) ? getPlugin("MapSet").proxyMap_(value, parent) : isSet(value) ? getPlugin("MapSet").proxySet_(value, parent) : createProxyProxy(value, parent); - const scope = parent ? parent.scope_ : getCurrentScope(); - scope.drafts_.push(draft); - return draft; - } - - // src/core/current.ts - function current(value) { - if (!isDraft(value)) - die(10, value); - return currentImpl(value); - } - function currentImpl(value) { - if (!isDraftable(value) || isFrozen(value)) - return value; - const state = value[DRAFT_STATE]; - let copy; - if (state) { - if (!state.modified_) - return state.base_; - state.finalized_ = true; - copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_); - } else { - copy = shallowCopy(value, true); - } - each(copy, (key, childValue) => { - set(copy, key, currentImpl(childValue)); - }); - if (state) { - state.finalized_ = false; + const permit = permitStore.getPermit(resolvedAccount, resolvedHash); + if (permit == null) { + return ResultErr(`unseal :: PermitV2 with account <${account}> and hash <${hash}> not found`); + } + let unsealed; + try { + unsealed = permit.unseal(item); + } + catch (e) { + return ResultErr(`unseal :: ${e}`); + } + return ResultOk(unsealed); } - return copy; - } - - // src/immer.ts - var immer = new Immer2(); - var produce = immer.produce; - immer.produceWithPatches.bind( - immer - ); - immer.setAutoFreeze.bind(immer); - immer.setUseStrictShallowCopy.bind(immer); - immer.applyPatches.bind(immer); - immer.createDraft.bind(immer); - immer.finishDraft.bind(immer); - - // Stores generated permits for each user, a hash indicating the active permit for each user, and a list of fheKeys as a cache - // Can be used to create reactive hooks - const _permitStore = createStore()(persist(() => ({ - permits: {}, - activePermitHash: {}, - }), { name: "fhenixjs-permits" })); - // Permit V2 - const getPermit$1 = (account, hash) => { - if (account == null || hash == null) - return; - const savedPermit = _permitStore.getState().permits[account]?.[hash]; - if (savedPermit == null) - return; - return PermitV2.deserialize(savedPermit); - }; - const getActivePermit = (account) => { - if (account == null) - return; - const activePermitHash = _permitStore.getState().activePermitHash[account]; - return getPermit$1(account, activePermitHash); - }; - const getPermits = (account) => { - if (account == null) - return {}; - return Object.entries(_permitStore.getState().permits[account] ?? {}).reduce((acc, [hash, permit]) => { - if (permit == undefined) - return acc; - return { ...acc, [hash]: PermitV2.deserialize(permit) }; - }, {}); - }; - const setPermit = (account, permitV2) => { - _permitStore.setState(produce((state) => { - if (state.permits[account] == null) - state.permits[account] = {}; - state.permits[account][permitV2.getHash()] = permitV2.serialize(); - })); - }; - const removePermit = (account, hash) => { - _permitStore.setState(produce((state) => { - state.permits[account][hash] = undefined; - })); - }; - // Active Permit Hash - const getActivePermitHash = (account) => { - if (account == null) - return undefined; - return _permitStore.getState().activePermitHash[account]; - }; - const setActivePermitHash = (account, hash) => { - _permitStore.setState(produce((state) => { - state.activePermitHash[account] = hash; - })); - }; - const removeActivePermitHash = (account) => { - _permitStore.setState(produce((state) => { - state.activePermitHash[account] = undefined; - })); - }; - const permitStore = { - store: _permitStore, - getPermit: getPermit$1, - getActivePermit, - getPermits, - setPermit, - removePermit, - getActivePermitHash, - setActivePermitHash, - removeActivePermitHash, - }; - - /* eslint-disable @typescript-eslint/no-explicit-any */ - const _sdkStore = createStore(() => ({ - fheKeysInitialized: false, - securityZones: [0], - fheKeys: {}, - accessRequirements: { - contracts: [], - projects: [], - }, - providerInitialized: false, - provider: undefined, - chainId: undefined, - signerInitialized: false, - signer: undefined, - account: undefined, - })); - // Store getters / setters - const _store_chainId = () => _sdkStore.getState().chainId; - const _store_getFheKey = (chainId, securityZone = 0) => { - if (chainId == null || securityZone == null) - return undefined; - const serialized = _sdkStore.getState().fheKeys[chainId]?.[securityZone]; - if (serialized == null) - return undefined; - return TfheCompactPublicKey.deserialize(serialized); - }; - const _store_getConnectedChainFheKey = (securityZone = 0) => { - const state = _sdkStore.getState(); - if (securityZone == null) - return undefined; - if (state.chainId == null) - return undefined; - const serialized = state.fheKeys[state.chainId]?.[securityZone]; - if (serialized == null) - return undefined; - return TfheCompactPublicKey.deserialize(serialized); - }; - const _store_setFheKey = (chainId, securityZone, fheKey) => { - if (chainId == null || securityZone == null) - return; - _sdkStore.setState(produce((state) => { - if (state.fheKeys[chainId] == null) - state.fheKeys[chainId] = {}; - state.fheKeys[chainId][securityZone] = fheKey?.serialize(); - })); - }; - const getChainIdFromProvider = async (provider) => { - const chainId = await provider.getChainId(); - if (chainId == null) - throw new Error("sdk :: getChainIdFromProvider :: provider.getChainId returned a null result, ensure that your provider is connected to a network"); - return chainId; - }; - const _store_initialize = async (params) => { - const { provider, signer, securityZones = [0], contracts: contractRequirements = [], projects: projectRequirements = [], } = params; - _sdkStore.setState({ - providerInitialized: false, - signerInitialized: false, - accessRequirements: { - contracts: contractRequirements, - projects: projectRequirements, - }, - }); - // PROVIDER - // Fetch chain Id from provider - const chainId = await getChainIdFromProvider(provider); - const chainIdChanged = chainId != null && chainId !== _sdkStore.getState().chainId; - if (chainId != null && provider != null) { - _sdkStore.setState({ providerInitialized: true, provider, chainId }); - } - // SIGNER - // Account is fetched and stored here, the `account` field in the store is used to index which permits belong to which users - // In sdk functions, `state.account != null` is validated, this is a check to ensure that a valid signer has been provided - // which is necessary to interact with permits - const account = await signer?.getAddress(); - if (account != null && signer != null) { - _sdkStore.setState({ signerInitialized: true, account, signer }); - } - else { - _sdkStore.setState({ - signerInitialized: false, - account: undefined, - signer: undefined, - }); - } - // If chainId or securityZones changes, update the store and update fheKeys for re-initialization - const securityZonesChanged = securityZones !== _sdkStore.getState().securityZones; - if (chainIdChanged || securityZonesChanged) { - _sdkStore.setState({ - securityZones, - fheKeysInitialized: false, - }); - } - // Fetch FHE keys (skipped if hardhat) - if (!chainIsHardhat(chainId) && !_sdkStore.getState().fheKeysInitialized) { - await Promise.all(securityZones.map((securityZone) => _store_fetchFheKey(chainId, provider, securityZone))); - } - _sdkStore.setState({ fheKeysInitialized: true }); - }; - /** - * Retrieves the FHE public key from the provider. - * If the key already exists in the store it is returned, else it is fetched, stored, and returned - * @param {string} chainId - The chain to fetch the FHE key for, if no chainId provided, undefined is returned - * @param {Provider} provider - EthersV6 Provider that performs the key fetch. - * @param securityZone - The security zone for which to retrieve the key (default 0). - * @returns {Promise} - The retrieved public key. - */ - const _store_fetchFheKey = async (chainId, provider, securityZone = 0) => { - const storedKey = _store_getFheKey(chainId, securityZone); - if (storedKey != null) - return storedKey; - const funcSig = "0x1b1b484e"; // cast sig "getNetworkPublicKey(int32)" - const callData = funcSig + toABIEncodedUint32(securityZone); - const publicKey = await provider.call({ to: FheOpsAddress, data: callData }); - if (typeof publicKey !== "string") { - throw new Error("Error initializing fhenixjs; FHE publicKey fetched from provider invalid: not a string"); - } - if (publicKey === "0x") { - throw new Error("Error initializing fhenixjs; provided chain is not FHE enabled, no FHE publicKey found"); - } - if (publicKey.length < PUBLIC_KEY_LENGTH_MIN) { - throw new Error(`Error initializing fhenixjs; got shorter than expected FHE publicKey: ${publicKey.length}. Expected length >= ${PUBLIC_KEY_LENGTH_MIN}`); - } - // todo (eshel) verify this - // magically know how to decode rlp or w/e returns from the evm json-rpc - const buff = fromHexString(publicKey.slice(130)); - try { - const key = TfheCompactPublicKey.deserialize(buff); - _store_setFheKey(chainId, securityZone, key); - return key; - } - catch (err) { - throw new Error(`Error deserializing public key ${err}`); - } - }; - - /* eslint-disable @typescript-eslint/no-explicit-any */ - /** - * Initializes the `fhenixsdk` to enable encrypting input data, creating permits / permissions, and decrypting sealed outputs. - * Initializes `fhevm` client FHE wasm module and fetches the provided chain's FHE publicKey. - * If a valid signer is provided, a `permit/permission` is generated automatically - */ - const initialize = async (params) => { - // Initialize the fhevm - await InitFhevm().catch((err) => { - if (params.ignoreErrors) { - return undefined; - } - else { - return ResultErr(`initialize :: failed to initialize fhenixjs - is the network FHE-enabled? ${err}`); - } - }); - if (params.provider == null) - return ResultErr("initialize :: missing provider - Please provide an AbstractProvider interface"); - if (params.securityZones != null && params.securityZones.length === 0) - return ResultErr("initialize :: a list of securityZones was provided, but it is empty"); - await _store_initialize(params); - // `generatePermit` must set to `false` to early exit here - if (params.generatePermit === false) - return ResultOk(undefined); - // Return the existing active permit - const userActivePermit = getPermit(); - if (userActivePermit.success) - return userActivePermit; - // Create permit and return it - return createPermit(); - }; - /** - * Internal reusable initialization checker - */ - const _checkInitialized = (state, options) => { - if (options?.fheKeys !== false && !state.fheKeysInitialized) { - return ResultErr("fhenixsdk not initialized. Use `fhenixsdk.initialize(...)`."); - } - if (options?.provider !== false && !state.providerInitialized) - return ResultErr("fhenixsdk not initialized with valid provider. Use `fhenixsdk.initialize(...)` with a valid provider that satisfies `AbstractProvider`."); - if (options?.signer !== false && !state.signerInitialized) - return ResultErr("fhenixsdk not initialized with a valid signer. Use `fhenixsdk.initialize(...)` with a valid signer that satisfies `AbstractSigner`."); - return ResultOk(null); - }; - // Permit - /** - * Creates a new permit with options, prompts user for signature. - * Handles all `permit.type`s, and prompts for the correct signature type. - * The created PermitV2 will be inserted into the store and marked as the active permit. - * NOTE: This is a wrapper around `PermitV2.create` and `PermitV2.sign` - * - * @param {PermitV2Options} options - Partial PermitV2 fields to create the Permit with, if no options provided will be filled with the defaults: - * { type: "self", issuer: initializedUserAddress, projects: initializedProjects, contracts: initializedContracts } - * @returns {Result} - Newly created PermitV2 as a Result object - */ - const createPermit = async (options) => { - const state = _sdkStore.getState(); - const initialized = _checkInitialized(state); - if (!initialized.success) - return ResultErr(`${createPermit.name} :: ${initialized.error}`); - const optionsWithDefaults = { - type: "self", - issuer: state.account, - contracts: state.accessRequirements.contracts, - projects: state.accessRequirements.projects, - ...options, - }; - let permit; - try { - permit = await PermitV2.createAndSign(optionsWithDefaults, state.chainId, state.signer); - } - catch (e) { - return ResultErr(`${createPermit.name} :: ${e}`); - } - permitStore.setPermit(state.account, permit); - permitStore.setActivePermitHash(state.account, permit.getHash()); - return ResultOk(permit); - }; - /** - * Imports a fully formed existing permit, expected to be valid. - * Does not ask for user signature, expects to already be populated. - * Will throw an error if the imported permit is invalid, see `PermitV2.isValid`. - * The imported PermitV2 will be inserted into the store and marked as the active permit. - * - * @param {string | PermitV2Interface} imported - Permit to import as a text string or PermitV2Interface - */ - const importPermit = async (imported) => { - const state = _sdkStore.getState(); - const initialized = _checkInitialized(state); - if (!initialized.success) - return ResultErr(`${createPermit.name} :: ${initialized.error}`); - // Import validation - if (typeof imported === "string") { - try { - imported = JSON.parse(imported); - } - catch (e) { - return ResultErr(`importPermit :: json parsing failed - ${e}`); - } - } - const { success, data: parsedPermit, error: permitParsingError, } = PermitV2ParamsValidator.safeParse(imported); - if (!success) { - const errorString = Object.entries(permitParsingError.flatten().fieldErrors) - .map(([field, err]) => `- ${field}: ${err}`) - .join("\n"); - return ResultErr(`importPermit :: invalid permit data - ${errorString}`); - } - if (parsedPermit.type !== "self") { - if (parsedPermit.issuer === state.account) - parsedPermit.type = "sharing"; - else if (parsedPermit.recipient === state.account) - parsedPermit.type = "recipient"; - else { - return ResultErr(`importPermit :: invalid Permit - connected account <${state.account}> is not issuer or recipient`); - } - } - let permit; - try { - permit = await PermitV2.create(parsedPermit); - } - catch (e) { - return ResultErr(`importPermit :: ${e}`); - } - const { valid, error } = permit.isValid(); - if (!valid) { - return ResultErr(`importPermit :: newly imported permit is invalid - ${error}`); - } - permitStore.setPermit(state.account, permit); - permitStore.setActivePermitHash(state.account, permit.getHash()); - return ResultOk(permit); - }; - /** - * Selects the active permit using its hash. - * If the hash is not found in the stored permits store, throws an error. - * The matched permit will be marked as the active permit. - * - * @param {string} hash - The `PermitV2.getHash` of the target permit. - */ - const selectActivePermit = (hash) => { - const state = _sdkStore.getState(); - const initialized = _checkInitialized(state); - if (!initialized.success) - return ResultErr(`${selectActivePermit.name} :: ${initialized.error}`); - const permit = permitStore.getPermit(state.account, hash); - if (permit == null) - return ResultErr(`${selectActivePermit.name} :: Permit with hash <${hash}> not found`); - permitStore.setActivePermitHash(state.account, permit.getHash()); - return ResultOk(permit); - }; - /** - * Retrieves a stored permit based on its hash. - * If no hash is provided, the currently active permit will be retrieved. - * - * @param {string} hash - Optional `PermitV2.getHash` of the permit. - * @returns {Result} - The active permit or permit associated with `hash` as a Result object. - */ - const getPermit = (hash) => { - const state = _sdkStore.getState(); - const initialized = _checkInitialized(state); - if (!initialized.success) - return ResultErr(`${getPermit.name} :: ${initialized.error}`); - if (hash == null) { - const permit = permitStore.getActivePermit(state.account); - if (permit == null) - return ResultErr(`getPermit :: active permit not found`); - return ResultOk(permit); - } - const permit = permitStore.getPermit(state.account, hash); - if (permit == null) - return ResultErr(`getPermit :: permit with hash <${hash}> not found`); - return ResultOk(permit); - }; - /** - * Retrieves a stored permission based on the permit's hash. - * If no hash is provided, the currently active permit will be used. - * The `PermissionV2` is extracted from the permit. - * - * @param {string} hash - Optional hash of the permission to get, defaults to active permit's permission - * @returns {Result} - The active permission or permission associated with `hash`, as a result object. - */ - const getPermission = (hash) => { - const permitResult = getPermit(hash); - if (!permitResult.success) - return ResultErr(`${getPermission.name} :: ${permitResult.error}`); - return ResultOk(permitResult.data.getPermission()); - }; - /** - * Exports all stored permits. - * @returns {Result>} - All stored permits. - */ - const getAllPermits = () => { - const state = _sdkStore.getState(); - const initialized = _checkInitialized(state); - if (!initialized.success) - return ResultErr(`${getAllPermits.name} :: ${initialized.error}`); - return ResultOk(permitStore.getPermits(state.account)); - }; - // Encrypt - /** - * Encrypts a numeric value according to the specified encryption type or the most efficient one based on the value. - * Useful when not using `Encryptable` utility structures. - * @param {number} value - The numeric value to encrypt. - * @param {EncryptionTypes} type - Optional. The encryption type (uint8, uint16, uint32). - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedNumber} - The encrypted value serialized as Uint8Array. Use the .data property to access the Uint8Array. - */ - const encryptValue = (value, type, securityZone = 0) => { - const state = _sdkStore.getState(); - // Only need to check `fheKeysInitialized`, signer and provider not needed for encryption - const initialized = _checkInitialized(state, { - provider: false, - signer: false, - }); - if (!initialized.success) - return ResultErr(`${encryptValue.name} :: ${initialized.error}`); - // Early exit with mock encrypted value if chain is hardhat - if (chainIsHardhat(state.chainId)) - return ResultOk(hardhatMockEncrypt(BigInt(value))); - const fhePublicKey = _store_getFheKey(state.chainId, securityZone); - if (fhePublicKey == null) - return ResultErr(`encryptValue :: FHE publicKey not found for chain <${state.chainId}> and securityZone <${securityZone}>`); - let outputSize = type; - // choose the most efficient ciphertext size if not selected - if (!outputSize) { - if (value < MAX_UINT8) { - outputSize = exports.EncryptionTypes.uint8; - } - else if (value < MAX_UINT16) { - outputSize = exports.EncryptionTypes.uint16; - } - else if (value < MAX_UINT32) { - outputSize = exports.EncryptionTypes.uint32; - } - else { - return ResultErr(`encryptValue :: Encryption input must be smaller than ${MAX_UINT32}`); - } - } - try { - switch (outputSize) { - case exports.EncryptionTypes.uint8: - ValidateUintInRange(value, MAX_UINT8, 0); - break; - case exports.EncryptionTypes.uint16: - ValidateUintInRange(value, MAX_UINT16, 0); - break; - case exports.EncryptionTypes.uint32: - ValidateUintInRange(value, MAX_UINT32, 0); - break; - default: - } - } - catch (e) { - return ResultErr(`encryptValue :: outputSize :: ${e}`); - } - let encrypted; - try { - encrypted = encrypt$1(value, fhePublicKey, type, securityZone); - } - catch (e) { - return ResultErr(`encryptValue :: tfhe_encrypt :: ${e}`); - } - return ResultOk(encrypted); - }; - function encrypt(item) { - const state = _sdkStore.getState(); - // Only need to check `fheKeysInitialized`, signer and provider not needed for encryption - const initialized = _checkInitialized(state, { - provider: false, - signer: false, - }); - if (!initialized.success) - return ResultErr(`${encrypt.name} :: ${initialized.error}`); - // Permission - if (item === "permission") { - return getPermission(); - } - // EncryptableItem - if (isEncryptableItem(item)) { - // Early exit with mock encrypted value if chain is hardhat - if (chainIsHardhat(_store_chainId())) - return ResultOk(hardhatMockEncrypt(BigInt(item.data))); - const fhePublicKey = _store_getConnectedChainFheKey(item.securityZone ?? 0); - if (fhePublicKey == null) - return ResultErr("encrypt :: fheKey for current chain not found"); - // prettier-ignore - try { - switch (item.utype) { - case FheUType.bool: return ResultOk(encrypt_bool(item.data, fhePublicKey, item.securityZone)); - case FheUType.uint8: return ResultOk(encrypt_uint8(item.data, fhePublicKey, item.securityZone)); - case FheUType.uint16: return ResultOk(encrypt_uint16(item.data, fhePublicKey, item.securityZone)); - case FheUType.uint32: return ResultOk(encrypt_uint32(item.data, fhePublicKey, item.securityZone)); - case FheUType.uint64: return ResultOk(encrypt_uint64(item.data, fhePublicKey, item.securityZone)); - case FheUType.uint128: return ResultOk(encrypt_uint128(item.data, fhePublicKey, item.securityZone)); - case FheUType.uint256: return ResultOk(encrypt_uint256(item.data, fhePublicKey, item.securityZone)); - case FheUType.address: return ResultOk(encrypt_address(item.data, fhePublicKey, item.securityZone)); - } - } - catch (e) { - return ResultErr(`encrypt :: tfhe_encrypt_xxxx :: ${e}`); - } - } - // Object | Array - if (typeof item === "object" && item !== null) { - if (Array.isArray(item)) { - // Array - recurse - const nestedItems = item.map((nestedItem) => encrypt(nestedItem)); - // Any nested error break out - const nestedItemResultErr = nestedItems.find((nestedItem) => !nestedItem.success); - if (nestedItemResultErr) - return nestedItemResultErr; - return ResultOk(nestedItems.map((nestedItem) => nestedItem.data)); - } - else { - // Object - recurse - const result = {}; - for (const key in item) { - const encryptedResult = encrypt(item[key]); - if (!encryptedResult.success) - return encryptedResult; - result[key] = encryptedResult.data; - } - return ResultOk(result); - } - } - // Primitive - return ResultOk(item); - } - // Unseal - /** - * Unseals an encrypted message using the stored permit for a specific contract address. - * NOTE: Wrapper around `PermitV2.unseal` - * - * @param {string} ciphertext - The encrypted message to unseal. - * @param {string} account - Users address, defaults to store.account - * @param {string} hash - The hash of the permit to use for this operation, defaults to active permitV2 hash - * @returns bigint - The unsealed message. - */ - const unsealCiphertext = (ciphertext, account, hash) => { - const state = _sdkStore.getState(); - const initialized = _checkInitialized(state); - if (!initialized.success) - return ResultErr(`${getAllPermits.name} :: ${initialized.error}`); - isString(ciphertext); - const resolvedAccount = account ?? state.account; - const resolvedHash = hash ?? permitStore.getActivePermitHash(resolvedAccount); - if (resolvedAccount == null || resolvedHash == null) { - return ResultErr(`unsealCiphertext :: PermitV2 hash not provided and active PermitV2 not found`); - } - const permit = permitStore.getPermit(resolvedAccount, resolvedHash); - if (permit == null) { - return ResultErr(`unsealCiphertext :: PermitV2 with account <${account}> and hash <${hash}> not found`); - } - let unsealed; - try { - unsealed = permit.unsealCiphertext(ciphertext); - } - catch (e) { - return ResultErr(`unsealCiphertext :: ${e}`); - } - return ResultOk(unsealed); - }; - /** - * Uses the privateKey of `permit.sealingPair` to recursively unseal any contained `SealedItems`. - * If `item` is a single `SealedItem` it will be individually. - * NOTE: Only unseals typed `SealedItem`s returned from `FHE.sealoutputTyped` and the FHE bindings' `e____.sealTyped`. - * - * @param {any | any[]} item - Array, object, or item. Any nested `SealedItems` will be unsealed. - * @returns - Recursively unsealed data in the target type, SealedBool -> boolean, SealedAddress -> string, etc. - */ - function unseal(item, account, hash) { - const resolvedAccount = account ?? _sdkStore.getState().account; - const resolvedHash = hash ?? permitStore.getActivePermitHash(resolvedAccount); - if (resolvedAccount == null || resolvedHash == null) { - return ResultErr(`unseal :: PermitV2 hash not provided and active PermitV2 not found`); - } - const permit = permitStore.getPermit(resolvedAccount, resolvedHash); - if (permit == null) { - return ResultErr(`unseal :: PermitV2 with account <${account}> and hash <${hash}> not found`); - } - let unsealed; - try { - unsealed = permit.unseal(item); - } - catch (e) { - return ResultErr(`unseal :: ${e}`); - } - return ResultOk(unsealed); - } - // Export - const fhenixsdk = { - store: _sdkStore, - initialize, - createPermit, - importPermit, - selectActivePermit, - getPermit, - getPermission, - getAllPermits, - encryptValue, - encrypt, - unsealCiphertext, - unseal, - }; - - // for mobile - // if (typeof BigInt === "undefined") { - // global.BigInt = require("big-integer"); - // } - - var fhenix = /*#__PURE__*/Object.freeze({ - __proto__: null, - Encryptable: Encryptable, - get EncryptionTypes () { return exports.EncryptionTypes; }, - FhenixClient: FhenixClient, - FhenixClientSync: FhenixClientSync, - GenerateSealingKey: GenerateSealingKey, - PermitV2: PermitV2, - SealingKey: SealingKey, - createTfheKeypair: createTfheKeypair, - createTfhePublicKey: createTfhePublicKey, - fhenixsdk: fhenixsdk, - generatePermit: generatePermit, - getAllExistingPermits: getAllExistingPermits, - getAllPermits: getAllPermits$1, - getPermit: getPermit$2, - getPermitFromLocalstorage: getPermitFromLocalstorage, - permitStore: permitStore, - removePermit: removePermit$1, - removePermitFromLocalstorage: removePermitFromLocalstorage, - storePermitInLocalStorage: storePermitInLocalStorage - }); - - exports.Encryptable = Encryptable; - exports.FhenixClient = FhenixClient; - exports.FhenixClientSync = FhenixClientSync; - exports.GenerateSealingKey = GenerateSealingKey; - exports.PermitV2 = PermitV2; - exports.SealingKey = SealingKey; - exports.createTfheKeypair = createTfheKeypair; - exports.createTfhePublicKey = createTfhePublicKey; - exports.fhenixjs = fhenix; - exports.fhenixsdk = fhenixsdk; - exports.generatePermit = generatePermit; - exports.getAllExistingPermits = getAllExistingPermits; - exports.getAllPermits = getAllPermits$1; - exports.getPermit = getPermit$2; - exports.getPermitFromLocalstorage = getPermitFromLocalstorage; - exports.permitStore = permitStore; - exports.removePermit = removePermit$1; - exports.removePermitFromLocalstorage = removePermitFromLocalstorage; - exports.storePermitInLocalStorage = storePermitInLocalStorage; + // Export + const fhenixsdk = { + store: _sdkStore, + initialize, + createPermit, + importPermit, + selectActivePermit, + getPermit, + getPermission, + getAllPermits, + encrypt, + unsealCiphertext, + unseal, + }; + + exports.Encryptable = Encryptable; + exports.FheAllUTypes = FheAllUTypes; + exports.FheUintUTypes = FheUintUTypes; + exports.FullyFormedPermitV2Validator = FullyFormedPermitV2Validator; + exports.GenerateSealingKey = GenerateSealingKey; + exports.PermitV2 = PermitV2; + exports.PermitV2ParamsValidator = PermitV2ParamsValidator; + exports.ResultErr = ResultErr; + exports.ResultOk = ResultOk; + exports.SealingKey = SealingKey; + exports.SignatureTypes = SignatureTypes; + exports.createTfheKeypair = createTfheKeypair; + exports.createTfhePublicKey = createTfhePublicKey; + exports.fhenixsdk = fhenixsdk; + exports.getAsSealedItem = getAsSealedItem; + exports.getSignatureDomain = getSignatureDomain; + exports.getSignatureTypesAndMessage = getSignatureTypesAndMessage; + exports.isEncryptableItem = isEncryptableItem; + exports.isSealedAddress = isSealedAddress; + exports.isSealedBool = isSealedBool; + exports.isSealedUint = isSealedUint; + exports.permitStore = permitStore; })); -//# sourceMappingURL=fhenix.umd.js.map +//# sourceMappingURL=cofhe.umd.js.map diff --git a/dist/cofhe.umd.js.map b/dist/cofhe.umd.js.map new file mode 100644 index 0000000..a076c8d --- /dev/null +++ b/dist/cofhe.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cofhe.umd.js","sources":["../lib/esm/sdk/validation.js","../lib/esm/sdk/utils.js","../node_modules/.pnpm/tweetnacl@1.0.3/node_modules/tweetnacl/nacl-fast.js","../node_modules/.pnpm/tweetnacl-util@0.15.1/node_modules/tweetnacl-util/nacl-util.js","../lib/esm/sdk/sealing.js","../lib/esm/sdk/fhe/tfhe-browser.js","../lib/esm/sdk/keygen.js","../lib/esm/types/base.js","../lib/esm/types/encryptable.js","../lib/esm/types/result.js","../lib/esm/types/sealed.js","../node_modules/.pnpm/zustand@5.0.1_immer@10.1.1/node_modules/zustand/esm/vanilla.mjs","../node_modules/.pnpm/zustand@5.0.1_immer@10.1.1/node_modules/zustand/esm/middleware.mjs","../node_modules/.pnpm/immer@10.1.1/node_modules/immer/dist/immer.mjs","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/_version.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/utils/properties.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/utils/errors.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/utils/data.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/utils/utf8.js","../node_modules/.pnpm/@noble+hashes@1.3.2/node_modules/@noble/hashes/esm/_assert.js","../node_modules/.pnpm/@noble+hashes@1.3.2/node_modules/@noble/hashes/esm/utils.js","../node_modules/.pnpm/@noble+hashes@1.3.2/node_modules/@noble/hashes/esm/_u64.js","../node_modules/.pnpm/@noble+hashes@1.3.2/node_modules/@noble/hashes/esm/sha3.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/crypto/keccak.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/constants/addresses.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/address/address.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/address/checks.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/hash/id.js","../lib/esm/sdk/permit/generate.js","../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/index.mjs","../lib/esm/sdk/permit/permit.z.js","../lib/esm/sdk/utils.hardhat.js","../lib/esm/sdk/permit/permit.js","../lib/esm/sdk/permit/store.js","../lib/esm/sdk/fhe/fhe-browser.js","../lib/esm/sdk/consts.js","../lib/esm/sdk/store.js","../lib/esm/sdk/encrypt.js","../lib/esm/sdk/init.js","../lib/esm/sdk/index.js"],"sourcesContent":["function assertIs(is, expected, value) {\n if (!is) {\n throw new Error(`Expected value which is \\`${expected}\\`, received value of type \\`${typeof value}\\`.`);\n }\n}\nexport function isString(value) {\n const is = typeof value === \"string\";\n assertIs(is, \"string\", value);\n}\nexport function isPlainObject(value) {\n // From: https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const prototype = Object.getPrototypeOf(value);\n const is = (prototype === null ||\n prototype === Object.prototype ||\n Object.getPrototypeOf(prototype) === null) &&\n !(Symbol.toStringTag in value) &&\n !(Symbol.iterator in value);\n assertIs(is, \"plain object\", value);\n return true;\n}\nexport function isBigIntOrHexString(value) {\n const is = typeof value === \"bigint\" || typeof value === \"string\";\n assertIs(is, \"bigint or hex string\", value);\n}\nexport function isNumber(value) {\n const is = typeof value === \"number\" && !Number.isNaN(value);\n assertIs(is, \"number\", value);\n}\nexport function isBigIntOrNumber(value) {\n const is = typeof value === \"bigint\";\n if (!is) {\n try {\n isNumber(value);\n }\n catch (e) {\n throw new Error(`Value ${value} is not a number or bigint: ${typeof value}`);\n }\n }\n}\n//# sourceMappingURL=validation.js.map","import { isNumber } from \"./validation.js\";\nexport const ValidateUintInRange = (value, max, min) => {\n isNumber(value);\n if (value > max || value < min) {\n throw new Error(`Value out of range: ${max} - ${min}, try a different uint type`);\n }\n};\nexport const fromHexString = (hexString) => {\n const cleanString = hexString.length % 2 === 1 ? `0${hexString}` : hexString;\n const arr = cleanString.replace(/^0x/, \"\").match(/.{1,2}/g);\n if (!arr)\n return new Uint8Array();\n return new Uint8Array(arr.map((byte) => parseInt(byte, 16)));\n};\nexport const toHexString = (bytes) => bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, \"0\"), \"\");\nexport function toBigInt(value) {\n return ethersToBigInt(value);\n}\nexport function toBeArray(value) {\n return ethersToBeArray(value);\n}\nexport function isAddress(address) {\n if (!_isAddress(address)) {\n throw new Error(`Address ${address} is not valid EVM address`);\n }\n}\nfunction _isAddress(value) {\n try {\n if (!value.startsWith(\"0x\")) {\n return false;\n }\n else if (value.length !== 42) {\n return false;\n }\n return true;\n }\n catch (error) {\n return false;\n }\n}\nconst Nibbles = \"0123456789abcdef\";\n// IEEE 754 support 53-bits of mantissa\nconst maxValue = 0x1fffffffffffff;\nconst BN_0 = BigInt(0);\n/*\n * Converts %%value%% to a BigInt. If %%value%% is a Uint8Array, it\n * is treated as Big Endian data.\n */\nfunction ethersToBigInt(value) {\n if (value instanceof Uint8Array) {\n let result = \"0x0\";\n for (const v of value) {\n result += Nibbles[v >> 4];\n result += Nibbles[v & 0x0f];\n }\n return BigInt(result);\n }\n return getBigInt(value);\n}\nfunction ethersToBeArray(_value) {\n const value = getUint(_value);\n if (value === BN_0) {\n return new Uint8Array([]);\n }\n let hex = value.toString(16);\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n const result = new Uint8Array(hex.length / 2);\n for (let i = 0; i < result.length; i++) {\n const offset = i * 2;\n result[i] = parseInt(hex.substring(offset, offset + 2), 16);\n }\n return result;\n}\n/**\n * Returns %%value%% as a bigint, validating it is valid as a bigint\n * value and that it is positive.\n */\nfunction getUint(value) {\n const result = getBigInt(value);\n assertArgument(result >= BN_0, \"unsigned value cannot be negative\");\n return result;\n}\n/**\n * Gets a BigInt from %%value%%. If it is an invalid value for\n * a BigInt, then an ArgumentError will be thrown for %%name%%.\n */\nfunction getBigInt(value) {\n switch (typeof value) {\n case \"bigint\":\n return value;\n case \"number\":\n assertArgument(Number.isInteger(value), \"underflow\");\n assertArgument(value >= -maxValue && value <= maxValue, \"overflow\");\n return BigInt(value);\n case \"string\":\n try {\n if (value === \"\") {\n throw new Error(\"empty string\");\n }\n if (value[0] === \"-\" && value[1] !== \"-\") {\n return -BigInt(value.substring(1));\n }\n return BigInt(value);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n catch (e) {\n assertArgument(false, `invalid BigNumberish string: ${e.message}`);\n }\n }\n assertArgument(false, \"invalid BigNumberish value\");\n}\nfunction assertArgument(check, message) {\n if (!check) {\n throw new Error(message);\n }\n}\nexport function toABIEncodedUint32(value) {\n // Ensure the number is a valid unsigned 32-bit integer\n if (value < 0 || value > 0xffffffff) {\n throw new RangeError(\"Number must be between 0 and 2^32 - 1.\");\n }\n // Convert the number to a hexadecimal string and pad it to 64 characters (32 bytes)\n return value.toString(16).padStart(64, \"0\");\n}\n// Uint8Array conversions\nexport const stringToUint8Array = (value) => {\n return new Uint8Array(value.split(\"\").map((c) => c.charCodeAt(0)));\n};\nexport const uint8ArrayToString = (value) => {\n return Array.from(value)\n .map((byte) => String.fromCharCode(byte))\n .join(\"\");\n};\nexport const bigintToUint8Array = (bigNum) => {\n const byteLength = 32;\n const byteArray = new Uint8Array(byteLength);\n // Create a BigInt mask for each byte\n const mask = BigInt(0xff);\n // Initialize an index to start from the end of the array\n for (let i = 0; i < byteLength; i++) {\n // Extract the last byte and assign it to the corresponding position in the array\n byteArray[byteLength - 1 - i] = Number(bigNum & mask);\n // Shift bigint right by 8 bits to process the next byte in the next iteration\n bigNum >>= BigInt(8);\n }\n return byteArray;\n};\n//# sourceMappingURL=utils.js.map","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","// Written in 2014-2016 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n(function(root, f) {\n 'use strict';\n if (typeof module !== 'undefined' && module.exports) module.exports = f();\n else if (root.nacl) root.nacl.util = f();\n else {\n root.nacl = {};\n root.nacl.util = f();\n }\n}(this, function() {\n 'use strict';\n\n var util = {};\n\n function validateBase64(s) {\n if (!(/^(?:[A-Za-z0-9+\\/]{2}[A-Za-z0-9+\\/]{2})*(?:[A-Za-z0-9+\\/]{2}==|[A-Za-z0-9+\\/]{3}=)?$/.test(s))) {\n throw new TypeError('invalid encoding');\n }\n }\n\n util.decodeUTF8 = function(s) {\n if (typeof s !== 'string') throw new TypeError('expected string');\n var i, d = unescape(encodeURIComponent(s)), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n util.encodeUTF8 = function(arr) {\n var i, s = [];\n for (i = 0; i < arr.length; i++) s.push(String.fromCharCode(arr[i]));\n return decodeURIComponent(escape(s.join('')));\n };\n\n if (typeof atob === 'undefined') {\n // Node.js\n\n if (typeof Buffer.from !== 'undefined') {\n // Node v6 and later\n util.encodeBase64 = function (arr) { // v6 and later\n return Buffer.from(arr).toString('base64');\n };\n\n util.decodeBase64 = function (s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(Buffer.from(s, 'base64'), 0));\n };\n\n } else {\n // Node earlier than v6\n util.encodeBase64 = function (arr) { // v6 and later\n return (new Buffer(arr)).toString('base64');\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(new Buffer(s, 'base64'), 0));\n };\n }\n\n } else {\n // Browsers\n\n util.encodeBase64 = function(arr) {\n var i, s = [], len = arr.length;\n for (i = 0; i < len; i++) s.push(String.fromCharCode(arr[i]));\n return btoa(s.join(''));\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n var i, d = atob(s), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n }\n\n return util;\n\n}));\n","import { fromHexString, toBeArray, toBigInt, toHexString } from \"./utils.js\";\nimport * as nacl from \"tweetnacl\";\nimport * as naclUtil from \"tweetnacl-util\";\nimport { isBigIntOrNumber, isString } from \"./validation.js\";\nconst PRIVATE_KEY_LENGTH = 64;\nconst PUBLIC_KEY_LENGTH = 64;\n/**\n * A class representing a SealingKey which provides cryptographic sealing (encryption)\n * and unsealing (decryption) capabilities.\n */\nexport class SealingKey {\n /**\n * Constructs a SealingKey instance with the given private and public keys.\n *\n * @param {string} privateKey - The private key used for decryption.\n * @param {string} publicKey - The public key used for encryption.\n * @throws Will throw an error if the provided keys lengths do not match\n * the required lengths for private and public keys.\n */\n constructor(privateKey, publicKey) {\n /**\n * Unseals (decrypts) the provided ciphertext using the instance's private key.\n *\n * @param {string | Uint8Array} ciphertext - The encrypted data to be decrypted.\n * @returns BigInt - The decrypted message as a bigint.\n * @throws Will throw an error if the decryption process fails.\n */\n this.unseal = (ciphertext) => {\n let parsedData = undefined;\n try {\n if (typeof ciphertext === \"string\") {\n parsedData = JSON.parse(ciphertext);\n }\n }\n catch {\n // ignore errors\n }\n if (!parsedData) {\n const toDecrypt = typeof ciphertext === \"string\" ? fromHexString(ciphertext) : ciphertext;\n // decode json structure that gets returned from the chain\n const jsonString = Buffer.from(toDecrypt).toString(\"utf8\");\n parsedData = JSON.parse(jsonString);\n }\n if (!parsedData) {\n throw new Error(\"Failed to parse sealed data\");\n }\n // assemble decryption parameters\n const nonce = naclUtil.decodeBase64(parsedData.nonce);\n const ephemPublicKey = naclUtil.decodeBase64(parsedData.ephemPublicKey);\n const dataToDecrypt = naclUtil.decodeBase64(parsedData.ciphertext);\n // call the nacl box function to decrypt the data\n const decryptedMessage = nacl.box.open(dataToDecrypt, nonce, ephemPublicKey, fromHexString(this.privateKey));\n if (!decryptedMessage) {\n throw new Error(\"Failed to decrypt message\");\n }\n return toBigInt(decryptedMessage);\n };\n if (privateKey.length !== PRIVATE_KEY_LENGTH) {\n throw new Error(`Private key must be of length ${PRIVATE_KEY_LENGTH}`);\n }\n if (publicKey.length !== PUBLIC_KEY_LENGTH) {\n throw new Error(`Private key must be of length ${PUBLIC_KEY_LENGTH}`);\n }\n this.privateKey = privateKey;\n this.publicKey = publicKey;\n }\n}\n/**\n * Seals (encrypts) the provided message for a receiver with the specified public key.\n *\n * @param {bigint | number} value - The message to be encrypted.\n * @param {string} publicKey - The public key of the intended recipient.\n * @returns string - The encrypted message in hexadecimal format.\n * @static\n * @throws Will throw if the provided publicKey or value do not meet defined preconditions.\n */\nSealingKey.seal = (value, publicKey) => {\n isString(publicKey);\n isBigIntOrNumber(value);\n // generate ephemeral keypair\n const ephemeralKeyPair = nacl.box.keyPair();\n const nonce = nacl.randomBytes(nacl.box.nonceLength);\n const encryptedMessage = nacl.box(toBeArray(value), nonce, fromHexString(publicKey), ephemeralKeyPair.secretKey);\n // handle encrypted data\n const output = {\n version: \"x25519-xsalsa20-poly1305\",\n nonce: naclUtil.encodeBase64(nonce),\n ephemPublicKey: naclUtil.encodeBase64(ephemeralKeyPair.publicKey),\n ciphertext: naclUtil.encodeBase64(encryptedMessage),\n };\n // mimicking encoding from the chain\n return toHexString(Buffer.from(JSON.stringify(output)));\n};\n/**\n * Asynchronously generates a new SealingKey.\n * This function uses the 'nacl' library to create a new public/private key pair for sealing purposes.\n * A sealing key is used to encrypt data such that it can only be unsealed (decrypted) by the owner of the corresponding private key.\n * @returns {Promise} - A promise that resolves to a new SealingKey object containing the hexadecimal strings of the public and private keys.\n */\nexport const GenerateSealingKey = async () => {\n const sodiumKeypair = nacl.box.keyPair();\n return new SealingKey(toHexString(sodiumKeypair.secretKey), toHexString(sodiumKeypair.publicKey));\n};\n//# sourceMappingURL=sealing.js.map","let wasm;\nconst heap = new Array(128).fill(undefined);\nheap.push(undefined, null, true, false);\nlet heap_next = heap.length;\nfunction addHeapObject(obj) {\n if (heap_next === heap.length)\n heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n heap[idx] = obj;\n return idx;\n}\nfunction getObject(idx) {\n return heap[idx];\n}\nfunction dropObject(idx) {\n if (idx < 132)\n return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\nconst cachedTextDecoder = typeof TextDecoder !== \"undefined\"\n ? new TextDecoder(\"utf-8\", { ignoreBOM: true, fatal: true })\n : {\n decode: () => {\n throw Error(\"TextDecoder not available\");\n },\n };\nif (typeof TextDecoder !== \"undefined\") {\n cachedTextDecoder.decode();\n}\nlet cachedUint8Memory0 = null;\nfunction getUint8Memory0() {\n if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) {\n cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8Memory0;\n}\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\nlet cachedBigInt64Memory0 = null;\nfunction getBigInt64Memory0() {\n if (cachedBigInt64Memory0 === null ||\n cachedBigInt64Memory0.byteLength === 0) {\n cachedBigInt64Memory0 = new BigInt64Array(wasm.memory.buffer);\n }\n return cachedBigInt64Memory0;\n}\nlet cachedInt32Memory0 = null;\nfunction getInt32Memory0() {\n if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) {\n cachedInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachedInt32Memory0;\n}\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == \"number\" || type == \"boolean\" || val == null) {\n return `${val}`;\n }\n if (type == \"string\") {\n return `\"${val}\"`;\n }\n if (type == \"symbol\") {\n const description = val.description;\n if (description == null) {\n return \"Symbol\";\n }\n else {\n return `Symbol(${description})`;\n }\n }\n if (type == \"function\") {\n const name = val.name;\n if (typeof name == \"string\" && name.length > 0) {\n return `Function(${name})`;\n }\n else {\n return \"Function\";\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = \"[\";\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for (let i = 1; i < length; i++) {\n debug += \", \" + debugString(val[i]);\n }\n debug += \"]\";\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n }\n else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == \"Object\") {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return \"Object(\" + JSON.stringify(val) + \")\";\n }\n catch (_) {\n return \"Object\";\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\nlet WASM_VECTOR_LEN = 0;\nconst cachedTextEncoder = typeof TextEncoder !== \"undefined\"\n ? new TextEncoder(\"utf-8\")\n : {\n encode: () => {\n throw Error(\"TextEncoder not available\");\n },\n };\nconst encodeString = typeof cachedTextEncoder.encodeInto === \"function\"\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n }\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length,\n };\n };\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8Memory0()\n .subarray(ptr, ptr + buf.length)\n .set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n const mem = getUint8Memory0();\n let offset = 0;\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7f)\n break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, (len = offset + arg.length * 3), 1) >>> 0;\n const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n offset += ret.written;\n }\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n/**\n */\nexport function init_panic_hook() {\n wasm.init_panic_hook();\n}\nfunction _assertClass(instance, klass) {\n if (!(instance instanceof klass)) {\n throw new Error(`expected instance of ${klass.name}`);\n }\n return instance.ptr;\n}\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);\n}\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8Memory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\nlet cachedUint32Memory0 = null;\nfunction getUint32Memory0() {\n if (cachedUint32Memory0 === null || cachedUint32Memory0.byteLength === 0) {\n cachedUint32Memory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32Memory0;\n}\nfunction passArrayJsValueToWasm0(array, malloc) {\n const ptr = malloc(array.length * 4, 4) >>> 0;\n const mem = getUint32Memory0();\n for (let i = 0; i < array.length; i++) {\n mem[ptr / 4 + i] = addHeapObject(array[i]);\n }\n WASM_VECTOR_LEN = array.length;\n return ptr;\n}\nfunction getArrayJsValueFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n const mem = getUint32Memory0();\n const slice = mem.subarray(ptr / 4, ptr / 4 + len);\n const result = [];\n for (let i = 0; i < slice.length; i++) {\n result.push(takeObject(slice[i]));\n }\n return result;\n}\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n }\n catch (e) {\n wasm.__wbindgen_exn_store(addHeapObject(e));\n }\n}\n/**\n */\nexport class CompactFheBool {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheBool.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfhebool_free(ptr);\n }\n /**\n * @param {boolean} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheBool}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfhebool_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheBool}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfhebool_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfhebool_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheBool}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfhebool_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfhebool_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheBool}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfhebool_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheBoolList {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheBoolList.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheboollist_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheboollist_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheboollist_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheBoolList}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheboollist_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheBoolList.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheBoolList}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheboollist_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheBoolList.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt128 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt128.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint128_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt128}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt128}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt128}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint128_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt128}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt128List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt128List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint128list_free(ptr);\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheInt128List}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheint128list_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt128List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt128List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint128list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt128List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt16 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt16.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint16_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt16}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint16_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt16}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint16_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt16}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint16_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt16}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt160 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt160.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint160_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt160}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt160}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint160_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt160}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint160_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt160}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt160List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt160List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint160list_free(ptr);\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheInt160List}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheint160list_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt160List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint160list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint160list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt160List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint160list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt160List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt16List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt16List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint16list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint16list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint16list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt16List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint16list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt16List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt256 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt256.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint256_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt256}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt256}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint256_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt256}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint256_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt256}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt256List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt256List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint256list_free(ptr);\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheInt256List}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheint256list_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt256List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint256list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint256list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt256List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint256list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt256List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt32 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt32.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint32_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt32}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint32_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt32}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint32_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt32}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint32_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt32}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt32List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt32List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint32list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint32list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint32list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt32List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint32list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt32List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt64 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt64.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint64_free(ptr);\n }\n /**\n * @param {bigint} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt64}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint64_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt64}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint64_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt64}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint64_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt64}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt64List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt64List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint64list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint64list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint64list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt64List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint64list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt64List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt8 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt8.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint8_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt8}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint8_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt8}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint8_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt8}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint8_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt8}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt8List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt8List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint8list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint8list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint8list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt8List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint8list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt8List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint128 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint128.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint128_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint128}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint128}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint128_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint128}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint128_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint128}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint128List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint128List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint128list_free(ptr);\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheUint128List}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheuint128list_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint128List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint128list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint128list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint128List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint128list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint128List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint16 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint16.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint16_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint16}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint16_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint16}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint16_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint16}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint16_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint16}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint160 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint160.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint160_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint160}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint160}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint160_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint160}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint160_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint160}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint160List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint160List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint160list_free(ptr);\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheUint160List}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheuint160list_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint160List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint160list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint160list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint160List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint160list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint160List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint16List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint16List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint16list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint16list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint16list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint16List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint16list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint16List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint256 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint256.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint256_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint256}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint256}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint256_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint256}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint256_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint256}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint256List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint256List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint256list_free(ptr);\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheUint256List}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheuint256list_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint256List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint256list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint256list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint256List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint256list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint256List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint32 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint32.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint32_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint32}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint32_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint32}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint32_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint32}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint32_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint32}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint32List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint32List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint32list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint32list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint32list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint32List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint32list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint32List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint64 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint64.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint64_free(ptr);\n }\n /**\n * @param {bigint} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint64}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint64_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint64}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint64_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint64}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint64_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint64}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint64List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint64List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint64list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint64list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint64list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint64List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint64list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint64List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint8 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint8.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint8_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint8}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint8_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint8}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint8_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint8}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint8_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint8}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint8List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint8List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint8list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint8list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint8list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint8List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint8list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint8List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheBool {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheBool.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfhebool_free(ptr);\n }\n /**\n * @param {boolean} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheBool}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfhebool_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheBool}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfhebool_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfhebool_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheBool}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfhebool_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfhebool_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheBool}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfhebool_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt128 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt128.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint128_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt128}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint128_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt128}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint128_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint128_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt128}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint128_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt128}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt16 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt16.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint16_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt16}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint16_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt16}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint16_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint16_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt16}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint16_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt16}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt160 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt160.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint160_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt160}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint160_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt160}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint160_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint160_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt160}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint160_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt160}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt256 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt256.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint256_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt256}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint256_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt256}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint256_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint256_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt256}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint256_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt256}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt32 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt32.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint32_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt32}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint32_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt32}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint32_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint32_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt32}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint32_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt32}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt64 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt64.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint64_free(ptr);\n }\n /**\n * @param {bigint} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt64}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint64_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt64}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint64_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint64_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt64}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint64_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt64}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt8 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt8.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint8_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt8}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint8_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt8}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint8_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint8_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt8}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint8_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt8}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint128 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint128.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint128_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint128}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint128_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint128}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint128_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint128_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint128}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint128_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint128}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint16 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint16.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint16_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint16}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint16_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint16}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint16_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint16_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint16}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint16_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint16}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint160 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint160.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint160_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint160}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint160_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint160}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint160_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint160_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint160}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint160_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint160}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint256 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint256.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint256_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint256}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint256_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint256}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint256_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint256_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint256}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint256_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint256}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint32 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint32.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint32_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint32}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint32_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint32}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint32_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint32_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint32}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint32_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint32}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint64 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint64.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint64_free(ptr);\n }\n /**\n * @param {bigint} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint64}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint64_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint64}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint64_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint64_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint64}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint64_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint64}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint8 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint8.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint8_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint8}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint8_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint8}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint8_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint8_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint8}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint8_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint8}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheBool {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheBool.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fhebool_free(ptr);\n }\n /**\n * @param {boolean} value\n * @param {TfheClientKey} client_key\n * @returns {FheBool}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fhebool_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {boolean} value\n * @param {TfhePublicKey} public_key\n * @returns {FheBool}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fhebool_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {boolean} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheBool}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fhebool_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {boolean} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheBool}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fhebool_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {boolean}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fhebool_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0 !== 0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fhebool_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheBool}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fhebool_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fhebool_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheBool}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fhebool_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt128 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt128.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint128_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt128}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint128_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt128}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint128_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt128}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint128_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt128}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {any}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint128_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint128_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt128}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint128_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt128}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt16 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt16.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint16_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt16}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint16_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt16}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint16_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt16}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint16_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt16}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint16_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {number}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint16_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint16_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt16}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint16_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt16}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt160 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt160.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint160_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt160}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint160_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt160}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint160_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt160}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint160_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt160}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {any}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint160_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint160_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt160}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint160_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt160}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt256 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt256.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint256_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt256}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint256_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt256}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint256_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt256}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint256_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt256}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {any}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint256_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint256_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt256}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint256_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt256}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt32 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt32.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint32_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt32}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint32_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt32}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint32_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt32}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint32_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt32}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint32_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {number}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint32_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint32_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt32}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint32_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt32}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt64 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt64.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint64_free(ptr);\n }\n /**\n * @param {bigint} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt64}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint64_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt64}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint64_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt64}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint64_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt64}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint64_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {bigint}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint64_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getBigInt64Memory0()[retptr / 8 + 0];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n return r0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint64_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt64}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint64_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt64}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt8 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt8.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint8_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt8}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint8_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt8}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint8_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt8}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint8_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt8}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint8_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {number}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint8_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint8_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt8}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint8_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt8}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint128 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint128.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint128_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint128}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint128_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint128}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint128_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint128}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint128_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint128}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {any}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint128_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint128_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint128}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint128_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint128}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint16 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint16.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint16_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint16}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint16_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint16}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint16_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint16}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint16_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint16}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint16_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {number}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint16_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint16_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint16}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint16_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint16}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint160 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint160.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint160_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint160}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint160_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint160}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint160_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint160}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint160_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint160}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {any}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint160_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint160_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint160}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint160_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint160}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint256 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint256.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint256_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint256}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint256_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint256}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint256_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint256}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint256_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint256}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {any}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint256_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint256_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint256}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint256_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint256}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint32 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint32.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint32_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint32}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint32_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint32}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint32_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint32}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint32_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint32}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint32_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {number}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint32_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0 >>> 0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint32_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint32}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint32_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint32}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint64 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint64.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint64_free(ptr);\n }\n /**\n * @param {bigint} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint64}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint64_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint64}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint64_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint64}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint64_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint64}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint64_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {bigint}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint64_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getBigInt64Memory0()[retptr / 8 + 0];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n return BigInt.asUintN(64, r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint64_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint64}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint64_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint64}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint8 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint8.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint8_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint8}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint8_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint8}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint8_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint8}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint8_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint8}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint8_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {number}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint8_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint8_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint8}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint8_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint8}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class TfheClientKey {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheClientKey.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfheclientkey_free(ptr);\n }\n /**\n * @param {TfheConfig} config\n * @returns {TfheClientKey}\n */\n static generate(config) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(config, TfheConfig);\n wasm.tfheclientkey_generate(retptr, config.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheClientKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheConfig} config\n * @param {any} seed\n * @returns {TfheClientKey}\n */\n static generate_with_seed(config, seed) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(config, TfheConfig);\n wasm.tfheclientkey_generate_with_seed(retptr, config.__wbg_ptr, addHeapObject(seed));\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheClientKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfheclientkey_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {TfheClientKey}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.tfheclientkey_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheClientKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class TfheCompactPublicKey {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheCompactPublicKey.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfhecompactpublickey_free(ptr);\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {TfheCompactPublicKey}\n */\n static new(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.tfhecompactpublickey_new(retptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompactPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhecompactpublickey_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {TfheCompactPublicKey}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.tfhecompactpublickey_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompactPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class TfheCompressedCompactPublicKey {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheCompressedCompactPublicKey.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfhecompressedcompactpublickey_free(ptr);\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {TfheCompressedCompactPublicKey}\n */\n static new(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.tfhecompressedcompactpublickey_new(retptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompressedCompactPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhecompressedcompactpublickey_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {TfheCompressedCompactPublicKey}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.tfhecompressedcompactpublickey_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompressedCompactPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {TfheCompactPublicKey}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhecompressedcompactpublickey_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompactPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class TfheCompressedPublicKey {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheCompressedPublicKey.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfhecompressedpublickey_free(ptr);\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {TfheCompressedPublicKey}\n */\n static new(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.tfhecompressedpublickey_new(retptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompressedPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {TfhePublicKey}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhecompressedpublickey_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfhePublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhecompressedpublickey_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {TfheCompressedPublicKey}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.tfhecompressedpublickey_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompressedPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class TfheCompressedServerKey {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheCompressedServerKey.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfhecompressedserverkey_free(ptr);\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {TfheCompressedServerKey}\n */\n static new(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.tfhecompressedserverkey_new(retptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompressedServerKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhecompressedserverkey_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {TfheCompressedServerKey}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.tfhecompressedserverkey_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompressedServerKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class TfheConfig {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheConfig.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfheconfig_free(ptr);\n }\n}\n/**\n */\nexport class TfheConfigBuilder {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheConfigBuilder.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfheconfigbuilder_free(ptr);\n }\n /**\n * @returns {TfheConfigBuilder}\n */\n static default() {\n const ret = wasm.tfheconfigbuilder_default();\n return TfheConfigBuilder.__wrap(ret);\n }\n /**\n * @returns {TfheConfigBuilder}\n */\n static default_with_small_encryption() {\n const ret = wasm.tfheconfigbuilder_default_with_small_encryption();\n return TfheConfigBuilder.__wrap(ret);\n }\n /**\n * @returns {TfheConfigBuilder}\n */\n static default_with_big_encryption() {\n const ret = wasm.tfheconfigbuilder_default();\n return TfheConfigBuilder.__wrap(ret);\n }\n /**\n * @returns {TfheConfig}\n */\n build() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.tfheconfigbuilder_build(ptr);\n return TfheConfig.__wrap(ret);\n }\n}\n/**\n */\nexport class TfhePublicKey {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfhePublicKey.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfhepublickey_free(ptr);\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {TfhePublicKey}\n */\n static new(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.tfhepublickey_new(retptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfhePublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhepublickey_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {TfhePublicKey}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.tfhepublickey_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfhePublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class tfheBrowser {\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfhe_free(ptr);\n }\n}\nasync function __wbg_load(module, imports) {\n if (typeof Response === \"function\" && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === \"function\") {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n }\n catch (e) {\n if (module.headers.get(\"Content-Type\") != \"application/wasm\") {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n }\n else {\n throw e;\n }\n }\n }\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n }\n else {\n const instance = await WebAssembly.instantiate(module, imports);\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n }\n else {\n return instance;\n }\n }\n}\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_bigint_from_u64 = function (arg0) {\n const ret = BigInt.asUintN(64, arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_shr = function (arg0, arg1) {\n const ret = getObject(arg0) >> getObject(arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_object_drop_ref = function (arg0) {\n takeObject(arg0);\n };\n imports.wbg.__wbindgen_bigint_from_i64 = function (arg0) {\n const ret = arg0;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_jsval_eq = function (arg0, arg1) {\n const ret = getObject(arg0) === getObject(arg1);\n return ret;\n };\n imports.wbg.__wbindgen_error_new = function (arg0, arg1) {\n const ret = new Error(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_bigint_from_i128 = function (arg0, arg1) {\n const ret = (arg0 << BigInt(64)) | BigInt.asUintN(64, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_bigint_from_u128 = function (arg0, arg1) {\n const ret = (BigInt.asUintN(64, arg0) << BigInt(64)) | BigInt.asUintN(64, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint16_new = function (arg0) {\n const ret = FheUint16.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint160_new = function (arg0) {\n const ret = FheUint160.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint256_new = function (arg0) {\n const ret = FheUint256.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint32_new = function (arg0) {\n const ret = FheUint32.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint128_new = function (arg0) {\n const ret = FheUint128.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint8_new = function (arg0) {\n const ret = FheUint8.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint64_new = function (arg0) {\n const ret = FheUint64.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint32_new = function (arg0) {\n const ret = FheInt32.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint64_new = function (arg0) {\n const ret = FheInt64.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fhebool_new = function (arg0) {\n const ret = FheBool.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint256_new = function (arg0) {\n const ret = FheInt256.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint160_new = function (arg0) {\n const ret = FheInt160.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint16_new = function (arg0) {\n const ret = FheInt16.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint8_new = function (arg0) {\n const ret = FheInt8.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint128_new = function (arg0) {\n const ret = FheInt128.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_boolean_get = function (arg0) {\n const v = getObject(arg0);\n const ret = typeof v === \"boolean\" ? (v ? 1 : 0) : 2;\n return ret;\n };\n imports.wbg.__wbindgen_bigint_from_str = function (arg0, arg1) {\n const ret = BigInt(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_bit_and = function (arg0, arg1) {\n const ret = getObject(arg0) & getObject(arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_number_new = function (arg0) {\n const ret = arg0;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_lt = function (arg0, arg1) {\n const ret = getObject(arg0) < getObject(arg1);\n return ret;\n };\n imports.wbg.__wbindgen_neg = function (arg0) {\n const ret = -getObject(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_shl = function (arg0, arg1) {\n const ret = getObject(arg0) << getObject(arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_add = function (arg0, arg1) {\n const ret = getObject(arg0) + getObject(arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_bit_or = function (arg0, arg1) {\n const ret = getObject(arg0) | getObject(arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_abda76e883ba8a5f = function () {\n const ret = new Error();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_stack_658279fe44541cf6 = function (arg0, arg1) {\n const ret = getObject(arg1).stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_error_f851667af71bcfc6 = function (arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n }\n finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n };\n imports.wbg.__wbg_crypto_70a96de3b6b73dac = function (arg0) {\n const ret = getObject(arg0).crypto;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_is_object = function (arg0) {\n const val = getObject(arg0);\n const ret = typeof val === \"object\" && val !== null;\n return ret;\n };\n imports.wbg.__wbg_process_dd1577445152112e = function (arg0) {\n const ret = getObject(arg0).process;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_versions_58036bec3add9e6f = function (arg0) {\n const ret = getObject(arg0).versions;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_node_6a9d28205ed5b0d8 = function (arg0) {\n const ret = getObject(arg0).node;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_is_string = function (arg0) {\n const ret = typeof getObject(arg0) === \"string\";\n return ret;\n };\n imports.wbg.__wbg_require_f05d779769764e82 = function () {\n return handleError(function () {\n const ret = module.require;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbindgen_string_new = function (arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_msCrypto_adbc770ec9eca9c7 = function (arg0) {\n const ret = getObject(arg0).msCrypto;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_randomFillSync_e950366c42764a07 = function () {\n return handleError(function (arg0, arg1) {\n getObject(arg0).randomFillSync(takeObject(arg1));\n }, arguments);\n };\n imports.wbg.__wbg_getRandomValues_3774744e221a22ad = function () {\n return handleError(function (arg0, arg1) {\n getObject(arg0).getRandomValues(getObject(arg1));\n }, arguments);\n };\n imports.wbg.__wbindgen_is_function = function (arg0) {\n const ret = typeof getObject(arg0) === \"function\";\n return ret;\n };\n imports.wbg.__wbg_newnoargs_e643855c6572a4a8 = function (arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_call_f96b398515635514 = function () {\n return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_self_b9aad7f1c618bfaf = function () {\n return handleError(function () {\n const ret = self.self;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_window_55e469842c98b086 = function () {\n return handleError(function () {\n const ret = window.window;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_globalThis_d0957e302752547e = function () {\n return handleError(function () {\n const ret = globalThis.globalThis;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_global_ae2f87312b8987fb = function () {\n return handleError(function () {\n const ret = global.global;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbindgen_is_undefined = function (arg0) {\n const ret = getObject(arg0) === undefined;\n return ret;\n };\n imports.wbg.__wbg_call_35782e9a1aa5e091 = function () {\n return handleError(function (arg0, arg1, arg2) {\n const ret = getObject(arg0).call(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_buffer_fcbfb6d88b2732e9 = function (arg0) {\n const ret = getObject(arg0).buffer;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_newwithbyteoffsetandlength_92c251989c485785 = function (arg0, arg1, arg2) {\n const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_bc5d9aad3f9ac80e = function (arg0) {\n const ret = new Uint8Array(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_set_4b3aa8445ac1e91c = function (arg0, arg1, arg2) {\n getObject(arg0).set(getObject(arg1), arg2 >>> 0);\n };\n imports.wbg.__wbg_newwithlength_89eca18f2603a999 = function (arg0) {\n const ret = new Uint8Array(arg0 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_subarray_7649d027b2b141b3 = function (arg0, arg1, arg2) {\n const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_object_clone_ref = function (arg0) {\n const ret = getObject(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_bigint_get_as_i64 = function (arg0, arg1) {\n const v = getObject(arg1);\n const ret = typeof v === \"bigint\" ? v : undefined;\n getBigInt64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? BigInt(0) : ret;\n getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);\n };\n imports.wbg.__wbindgen_debug_string = function (arg0, arg1) {\n const ret = debugString(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbindgen_throw = function (arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbindgen_memory = function () {\n const ret = wasm.memory;\n return addHeapObject(ret);\n };\n return imports;\n}\nfunction __wbg_init_memory(imports, maybe_memory) { }\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedBigInt64Memory0 = null;\n cachedInt32Memory0 = null;\n cachedUint32Memory0 = null;\n cachedUint8Memory0 = null;\n return wasm;\n}\nfunction initSync(module) {\n if (wasm !== undefined)\n return wasm;\n const imports = __wbg_get_imports();\n __wbg_init_memory(imports);\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\nasync function __wbg_init(input) {\n if (wasm !== undefined)\n return wasm;\n // FHENIX: disabling this because it fucks with frameworks that try to resolve it\n // if (typeof input === 'undefined') {\n // input = new URL('tfhe_bg.wasm', import.meta.url);\n // }\n const imports = __wbg_get_imports();\n if (typeof input === \"string\" ||\n (typeof Request === \"function\" && input instanceof Request) ||\n (typeof URL === \"function\" && input instanceof URL)) {\n input = fetch(input);\n }\n __wbg_init_memory(imports);\n const { instance, module } = await __wbg_load(await input, imports);\n return __wbg_finalize_init(instance, module);\n}\nexport { initSync };\nexport default __wbg_init;\n//# sourceMappingURL=tfhe-browser.js.map","import { TfheClientKey, TfheConfigBuilder, TfheCompactPublicKey, } from \"./fhe/tfhe\";\nexport const createTfheKeypair = () => {\n // const block_params = new ShortintParameters(\n // ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS,\n // );\n const config = TfheConfigBuilder.default()\n //..(block_params)\n .build();\n const clientKey = TfheClientKey.generate(config);\n let publicKey = TfheCompactPublicKey.new(clientKey);\n publicKey = TfheCompactPublicKey.deserialize(publicKey.serialize());\n return { clientKey, publicKey };\n};\nexport const createTfhePublicKey = () => {\n const { publicKey } = createTfheKeypair();\n return toHexString(publicKey.serialize());\n};\nexport const toHexString = (bytes) => bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, \"0\"), \"\");\n//# sourceMappingURL=keygen.js.map","/**\n * An enumeration of supported encryption types.\n * uint8, uint16, and uint32 represent the different sizes of integers that can be encrypted.\n */\nexport var EncryptionTypes;\n(function (EncryptionTypes) {\n EncryptionTypes[\"bool\"] = \"bool\";\n EncryptionTypes[\"uint8\"] = \"uint8\";\n EncryptionTypes[\"uint16\"] = \"uint16\";\n EncryptionTypes[\"uint32\"] = \"uint32\";\n EncryptionTypes[\"uint64\"] = \"uint64\";\n EncryptionTypes[\"uint128\"] = \"uint128\";\n EncryptionTypes[\"uint256\"] = \"uint256\";\n EncryptionTypes[\"address\"] = \"address\";\n})(EncryptionTypes || (EncryptionTypes = {}));\n/**\n * Mapping of encryption types to their utype integer\n */\nexport var FheUType;\n(function (FheUType) {\n FheUType[FheUType[\"bool\"] = 13] = \"bool\";\n FheUType[FheUType[\"uint8\"] = 0] = \"uint8\";\n FheUType[FheUType[\"uint16\"] = 1] = \"uint16\";\n FheUType[FheUType[\"uint32\"] = 2] = \"uint32\";\n FheUType[FheUType[\"uint64\"] = 3] = \"uint64\";\n FheUType[FheUType[\"uint128\"] = 4] = \"uint128\";\n FheUType[FheUType[\"uint256\"] = 5] = \"uint256\";\n FheUType[FheUType[\"address\"] = 12] = \"address\";\n})(FheUType || (FheUType = {}));\n/**\n * List of All FHE uint types (excludes bool and address)\n */\nexport const FheUintUTypes = [\n FheUType.uint8,\n FheUType.uint16,\n FheUType.uint32,\n FheUType.uint64,\n FheUType.uint128,\n FheUType.uint256,\n];\n/**\n * List of All FHE types (uints, bool, and address)\n */\nexport const FheAllUTypes = [\n FheUType.bool,\n FheUType.uint8,\n FheUType.uint16,\n FheUType.uint32,\n FheUType.uint64,\n FheUType.uint128,\n FheUType.uint256,\n FheUType.address,\n];\n//# sourceMappingURL=base.js.map","import { FheAllUTypes, FheUType } from \"./base\";\nexport const Encryptable = {\n bool: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.bool }),\n uint8: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint8 }),\n uint16: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint16 }),\n uint32: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint32 }),\n uint64: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint64 }),\n uint128: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint128 }),\n uint256: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint256 }),\n address: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.address }),\n};\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isEncryptableItem(value) {\n return (typeof value === \"object\" &&\n value !== null &&\n [\"string\", \"number\", \"bigint\", \"boolean\"].includes(typeof value.data) &&\n typeof value.securityZone === \"number\" &&\n FheAllUTypes.includes(value.utype));\n}\n//# sourceMappingURL=encryptable.js.map","export const ResultErr = (error) => ({\n success: false,\n data: null,\n error,\n});\nexport const ResultOk = (data) => ({\n success: true,\n data,\n error: null,\n});\n//# sourceMappingURL=result.js.map","import { FheAllUTypes, FheUintUTypes, FheUType } from \"./base\";\n// Determine if `value` is an instance of a `sealedItem` { data: string, utype: 0-5 | 12 | 13 }\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getAsSealedItem(value) {\n if (Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === \"string\" &&\n FheAllUTypes.includes(parseInt(`${value[1]}`)))\n return {\n data: value[0],\n utype: value[1],\n };\n if (typeof value === \"object\" &&\n value !== null &&\n typeof value.data === \"string\" &&\n FheAllUTypes.includes(value.utype))\n return value;\n return undefined;\n}\nexport function isSealedBool(value) {\n return parseInt(`${value.utype}`) === FheUType.bool;\n}\nexport function isSealedUint(value) {\n return FheUintUTypes.includes(parseInt(`${value.utype}`));\n}\nexport function isSealedAddress(value) {\n return parseInt(`${value.utype}`) === FheUType.address;\n}\n//# sourceMappingURL=sealed.js.map","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\n\nexport { createStore };\n","const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...a) => api.dispatch(...a), ...initial };\n};\nconst redux = reduxImpl;\n\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n const api = trackedConnections.get(name);\n if (!api) return {};\n return Object.fromEntries(\n Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n if (store === void 0) {\n return {\n type: \"untracked\",\n connection: extensionConnector.connect(options)\n };\n }\n const existingConnection = trackedConnections.get(options.name);\n if (existingConnection) {\n return { type: \"tracked\", store, ...existingConnection };\n }\n const newConnection = {\n connection: extensionConnector.connect(options),\n stores: {}\n };\n trackedConnections.set(options.name, newConnection);\n return { type: \"tracked\", store, ...newConnection };\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (e) {\n }\n if (!extensionConnector) {\n return fn(set, get, api);\n }\n const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n let isRecording = true;\n api.setState = (state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording) return r;\n const action = nameOrAction === void 0 ? { type: anonymousActionType || \"anonymous\" } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n if (store === void 0) {\n connection == null ? void 0 : connection.send(action, get());\n return r;\n }\n connection == null ? void 0 : connection.send(\n {\n ...action,\n type: `${store}/${action.type}`\n },\n {\n ...getTrackedConnectionState(options.name),\n [store]: api.getState()\n }\n );\n return r;\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n if (connectionInformation.type === \"untracked\") {\n connection == null ? void 0 : connection.init(initialState);\n } else {\n connectionInformation.stores[connectionInformation.store] = api;\n connection == null ? void 0 : connection.init(\n Object.fromEntries(\n Object.entries(connectionInformation.stores).map(([key, store2]) => [\n key,\n key === connectionInformation.store ? initialState : store2.getState()\n ])\n )\n );\n }\n if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...a) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && a[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...a);\n };\n }\n connection.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n if (store === void 0) {\n setStateFromDevtools(action.state);\n return;\n }\n if (Object.keys(action.state).length !== 1) {\n console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format.\n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n }\n const stateFromDevtools = action.state[store];\n if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n setStateFromDevtools(stateFromDevtools);\n }\n return;\n }\n if (!api.dispatchFromDevtools) return;\n if (typeof api.dispatch !== \"function\") return;\n api.dispatch(action);\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n if (store === void 0) {\n return connection == null ? void 0 : connection.init(api.getState());\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"COMMIT\":\n if (store === void 0) {\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n setStateFromDevtools(state[store]);\n connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n setStateFromDevtools(state[store]);\n }\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState) return;\n if (store === void 0) {\n setStateFromDevtools(lastComputedState);\n } else {\n setStateFromDevtools(lastComputedState[store]);\n }\n connection == null ? void 0 : connection.send(\n null,\n // FIXME no-any\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, f) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0) f(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = (selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n };\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nconst combine = (initialState, create) => (...a) => Object.assign({}, initialState, create(...a));\n\nfunction createJSONStorage(getStorage, options) {\n let storage;\n try {\n storage = getStorage();\n } catch (e) {\n return;\n }\n const persistStorage = {\n getItem: (name) => {\n var _a;\n const parse = (str2) => {\n if (str2 === null) {\n return null;\n }\n return JSON.parse(str2, options == null ? void 0 : options.reviver);\n };\n const str = (_a = storage.getItem(name)) != null ? _a : null;\n if (str instanceof Promise) {\n return str.then(parse);\n }\n return parse(str);\n },\n setItem: (name, newValue) => storage.setItem(\n name,\n JSON.stringify(newValue, options == null ? void 0 : options.replacer)\n ),\n removeItem: (name) => storage.removeItem(name)\n };\n return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst persistImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n storage: createJSONStorage(() => localStorage),\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage = options.storage;\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const setItem = () => {\n const state = options.partialize({ ...get() });\n return storage.setItem(options.name, {\n state,\n version: options.version\n });\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n void setItem();\n },\n get,\n api\n );\n api.getInitialState = () => configResult;\n let stateFromStorage;\n const hydrate = () => {\n var _a, _b;\n if (!storage) return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => {\n var _a2;\n return cb((_a2 = get()) != null ? _a2 : configResult);\n });\n const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return [\n true,\n options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n )\n ];\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return [false, deserializedStorageValue.state];\n }\n }\n return [false, void 0];\n }).then((migrationResult) => {\n var _a2;\n const [migrated, migratedState] = migrationResult;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n if (migrated) {\n return setItem();\n }\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n stateFromStorage = get();\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.storage) {\n storage = newOptions.storage;\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n if (!options.skipHydration) {\n hydrate();\n }\n return stateFromStorage || configResult;\n};\nconst persist = persistImpl;\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector };\n","// src/utils/env.ts\nvar NOTHING = Symbol.for(\"immer-nothing\");\nvar DRAFTABLE = Symbol.for(\"immer-draftable\");\nvar DRAFT_STATE = Symbol.for(\"immer-state\");\n\n// src/utils/errors.ts\nvar errors = process.env.NODE_ENV !== \"production\" ? [\n // All error codes, starting by 0:\n function(plugin) {\n return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`;\n },\n function(thing) {\n return `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`;\n },\n \"This object has been frozen and should not be mutated\",\n function(data) {\n return \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + data;\n },\n \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n \"Immer forbids circular references\",\n \"The first or second argument to `produce` must be a function\",\n \"The third argument to `produce` must be a function or undefined\",\n \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n function(thing) {\n return `'current' expects a draft, got: ${thing}`;\n },\n \"Object.defineProperty() cannot be used on an Immer draft\",\n \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n \"Immer only supports deleting array indices\",\n \"Immer only supports setting array indices and the 'length' property\",\n function(thing) {\n return `'original' expects a draft, got: ${thing}`;\n }\n // Note: if more errors are added, the errorOffset in Patches.ts should be increased\n // See Patches.ts for additional errors\n] : [];\nfunction die(error, ...args) {\n if (process.env.NODE_ENV !== \"production\") {\n const e = errors[error];\n const msg = typeof e === \"function\" ? e.apply(null, args) : e;\n throw new Error(`[Immer] ${msg}`);\n }\n throw new Error(\n `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n );\n}\n\n// src/utils/common.ts\nvar getPrototypeOf = Object.getPrototypeOf;\nfunction isDraft(value) {\n return !!value && !!value[DRAFT_STATE];\n}\nfunction isDraftable(value) {\n if (!value)\n return false;\n return isPlainObject(value) || Array.isArray(value) || !!value[DRAFTABLE] || !!value.constructor?.[DRAFTABLE] || isMap(value) || isSet(value);\n}\nvar objectCtorString = Object.prototype.constructor.toString();\nfunction isPlainObject(value) {\n if (!value || typeof value !== \"object\")\n return false;\n const proto = getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n const Ctor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n if (Ctor === Object)\n return true;\n return typeof Ctor == \"function\" && Function.toString.call(Ctor) === objectCtorString;\n}\nfunction original(value) {\n if (!isDraft(value))\n die(15, value);\n return value[DRAFT_STATE].base_;\n}\nfunction each(obj, iter) {\n if (getArchtype(obj) === 0 /* Object */) {\n Reflect.ownKeys(obj).forEach((key) => {\n iter(key, obj[key], obj);\n });\n } else {\n obj.forEach((entry, index) => iter(index, entry, obj));\n }\n}\nfunction getArchtype(thing) {\n const state = thing[DRAFT_STATE];\n return state ? state.type_ : Array.isArray(thing) ? 1 /* Array */ : isMap(thing) ? 2 /* Map */ : isSet(thing) ? 3 /* Set */ : 0 /* Object */;\n}\nfunction has(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.has(prop) : Object.prototype.hasOwnProperty.call(thing, prop);\n}\nfunction get(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.get(prop) : thing[prop];\n}\nfunction set(thing, propOrOldValue, value) {\n const t = getArchtype(thing);\n if (t === 2 /* Map */)\n thing.set(propOrOldValue, value);\n else if (t === 3 /* Set */) {\n thing.add(value);\n } else\n thing[propOrOldValue] = value;\n}\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\nfunction isMap(target) {\n return target instanceof Map;\n}\nfunction isSet(target) {\n return target instanceof Set;\n}\nfunction latest(state) {\n return state.copy_ || state.base_;\n}\nfunction shallowCopy(base, strict) {\n if (isMap(base)) {\n return new Map(base);\n }\n if (isSet(base)) {\n return new Set(base);\n }\n if (Array.isArray(base))\n return Array.prototype.slice.call(base);\n const isPlain = isPlainObject(base);\n if (strict === true || strict === \"class_only\" && !isPlain) {\n const descriptors = Object.getOwnPropertyDescriptors(base);\n delete descriptors[DRAFT_STATE];\n let keys = Reflect.ownKeys(descriptors);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const desc = descriptors[key];\n if (desc.writable === false) {\n desc.writable = true;\n desc.configurable = true;\n }\n if (desc.get || desc.set)\n descriptors[key] = {\n configurable: true,\n writable: true,\n // could live with !!desc.set as well here...\n enumerable: desc.enumerable,\n value: base[key]\n };\n }\n return Object.create(getPrototypeOf(base), descriptors);\n } else {\n const proto = getPrototypeOf(base);\n if (proto !== null && isPlain) {\n return { ...base };\n }\n const obj = Object.create(proto);\n return Object.assign(obj, base);\n }\n}\nfunction freeze(obj, deep = false) {\n if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj))\n return obj;\n if (getArchtype(obj) > 1) {\n obj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections;\n }\n Object.freeze(obj);\n if (deep)\n Object.entries(obj).forEach(([key, value]) => freeze(value, true));\n return obj;\n}\nfunction dontMutateFrozenCollections() {\n die(2);\n}\nfunction isFrozen(obj) {\n return Object.isFrozen(obj);\n}\n\n// src/utils/plugins.ts\nvar plugins = {};\nfunction getPlugin(pluginKey) {\n const plugin = plugins[pluginKey];\n if (!plugin) {\n die(0, pluginKey);\n }\n return plugin;\n}\nfunction loadPlugin(pluginKey, implementation) {\n if (!plugins[pluginKey])\n plugins[pluginKey] = implementation;\n}\n\n// src/core/scope.ts\nvar currentScope;\nfunction getCurrentScope() {\n return currentScope;\n}\nfunction createScope(parent_, immer_) {\n return {\n drafts_: [],\n parent_,\n immer_,\n // Whenever the modified draft contains a draft from another scope, we\n // need to prevent auto-freezing so the unowned draft can be finalized.\n canAutoFreeze_: true,\n unfinalizedDrafts_: 0\n };\n}\nfunction usePatchesInScope(scope, patchListener) {\n if (patchListener) {\n getPlugin(\"Patches\");\n scope.patches_ = [];\n scope.inversePatches_ = [];\n scope.patchListener_ = patchListener;\n }\n}\nfunction revokeScope(scope) {\n leaveScope(scope);\n scope.drafts_.forEach(revokeDraft);\n scope.drafts_ = null;\n}\nfunction leaveScope(scope) {\n if (scope === currentScope) {\n currentScope = scope.parent_;\n }\n}\nfunction enterScope(immer2) {\n return currentScope = createScope(currentScope, immer2);\n}\nfunction revokeDraft(draft) {\n const state = draft[DRAFT_STATE];\n if (state.type_ === 0 /* Object */ || state.type_ === 1 /* Array */)\n state.revoke_();\n else\n state.revoked_ = true;\n}\n\n// src/core/finalize.ts\nfunction processResult(result, scope) {\n scope.unfinalizedDrafts_ = scope.drafts_.length;\n const baseDraft = scope.drafts_[0];\n const isReplaced = result !== void 0 && result !== baseDraft;\n if (isReplaced) {\n if (baseDraft[DRAFT_STATE].modified_) {\n revokeScope(scope);\n die(4);\n }\n if (isDraftable(result)) {\n result = finalize(scope, result);\n if (!scope.parent_)\n maybeFreeze(scope, result);\n }\n if (scope.patches_) {\n getPlugin(\"Patches\").generateReplacementPatches_(\n baseDraft[DRAFT_STATE].base_,\n result,\n scope.patches_,\n scope.inversePatches_\n );\n }\n } else {\n result = finalize(scope, baseDraft, []);\n }\n revokeScope(scope);\n if (scope.patches_) {\n scope.patchListener_(scope.patches_, scope.inversePatches_);\n }\n return result !== NOTHING ? result : void 0;\n}\nfunction finalize(rootScope, value, path) {\n if (isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n if (!state) {\n each(\n value,\n (key, childValue) => finalizeProperty(rootScope, state, value, key, childValue, path)\n );\n return value;\n }\n if (state.scope_ !== rootScope)\n return value;\n if (!state.modified_) {\n maybeFreeze(rootScope, state.base_, true);\n return state.base_;\n }\n if (!state.finalized_) {\n state.finalized_ = true;\n state.scope_.unfinalizedDrafts_--;\n const result = state.copy_;\n let resultEach = result;\n let isSet2 = false;\n if (state.type_ === 3 /* Set */) {\n resultEach = new Set(result);\n result.clear();\n isSet2 = true;\n }\n each(\n resultEach,\n (key, childValue) => finalizeProperty(rootScope, state, result, key, childValue, path, isSet2)\n );\n maybeFreeze(rootScope, result, false);\n if (path && rootScope.patches_) {\n getPlugin(\"Patches\").generatePatches_(\n state,\n path,\n rootScope.patches_,\n rootScope.inversePatches_\n );\n }\n }\n return state.copy_;\n}\nfunction finalizeProperty(rootScope, parentState, targetObject, prop, childValue, rootPath, targetIsSet) {\n if (process.env.NODE_ENV !== \"production\" && childValue === targetObject)\n die(5);\n if (isDraft(childValue)) {\n const path = rootPath && parentState && parentState.type_ !== 3 /* Set */ && // Set objects are atomic since they have no keys.\n !has(parentState.assigned_, prop) ? rootPath.concat(prop) : void 0;\n const res = finalize(rootScope, childValue, path);\n set(targetObject, prop, res);\n if (isDraft(res)) {\n rootScope.canAutoFreeze_ = false;\n } else\n return;\n } else if (targetIsSet) {\n targetObject.add(childValue);\n }\n if (isDraftable(childValue) && !isFrozen(childValue)) {\n if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n return;\n }\n finalize(rootScope, childValue);\n if ((!parentState || !parentState.scope_.parent_) && typeof prop !== \"symbol\" && Object.prototype.propertyIsEnumerable.call(targetObject, prop))\n maybeFreeze(rootScope, childValue);\n }\n}\nfunction maybeFreeze(scope, value, deep = false) {\n if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n freeze(value, deep);\n }\n}\n\n// src/core/proxy.ts\nfunction createProxyProxy(base, parent) {\n const isArray = Array.isArray(base);\n const state = {\n type_: isArray ? 1 /* Array */ : 0 /* Object */,\n // Track which produce call this is associated with.\n scope_: parent ? parent.scope_ : getCurrentScope(),\n // True for both shallow and deep changes.\n modified_: false,\n // Used during finalization.\n finalized_: false,\n // Track which properties have been assigned (true) or deleted (false).\n assigned_: {},\n // The parent draft state.\n parent_: parent,\n // The base state.\n base_: base,\n // The base proxy.\n draft_: null,\n // set below\n // The base copy with any updated values.\n copy_: null,\n // Called by the `produce` function.\n revoke_: null,\n isManual_: false\n };\n let target = state;\n let traps = objectTraps;\n if (isArray) {\n target = [state];\n traps = arrayTraps;\n }\n const { revoke, proxy } = Proxy.revocable(target, traps);\n state.draft_ = proxy;\n state.revoke_ = revoke;\n return proxy;\n}\nvar objectTraps = {\n get(state, prop) {\n if (prop === DRAFT_STATE)\n return state;\n const source = latest(state);\n if (!has(source, prop)) {\n return readPropFromProto(state, source, prop);\n }\n const value = source[prop];\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value === peek(state.base_, prop)) {\n prepareCopy(state);\n return state.copy_[prop] = createProxy(value, state);\n }\n return value;\n },\n has(state, prop) {\n return prop in latest(state);\n },\n ownKeys(state) {\n return Reflect.ownKeys(latest(state));\n },\n set(state, prop, value) {\n const desc = getDescriptorFromProto(latest(state), prop);\n if (desc?.set) {\n desc.set.call(state.draft_, value);\n return true;\n }\n if (!state.modified_) {\n const current2 = peek(latest(state), prop);\n const currentState = current2?.[DRAFT_STATE];\n if (currentState && currentState.base_ === value) {\n state.copy_[prop] = value;\n state.assigned_[prop] = false;\n return true;\n }\n if (is(value, current2) && (value !== void 0 || has(state.base_, prop)))\n return true;\n prepareCopy(state);\n markChanged(state);\n }\n if (state.copy_[prop] === value && // special case: handle new props with value 'undefined'\n (value !== void 0 || prop in state.copy_) || // special case: NaN\n Number.isNaN(value) && Number.isNaN(state.copy_[prop]))\n return true;\n state.copy_[prop] = value;\n state.assigned_[prop] = true;\n return true;\n },\n deleteProperty(state, prop) {\n if (peek(state.base_, prop) !== void 0 || prop in state.base_) {\n state.assigned_[prop] = false;\n prepareCopy(state);\n markChanged(state);\n } else {\n delete state.assigned_[prop];\n }\n if (state.copy_) {\n delete state.copy_[prop];\n }\n return true;\n },\n // Note: We never coerce `desc.value` into an Immer draft, because we can't make\n // the same guarantee in ES5 mode.\n getOwnPropertyDescriptor(state, prop) {\n const owner = latest(state);\n const desc = Reflect.getOwnPropertyDescriptor(owner, prop);\n if (!desc)\n return desc;\n return {\n writable: true,\n configurable: state.type_ !== 1 /* Array */ || prop !== \"length\",\n enumerable: desc.enumerable,\n value: owner[prop]\n };\n },\n defineProperty() {\n die(11);\n },\n getPrototypeOf(state) {\n return getPrototypeOf(state.base_);\n },\n setPrototypeOf() {\n die(12);\n }\n};\nvar arrayTraps = {};\neach(objectTraps, (key, fn) => {\n arrayTraps[key] = function() {\n arguments[0] = arguments[0][0];\n return fn.apply(this, arguments);\n };\n});\narrayTraps.deleteProperty = function(state, prop) {\n if (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop)))\n die(13);\n return arrayTraps.set.call(this, state, prop, void 0);\n};\narrayTraps.set = function(state, prop, value) {\n if (process.env.NODE_ENV !== \"production\" && prop !== \"length\" && isNaN(parseInt(prop)))\n die(14);\n return objectTraps.set.call(this, state[0], prop, value, state[0]);\n};\nfunction peek(draft, prop) {\n const state = draft[DRAFT_STATE];\n const source = state ? latest(state) : draft;\n return source[prop];\n}\nfunction readPropFromProto(state, source, prop) {\n const desc = getDescriptorFromProto(source, prop);\n return desc ? `value` in desc ? desc.value : (\n // This is a very special case, if the prop is a getter defined by the\n // prototype, we should invoke it with the draft as context!\n desc.get?.call(state.draft_)\n ) : void 0;\n}\nfunction getDescriptorFromProto(source, prop) {\n if (!(prop in source))\n return void 0;\n let proto = getPrototypeOf(source);\n while (proto) {\n const desc = Object.getOwnPropertyDescriptor(proto, prop);\n if (desc)\n return desc;\n proto = getPrototypeOf(proto);\n }\n return void 0;\n}\nfunction markChanged(state) {\n if (!state.modified_) {\n state.modified_ = true;\n if (state.parent_) {\n markChanged(state.parent_);\n }\n }\n}\nfunction prepareCopy(state) {\n if (!state.copy_) {\n state.copy_ = shallowCopy(\n state.base_,\n state.scope_.immer_.useStrictShallowCopy_\n );\n }\n}\n\n// src/core/immerClass.ts\nvar Immer2 = class {\n constructor(config) {\n this.autoFreeze_ = true;\n this.useStrictShallowCopy_ = false;\n /**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\n this.produce = (base, recipe, patchListener) => {\n if (typeof base === \"function\" && typeof recipe !== \"function\") {\n const defaultBase = recipe;\n recipe = base;\n const self = this;\n return function curriedProduce(base2 = defaultBase, ...args) {\n return self.produce(base2, (draft) => recipe.call(this, draft, ...args));\n };\n }\n if (typeof recipe !== \"function\")\n die(6);\n if (patchListener !== void 0 && typeof patchListener !== \"function\")\n die(7);\n let result;\n if (isDraftable(base)) {\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n let hasError = true;\n try {\n result = recipe(proxy);\n hasError = false;\n } finally {\n if (hasError)\n revokeScope(scope);\n else\n leaveScope(scope);\n }\n usePatchesInScope(scope, patchListener);\n return processResult(result, scope);\n } else if (!base || typeof base !== \"object\") {\n result = recipe(base);\n if (result === void 0)\n result = base;\n if (result === NOTHING)\n result = void 0;\n if (this.autoFreeze_)\n freeze(result, true);\n if (patchListener) {\n const p = [];\n const ip = [];\n getPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip);\n patchListener(p, ip);\n }\n return result;\n } else\n die(1, base);\n };\n this.produceWithPatches = (base, recipe) => {\n if (typeof base === \"function\") {\n return (state, ...args) => this.produceWithPatches(state, (draft) => base(draft, ...args));\n }\n let patches, inversePatches;\n const result = this.produce(base, recipe, (p, ip) => {\n patches = p;\n inversePatches = ip;\n });\n return [result, patches, inversePatches];\n };\n if (typeof config?.autoFreeze === \"boolean\")\n this.setAutoFreeze(config.autoFreeze);\n if (typeof config?.useStrictShallowCopy === \"boolean\")\n this.setUseStrictShallowCopy(config.useStrictShallowCopy);\n }\n createDraft(base) {\n if (!isDraftable(base))\n die(8);\n if (isDraft(base))\n base = current(base);\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n proxy[DRAFT_STATE].isManual_ = true;\n leaveScope(scope);\n return proxy;\n }\n finishDraft(draft, patchListener) {\n const state = draft && draft[DRAFT_STATE];\n if (!state || !state.isManual_)\n die(9);\n const { scope_: scope } = state;\n usePatchesInScope(scope, patchListener);\n return processResult(void 0, scope);\n }\n /**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * By default, auto-freezing is enabled.\n */\n setAutoFreeze(value) {\n this.autoFreeze_ = value;\n }\n /**\n * Pass true to enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\n setUseStrictShallowCopy(value) {\n this.useStrictShallowCopy_ = value;\n }\n applyPatches(base, patches) {\n let i;\n for (i = patches.length - 1; i >= 0; i--) {\n const patch = patches[i];\n if (patch.path.length === 0 && patch.op === \"replace\") {\n base = patch.value;\n break;\n }\n }\n if (i > -1) {\n patches = patches.slice(i + 1);\n }\n const applyPatchesImpl = getPlugin(\"Patches\").applyPatches_;\n if (isDraft(base)) {\n return applyPatchesImpl(base, patches);\n }\n return this.produce(\n base,\n (draft) => applyPatchesImpl(draft, patches)\n );\n }\n};\nfunction createProxy(value, parent) {\n const draft = isMap(value) ? getPlugin(\"MapSet\").proxyMap_(value, parent) : isSet(value) ? getPlugin(\"MapSet\").proxySet_(value, parent) : createProxyProxy(value, parent);\n const scope = parent ? parent.scope_ : getCurrentScope();\n scope.drafts_.push(draft);\n return draft;\n}\n\n// src/core/current.ts\nfunction current(value) {\n if (!isDraft(value))\n die(10, value);\n return currentImpl(value);\n}\nfunction currentImpl(value) {\n if (!isDraftable(value) || isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n let copy;\n if (state) {\n if (!state.modified_)\n return state.base_;\n state.finalized_ = true;\n copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_);\n } else {\n copy = shallowCopy(value, true);\n }\n each(copy, (key, childValue) => {\n set(copy, key, currentImpl(childValue));\n });\n if (state) {\n state.finalized_ = false;\n }\n return copy;\n}\n\n// src/plugins/patches.ts\nfunction enablePatches() {\n const errorOffset = 16;\n if (process.env.NODE_ENV !== \"production\") {\n errors.push(\n 'Sets cannot have \"replace\" patches.',\n function(op) {\n return \"Unsupported patch operation: \" + op;\n },\n function(path) {\n return \"Cannot apply patch, path doesn't resolve: \" + path;\n },\n \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n );\n }\n const REPLACE = \"replace\";\n const ADD = \"add\";\n const REMOVE = \"remove\";\n function generatePatches_(state, basePath, patches, inversePatches) {\n switch (state.type_) {\n case 0 /* Object */:\n case 2 /* Map */:\n return generatePatchesFromAssigned(\n state,\n basePath,\n patches,\n inversePatches\n );\n case 1 /* Array */:\n return generateArrayPatches(state, basePath, patches, inversePatches);\n case 3 /* Set */:\n return generateSetPatches(\n state,\n basePath,\n patches,\n inversePatches\n );\n }\n }\n function generateArrayPatches(state, basePath, patches, inversePatches) {\n let { base_, assigned_ } = state;\n let copy_ = state.copy_;\n if (copy_.length < base_.length) {\n ;\n [base_, copy_] = [copy_, base_];\n [patches, inversePatches] = [inversePatches, patches];\n }\n for (let i = 0; i < base_.length; i++) {\n if (assigned_[i] && copy_[i] !== base_[i]) {\n const path = basePath.concat([i]);\n patches.push({\n op: REPLACE,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n inversePatches.push({\n op: REPLACE,\n path,\n value: clonePatchValueIfNeeded(base_[i])\n });\n }\n }\n for (let i = base_.length; i < copy_.length; i++) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n }\n for (let i = copy_.length - 1; base_.length <= i; --i) {\n const path = basePath.concat([i]);\n inversePatches.push({\n op: REMOVE,\n path\n });\n }\n }\n function generatePatchesFromAssigned(state, basePath, patches, inversePatches) {\n const { base_, copy_ } = state;\n each(state.assigned_, (key, assignedValue) => {\n const origValue = get(base_, key);\n const value = get(copy_, key);\n const op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD;\n if (origValue === value && op === REPLACE)\n return;\n const path = basePath.concat(key);\n patches.push(op === REMOVE ? { op, path } : { op, path, value });\n inversePatches.push(\n op === ADD ? { op: REMOVE, path } : op === REMOVE ? { op: ADD, path, value: clonePatchValueIfNeeded(origValue) } : { op: REPLACE, path, value: clonePatchValueIfNeeded(origValue) }\n );\n });\n }\n function generateSetPatches(state, basePath, patches, inversePatches) {\n let { base_, copy_ } = state;\n let i = 0;\n base_.forEach((value) => {\n if (!copy_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: REMOVE,\n path,\n value\n });\n inversePatches.unshift({\n op: ADD,\n path,\n value\n });\n }\n i++;\n });\n i = 0;\n copy_.forEach((value) => {\n if (!base_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n value\n });\n inversePatches.unshift({\n op: REMOVE,\n path,\n value\n });\n }\n i++;\n });\n }\n function generateReplacementPatches_(baseValue, replacement, patches, inversePatches) {\n patches.push({\n op: REPLACE,\n path: [],\n value: replacement === NOTHING ? void 0 : replacement\n });\n inversePatches.push({\n op: REPLACE,\n path: [],\n value: baseValue\n });\n }\n function applyPatches_(draft, patches) {\n patches.forEach((patch) => {\n const { path, op } = patch;\n let base = draft;\n for (let i = 0; i < path.length - 1; i++) {\n const parentType = getArchtype(base);\n let p = path[i];\n if (typeof p !== \"string\" && typeof p !== \"number\") {\n p = \"\" + p;\n }\n if ((parentType === 0 /* Object */ || parentType === 1 /* Array */) && (p === \"__proto__\" || p === \"constructor\"))\n die(errorOffset + 3);\n if (typeof base === \"function\" && p === \"prototype\")\n die(errorOffset + 3);\n base = get(base, p);\n if (typeof base !== \"object\")\n die(errorOffset + 2, path.join(\"/\"));\n }\n const type = getArchtype(base);\n const value = deepClonePatchValue(patch.value);\n const key = path[path.length - 1];\n switch (op) {\n case REPLACE:\n switch (type) {\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n die(errorOffset);\n default:\n return base[key] = value;\n }\n case ADD:\n switch (type) {\n case 1 /* Array */:\n return key === \"-\" ? base.push(value) : base.splice(key, 0, value);\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n return base.add(value);\n default:\n return base[key] = value;\n }\n case REMOVE:\n switch (type) {\n case 1 /* Array */:\n return base.splice(key, 1);\n case 2 /* Map */:\n return base.delete(key);\n case 3 /* Set */:\n return base.delete(patch.value);\n default:\n return delete base[key];\n }\n default:\n die(errorOffset + 1, op);\n }\n });\n return draft;\n }\n function deepClonePatchValue(obj) {\n if (!isDraftable(obj))\n return obj;\n if (Array.isArray(obj))\n return obj.map(deepClonePatchValue);\n if (isMap(obj))\n return new Map(\n Array.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)])\n );\n if (isSet(obj))\n return new Set(Array.from(obj).map(deepClonePatchValue));\n const cloned = Object.create(getPrototypeOf(obj));\n for (const key in obj)\n cloned[key] = deepClonePatchValue(obj[key]);\n if (has(obj, DRAFTABLE))\n cloned[DRAFTABLE] = obj[DRAFTABLE];\n return cloned;\n }\n function clonePatchValueIfNeeded(obj) {\n if (isDraft(obj)) {\n return deepClonePatchValue(obj);\n } else\n return obj;\n }\n loadPlugin(\"Patches\", {\n applyPatches_,\n generatePatches_,\n generateReplacementPatches_\n });\n}\n\n// src/plugins/mapset.ts\nfunction enableMapSet() {\n class DraftMap extends Map {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 2 /* Map */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n assigned_: void 0,\n base_: target,\n draft_: this,\n isManual_: false,\n revoked_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(key) {\n return latest(this[DRAFT_STATE]).has(key);\n }\n set(key, value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!latest(state).has(key) || latest(state).get(key) !== value) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_.set(key, true);\n state.copy_.set(key, value);\n state.assigned_.set(key, true);\n }\n return this;\n }\n delete(key) {\n if (!this.has(key)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareMapCopy(state);\n markChanged(state);\n if (state.base_.has(key)) {\n state.assigned_.set(key, false);\n } else {\n state.assigned_.delete(key);\n }\n state.copy_.delete(key);\n return true;\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_ = /* @__PURE__ */ new Map();\n each(state.base_, (key) => {\n state.assigned_.set(key, false);\n });\n state.copy_.clear();\n }\n }\n forEach(cb, thisArg) {\n const state = this[DRAFT_STATE];\n latest(state).forEach((_value, key, _map) => {\n cb.call(thisArg, this.get(key), key, this);\n });\n }\n get(key) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n const value = latest(state).get(key);\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value !== state.base_.get(key)) {\n return value;\n }\n const draft = createProxy(value, state);\n prepareMapCopy(state);\n state.copy_.set(key, draft);\n return draft;\n }\n keys() {\n return latest(this[DRAFT_STATE]).keys();\n }\n values() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.values(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value\n };\n }\n };\n }\n entries() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.entries(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value: [r.value, value]\n };\n }\n };\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.entries();\n }\n }\n function proxyMap_(target, parent) {\n return new DraftMap(target, parent);\n }\n function prepareMapCopy(state) {\n if (!state.copy_) {\n state.assigned_ = /* @__PURE__ */ new Map();\n state.copy_ = new Map(state.base_);\n }\n }\n class DraftSet extends Set {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 3 /* Set */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n base_: target,\n draft_: this,\n drafts_: /* @__PURE__ */ new Map(),\n revoked_: false,\n isManual_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!state.copy_) {\n return state.base_.has(value);\n }\n if (state.copy_.has(value))\n return true;\n if (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value)))\n return true;\n return false;\n }\n add(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!this.has(value)) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.add(value);\n }\n return this;\n }\n delete(value) {\n if (!this.has(value)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n markChanged(state);\n return state.copy_.delete(value) || (state.drafts_.has(value) ? state.copy_.delete(state.drafts_.get(value)) : (\n /* istanbul ignore next */\n false\n ));\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.clear();\n }\n }\n values() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.values();\n }\n entries() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.entries();\n }\n keys() {\n return this.values();\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.values();\n }\n forEach(cb, thisArg) {\n const iterator = this.values();\n let result = iterator.next();\n while (!result.done) {\n cb.call(thisArg, result.value, result.value, this);\n result = iterator.next();\n }\n }\n }\n function proxySet_(target, parent) {\n return new DraftSet(target, parent);\n }\n function prepareSetCopy(state) {\n if (!state.copy_) {\n state.copy_ = /* @__PURE__ */ new Set();\n state.base_.forEach((value) => {\n if (isDraftable(value)) {\n const draft = createProxy(value, state);\n state.drafts_.set(value, draft);\n state.copy_.add(draft);\n } else {\n state.copy_.add(value);\n }\n });\n }\n }\n function assertUnrevoked(state) {\n if (state.revoked_)\n die(3, JSON.stringify(latest(state)));\n }\n loadPlugin(\"MapSet\", { proxyMap_, proxySet_ });\n}\n\n// src/immer.ts\nvar immer = new Immer2();\nvar produce = immer.produce;\nvar produceWithPatches = immer.produceWithPatches.bind(\n immer\n);\nvar setAutoFreeze = immer.setAutoFreeze.bind(immer);\nvar setUseStrictShallowCopy = immer.setUseStrictShallowCopy.bind(immer);\nvar applyPatches = immer.applyPatches.bind(immer);\nvar createDraft = immer.createDraft.bind(immer);\nvar finishDraft = immer.finishDraft.bind(immer);\nfunction castDraft(value) {\n return value;\n}\nfunction castImmutable(value) {\n return value;\n}\nexport {\n Immer2 as Immer,\n applyPatches,\n castDraft,\n castImmutable,\n createDraft,\n current,\n enableMapSet,\n enablePatches,\n finishDraft,\n freeze,\n DRAFTABLE as immerable,\n isDraft,\n isDraftable,\n NOTHING as nothing,\n original,\n produce,\n produceWithPatches,\n setAutoFreeze,\n setUseStrictShallowCopy\n};\n//# sourceMappingURL=immer.mjs.map","/* Do NOT modify this file; see /src.ts/_admin/update-version.ts */\n/**\n * The current version of Ethers.\n */\nexport const version = \"6.13.1\";\n//# sourceMappingURL=_version.js.map","/**\n * Property helper functions.\n *\n * @_subsection api/utils:Properties [about-properties]\n */\nfunction checkType(value, type, name) {\n const types = type.split(\"|\").map(t => t.trim());\n for (let i = 0; i < types.length; i++) {\n switch (type) {\n case \"any\":\n return;\n case \"bigint\":\n case \"boolean\":\n case \"number\":\n case \"string\":\n if (typeof (value) === type) {\n return;\n }\n }\n }\n const error = new Error(`invalid value for type ${type}`);\n error.code = \"INVALID_ARGUMENT\";\n error.argument = `value.${name}`;\n error.value = value;\n throw error;\n}\n/**\n * Resolves to a new object that is a copy of %%value%%, but with all\n * values resolved.\n */\nexport async function resolveProperties(value) {\n const keys = Object.keys(value);\n const results = await Promise.all(keys.map((k) => Promise.resolve(value[k])));\n return results.reduce((accum, v, index) => {\n accum[keys[index]] = v;\n return accum;\n }, {});\n}\n/**\n * Assigns the %%values%% to %%target%% as read-only values.\n *\n * It %%types%% is specified, the values are checked.\n */\nexport function defineProperties(target, values, types) {\n for (let key in values) {\n let value = values[key];\n const type = (types ? types[key] : null);\n if (type) {\n checkType(value, type, key);\n }\n Object.defineProperty(target, key, { enumerable: true, value, writable: false });\n }\n}\n//# sourceMappingURL=properties.js.map","/**\n * All errors in ethers include properties to ensure they are both\n * human-readable (i.e. ``.message``) and machine-readable (i.e. ``.code``).\n *\n * The [[isError]] function can be used to check the error ``code`` and\n * provide a type guard for the properties present on that error interface.\n *\n * @_section: api/utils/errors:Errors [about-errors]\n */\nimport { version } from \"../_version.js\";\nimport { defineProperties } from \"./properties.js\";\nfunction stringify(value) {\n if (value == null) {\n return \"null\";\n }\n if (Array.isArray(value)) {\n return \"[ \" + (value.map(stringify)).join(\", \") + \" ]\";\n }\n if (value instanceof Uint8Array) {\n const HEX = \"0123456789abcdef\";\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n result += HEX[value[i] >> 4];\n result += HEX[value[i] & 0xf];\n }\n return result;\n }\n if (typeof (value) === \"object\" && typeof (value.toJSON) === \"function\") {\n return stringify(value.toJSON());\n }\n switch (typeof (value)) {\n case \"boolean\":\n case \"symbol\":\n return value.toString();\n case \"bigint\":\n return BigInt(value).toString();\n case \"number\":\n return (value).toString();\n case \"string\":\n return JSON.stringify(value);\n case \"object\": {\n const keys = Object.keys(value);\n keys.sort();\n return \"{ \" + keys.map((k) => `${stringify(k)}: ${stringify(value[k])}`).join(\", \") + \" }\";\n }\n }\n return `[ COULD NOT SERIALIZE ]`;\n}\n/**\n * Returns true if the %%error%% matches an error thrown by ethers\n * that matches the error %%code%%.\n *\n * In TypeScript environments, this can be used to check that %%error%%\n * matches an EthersError type, which means the expected properties will\n * be set.\n *\n * @See [ErrorCodes](api:ErrorCode)\n * @example\n * try {\n * // code....\n * } catch (e) {\n * if (isError(e, \"CALL_EXCEPTION\")) {\n * // The Type Guard has validated this object\n * console.log(e.data);\n * }\n * }\n */\nexport function isError(error, code) {\n return (error && error.code === code);\n}\n/**\n * Returns true if %%error%% is a [[CallExceptionError].\n */\nexport function isCallException(error) {\n return isError(error, \"CALL_EXCEPTION\");\n}\n/**\n * Returns a new Error configured to the format ethers emits errors, with\n * the %%message%%, [[api:ErrorCode]] %%code%% and additional properties\n * for the corresponding EthersError.\n *\n * Each error in ethers includes the version of ethers, a\n * machine-readable [[ErrorCode]], and depending on %%code%%, additional\n * required properties. The error message will also include the %%message%%,\n * ethers version, %%code%% and all additional properties, serialized.\n */\nexport function makeError(message, code, info) {\n let shortMessage = message;\n {\n const details = [];\n if (info) {\n if (\"message\" in info || \"code\" in info || \"name\" in info) {\n throw new Error(`value will overwrite populated values: ${stringify(info)}`);\n }\n for (const key in info) {\n if (key === \"shortMessage\") {\n continue;\n }\n const value = (info[key]);\n // try {\n details.push(key + \"=\" + stringify(value));\n // } catch (error: any) {\n // console.log(\"MMM\", error.message);\n // details.push(key + \"=[could not serialize object]\");\n // }\n }\n }\n details.push(`code=${code}`);\n details.push(`version=${version}`);\n if (details.length) {\n message += \" (\" + details.join(\", \") + \")\";\n }\n }\n let error;\n switch (code) {\n case \"INVALID_ARGUMENT\":\n error = new TypeError(message);\n break;\n case \"NUMERIC_FAULT\":\n case \"BUFFER_OVERRUN\":\n error = new RangeError(message);\n break;\n default:\n error = new Error(message);\n }\n defineProperties(error, { code });\n if (info) {\n Object.assign(error, info);\n }\n if (error.shortMessage == null) {\n defineProperties(error, { shortMessage });\n }\n return error;\n}\n/**\n * Throws an EthersError with %%message%%, %%code%% and additional error\n * %%info%% when %%check%% is falsish..\n *\n * @see [[api:makeError]]\n */\nexport function assert(check, message, code, info) {\n if (!check) {\n throw makeError(message, code, info);\n }\n}\n/**\n * A simple helper to simply ensuring provided arguments match expected\n * constraints, throwing if not.\n *\n * In TypeScript environments, the %%check%% has been asserted true, so\n * any further code does not need additional compile-time checks.\n */\nexport function assertArgument(check, message, name, value) {\n assert(check, message, \"INVALID_ARGUMENT\", { argument: name, value: value });\n}\nexport function assertArgumentCount(count, expectedCount, message) {\n if (message == null) {\n message = \"\";\n }\n if (message) {\n message = \": \" + message;\n }\n assert(count >= expectedCount, \"missing arguemnt\" + message, \"MISSING_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n assert(count <= expectedCount, \"too many arguments\" + message, \"UNEXPECTED_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n}\nconst _normalizeForms = [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].reduce((accum, form) => {\n try {\n // General test for normalize\n /* c8 ignore start */\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad\");\n }\n ;\n /* c8 ignore stop */\n if (form === \"NFD\") {\n const check = String.fromCharCode(0xe9).normalize(\"NFD\");\n const expected = String.fromCharCode(0x65, 0x0301);\n /* c8 ignore start */\n if (check !== expected) {\n throw new Error(\"broken\");\n }\n /* c8 ignore stop */\n }\n accum.push(form);\n }\n catch (error) { }\n return accum;\n}, []);\n/**\n * Throws if the normalization %%form%% is not supported.\n */\nexport function assertNormalize(form) {\n assert(_normalizeForms.indexOf(form) >= 0, \"platform missing String.prototype.normalize\", \"UNSUPPORTED_OPERATION\", {\n operation: \"String.prototype.normalize\", info: { form }\n });\n}\n/**\n * Many classes use file-scoped values to guard the constructor,\n * making it effectively private. This facilitates that pattern\n * by ensuring the %%givenGaurd%% matches the file-scoped %%guard%%,\n * throwing if not, indicating the %%className%% if provided.\n */\nexport function assertPrivate(givenGuard, guard, className) {\n if (className == null) {\n className = \"\";\n }\n if (givenGuard !== guard) {\n let method = className, operation = \"new\";\n if (className) {\n method += \".\";\n operation += \" \" + className;\n }\n assert(false, `private constructor; use ${method}from* methods`, \"UNSUPPORTED_OPERATION\", {\n operation\n });\n }\n}\n//# sourceMappingURL=errors.js.map","/**\n * Some data helpers.\n *\n *\n * @_subsection api/utils:Data Helpers [about-data]\n */\nimport { assert, assertArgument } from \"./errors.js\";\nfunction _getBytes(value, name, copy) {\n if (value instanceof Uint8Array) {\n if (copy) {\n return new Uint8Array(value);\n }\n return value;\n }\n if (typeof (value) === \"string\" && value.match(/^0x(?:[0-9a-f][0-9a-f])*$/i)) {\n const result = new Uint8Array((value.length - 2) / 2);\n let offset = 2;\n for (let i = 0; i < result.length; i++) {\n result[i] = parseInt(value.substring(offset, offset + 2), 16);\n offset += 2;\n }\n return result;\n }\n assertArgument(false, \"invalid BytesLike value\", name || \"value\", value);\n}\n/**\n * Get a typed Uint8Array for %%value%%. If already a Uint8Array\n * the original %%value%% is returned; if a copy is required use\n * [[getBytesCopy]].\n *\n * @see: getBytesCopy\n */\nexport function getBytes(value, name) {\n return _getBytes(value, name, false);\n}\n/**\n * Get a typed Uint8Array for %%value%%, creating a copy if necessary\n * to prevent any modifications of the returned value from being\n * reflected elsewhere.\n *\n * @see: getBytes\n */\nexport function getBytesCopy(value, name) {\n return _getBytes(value, name, true);\n}\n/**\n * Returns true if %%value%% is a valid [[HexString]].\n *\n * If %%length%% is ``true`` or a //number//, it also checks that\n * %%value%% is a valid [[DataHexString]] of %%length%% (if a //number//)\n * bytes of data (e.g. ``0x1234`` is 2 bytes).\n */\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (typeof (length) === \"number\" && value.length !== 2 + 2 * length) {\n return false;\n }\n if (length === true && (value.length % 2) !== 0) {\n return false;\n }\n return true;\n}\n/**\n * Returns true if %%value%% is a valid representation of arbitrary\n * data (i.e. a valid [[DataHexString]] or a Uint8Array).\n */\nexport function isBytesLike(value) {\n return (isHexString(value, true) || (value instanceof Uint8Array));\n}\nconst HexCharacters = \"0123456789abcdef\";\n/**\n * Returns a [[DataHexString]] representation of %%data%%.\n */\nexport function hexlify(data) {\n const bytes = getBytes(data);\n let result = \"0x\";\n for (let i = 0; i < bytes.length; i++) {\n const v = bytes[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n}\n/**\n * Returns a [[DataHexString]] by concatenating all values\n * within %%data%%.\n */\nexport function concat(datas) {\n return \"0x\" + datas.map((d) => hexlify(d).substring(2)).join(\"\");\n}\n/**\n * Returns the length of %%data%%, in bytes.\n */\nexport function dataLength(data) {\n if (isHexString(data, true)) {\n return (data.length - 2) / 2;\n }\n return getBytes(data).length;\n}\n/**\n * Returns a [[DataHexString]] by slicing %%data%% from the %%start%%\n * offset to the %%end%% offset.\n *\n * By default %%start%% is 0 and %%end%% is the length of %%data%%.\n */\nexport function dataSlice(data, start, end) {\n const bytes = getBytes(data);\n if (end != null && end > bytes.length) {\n assert(false, \"cannot slice beyond data bounds\", \"BUFFER_OVERRUN\", {\n buffer: bytes, length: bytes.length, offset: end\n });\n }\n return hexlify(bytes.slice((start == null) ? 0 : start, (end == null) ? bytes.length : end));\n}\n/**\n * Return the [[DataHexString]] result by stripping all **leading**\n ** zero bytes from %%data%%.\n */\nexport function stripZerosLeft(data) {\n let bytes = hexlify(data).substring(2);\n while (bytes.startsWith(\"00\")) {\n bytes = bytes.substring(2);\n }\n return \"0x\" + bytes;\n}\nfunction zeroPad(data, length, left) {\n const bytes = getBytes(data);\n assert(length >= bytes.length, \"padding exceeds data length\", \"BUFFER_OVERRUN\", {\n buffer: new Uint8Array(bytes),\n length: length,\n offset: length + 1\n });\n const result = new Uint8Array(length);\n result.fill(0);\n if (left) {\n result.set(bytes, length - bytes.length);\n }\n else {\n result.set(bytes, 0);\n }\n return hexlify(result);\n}\n/**\n * Return the [[DataHexString]] of %%data%% padded on the **left**\n * to %%length%% bytes.\n *\n * If %%data%% already exceeds %%length%%, a [[BufferOverrunError]] is\n * thrown.\n *\n * This pads data the same as **values** are in Solidity\n * (e.g. ``uint128``).\n */\nexport function zeroPadValue(data, length) {\n return zeroPad(data, length, true);\n}\n/**\n * Return the [[DataHexString]] of %%data%% padded on the **right**\n * to %%length%% bytes.\n *\n * If %%data%% already exceeds %%length%%, a [[BufferOverrunError]] is\n * thrown.\n *\n * This pads data the same as **bytes** are in Solidity\n * (e.g. ``bytes16``).\n */\nexport function zeroPadBytes(data, length) {\n return zeroPad(data, length, false);\n}\n//# sourceMappingURL=data.js.map","/**\n * Using strings in Ethereum (or any security-basd system) requires\n * additional care. These utilities attempt to mitigate some of the\n * safety issues as well as provide the ability to recover and analyse\n * strings.\n *\n * @_subsection api/utils:Strings and UTF-8 [about-strings]\n */\nimport { getBytes } from \"./data.js\";\nimport { assertArgument, assertNormalize } from \"./errors.js\";\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n assertArgument(false, `invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === \"BAD_PREFIX\" || reason === \"UNEXPECTED_CONTINUE\") {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) {\n break;\n }\n i++;\n }\n return i;\n }\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === \"OVERRUN\") {\n return bytes.length - offset - 1;\n }\n // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === \"OVERLONG\") {\n assertArgument(typeof (badCodepoint) === \"number\", \"invalid bad code point for replacement\", \"badCodepoint\", badCodepoint);\n output.push(badCodepoint);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n/**\n * A handful of popular, built-in UTF-8 error handling strategies.\n *\n * **``\"error\"``** - throws on ANY illegal UTF-8 sequence or\n * non-canonical (overlong) codepoints (this is the default)\n *\n * **``\"ignore\"``** - silently drops any illegal UTF-8 sequence\n * and accepts non-canonical (overlong) codepoints\n *\n * **``\"replace\"``** - replace any illegal UTF-8 sequence with the\n * UTF-8 replacement character (i.e. ``\"\\\\ufffd\"``) and accepts\n * non-canonical (overlong) codepoints\n *\n * @returns: Record<\"error\" | \"ignore\" | \"replace\", Utf8ErrorFunc>\n */\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(_bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n const bytes = getBytes(_bytes, \"bytes\");\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n }\n else {\n if ((c & 0xc0) === 0x80) {\n i += onError(\"UNEXPECTED_CONTINUE\", i - 1, bytes, result);\n }\n else {\n i += onError(\"BAD_PREFIX\", i - 1, bytes, result);\n }\n continue;\n }\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(\"OVERRUN\", i - 1, bytes, result);\n continue;\n }\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(\"MISSING_CONTINUE\", i, bytes, result);\n res = null;\n break;\n }\n ;\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(\"OUT_OF_RANGE\", i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(\"UTF16_SURROGATE\", i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(\"OVERLONG\", i - 1 - extraLength, bytes, result, res);\n continue;\n }\n result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n/**\n * Returns the UTF-8 byte representation of %%str%%.\n *\n * If %%form%% is specified, the string is normalized.\n */\nexport function toUtf8Bytes(str, form) {\n assertArgument(typeof (str) === \"string\", \"invalid string value\", \"str\", str);\n if (form != null) {\n assertNormalize(form);\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 0x80) {\n result.push(c);\n }\n else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n }\n else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n assertArgument(i < str.length && ((c2 & 0xfc00) === 0xdc00), \"invalid surrogate pair\", \"str\", str);\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n }\n else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n return new Uint8Array(result);\n}\n;\n//export \nfunction _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\n/**\n * Returns the string represented by the UTF-8 data %%bytes%%.\n *\n * When %%onError%% function is specified, it is called on UTF-8\n * errors allowing recovery using the [[Utf8ErrorFunc]] API.\n * (default: [error](Utf8ErrorFuncs))\n */\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\n/**\n * Returns the UTF-8 code-points for %%str%%.\n *\n * If %%form%% is specified, the string is normalized.\n */\nexport function toUtf8CodePoints(str, form) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","function number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nfunction bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`Expected boolean, not ${b}`);\n}\nfunction bytes(b, ...lengths) {\n if (!(b instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\nfunction hash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\nfunction exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nfunction output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nexport { number, bool, bytes, hash, exists, output };\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n//# sourceMappingURL=_assert.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated, we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\nconst u8a = (a) => a instanceof Uint8Array;\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n if (!u8a(bytes))\n throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const len = hex.length;\n if (len % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + len);\n const array = new Uint8Array(len / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!u8a(data))\n throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n const r = new Uint8Array(arrays.reduce((sum, a) => sum + a.length, 0));\n let pad = 0; // walk through each item, ensure they have proper type\n arrays.forEach((a) => {\n if (!u8a(a))\n throw new Error('Uint8Array expected');\n r.set(a, pad);\n pad += a.length;\n });\n return r;\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nconst toStr = {}.toString;\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexport function wrapConstructor(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport function wrapXOFConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { fromBig, split, toBig, shrSH, shrSL, rotrSH, rotrSL, rotrBH, rotrBL, rotr32H, rotr32L, rotlSH, rotlSL, rotlBH, rotlBL, add, add3L, add3H, add4L, add4H, add5H, add5L, };\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","import { bytes, exists, number, output } from './_assert.js';\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from './_u64.js';\nimport { Hash, u32, toBytes, wrapConstructor, wrapXOFConstructorWithOpts, } from './utils.js';\n// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.\n// It's called a sponge function.\n// Various per round constants calculations\nconst [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []];\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nconst _7n = /* @__PURE__ */ BigInt(7);\nconst _256n = /* @__PURE__ */ BigInt(256);\nconst _0x71n = /* @__PURE__ */ BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n)\n t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s, rounds = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++)\n B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\nexport class Keccak extends Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n // Can be passed from user as dkLen\n number(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n keccak() {\n keccakP(this.state32, this.rounds);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n exists(this);\n const { blockLen, state } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n exists(this, false);\n bytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= blockLen)\n this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n number(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n output(out, this);\n if (this.finished)\n throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\nconst gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\nexport const sha3_224 = /* @__PURE__ */ gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = /* @__PURE__ */ gen(0x06, 136, 256 / 8);\nexport const sha3_384 = /* @__PURE__ */ gen(0x06, 104, 384 / 8);\nexport const sha3_512 = /* @__PURE__ */ gen(0x06, 72, 512 / 8);\nexport const keccak_224 = /* @__PURE__ */ gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexport const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8);\nexport const keccak_384 = /* @__PURE__ */ gen(0x01, 104, 384 / 8);\nexport const keccak_512 = /* @__PURE__ */ gen(0x01, 72, 512 / 8);\nconst genShake = (suffix, blockLen, outputLen) => wrapXOFConstructorWithOpts((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));\nexport const shake128 = /* @__PURE__ */ genShake(0x1f, 168, 128 / 8);\nexport const shake256 = /* @__PURE__ */ genShake(0x1f, 136, 256 / 8);\n//# sourceMappingURL=sha3.js.map","/**\n * Cryptographic hashing functions\n *\n * @_subsection: api/crypto:Hash Functions [about-crypto-hashing]\n */\nimport { keccak_256 } from \"@noble/hashes/sha3\";\nimport { getBytes, hexlify } from \"../utils/index.js\";\nlet locked = false;\nconst _keccak256 = function (data) {\n return keccak_256(data);\n};\nlet __keccak256 = _keccak256;\n/**\n * Compute the cryptographic KECCAK256 hash of %%data%%.\n *\n * The %%data%% **must** be a data representation, to compute the\n * hash of UTF-8 data use the [[id]] function.\n *\n * @returns DataHexstring\n * @example:\n * keccak256(\"0x\")\n * //_result:\n *\n * keccak256(\"0x1337\")\n * //_result:\n *\n * keccak256(new Uint8Array([ 0x13, 0x37 ]))\n * //_result:\n *\n * // Strings are assumed to be DataHexString, otherwise it will\n * // throw. To hash UTF-8 data, see the note above.\n * keccak256(\"Hello World\")\n * //_error:\n */\nexport function keccak256(_data) {\n const data = getBytes(_data, \"data\");\n return hexlify(__keccak256(data));\n}\nkeccak256._ = _keccak256;\nkeccak256.lock = function () { locked = true; };\nkeccak256.register = function (func) {\n if (locked) {\n throw new TypeError(\"keccak256 is locked\");\n }\n __keccak256 = func;\n};\nObject.freeze(keccak256);\n//# sourceMappingURL=keccak.js.map","/**\n * A constant for the zero address.\n *\n * (**i.e.** ``\"0x0000000000000000000000000000000000000000\"``)\n */\nexport const ZeroAddress = \"0x0000000000000000000000000000000000000000\";\n//# sourceMappingURL=addresses.js.map","import { keccak256 } from \"../crypto/index.js\";\nimport { getBytes, assertArgument } from \"../utils/index.js\";\nconst BN_0 = BigInt(0);\nconst BN_36 = BigInt(36);\nfunction getChecksumAddress(address) {\n // if (!isHexString(address, 20)) {\n // logger.throwArgumentError(\"invalid address\", \"address\", address);\n // }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = getBytes(keccak256(expanded));\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n return \"0x\" + chars.join(\"\");\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\n// i.e. Math.floor(Math.log10(Number.MAX_SAFE_INTEGER));\nconst safeDigits = 15;\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits) {\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nconst Base36 = (function () {\n ;\n const result = {};\n for (let i = 0; i < 36; i++) {\n const key = \"0123456789abcdefghijklmnopqrstuvwxyz\"[i];\n result[key] = BigInt(i);\n }\n return result;\n})();\nfunction fromBase36(value) {\n value = value.toLowerCase();\n let result = BN_0;\n for (let i = 0; i < value.length; i++) {\n result = result * BN_36 + Base36[value[i]];\n }\n return result;\n}\n/**\n * Returns a normalized and checksumed address for %%address%%.\n * This accepts non-checksum addresses, checksum addresses and\n * [[getIcapAddress]] formats.\n *\n * The checksum in Ethereum uses the capitalization (upper-case\n * vs lower-case) of the characters within an address to encode\n * its checksum, which offers, on average, a checksum of 15-bits.\n *\n * If %%address%% contains both upper-case and lower-case, it is\n * assumed to already be a checksum address and its checksum is\n * validated, and if the address fails its expected checksum an\n * error is thrown.\n *\n * If you wish the checksum of %%address%% to be ignore, it should\n * be converted to lower-case (i.e. ``.toLowercase()``) before\n * being passed in. This should be a very rare situation though,\n * that you wish to bypass the safegaurds in place to protect\n * against an address that has been incorrectly copied from another\n * source.\n *\n * @example:\n * // Adds the checksum (via upper-casing specific letters)\n * getAddress(\"0x8ba1f109551bd432803012645ac136ddd64dba72\")\n * //_result:\n *\n * // Converts ICAP address and adds checksum\n * getAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36\");\n * //_result:\n *\n * // Throws an error if an address contains mixed case,\n * // but the checksum fails\n * getAddress(\"0x8Ba1f109551bD432803012645Ac136ddd64DBA72\")\n * //_error:\n */\nexport function getAddress(address) {\n assertArgument(typeof (address) === \"string\", \"invalid address\", \"address\", address);\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (!address.startsWith(\"0x\")) {\n address = \"0x\" + address;\n }\n const result = getChecksumAddress(address);\n // It is a checksummed address with a bad checksum\n assertArgument(!address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) || result === address, \"bad address checksum\", \"address\", address);\n return result;\n }\n // Maybe ICAP? (we only support direct mode)\n if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n // It is an ICAP address with a bad checksum\n assertArgument(address.substring(2, 4) === ibanChecksum(address), \"bad icap checksum\", \"address\", address);\n let result = fromBase36(address.substring(4)).toString(16);\n while (result.length < 40) {\n result = \"0\" + result;\n }\n return getChecksumAddress(\"0x\" + result);\n }\n assertArgument(false, \"invalid address\", \"address\", address);\n}\n/**\n * The [ICAP Address format](link-icap) format is an early checksum\n * format which attempts to be compatible with the banking\n * industry [IBAN format](link-wiki-iban) for bank accounts.\n *\n * It is no longer common or a recommended format.\n *\n * @example:\n * getIcapAddress(\"0x8ba1f109551bd432803012645ac136ddd64dba72\");\n * //_result:\n *\n * getIcapAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36\");\n * //_result:\n *\n * // Throws an error if the ICAP checksum is wrong\n * getIcapAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK37\");\n * //_error:\n */\nexport function getIcapAddress(address) {\n //let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n let base36 = BigInt(getAddress(address)).toString(36).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n//# sourceMappingURL=address.js.map","import { assert, assertArgument } from \"../utils/index.js\";\nimport { getAddress } from \"./address.js\";\n/**\n * Returns true if %%value%% is an object which implements the\n * [[Addressable]] interface.\n *\n * @example:\n * // Wallets and AbstractSigner sub-classes\n * isAddressable(Wallet.createRandom())\n * //_result:\n *\n * // Contracts\n * contract = new Contract(\"dai.tokens.ethers.eth\", [ ], provider)\n * isAddressable(contract)\n * //_result:\n */\nexport function isAddressable(value) {\n return (value && typeof (value.getAddress) === \"function\");\n}\n/**\n * Returns true if %%value%% is a valid address.\n *\n * @example:\n * // Valid address\n * isAddress(\"0x8ba1f109551bD432803012645Ac136ddd64DBA72\")\n * //_result:\n *\n * // Valid ICAP address\n * isAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36\")\n * //_result:\n *\n * // Invalid checksum\n * isAddress(\"0x8Ba1f109551bD432803012645Ac136ddd64DBa72\")\n * //_result:\n *\n * // Invalid ICAP checksum\n * isAddress(\"0x8Ba1f109551bD432803012645Ac136ddd64DBA72\")\n * //_result:\n *\n * // Not an address (an ENS name requires a provided and an\n * // asynchronous API to access)\n * isAddress(\"ricmoo.eth\")\n * //_result:\n */\nexport function isAddress(value) {\n try {\n getAddress(value);\n return true;\n }\n catch (error) { }\n return false;\n}\nasync function checkAddress(target, promise) {\n const result = await promise;\n if (result == null || result === \"0x0000000000000000000000000000000000000000\") {\n assert(typeof (target) !== \"string\", \"unconfigured name\", \"UNCONFIGURED_NAME\", { value: target });\n assertArgument(false, \"invalid AddressLike value; did not resolve to a value address\", \"target\", target);\n }\n return getAddress(result);\n}\n/**\n * Resolves to an address for the %%target%%, which may be any\n * supported address type, an [[Addressable]] or a Promise which\n * resolves to an address.\n *\n * If an ENS name is provided, but that name has not been correctly\n * configured a [[UnconfiguredNameError]] is thrown.\n *\n * @example:\n * addr = \"0x6B175474E89094C44Da98b954EedeAC495271d0F\"\n *\n * // Addresses are return synchronously\n * resolveAddress(addr, provider)\n * //_result:\n *\n * // Address promises are resolved asynchronously\n * resolveAddress(Promise.resolve(addr))\n * //_result:\n *\n * // ENS names are resolved asynchronously\n * resolveAddress(\"dai.tokens.ethers.eth\", provider)\n * //_result:\n *\n * // Addressable objects are resolved asynchronously\n * contract = new Contract(addr, [ ])\n * resolveAddress(contract, provider)\n * //_result:\n *\n * // Unconfigured ENS names reject\n * resolveAddress(\"nothing-here.ricmoo.eth\", provider)\n * //_error:\n *\n * // ENS names require a NameResolver object passed in\n * // (notice the provider was omitted)\n * resolveAddress(\"nothing-here.ricmoo.eth\")\n * //_error:\n */\nexport function resolveAddress(target, resolver) {\n if (typeof (target) === \"string\") {\n if (target.match(/^0x[0-9a-f]{40}$/i)) {\n return getAddress(target);\n }\n assert(resolver != null, \"ENS resolution requires a provider\", \"UNSUPPORTED_OPERATION\", { operation: \"resolveName\" });\n return checkAddress(target, resolver.resolveName(target));\n }\n else if (isAddressable(target)) {\n return checkAddress(target, target.getAddress());\n }\n else if (target && typeof (target.then) === \"function\") {\n return checkAddress(target, target);\n }\n assertArgument(false, \"unsupported addressable value\", \"target\", target);\n}\n//# sourceMappingURL=checks.js.map","import { keccak256 } from \"../crypto/index.js\";\nimport { toUtf8Bytes } from \"../utils/index.js\";\n/**\n * A simple hashing function which operates on UTF-8 strings to\n * compute an 32-byte identifier.\n *\n * This simply computes the [UTF-8 bytes](toUtf8Bytes) and computes\n * the [[keccak256]].\n *\n * @example:\n * id(\"hello world\")\n * //_result:\n */\nexport function id(value) {\n return keccak256(toUtf8Bytes(value));\n}\n//# sourceMappingURL=id.js.map","import { ZeroAddress } from \"ethers\";\nconst PermitV2SignatureAllFields = [\n { name: \"issuer\", type: \"address\" },\n { name: \"expiration\", type: \"uint64\" },\n { name: \"contracts\", type: \"address[]\" },\n { name: \"projects\", type: \"string[]\" },\n { name: \"recipient\", type: \"address\" },\n { name: \"validatorId\", type: \"uint256\" },\n { name: \"validatorContract\", type: \"address\" },\n { name: \"sealingKey\", type: \"bytes32\" },\n { name: \"issuerSignature\", type: \"bytes\" },\n];\nexport const SignatureTypes = {\n PermissionedV2IssuerSelf: [\n \"issuer\",\n \"expiration\",\n \"contracts\",\n \"projects\",\n \"recipient\",\n \"validatorId\",\n \"validatorContract\",\n \"sealingKey\",\n ],\n PermissionedV2IssuerShared: [\n \"issuer\",\n \"expiration\",\n \"contracts\",\n \"projects\",\n \"recipient\",\n \"validatorId\",\n \"validatorContract\",\n ],\n PermissionedV2Recipient: [\n \"sealingKey\",\n \"issuerSignature\",\n ],\n};\nexport const getSignatureTypesAndMessage = (primaryType, fields, values) => {\n const types = {\n [primaryType]: PermitV2SignatureAllFields.filter((fieldType) => fields.includes(fieldType.name)),\n };\n const message = {};\n fields.forEach((field) => {\n if (field in values) {\n message[field] = values[field];\n }\n });\n return { types, primaryType, message: message };\n};\nexport const getSignatureDomain = (chainId) => ({\n name: \"Fhenix Permission v2.0.0\",\n version: \"v2.0.0\",\n chainId: parseInt(chainId),\n verifyingContract: ZeroAddress,\n});\n//# sourceMappingURL=generate.js.map","var util;\n(function (util) {\n util.assertEqual = (val) => val;\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array\n .map((val) => (typeof val === \"string\" ? `'${val}'` : val))\n .join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nvar objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nconst ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nconst getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then &&\n typeof data.then === \"function\" &&\n data.catch &&\n typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n\nconst ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nconst quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nclass ZodError extends Error {\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n get errors() {\n return this.issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `smaller than or equal to`\n : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\n\nlet overrideErrorMap = errorMap;\nfunction setErrorMap(map) {\n overrideErrorMap = map;\n}\nfunction getErrorMap() {\n return overrideErrorMap;\n}\n\nconst makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nconst EMPTY_PATH = [];\nfunction addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n overrideMap,\n overrideMap === errorMap ? undefined : errorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nclass ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" &&\n (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nconst INVALID = Object.freeze({\n status: \"aborted\",\n});\nconst DIRTY = (value) => ({ status: \"dirty\", value });\nconst OK = (value) => ({ status: \"valid\", value });\nconst isAborted = (x) => x.status === \"aborted\";\nconst isDirty = (x) => x.status === \"dirty\";\nconst isValid = (x) => x.status === \"valid\";\nconst isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nfunction __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nvar errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message === null || message === void 0 ? void 0 : message.message;\n})(errorUtil || (errorUtil = {}));\n\nvar _ZodEnum_cache, _ZodNativeEnum_cache;\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (this._key instanceof Array) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n var _a, _b;\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message !== null && message !== void 0 ? message : ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: (_a = message !== null && message !== void 0 ? message : required_error) !== null && _a !== void 0 ? _a : ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: (_b = message !== null && message !== void 0 ? message : invalid_type_error) !== null && _b !== void 0 ? _b : ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nclass ZodType {\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n }\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n var _a;\n const ctx = {\n common: {\n issues: [],\n async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false,\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n async: true,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult)\n ? maybeAsyncResult\n : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\"\n ? refinementData(val, ctx)\n : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this, this._def);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv6Regex = /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n // let regex = `\\\\d{2}:\\\\d{2}:\\\\d{2}`;\n let regex = `([01]\\\\d|2[0-3]):[0-5]\\\\d:[0-5]\\\\d`;\n if (args.precision) {\n regex = `${regex}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n regex = `${regex}(\\\\.\\\\d+)?`;\n }\n return regex;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nfunction datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nclass ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch (_a) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n var _a, _b;\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false,\n local: (_b = options === null || options === void 0 ? void 0 : options.local) !== null && _b !== void 0 ? _b : false,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options === null || options === void 0 ? void 0 : options.position,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * @deprecated Use z.string().min(1) instead.\n * @see {@link ZodString.min}\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n var _a;\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / Math.pow(10, decCount);\n}\nclass ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" ||\n (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null, min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" ||\n ch.kind === \"int\" ||\n ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = BigInt(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n var _a;\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\nclass ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nclass ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nclass ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nclass ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nclass ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nclass ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nclass ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nclass ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nclass ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nclass ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n return (this._cached = { shape, keys });\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever &&\n this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") ;\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n var _a, _b, _c, _d;\n const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: (_d = errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // (def: Def) =>\n // (\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge(\n // merging: Incoming\n // ): //ZodObject = (merging) => {\n // ZodObject<\n // extendShape>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n util.objectKeys(mask).forEach((key) => {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nclass ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nclass ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util\n .objectKeys(a)\n .filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date &&\n bType === ZodParsedType.date &&\n +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nclass ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\nclass ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nclass ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nclass ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nclass ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nclass ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args\n .parseAsync(args, params)\n .catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args\n ? args\n : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nclass ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nclass ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nclass ZodEnum extends ZodType {\n constructor() {\n super(...arguments);\n _ZodEnum_cache.set(this, void 0);\n }\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodEnum_cache, new Set(this._def.values), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\").has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\n_ZodEnum_cache = new WeakMap();\nZodEnum.create = createZodEnum;\nclass ZodNativeEnum extends ZodType {\n constructor() {\n super(...arguments);\n _ZodNativeEnum_cache.set(this, void 0);\n }\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string &&\n ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodNativeEnum_cache, new Set(util.getValidEnumValues(this._def.values)), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\").has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\n_ZodNativeEnum_cache = new WeakMap();\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nclass ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise &&\n ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise\n ? ctx.data\n : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nclass ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return base;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((base) => {\n if (!isValid(base))\n return base;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ status: status.value, value: result }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nclass ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nclass ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nclass ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\"\n ? params.default\n : () => params.default,\n ...processCreateParams(params),\n });\n};\nclass ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nclass ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nconst BRAND = Symbol(\"zod_brand\");\nclass ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nclass ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nclass ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result)\n ? result.then((data) => freeze(data))\n : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\nfunction custom(check, params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n var _a, _b;\n if (!check(data)) {\n const p = typeof params === \"function\"\n ? params(data)\n : typeof params === \"string\"\n ? { message: params }\n : params;\n const _fatal = (_b = (_a = p.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n ctx.addIssue({ code: \"custom\", ...p2, fatal: _fatal });\n }\n });\n return ZodAny.create();\n}\nconst late = {\n object: ZodObject.lazycreate,\n};\nvar ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\nconst instanceOfType = (\n// const instanceOfType = any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nconst coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nconst NEVER = INVALID;\n\nvar z = /*#__PURE__*/Object.freeze({\n __proto__: null,\n defaultErrorMap: errorMap,\n setErrorMap: setErrorMap,\n getErrorMap: getErrorMap,\n makeIssue: makeIssue,\n EMPTY_PATH: EMPTY_PATH,\n addIssueToContext: addIssueToContext,\n ParseStatus: ParseStatus,\n INVALID: INVALID,\n DIRTY: DIRTY,\n OK: OK,\n isAborted: isAborted,\n isDirty: isDirty,\n isValid: isValid,\n isAsync: isAsync,\n get util () { return util; },\n get objectUtil () { return objectUtil; },\n ZodParsedType: ZodParsedType,\n getParsedType: getParsedType,\n ZodType: ZodType,\n datetimeRegex: datetimeRegex,\n ZodString: ZodString,\n ZodNumber: ZodNumber,\n ZodBigInt: ZodBigInt,\n ZodBoolean: ZodBoolean,\n ZodDate: ZodDate,\n ZodSymbol: ZodSymbol,\n ZodUndefined: ZodUndefined,\n ZodNull: ZodNull,\n ZodAny: ZodAny,\n ZodUnknown: ZodUnknown,\n ZodNever: ZodNever,\n ZodVoid: ZodVoid,\n ZodArray: ZodArray,\n ZodObject: ZodObject,\n ZodUnion: ZodUnion,\n ZodDiscriminatedUnion: ZodDiscriminatedUnion,\n ZodIntersection: ZodIntersection,\n ZodTuple: ZodTuple,\n ZodRecord: ZodRecord,\n ZodMap: ZodMap,\n ZodSet: ZodSet,\n ZodFunction: ZodFunction,\n ZodLazy: ZodLazy,\n ZodLiteral: ZodLiteral,\n ZodEnum: ZodEnum,\n ZodNativeEnum: ZodNativeEnum,\n ZodPromise: ZodPromise,\n ZodEffects: ZodEffects,\n ZodTransformer: ZodEffects,\n ZodOptional: ZodOptional,\n ZodNullable: ZodNullable,\n ZodDefault: ZodDefault,\n ZodCatch: ZodCatch,\n ZodNaN: ZodNaN,\n BRAND: BRAND,\n ZodBranded: ZodBranded,\n ZodPipeline: ZodPipeline,\n ZodReadonly: ZodReadonly,\n custom: custom,\n Schema: ZodType,\n ZodSchema: ZodType,\n late: late,\n get ZodFirstPartyTypeKind () { return ZodFirstPartyTypeKind; },\n coerce: coerce,\n any: anyType,\n array: arrayType,\n bigint: bigIntType,\n boolean: booleanType,\n date: dateType,\n discriminatedUnion: discriminatedUnionType,\n effect: effectsType,\n 'enum': enumType,\n 'function': functionType,\n 'instanceof': instanceOfType,\n intersection: intersectionType,\n lazy: lazyType,\n literal: literalType,\n map: mapType,\n nan: nanType,\n nativeEnum: nativeEnumType,\n never: neverType,\n 'null': nullType,\n nullable: nullableType,\n number: numberType,\n object: objectType,\n oboolean: oboolean,\n onumber: onumber,\n optional: optionalType,\n ostring: ostring,\n pipeline: pipelineType,\n preprocess: preprocessType,\n promise: promiseType,\n record: recordType,\n set: setType,\n strictObject: strictObjectType,\n string: stringType,\n symbol: symbolType,\n transformer: effectsType,\n tuple: tupleType,\n 'undefined': undefinedType,\n union: unionType,\n unknown: unknownType,\n 'void': voidType,\n NEVER: NEVER,\n ZodIssueCode: ZodIssueCode,\n quotelessJson: quotelessJson,\n ZodError: ZodError\n});\n\nexport { BRAND, DIRTY, EMPTY_PATH, INVALID, NEVER, OK, ParseStatus, ZodType as Schema, ZodAny, ZodArray, ZodBigInt, ZodBoolean, ZodBranded, ZodCatch, ZodDate, ZodDefault, ZodDiscriminatedUnion, ZodEffects, ZodEnum, ZodError, ZodFirstPartyTypeKind, ZodFunction, ZodIntersection, ZodIssueCode, ZodLazy, ZodLiteral, ZodMap, ZodNaN, ZodNativeEnum, ZodNever, ZodNull, ZodNullable, ZodNumber, ZodObject, ZodOptional, ZodParsedType, ZodPipeline, ZodPromise, ZodReadonly, ZodRecord, ZodType as ZodSchema, ZodSet, ZodString, ZodSymbol, ZodEffects as ZodTransformer, ZodTuple, ZodType, ZodUndefined, ZodUnion, ZodUnknown, ZodVoid, addIssueToContext, anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, coerce, custom, dateType as date, datetimeRegex, z as default, errorMap as defaultErrorMap, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, getErrorMap, getParsedType, instanceOfType as instanceof, intersectionType as intersection, isAborted, isAsync, isDirty, isValid, late, lazyType as lazy, literalType as literal, makeIssue, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, objectUtil, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, quotelessJson, recordType as record, setType as set, setErrorMap, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, util, voidType as void, z };\n","import { isAddress, ZeroAddress } from \"ethers\";\nimport { z } from \"zod\";\nconst SerializedSealingPair = z.object({\n privateKey: z.string(),\n publicKey: z.string(),\n});\nconst zPermitV2WithDefaults = z.object({\n name: z.string().optional().default(\"Unnamed Permit\"),\n type: z.enum([\"self\", \"sharing\", \"recipient\"]),\n issuer: z\n .string()\n .refine((val) => isAddress(val), {\n message: \"PermitV2 issuer :: invalid address\",\n })\n .refine((val) => val !== ZeroAddress, {\n message: \"PermitV2 issuer :: must not be zeroAddress\",\n }),\n expiration: z.number().optional().default(1000000000000),\n contracts: z.array(z.string()).optional().default([]),\n projects: z.array(z.string()).optional().default([]),\n recipient: z\n .string()\n .optional()\n .default(ZeroAddress)\n .refine((val) => isAddress(val), {\n message: \"PermitV2 recipient :: invalid address\",\n }),\n validatorId: z.number().optional().default(0),\n validatorContract: z\n .string()\n .optional()\n .default(ZeroAddress)\n .refine((val) => isAddress(val), {\n message: \"PermitV2 validatorContract :: invalid address\",\n }),\n sealingPair: SerializedSealingPair.optional(),\n issuerSignature: z.string().optional().default(\"0x\"),\n recipientSignature: z.string().optional().default(\"0x\"),\n});\n/**\n * Ensures that this Permit will provide access to a non-zero amount of contracts\n * by ensuring that `contracts` and `projects` aren't both empty arrays.\n */\nconst PermitV2RefineAccess = [\n (data) => {\n return data.contracts.length + data.projects.length > 0;\n },\n {\n message: \"PermitV2 access :: at least one contract or project must be accessible.\",\n path: [\"contracts\", \"projects\"],\n },\n];\n/**\n * Permits allow a hook into an optional external validator contract,\n * this check ensures that IF an external validator is applied, that both `validatorId` and `validatorContract` are populated,\n * ELSE ensures that both `validatorId` and `validatorContract` are empty\n */\nconst PermitV2RefineValidator = [\n (data) => (data.validatorId !== 0 && data.validatorContract !== ZeroAddress) ||\n (data.validatorId === 0 && data.validatorContract === ZeroAddress),\n {\n message: \"PermitV2 external validator :: validatorId and validatorContract must either both be set or both be unset.\",\n path: [\"validatorId\", \"validatorContract\"],\n },\n];\n/**\n * SuperRefinement that checks a PermitV2s signatures\n * checkRecipient - whether to validate that `recipient` is empty for permit with type , and populated for \n * checkSealingPair - only the fully formed permit requires the sealing pair, it can be optional for permitV2 create params\n * checkExistingSignatures - not optional - checks that the permit's type matches the populated signature fields\n * checkSigned - checks that the active user's signature has been signed and added. -> issuerSignature, -> recipientSignature\n */\nconst PermitV2SignaturesSuperRefinement = (options) => {\n return (data, ctx) => {\n // Check Recipient\n // If type , `PermitV2.recipient` must be zeroAddress\n // If type , `PermitV2.recipient` must not be zeroAddress\n if (options.checkRecipient) {\n if (data.type === \"self\" && data.recipient !== ZeroAddress)\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"recipient\"],\n message: `PermitV2 (type '${data.type}') recipient :: must be empty (zeroAddress)`,\n });\n if ((data.type === \"recipient\" || data.type === \"sharing\") &&\n data.recipient === ZeroAddress) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"recipient\"],\n message: `PermitV2 (type '${data.type}') recipient :: must not be empty`,\n });\n }\n }\n // Check Sealing Pair\n if (options.checkSealingPair && data.sealingPair == null)\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"sealingPair\"],\n message: `PermitV2 sealingPair :: must not be empty`,\n });\n // Check existing signatures match type (not checking this user's signature, but the other signature)\n // If type , `PermitV2.recipientSignature` must be empty\n // If type , `PermitV2.issuerSignature` must not be empty\n if ((data.type === \"self\" || data.type === \"sharing\") &&\n data.recipientSignature !== \"0x\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"recipientSignature\"],\n message: `PermitV2 (type '${data.type}') recipientSignature :: should not be populated by the issuer`,\n });\n }\n if (data.type === \"recipient\" && data.issuerSignature === \"0x\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"issuerSignature\"],\n message: `PermitV2 (type 'recipient') issuerSignature :: \\`issuer\\` must sign the PermitV2 before sharing it with \\`recipient\\``,\n });\n }\n // Check Signed\n // If type , `PermitV2.issuerSignature` must not be empty\n // If type , `PermitV2.recipientSignature` must not be empty\n if (options.checkSigned) {\n if ((data.type === \"self\" || data.type === \"sharing\") &&\n data.issuerSignature === \"0x\")\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"issuerSignature\"],\n message: `PermitV2 (type '${data.type}') issuerSignature :: must be populated with issuer's signature. Use \\`PermitV2.sign\\` or create permit with \\`PermitV2.createAndSign\\``,\n });\n if (data.type === \"recipient\" && data.recipientSignature === \"0x\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"recipientSignature\"],\n message: `PermitV2 (type 'recipient') recipientSignature :: must be populated with recipient's signature. Use \\`PermitV2.sign\\` or create permit with \\`PermitV2.createAndSign\\``,\n });\n }\n }\n return;\n };\n};\n/**\n * Validator for the params used when creating a fresh PermitV2\n * Has defaults added that will be populated in the options object\n * Signatures superRefinement checks only the recipient, sealingPair and signatures are not necessary in the Permit params\n */\nexport const PermitV2ParamsValidator = zPermitV2WithDefaults\n .refine(...PermitV2RefineAccess)\n .refine(...PermitV2RefineValidator)\n .superRefine(PermitV2SignaturesSuperRefinement({\n checkRecipient: true,\n checkSealingPair: false, // SealingPair not required when creating a fresh permit\n checkSigned: false, // Signature not required when creating a fresh permit\n}));\n/**\n * Validator for a PermitV2 that is expected to be fully formed\n * Does not allow optional values or offer defaults\n * Validates that the correct signatures are populated\n * Validates sealingPair is populated\n */\nexport const FullyFormedPermitV2Validator = zPermitV2WithDefaults\n .required()\n .refine(...PermitV2RefineAccess)\n .refine(...PermitV2RefineValidator)\n .superRefine(PermitV2SignaturesSuperRefinement({\n checkRecipient: true,\n checkSealingPair: true,\n checkSigned: true,\n}));\n//# sourceMappingURL=permit.z.js.map","import { bigintToUint8Array, stringToUint8Array } from \"./utils\";\n// HARDHAT MOCKS\n// Mock FHE operations are automatically injected on the hardhat network\n// The utility functions allow the client / sdk to interact with the mocked FHE ops\nexport const chainIsHardhat = (chainId) => {\n if (chainId == null)\n return false;\n return parseInt(chainId) === 31337;\n};\nexport const hardhatMockUnseal = (value) => {\n let result = BigInt(0);\n for (const byteArrayItem of stringToUint8Array(value)) {\n result = (result << BigInt(8)) + BigInt(byteArrayItem);\n }\n return result;\n};\nexport const hardhatMockEncrypt = (value, securityZone = 0) => ({\n data: bigintToUint8Array(BigInt(value)),\n securityZone: securityZone || 0,\n});\n//# sourceMappingURL=utils.hardhat.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { getAddress, id, keccak256, ZeroAddress } from \"ethers\";\nimport { getSignatureDomain, getSignatureTypesAndMessage, SignatureTypes, } from \"./generate\";\nimport { FullyFormedPermitV2Validator, PermitV2ParamsValidator, } from \"./permit.z\";\nimport { GenerateSealingKey, SealingKey } from \"../sealing\";\nimport { chainIsHardhat, hardhatMockUnseal } from \"../utils.hardhat\";\nimport { getAsSealedItem, isSealedBool, isSealedAddress, isSealedUint, } from \"../../types\";\nexport class PermitV2 {\n constructor(options, metadata) {\n /**\n * Chain that this permit was signed on. In part used for mock encrypt/unseal on hardhat network.\n * Should not be set manually, included in metadata as part of serialization flows.\n */\n this._signedChainId = undefined;\n this.updateName = (name) => {\n this.name = name;\n };\n /**\n * Utility to extract the public data from a permit.\n * Used in `serialize`, `getPermission`, `getHash` etc\n */\n this.getInterface = () => {\n return {\n name: this.name,\n type: this.type,\n issuer: this.issuer,\n expiration: this.expiration,\n contracts: this.contracts,\n projects: this.projects,\n recipient: this.recipient,\n validatorId: this.validatorId,\n validatorContract: this.validatorContract,\n sealingPair: this.sealingPair,\n issuerSignature: this.issuerSignature,\n recipientSignature: this.recipientSignature,\n };\n };\n /**\n * Export the necessary permit data to share a permit with another user\n */\n this.export = () => {\n const cleanedPermit = {\n name: this.name,\n type: this.type,\n issuer: this.issuer,\n expiration: this.expiration,\n };\n if (this.contracts.length > 0)\n cleanedPermit.contracts = this.contracts;\n if (this.projects.length > 0)\n cleanedPermit.projects = this.projects;\n if (this.recipient !== ZeroAddress)\n cleanedPermit.recipient = this.recipient;\n if (this.validatorId !== 0)\n cleanedPermit.validatorId = this.validatorId;\n if (this.validatorContract !== ZeroAddress)\n cleanedPermit.validatorContract = this.validatorContract;\n if (this.type === \"sharing\" && this.issuerSignature !== \"0x\")\n cleanedPermit.issuerSignature = this.issuerSignature;\n return JSON.stringify(cleanedPermit, undefined, 2);\n };\n /**\n * Returns a serializable permit instance, removing classes and methods.\n * NOTE: Does not return a stringified permit\n */\n this.serialize = () => {\n const { sealingPair, ...permit } = this.getInterface();\n return {\n ...permit,\n _signedChainId: this._signedChainId,\n sealingPair: {\n publicKey: sealingPair.publicKey,\n privateKey: sealingPair.privateKey,\n },\n };\n };\n /**\n * Extracts a contract input ready permission from this permit.\n * The permission inherits most fields from the permit, however\n * `permit.sealingPair` is removed and replaced by `permit.sealingPair.publicKey` in the `sealingKey` field.\n *\n * @permit {boolean} skipValidation - Flag to prevent running validation on the permit before returning the extracted permission. Used internally.\n * @returns {PermissionV2}\n */\n this.getPermission = (skipValidation = false) => {\n const permitData = this.getInterface();\n if (!skipValidation) {\n const validationResult = FullyFormedPermitV2Validator.safeParse(permitData);\n if (!validationResult.success) {\n throw new Error(`PermitV2 :: getPermission :: permit validation failed - ${JSON.stringify(validationResult.error, null, 2)} ${JSON.stringify(permitData, null, 2)}`);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { name, type, sealingPair, ...permit } = permitData;\n return {\n ...permit,\n sealingKey: `0x${sealingPair.publicKey}`,\n };\n };\n /**\n * Returns a stable hash depending on the core data of the permit.\n * Is used in the store as each permit's key in the permit map.\n */\n this.getHash = () => keccak256(id(JSON.stringify({\n type: this.type,\n issuer: this.issuer,\n expiration: this.expiration,\n contracts: this.contracts,\n projects: this.projects,\n recipient: this.recipient,\n validatorId: this.validatorId,\n validatorContract: this.validatorContract,\n })));\n /**\n * Returns the domain, types, primaryType, and message fields required to request the user's signature\n * Primary type is returned to allow viem clients to more easily connect\n */\n this.getSignatureParams = (chainId, primaryType) => {\n return {\n domain: getSignatureDomain(chainId),\n ...getSignatureTypesAndMessage(primaryType, SignatureTypes[primaryType], this.getPermission(true)),\n };\n };\n /**\n * Determines the required signature type.\n * Creates the EIP712 types and message.\n * Prompts the user for their signature.\n * Inserts the signature into `issuerSignature` or `recipientSignature` as necessary.\n *\n * @param {string} chainId - Used as part of the EIP712 domain, throws if undefined\n * @param {AbstractSigner} signer - Signer responsible for signing the EIP712 permit signature, throws if undefined\n */\n this.sign = async (chainId, signer) => {\n if (chainId == null)\n throw new Error(\"PermitV2 :: sign - chainId undefined, cannot sign a permit with an unknown chainId\");\n if (signer == null)\n throw new Error(\"PermitV2 :: sign - signer undefined, you must pass in a `signer` for the connected user to create a permitV2 signature\");\n let primaryType = \"PermissionedV2IssuerSelf\";\n if (this.type === \"self\")\n primaryType = \"PermissionedV2IssuerSelf\";\n if (this.type === \"sharing\")\n primaryType = \"PermissionedV2IssuerShared\";\n if (this.type === \"recipient\")\n primaryType = \"PermissionedV2Recipient\";\n const { domain, types, message } = this.getSignatureParams(chainId, primaryType);\n const signature = await signer.signTypedData(domain, types, message);\n if (this.type === \"self\" || this.type === \"sharing\") {\n this.issuerSignature = signature;\n }\n if (this.type === \"recipient\") {\n this.recipientSignature = signature;\n }\n this._signedChainId = chainId;\n };\n /**\n * Use the privateKey of `permit.sealingPair` to unseal `ciphertext` returned from the Fhenix chain.\n * Useful when not using `SealedItem` structs and need to unseal an individual ciphertext.\n */\n this.unsealCiphertext = (ciphertext) => {\n // Early exit with mock unseal if interacting with hardhat network\n if (chainIsHardhat(this._signedChainId))\n return hardhatMockUnseal(ciphertext);\n return this.sealingPair.unseal(ciphertext);\n };\n /**\n * Check if permit satisfies the requirements param.\n * Permit must satisfy either the contracts list or the projects list\n *\n * @param {{contracts?: string[], projects?: string[]}} requirements - Lists of contract and project requirements.\n * @returns {satisfies: boolean, unsatisfiedContracts, unsatisfiedProjects} - satisfied if either req list is fulfilled.\n */\n this.getSatisfies = (requirements) => {\n let contractsSatisfied = true;\n const unsatisfiedContracts = [];\n for (const contract in requirements.contracts) {\n if (!this.contracts.includes(contract)) {\n contractsSatisfied = false;\n unsatisfiedContracts.push(contract);\n }\n }\n let projectsSatisfied = true;\n const unsatisfiedProjects = [];\n for (const project in requirements.projects) {\n if (!this.projects.includes(project)) {\n projectsSatisfied = false;\n unsatisfiedProjects.push(project);\n }\n }\n if (contractsSatisfied || projectsSatisfied)\n return {\n satisfies: true,\n unsatisfiedContracts: null,\n unsatisfiedProjects: null,\n };\n return {\n satisfies: false,\n unsatisfiedContracts,\n unsatisfiedProjects,\n };\n };\n /**\n * Returns whether the active party has created their signature.\n * If `permit.type` is self or sharing, the active party is `issuer`.\n * If `permit.type` is recipient, the active party is `recipient`\n *\n * @returns {boolean}\n */\n this.isSigned = () => {\n if (this.type === \"self\" || this.type === \"sharing\") {\n return this.issuerSignature !== \"0x\";\n }\n if (this.type === \"recipient\") {\n return this.recipientSignature != \"0x\";\n }\n return false;\n };\n /**\n * Returns whether this permit has expired due to `permit.expiration`\n *\n * @returns {boolean}\n */\n this.isExpired = () => {\n return this.expiration < Math.floor(Date.now() / 1000);\n };\n /**\n * Overall validity checker of a permit, checks the signatures and expirations\n *\n * @returns {{valid: boolean, error: string}} - If `valid`, `error` is null, else `error` indicates which validity check failed\n */\n this.isValid = () => {\n if (this.isExpired())\n return { valid: false, error: \"expired\" };\n if (!this.isSigned())\n return { valid: false, error: \"not-signed\" };\n return { valid: true, error: null };\n };\n this.name = options.name;\n this.type = options.type;\n this.issuer = options.issuer;\n this.expiration = options.expiration;\n this.contracts = options.contracts;\n this.projects = options.projects;\n this.recipient = options.recipient;\n this.validatorId = options.validatorId;\n this.validatorContract = options.validatorContract;\n this.sealingPair = options.sealingPair;\n this.issuerSignature = options.issuerSignature;\n this.recipientSignature = options.recipientSignature;\n this._signedChainId = metadata?._signedChainId;\n }\n static async create(options) {\n const { success, data: parsed, error, } = PermitV2ParamsValidator.safeParse(options);\n if (!success) {\n throw new Error(\"PermitV2 :: create :: Parsing PermitV2Options failed \" +\n JSON.stringify(error, null, 2));\n }\n const sealingPair = parsed.sealingPair != null\n ? new SealingKey(parsed.sealingPair.privateKey, parsed.sealingPair.publicKey)\n : await GenerateSealingKey();\n return new PermitV2({\n ...parsed,\n sealingPair,\n });\n }\n static async createAndSign(options, chainId, signer) {\n const permit = await PermitV2.create(options);\n await permit.sign(chainId, signer);\n return permit;\n }\n unseal(item) {\n // SealedItem\n const sealedItem = getAsSealedItem(item);\n if (sealedItem != null) {\n const bn = chainIsHardhat(this._signedChainId)\n ? hardhatMockUnseal(sealedItem.data)\n : this.sealingPair.unseal(sealedItem.data);\n if (isSealedBool(sealedItem)) {\n // Return a boolean for SealedBool\n return Boolean(bn).valueOf();\n }\n if (isSealedAddress(sealedItem)) {\n // Return a string for SealedAddress\n return getAddress(`0x${bn.toString(16).slice(-40)}`);\n }\n if (isSealedUint(sealedItem)) {\n // Return a bigint for SealedUint\n return bn;\n }\n }\n // Object | Array\n if (typeof item === \"object\" && item !== null) {\n if (Array.isArray(item)) {\n // Array - recurse\n return item.map((nestedItem) => this.unseal(nestedItem));\n }\n else {\n // Object - recurse\n const result = {};\n for (const key in item) {\n result[key] = this.unseal(item[key]);\n }\n return result;\n }\n }\n // Primitive\n return item;\n }\n}\n/**\n * Creates a `PermitV2` from a serialized permit, hydrating methods and classes\n * NOTE: Does not return a stringified permit\n *\n * @param {SerializedPermitV2} - Permit structure excluding classes\n * @returns {PermitV2} - New instance of PermitV2 class\n */\nPermitV2.deserialize = ({ _signedChainId, sealingPair, ...permit }) => {\n return new PermitV2({\n ...permit,\n sealingPair: new SealingKey(sealingPair.privateKey, sealingPair.publicKey),\n }, {\n _signedChainId,\n });\n};\nPermitV2.validate = (permit) => {\n return FullyFormedPermitV2Validator.safeParse(permit);\n};\n//# sourceMappingURL=permit.js.map","import { createStore } from \"zustand/vanilla\";\nimport { persist } from \"zustand/middleware\";\nimport { produce } from \"immer\";\nimport { PermitV2 } from \"./permit\";\n// Stores generated permits for each user, a hash indicating the active permit for each user, and a list of fheKeys as a cache\n// Can be used to create reactive hooks\nexport const _permitStore = createStore()(persist(() => ({\n permits: {},\n activePermitHash: {},\n}), { name: \"fhenixjs-permits\" }));\n// Permit V2\nexport const getPermit = (account, hash) => {\n if (account == null || hash == null)\n return;\n const savedPermit = _permitStore.getState().permits[account]?.[hash];\n if (savedPermit == null)\n return;\n return PermitV2.deserialize(savedPermit);\n};\nexport const getActivePermit = (account) => {\n if (account == null)\n return;\n const activePermitHash = _permitStore.getState().activePermitHash[account];\n return getPermit(account, activePermitHash);\n};\nexport const getPermits = (account) => {\n if (account == null)\n return {};\n return Object.entries(_permitStore.getState().permits[account] ?? {}).reduce((acc, [hash, permit]) => {\n if (permit == undefined)\n return acc;\n return { ...acc, [hash]: PermitV2.deserialize(permit) };\n }, {});\n};\nexport const setPermit = (account, permitV2) => {\n _permitStore.setState(produce((state) => {\n if (state.permits[account] == null)\n state.permits[account] = {};\n state.permits[account][permitV2.getHash()] = permitV2.serialize();\n }));\n};\nexport const removePermit = (account, hash) => {\n _permitStore.setState(produce((state) => {\n state.permits[account][hash] = undefined;\n }));\n};\n// Active Permit Hash\nexport const getActivePermitHash = (account) => {\n if (account == null)\n return undefined;\n return _permitStore.getState().activePermitHash[account];\n};\nexport const setActivePermitHash = (account, hash) => {\n _permitStore.setState(produce((state) => {\n state.activePermitHash[account] = hash;\n }));\n};\nexport const removeActivePermitHash = (account) => {\n _permitStore.setState(produce((state) => {\n state.activePermitHash[account] = undefined;\n }));\n};\nexport const permitStore = {\n store: _permitStore,\n getPermit,\n getActivePermit,\n getPermits,\n setPermit,\n removePermit,\n getActivePermitHash,\n setActivePermitHash,\n removeActivePermitHash,\n};\n//# sourceMappingURL=store.js.map","import wasm from \"./tfhe_bg.wasm\";\n//@ts-expect-error imports from different wasm/js files are wonky\nimport initSDK from \"./tfhe.js\";\nlet initialized;\nconst initFhevm = async () => {\n if (!initialized) {\n try {\n initialized = await initSDK(wasm);\n }\n catch (_) {\n initialized = await initSDK(wasm());\n }\n }\n return initialized;\n};\nexport const asyncInitFhevm = async () => {\n try {\n await initFhevm();\n }\n catch (err) {\n throw new Error(`Error initializing FhenixClient ${err}`);\n }\n};\nexport { TfheCompactPublicKey } from \"./tfhe.js\";\nexport { CompactFheBool, CompactFheUint8, CompactFheUint16, CompactFheUint32, CompactFheUint64, CompactFheUint128, CompactFheUint160, CompactFheUint256, } from \"./tfhe.js\";\n//# sourceMappingURL=fhe-browser.js.map","export const MAX_UINT8 = 255;\nexport const MAX_UINT16 = 65535;\nexport const MAX_UINT32 = 4294967295;\nexport const FheOpsAddress = \"0x0000000000000000000000000000000000000080\";\nexport const PUBLIC_KEY_LENGTH_MIN = 15000;\nexport const DEFAULT_COFHE_URL = \"http://127.0.0.1:8448\";\n//# sourceMappingURL=consts.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createStore } from \"zustand/vanilla\";\nimport { produce } from \"immer\";\nimport { TfheCompactPublicKey } from \"./fhe/fhe\";\nimport { fromHexString } from \"./utils\";\nimport { chainIsHardhat } from \"./utils.hardhat\";\nimport { PUBLIC_KEY_LENGTH_MIN } from \"./consts\";\nexport const _sdkStore = createStore(() => ({\n fheKeysInitialized: false,\n securityZones: [0],\n fheKeys: {},\n accessRequirements: {\n contracts: [],\n projects: [],\n },\n coFheUrl: undefined,\n providerInitialized: false,\n provider: undefined,\n chainId: undefined,\n signerInitialized: false,\n signer: undefined,\n account: undefined,\n}));\n// Store getters / setters\nconst _store_getFheKey = (chainId, securityZone = 0) => {\n if (chainId == null || securityZone == null)\n return undefined;\n const serialized = _sdkStore.getState().fheKeys[chainId]?.[securityZone];\n if (serialized == null)\n return undefined;\n return TfheCompactPublicKey.deserialize(serialized);\n};\nexport const _store_getConnectedChainFheKey = (securityZone = 0) => {\n const state = _sdkStore.getState();\n if (securityZone == null)\n return undefined;\n if (state.chainId == null)\n return undefined;\n const serialized = state.fheKeys[state.chainId]?.[securityZone];\n if (serialized == null)\n return undefined;\n return TfheCompactPublicKey.deserialize(serialized);\n};\nexport const _store_setFheKey = (chainId, securityZone, fheKey) => {\n if (chainId == null || securityZone == null)\n return;\n _sdkStore.setState(produce((state) => {\n if (state.fheKeys[chainId] == null)\n state.fheKeys[chainId] = {};\n state.fheKeys[chainId][securityZone] = fheKey?.serialize();\n }));\n};\nconst getChainIdFromProvider = async (provider) => {\n var chainId = null;\n try {\n chainId = await provider.getChainId();\n }\n catch (err) {\n const network = await provider.getNetwork();\n chainId = network.chainId;\n }\n if (chainId == null)\n throw new Error(\"sdk :: getChainIdFromProvider :: provider.getChainId returned a null result, ensure that your provider is connected to a network\");\n return chainId;\n};\n// External functionality\nexport const _store_initialize = async (params) => {\n const { provider, signer, securityZones = [0], contracts: contractRequirements = [], projects: projectRequirements = [], coFheUrl = undefined, } = params;\n _sdkStore.setState({\n providerInitialized: false,\n signerInitialized: false,\n accessRequirements: {\n contracts: contractRequirements,\n projects: projectRequirements,\n },\n coFheUrl,\n });\n // PROVIDER\n // Fetch chain Id from provider\n const chainId = await getChainIdFromProvider(provider);\n const chainIdChanged = chainId != null && chainId !== _sdkStore.getState().chainId;\n if (chainId != null && provider != null) {\n _sdkStore.setState({ providerInitialized: true, provider, chainId });\n }\n // SIGNER\n // Account is fetched and stored here, the `account` field in the store is used to index which permits belong to which users\n // In sdk functions, `state.account != null` is validated, this is a check to ensure that a valid signer has been provided\n // which is necessary to interact with permits\n const account = await signer?.getAddress();\n if (account != null && signer != null) {\n _sdkStore.setState({ signerInitialized: true, account, signer });\n }\n else {\n _sdkStore.setState({\n signerInitialized: false,\n account: undefined,\n signer: undefined,\n });\n }\n // If chainId, securityZones, or CoFhe enabled changes, update the store and update fheKeys for re-initialization\n const securityZonesChanged = securityZones !== _sdkStore.getState().securityZones;\n if (chainIdChanged || securityZonesChanged) {\n _sdkStore.setState({\n securityZones,\n fheKeysInitialized: false,\n });\n }\n // Fetch FHE keys (skipped if hardhat)\n if (!chainIsHardhat(chainId) && !_sdkStore.getState().fheKeysInitialized) {\n await Promise.all(securityZones.map((securityZone) => _store_fetchFheKey(chainId, securityZone, true)));\n }\n _sdkStore.setState({ fheKeysInitialized: true });\n};\n/**\n * Retrieves the FHE public key from the provider.\n * If the key already exists in the store it is returned, else it is fetched, stored, and returned\n * @param {string} chainId - The chain to fetch the FHE key for, if no chainId provided, undefined is returned\n * @param securityZone - The security zone for which to retrieve the key (default 0).\n * @returns {Promise} - The retrieved public key.\n */\nexport const _store_fetchFheKey = async (chainId, securityZone = 0, forceFetch = false) => {\n const storedKey = _store_getFheKey(chainId, securityZone);\n if (storedKey != null && !forceFetch)\n return storedKey;\n const coFheUrl = _sdkStore.getState().coFheUrl;\n if (coFheUrl == null || typeof coFheUrl !== \"string\") {\n throw new Error(\"Error initializing fhenixjs; coFheUrl invalid, ensure it is set in `fhenixsdk.initialize`\");\n }\n let publicKey = undefined;\n // Fetch publicKey from CoFhe\n try {\n // TODO: misspelling?\n const res = await fetch(`${coFheUrl}/GetNetworkPublickKey`, {\n method: \"POST\",\n body: JSON.stringify({\n SecurityZone: securityZone,\n }),\n });\n const data = await res.json();\n publicKey = `0x${data.securityZone}`;\n }\n catch (err) {\n throw new Error(`Error initializing fhenixjs; fetching FHE publicKey from CoFHE failed with error ${err}`);\n }\n if (publicKey == null || typeof publicKey !== \"string\") {\n throw new Error(`Error initializing fhenixjs; FHE publicKey fetched from CoFHE invalid: not a string`);\n }\n if (publicKey === \"0x\") {\n throw new Error(\"Error initializing fhenixjs; provided chain is not FHE enabled, no FHE publicKey found\");\n }\n if (publicKey.length < PUBLIC_KEY_LENGTH_MIN) {\n throw new Error(`Error initializing fhenixjs; got shorter than expected FHE publicKey: ${publicKey.length}. Expected length >= ${PUBLIC_KEY_LENGTH_MIN}`);\n }\n const buff = fromHexString(publicKey);\n try {\n const key = TfheCompactPublicKey.deserialize(buff);\n _store_setFheKey(chainId, securityZone, key);\n return key;\n }\n catch (err) {\n throw new Error(`Error deserializing public key ${err}`);\n }\n};\n//# sourceMappingURL=store.js.map","import { CompactFheBool, CompactFheUint8, CompactFheUint16, CompactFheUint32, CompactFheUint64, CompactFheUint128, CompactFheUint160, CompactFheUint256, } from \"./fhe/fhe.js\";\nimport { EncryptionTypes, } from \"../types\";\nimport { fromHexString, toBigInt } from \"./utils.js\";\n/**\n * Encrypts a Uint8 value using TFHE (Fast Fully Homomorphic Encryption over the Torus).\n * @param {boolean} value - The Boolean value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedBool} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_bool = (value, publicKey, securityZone = 0) => {\n const encrypted = CompactFheBool.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Uint8 value using TFHE (Fast Fully Homomorphic Encryption over the Torus).\n * @param {number} value - The Uint8 value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedUint8} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_uint8 = (value, publicKey, securityZone = 0) => {\n const encrypted = CompactFheUint8.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Uint16 value using TFHE.\n * @param {number} value - The Uint16 value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedUint16} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_uint16 = (value, publicKey, securityZone = 0) => {\n const encrypted = CompactFheUint16.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Uint32 value using TFHE.\n * @param {number} value - The Uint32 value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedUint32} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_uint32 = (value, publicKey, securityZone = 0) => {\n const encrypted = CompactFheUint32.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Uint64 value using TFHE.\n * @param {number} value - The Uint64 value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedUint64} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_uint64 = (value, publicKey, securityZone = 0) => {\n if (typeof value === \"string\") {\n value = toBigInt(fromHexString(value));\n }\n else {\n value = value;\n }\n const encrypted = CompactFheUint64.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Uint128 value using TFHE.\n * @param {bigint} value - The Uint128 value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedUint128} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_uint128 = (value, publicKey, securityZone = 0) => {\n if (typeof value === \"string\") {\n value = toBigInt(fromHexString(value));\n }\n else {\n value = value;\n }\n const encrypted = CompactFheUint128.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Uint256 value using TFHE.\n * @param {bigint} value - The Uint256 value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedUint256} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_uint256 = (value, publicKey, securityZone = 0) => {\n if (typeof value === \"string\") {\n value = toBigInt(fromHexString(value));\n }\n else {\n value = value;\n }\n const encrypted = CompactFheUint256.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Address value using TFHE.\n * @param {bigint} value - The Address (Uint160) value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the address on.\n * @returns {EncryptedAddress} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_address = (value, publicKey, securityZone = 0) => {\n if (typeof value === \"string\") {\n value = toBigInt(fromHexString(value));\n }\n else {\n value = value;\n }\n const encrypted = CompactFheUint160.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a numeric value using TFHE according to the specified encryption type.\n * @param {number} value - The numeric value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param {EncryptionTypes} type - The encryption type (uint8, uint16, uint32).\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {Uint8Array} - The encrypted value serialized as Uint8Array.\n * @throws {Error} - Throws an error if an invalid type is specified.\n */\nexport const encrypt = (value, publicKey, type = EncryptionTypes.uint8, securityZone = 0) => {\n switch (type) {\n case EncryptionTypes.bool:\n return encrypt_bool(!!value, publicKey, securityZone);\n case EncryptionTypes.uint8:\n return encrypt_uint8(value, publicKey, securityZone);\n case EncryptionTypes.uint16:\n return encrypt_uint16(value, publicKey, securityZone);\n case EncryptionTypes.uint32:\n return encrypt_uint32(value, publicKey, securityZone);\n case EncryptionTypes.uint64:\n return encrypt_uint64(value.toString(16), publicKey, securityZone);\n case EncryptionTypes.uint128:\n return encrypt_uint128(value.toString(16), publicKey, securityZone);\n case EncryptionTypes.uint256:\n return encrypt_uint256(value.toString(16), publicKey, securityZone);\n case EncryptionTypes.address:\n return encrypt_address(value.toString(16), publicKey, securityZone);\n default:\n throw new Error(\"Invalid type\");\n }\n};\n//# sourceMappingURL=encrypt.js.map","import { asyncInitFhevm } from \"./fhe/fhe.js\";\n// INFO: The existing `GetFhePublicKey` function has been replaced with `InitFhevm`\n// `GetFhePublicKey` didn't allow security zones to be set, and was overloaded with initializing the Fhevm\n// Public key fetching has been moved to the Async and Sync FhenixClient constructors (they handle it slightly differently)\n// - arch 2024-08-28\nexport const InitFhevm = async () => {\n // `asyncInitFhevm` in `/sdk/fhe/fhe.ts` in node env (noop)\n // `asyncInitFhevm` in `/sdk/fhe/fhe-browser.ts` in browser env (init wasm)\n await asyncInitFhevm();\n};\n//# sourceMappingURL=init.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { toHexString } from \"./utils.js\";\nimport { chainIsHardhat, hardhatMockEncrypt } from \"./utils.hardhat.js\";\nimport { PermitV2, permitStore, PermitV2ParamsValidator } from \"./permit\";\nimport { isString } from \"./validation.js\";\nimport { _sdkStore, _store_getConnectedChainFheKey, _store_initialize, } from \"./store.js\";\nimport { encrypt_bool as tfhe_encrypt_bool, encrypt_uint8 as tfhe_encrypt_uint8, encrypt_uint16 as tfhe_encrypt_uint16, encrypt_uint32 as tfhe_encrypt_uint32, encrypt_uint64 as tfhe_encrypt_uint64, encrypt_uint128 as tfhe_encrypt_uint128, encrypt_uint256 as tfhe_encrypt_uint256, encrypt_address as tfhe_encrypt_address, } from \"./encrypt.js\";\nimport { InitFhevm } from \"./init.js\";\nimport { FheUType, isEncryptableItem, ResultErr, ResultOk, } from \"../types\";\n/**\n * Initializes the `fhenixsdk` to enable encrypting input data, creating permits / permissions, and decrypting sealed outputs.\n * Initializes `fhevm` client FHE wasm module and fetches the provided chain's FHE publicKey.\n * If a valid signer is provided, a `permit/permission` is generated automatically\n */\nconst initialize = async (params) => {\n // Initialize the fhevm\n await InitFhevm().catch((err) => {\n if (params.ignoreErrors) {\n return undefined;\n }\n else {\n return ResultErr(`initialize :: failed to initialize fhenixjs - is the network FHE-enabled? ${err}`);\n }\n });\n if (params.provider == null)\n return ResultErr(\"initialize :: missing provider - Please provide an AbstractProvider interface\");\n if (params.securityZones != null && params.securityZones.length === 0)\n return ResultErr(\"initialize :: a list of securityZones was provided, but it is empty\");\n await _store_initialize(params);\n // `generatePermit` must set to `false` to early exit here\n if (params.generatePermit === false)\n return ResultOk(undefined);\n // Return the existing active permit\n const userActivePermit = getPermit();\n if (userActivePermit.success)\n return userActivePermit;\n // Create permit and return it\n return createPermit();\n};\n/**\n * Internal reusable initialization checker\n */\nconst _checkInitialized = (state, options) => {\n if (options?.fheKeys !== false && !state.fheKeysInitialized) {\n return ResultErr(\"fhenixsdk not initialized. Use `fhenixsdk.initialize(...)`.\");\n }\n if (options?.coFheUrl !== false && !state.coFheUrl)\n return ResultErr(\"fhenixsdk not initialized with a coFheUrl. Set `coFheUrl` in `fhenixsdk.initialize`.\");\n if (options?.provider !== false && !state.providerInitialized)\n return ResultErr(\"fhenixsdk not initialized with valid provider. Use `fhenixsdk.initialize(...)` with a valid provider that satisfies `AbstractProvider`.\");\n if (options?.signer !== false && !state.signerInitialized)\n return ResultErr(\"fhenixsdk not initialized with a valid signer. Use `fhenixsdk.initialize(...)` with a valid signer that satisfies `AbstractSigner`.\");\n return ResultOk(null);\n};\n// Permit\n/**\n * Creates a new permit with options, prompts user for signature.\n * Handles all `permit.type`s, and prompts for the correct signature type.\n * The created PermitV2 will be inserted into the store and marked as the active permit.\n * NOTE: This is a wrapper around `PermitV2.create` and `PermitV2.sign`\n *\n * @param {PermitV2Options} options - Partial PermitV2 fields to create the Permit with, if no options provided will be filled with the defaults:\n * { type: \"self\", issuer: initializedUserAddress, projects: initializedProjects, contracts: initializedContracts }\n * @returns {Result} - Newly created PermitV2 as a Result object\n */\nconst createPermit = async (options) => {\n const state = _sdkStore.getState();\n const initialized = _checkInitialized(state);\n if (!initialized.success)\n return ResultErr(`${createPermit.name} :: ${initialized.error}`);\n const optionsWithDefaults = {\n type: \"self\",\n issuer: state.account,\n contracts: state.accessRequirements.contracts,\n projects: state.accessRequirements.projects,\n ...options,\n };\n let permit;\n try {\n permit = await PermitV2.createAndSign(optionsWithDefaults, state.chainId, state.signer);\n }\n catch (e) {\n return ResultErr(`${createPermit.name} :: ${e}`);\n }\n permitStore.setPermit(state.account, permit);\n permitStore.setActivePermitHash(state.account, permit.getHash());\n return ResultOk(permit);\n};\n/**\n * Imports a fully formed existing permit, expected to be valid.\n * Does not ask for user signature, expects to already be populated.\n * Will throw an error if the imported permit is invalid, see `PermitV2.isValid`.\n * The imported PermitV2 will be inserted into the store and marked as the active permit.\n *\n * @param {string | PermitV2Interface} imported - Permit to import as a text string or PermitV2Interface\n */\nconst importPermit = async (imported) => {\n const state = _sdkStore.getState();\n const initialized = _checkInitialized(state);\n if (!initialized.success)\n return ResultErr(`${createPermit.name} :: ${initialized.error}`);\n // Import validation\n if (typeof imported === \"string\") {\n try {\n imported = JSON.parse(imported);\n }\n catch (e) {\n return ResultErr(`importPermit :: json parsing failed - ${e}`);\n }\n }\n const { success, data: parsedPermit, error: permitParsingError, } = PermitV2ParamsValidator.safeParse(imported);\n if (!success) {\n const errorString = Object.entries(permitParsingError.flatten().fieldErrors)\n .map(([field, err]) => `- ${field}: ${err}`)\n .join(\"\\n\");\n return ResultErr(`importPermit :: invalid permit data - ${errorString}`);\n }\n if (parsedPermit.type !== \"self\") {\n if (parsedPermit.issuer === state.account)\n parsedPermit.type = \"sharing\";\n else if (parsedPermit.recipient === state.account)\n parsedPermit.type = \"recipient\";\n else {\n return ResultErr(`importPermit :: invalid Permit - connected account <${state.account}> is not issuer or recipient`);\n }\n }\n let permit;\n try {\n permit = await PermitV2.create(parsedPermit);\n }\n catch (e) {\n return ResultErr(`importPermit :: ${e}`);\n }\n const { valid, error } = permit.isValid();\n if (!valid) {\n return ResultErr(`importPermit :: newly imported permit is invalid - ${error}`);\n }\n permitStore.setPermit(state.account, permit);\n permitStore.setActivePermitHash(state.account, permit.getHash());\n return ResultOk(permit);\n};\n/**\n * Selects the active permit using its hash.\n * If the hash is not found in the stored permits store, throws an error.\n * The matched permit will be marked as the active permit.\n *\n * @param {string} hash - The `PermitV2.getHash` of the target permit.\n */\nconst selectActivePermit = (hash) => {\n const state = _sdkStore.getState();\n const initialized = _checkInitialized(state);\n if (!initialized.success)\n return ResultErr(`${selectActivePermit.name} :: ${initialized.error}`);\n const permit = permitStore.getPermit(state.account, hash);\n if (permit == null)\n return ResultErr(`${selectActivePermit.name} :: Permit with hash <${hash}> not found`);\n permitStore.setActivePermitHash(state.account, permit.getHash());\n return ResultOk(permit);\n};\n/**\n * Retrieves a stored permit based on its hash.\n * If no hash is provided, the currently active permit will be retrieved.\n *\n * @param {string} hash - Optional `PermitV2.getHash` of the permit.\n * @returns {Result} - The active permit or permit associated with `hash` as a Result object.\n */\nconst getPermit = (hash) => {\n const state = _sdkStore.getState();\n const initialized = _checkInitialized(state);\n if (!initialized.success)\n return ResultErr(`${getPermit.name} :: ${initialized.error}`);\n if (hash == null) {\n const permit = permitStore.getActivePermit(state.account);\n if (permit == null)\n return ResultErr(`getPermit :: active permit not found`);\n return ResultOk(permit);\n }\n const permit = permitStore.getPermit(state.account, hash);\n if (permit == null)\n return ResultErr(`getPermit :: permit with hash <${hash}> not found`);\n return ResultOk(permit);\n};\n/**\n * Retrieves a stored permission based on the permit's hash.\n * If no hash is provided, the currently active permit will be used.\n * The `PermissionV2` is extracted from the permit.\n *\n * @param {string} hash - Optional hash of the permission to get, defaults to active permit's permission\n * @returns {Result} - The active permission or permission associated with `hash`, as a result object.\n */\nconst getPermission = (hash) => {\n const permitResult = getPermit(hash);\n if (!permitResult.success)\n return ResultErr(`${getPermission.name} :: ${permitResult.error}`);\n return ResultOk(permitResult.data.getPermission());\n};\n/**\n * Exports all stored permits.\n * @returns {Result>} - All stored permits.\n */\nconst getAllPermits = () => {\n const state = _sdkStore.getState();\n const initialized = _checkInitialized(state);\n if (!initialized.success)\n return ResultErr(`${getAllPermits.name} :: ${initialized.error}`);\n return ResultOk(permitStore.getPermits(state.account));\n};\nasync function encrypt(item) {\n const state = _sdkStore.getState();\n // Only need to check `fheKeysInitialized`, signer and provider not needed for encryption\n const initialized = _checkInitialized(state, {\n provider: false,\n signer: false,\n });\n if (!initialized.success)\n return ResultErr(`${encrypt.name} :: ${initialized.error}`);\n // Permission\n if (item === \"permission\") {\n return getPermission();\n }\n // EncryptableItem\n if (isEncryptableItem(item)) {\n // Early exit with mock encrypted value if chain is hardhat\n // TODO: Determine how CoFHE encrypted items will be handled in hardhat\n if (chainIsHardhat(state.coFheUrl))\n return ResultOk(hardhatMockEncrypt(BigInt(item.data)));\n const fhePublicKey = _store_getConnectedChainFheKey(item.securityZone ?? 0);\n if (fhePublicKey == null)\n return ResultErr(\"encrypt :: fheKey for current chain not found\");\n let preEncryptedItem;\n // prettier-ignore\n try {\n switch (item.utype) {\n case FheUType.bool: {\n preEncryptedItem = tfhe_encrypt_bool(item.data, fhePublicKey, item.securityZone);\n break;\n }\n case FheUType.uint8: {\n preEncryptedItem = tfhe_encrypt_uint8(item.data, fhePublicKey, item.securityZone);\n break;\n }\n case FheUType.uint16: {\n preEncryptedItem = tfhe_encrypt_uint16(item.data, fhePublicKey, item.securityZone);\n break;\n }\n case FheUType.uint32: {\n preEncryptedItem = tfhe_encrypt_uint32(item.data, fhePublicKey, item.securityZone);\n break;\n }\n case FheUType.uint64: {\n preEncryptedItem = tfhe_encrypt_uint64(item.data, fhePublicKey, item.securityZone);\n break;\n }\n case FheUType.uint128: {\n preEncryptedItem = tfhe_encrypt_uint128(item.data, fhePublicKey, item.securityZone);\n break;\n }\n case FheUType.uint256: {\n preEncryptedItem = tfhe_encrypt_uint256(item.data, fhePublicKey, item.securityZone);\n break;\n }\n case FheUType.address: {\n preEncryptedItem = tfhe_encrypt_address(item.data, fhePublicKey, item.securityZone);\n break;\n }\n }\n }\n catch (e) {\n return ResultErr(`encrypt :: tfhe_encrypt_xxxx :: ${e}`);\n }\n // Send preEncryptedItem to CoFHE route `/UpdateCT`, receive `ctHash` to use as contract input\n const res = (await fetch(`${state.coFheUrl}/UpdateCT`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\", // Ensure the server knows you're sending JSON\n },\n body: JSON.stringify({\n UType: item.utype,\n Value: toHexString(preEncryptedItem.data),\n SecurityZone: item.securityZone,\n }),\n }));\n const data = await res.json();\n // Transform data into final CoFHE input variable\n return ResultOk({\n securityZone: item.securityZone,\n hash: BigInt(`0x${data.ctHash}`),\n utype: item.utype,\n signature: data.signature,\n });\n }\n // Object | Array\n if (typeof item === \"object\" && item !== null) {\n if (Array.isArray(item)) {\n // Array - recurse\n const nestedItems = await Promise.all(item.map((nestedItem) => encrypt(nestedItem)));\n // Any nested error break out\n const nestedItemResultErr = nestedItems.find((nestedItem) => !nestedItem.success);\n if (nestedItemResultErr != null)\n return nestedItemResultErr;\n return ResultOk(nestedItems.map((nestedItem) => nestedItem.data));\n }\n else {\n // Object - recurse\n const nestedKeyedItems = await Promise.all(Object.entries(item).map(async ([key, value]) => ({\n key,\n value: await encrypt(value),\n })));\n // Any nested error break out\n const nestedItemResultErr = nestedKeyedItems.find(({ value }) => !value.success);\n if (nestedItemResultErr != null)\n return nestedItemResultErr;\n const result = {};\n nestedKeyedItems.forEach(({ key, value }) => {\n result[key] = value.data;\n });\n return ResultOk(result);\n }\n }\n // Primitive\n return ResultOk(item);\n}\n// Unseal\n/**\n * Unseals an encrypted message using the stored permit for a specific contract address.\n * NOTE: Wrapper around `PermitV2.unseal`\n *\n * @param {string} ciphertext - The encrypted message to unseal.\n * @param {string} account - Users address, defaults to store.account\n * @param {string} hash - The hash of the permit to use for this operation, defaults to active permitV2 hash\n * @returns bigint - The unsealed message.\n */\nconst unsealCiphertext = (ciphertext, account, hash) => {\n const state = _sdkStore.getState();\n const initialized = _checkInitialized(state);\n if (!initialized.success)\n return ResultErr(`${getAllPermits.name} :: ${initialized.error}`);\n isString(ciphertext);\n const resolvedAccount = account ?? state.account;\n const resolvedHash = hash ?? permitStore.getActivePermitHash(resolvedAccount);\n if (resolvedAccount == null || resolvedHash == null) {\n return ResultErr(`unsealCiphertext :: PermitV2 hash not provided and active PermitV2 not found`);\n }\n const permit = permitStore.getPermit(resolvedAccount, resolvedHash);\n if (permit == null) {\n return ResultErr(`unsealCiphertext :: PermitV2 with account <${account}> and hash <${hash}> not found`);\n }\n let unsealed;\n try {\n unsealed = permit.unsealCiphertext(ciphertext);\n }\n catch (e) {\n return ResultErr(`unsealCiphertext :: ${e}`);\n }\n return ResultOk(unsealed);\n};\n/**\n * Uses the privateKey of `permit.sealingPair` to recursively unseal any contained `SealedItems`.\n * If `item` is a single `SealedItem` it will be individually.\n * NOTE: Only unseals typed `SealedItem`s returned from `FHE.sealoutputTyped` and the FHE bindings' `e____.sealTyped`.\n *\n * @param {any | any[]} item - Array, object, or item. Any nested `SealedItems` will be unsealed.\n * @returns - Recursively unsealed data in the target type, SealedBool -> boolean, SealedAddress -> string, etc.\n */\nfunction unseal(item, account, hash) {\n const resolvedAccount = account ?? _sdkStore.getState().account;\n const resolvedHash = hash ?? permitStore.getActivePermitHash(resolvedAccount);\n if (resolvedAccount == null || resolvedHash == null) {\n return ResultErr(`unseal :: PermitV2 hash not provided and active PermitV2 not found`);\n }\n const permit = permitStore.getPermit(resolvedAccount, resolvedHash);\n if (permit == null) {\n return ResultErr(`unseal :: PermitV2 with account <${account}> and hash <${hash}> not found`);\n }\n let unsealed;\n try {\n unsealed = permit.unseal(item);\n }\n catch (e) {\n return ResultErr(`unseal :: ${e}`);\n }\n return ResultOk(unsealed);\n}\n// Export\nexport const fhenixsdk = {\n store: _sdkStore,\n initialize,\n createPermit,\n importPermit,\n selectActivePermit,\n getPermit,\n getPermission,\n getAllPermits,\n encrypt,\n unsealCiphertext,\n unseal,\n};\n//# sourceMappingURL=index.js.map"],"names":["toHexString","BN_0","assertArgument","require","this","naclUtil.decodeBase64","nacl.box","nacl.randomBytes","naclUtil.encodeBase64","wasm","EncryptionTypes","FheUType","getPermit","initSDK","tfhe_encrypt_bool","tfhe_encrypt_uint8","tfhe_encrypt_uint16","tfhe_encrypt_uint32","tfhe_encrypt_uint64","tfhe_encrypt_uint128","tfhe_encrypt_uint256","tfhe_encrypt_address"],"mappings":"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,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;IACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;IACtF,OAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;IACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;IACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;IACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;IACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;IACtF,OAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;IACtF,OAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;IACtF,OAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;IACtF,OAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;IACtF,OAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;IACtF,OAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;IACtF,OAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;AACvF;IACA,GAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE;WACtE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG;IAC7E,OAAM,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;AACnB;IACA,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;IAClC,KAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;IACrB,KAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5B,KAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACpB,KAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5B,KAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACpB,KAAI,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/B,KAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;IACrB,KAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B;IACA,KAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACpB,KAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5B,KAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACpB,KAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7B,KAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;IACrB,KAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,KAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;IACrB,KAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B;IACA,KAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;IACrB,KAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7B,KAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACtB,KAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5B,KAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;IACrB,KAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,KAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACpB,KAAI,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/B;IACA,KAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACtB,KAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5B,KAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;IACrB,KAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5B,KAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACpB,KAAI,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/B,KAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;IACrB,KAAI,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/B;IACA,KAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACpB,KAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5B,KAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACpB,KAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5B,KAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACpB,KAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,KAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACpB,KAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B;IACA,KAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACpB,KAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5B,KAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACpB,KAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5B,KAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACpB,KAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,KAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACpB,KAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B;IACA,KAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;IACrB,KAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7B,KAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACtB,KAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5B,KAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;IACrB,KAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,KAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACpB,KAAI,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/B;IACA,KAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACtB,KAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7B,KAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACtB,KAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7B,KAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACtB,KAAI,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/B,KAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACtB,KAAI,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5B;IACH,IAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACtB,IAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACtB,IAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACtB,IAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACtB,IAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACtB,IAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACtB,IAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACtB,IAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACtB,IAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACtB,IAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACtB,GAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACtB,GAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACtB,GAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACtB,GAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACtB,GAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACtB,GAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB;OACE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;OACzB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;OACzB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;OACzB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;OACE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;OACzB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;OACzB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;OACzB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;OACE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;OACzB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;OACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;OACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;OACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;OACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;OACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;OACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;OACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;OACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;OACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;OACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;OACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;OACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;OACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;OACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;OACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;OACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;OACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;OACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;OACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;OACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;OACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;OACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;OACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;OACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;OACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;OACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;OACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;OACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;OACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;OACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;OACE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;OAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;OAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;OAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;OACE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;OAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;OAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;OAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;OACE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;OAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;OAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;OAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;OACE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;OAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;OAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;OAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;OACE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;OAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;OAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;OAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;OACE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;OAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;OAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;OAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;MAC3B;AACD;KACA,SAAS,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;IAChC,GAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;IACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;IACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;IACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;IACtF,OAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;IACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;IACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;IACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;IACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;IACtF,OAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;IACtF,OAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;IACtF,OAAM,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f,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACZ,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACZ,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACZ,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACZ,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACZ,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC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AG,KAAK,CAAC;IACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtE,GAAE,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB;IACA;OACE,CAAC,GAAG,CAAC,CAAC;IACR,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAA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","x_google_ignoreList":[2,3,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,29]} \ No newline at end of file diff --git a/dist/cofhe.umd.min.js b/dist/cofhe.umd.min.js new file mode 100644 index 0000000..3d232df --- /dev/null +++ b/dist/cofhe.umd.min.js @@ -0,0 +1 @@ +const __$G=typeof globalThis!=="undefined"?globalThis:typeof window!=="undefined"?window:typeof global!=="undefined"?global:typeof self!=="undefined"?self:{};(function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?factory(exports):typeof define==="function"&&define.amd?define(["exports"],factory):(global=typeof globalThis!=="undefined"?globalThis:global||self,factory(global.cofhejs={}))})(this,function(exports){"use strict";function assertIs(is,expected,value){if(!is){throw new Error(`Expected value which is \`${expected}\`, received value of type \`${typeof value}\`.`)}}function isString(value){const is=typeof value==="string";assertIs(is,"string",value)}function isNumber(value){const is=typeof value==="number"&&!Number.isNaN(value);assertIs(is,"number",value)}function isBigIntOrNumber(value){const is=typeof value==="bigint";if(!is){try{isNumber(value)}catch(e){throw new Error(`Value ${value} is not a number or bigint: ${typeof value}`)}}}const fromHexString=hexString=>{const cleanString=hexString.length%2===1?`0${hexString}`:hexString;const arr=cleanString.replace(/^0x/,"").match(/.{1,2}/g);if(!arr)return new Uint8Array;return new Uint8Array(arr.map(byte=>parseInt(byte,16)))};const toHexString$1=bytes=>bytes.reduce((str,byte)=>str+byte.toString(16).padStart(2,"0"),"");function toBigInt(value){return ethersToBigInt(value)}function toBeArray(value){return ethersToBeArray(value)}const Nibbles="0123456789abcdef";const maxValue=9007199254740991;const BN_0$1=BigInt(0);function ethersToBigInt(value){if(value instanceof Uint8Array){let result="0x0";for(const v of value){result+=Nibbles[v>>4];result+=Nibbles[v&15]}return BigInt(result)}return getBigInt(value)}function ethersToBeArray(_value){const value=getUint(_value);if(value===BN_0$1){return new Uint8Array([])}let hex=value.toString(16);if(hex.length%2){hex="0"+hex}const result=new Uint8Array(hex.length/2);for(let i=0;i=BN_0$1,"unsigned value cannot be negative");return result}function getBigInt(value){switch(typeof value){case"bigint":return value;case"number":assertArgument$1(Number.isInteger(value),"underflow");assertArgument$1(value>=-maxValue&&value<=maxValue,"overflow");return BigInt(value);case"string":try{if(value===""){throw new Error("empty string")}if(value[0]==="-"&&value[1]!=="-"){return-BigInt(value.substring(1))}return BigInt(value)}catch(e){assertArgument$1(false,`invalid BigNumberish string: ${e.message}`)}}assertArgument$1(false,"invalid BigNumberish value")}function assertArgument$1(check,message){if(!check){throw new Error(message)}}const stringToUint8Array=value=>{return new Uint8Array(value.split("").map(c=>c.charCodeAt(0)))};const bigintToUint8Array=bigNum=>{const byteLength=32;const byteArray=new Uint8Array(byteLength);const mask=BigInt(255);for(let i=0;i>=BigInt(8)}return byteArray};var commonjsGlobal=typeof globalThis!=="undefined"?globalThis:typeof window!=="undefined"?window:typeof global!=="undefined"?global:typeof self!=="undefined"?self:{};function getAugmentedNamespace(n){if(n.__esModule)return n;var f=n.default;if(typeof f=="function"){var a=function a(){if(this instanceof a){return Reflect.construct(f,arguments,this.constructor)}return f.apply(this,arguments)};a.prototype=f.prototype}else a={};Object.defineProperty(a,"__esModule",{value:true});Object.keys(n).forEach(function(k){var d=Object.getOwnPropertyDescriptor(n,k);Object.defineProperty(a,k,d.get?d:{enumerable:true,get:function(){return n[k]}})});return a}function commonjsRequire(path){throw new Error('Could not dynamically require "'+path+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var naclFast={exports:{}};var _nodeResolve_empty={};var _nodeResolve_empty$1=Object.freeze({__proto__:null,default:_nodeResolve_empty});var require$$0=getAugmentedNamespace(_nodeResolve_empty$1);(function(module){(function(nacl){var gf=function(init){var i,r=new Float64Array(16);if(init)for(i=0;i>24&255;x[i+1]=h>>16&255;x[i+2]=h>>8&255;x[i+3]=h&255;x[i+4]=l>>24&255;x[i+5]=l>>16&255;x[i+6]=l>>8&255;x[i+7]=l&255}function vn(x,xi,y,yi,n){var i,d=0;for(i=0;i>>8)-1}function crypto_verify_16(x,xi,y,yi){return vn(x,xi,y,yi,16)}function crypto_verify_32(x,xi,y,yi){return vn(x,xi,y,yi,32)}function core_salsa20(o,p,k,c){var j0=c[0]&255|(c[1]&255)<<8|(c[2]&255)<<16|(c[3]&255)<<24,j1=k[0]&255|(k[1]&255)<<8|(k[2]&255)<<16|(k[3]&255)<<24,j2=k[4]&255|(k[5]&255)<<8|(k[6]&255)<<16|(k[7]&255)<<24,j3=k[8]&255|(k[9]&255)<<8|(k[10]&255)<<16|(k[11]&255)<<24,j4=k[12]&255|(k[13]&255)<<8|(k[14]&255)<<16|(k[15]&255)<<24,j5=c[4]&255|(c[5]&255)<<8|(c[6]&255)<<16|(c[7]&255)<<24,j6=p[0]&255|(p[1]&255)<<8|(p[2]&255)<<16|(p[3]&255)<<24,j7=p[4]&255|(p[5]&255)<<8|(p[6]&255)<<16|(p[7]&255)<<24,j8=p[8]&255|(p[9]&255)<<8|(p[10]&255)<<16|(p[11]&255)<<24,j9=p[12]&255|(p[13]&255)<<8|(p[14]&255)<<16|(p[15]&255)<<24,j10=c[8]&255|(c[9]&255)<<8|(c[10]&255)<<16|(c[11]&255)<<24,j11=k[16]&255|(k[17]&255)<<8|(k[18]&255)<<16|(k[19]&255)<<24,j12=k[20]&255|(k[21]&255)<<8|(k[22]&255)<<16|(k[23]&255)<<24,j13=k[24]&255|(k[25]&255)<<8|(k[26]&255)<<16|(k[27]&255)<<24,j14=k[28]&255|(k[29]&255)<<8|(k[30]&255)<<16|(k[31]&255)<<24,j15=c[12]&255|(c[13]&255)<<8|(c[14]&255)<<16|(c[15]&255)<<24;var x0=j0,x1=j1,x2=j2,x3=j3,x4=j4,x5=j5,x6=j6,x7=j7,x8=j8,x9=j9,x10=j10,x11=j11,x12=j12,x13=j13,x14=j14,x15=j15,u;for(var i=0;i<20;i+=2){u=x0+x12|0;x4^=u<<7|u>>>32-7;u=x4+x0|0;x8^=u<<9|u>>>32-9;u=x8+x4|0;x12^=u<<13|u>>>32-13;u=x12+x8|0;x0^=u<<18|u>>>32-18;u=x5+x1|0;x9^=u<<7|u>>>32-7;u=x9+x5|0;x13^=u<<9|u>>>32-9;u=x13+x9|0;x1^=u<<13|u>>>32-13;u=x1+x13|0;x5^=u<<18|u>>>32-18;u=x10+x6|0;x14^=u<<7|u>>>32-7;u=x14+x10|0;x2^=u<<9|u>>>32-9;u=x2+x14|0;x6^=u<<13|u>>>32-13;u=x6+x2|0;x10^=u<<18|u>>>32-18;u=x15+x11|0;x3^=u<<7|u>>>32-7;u=x3+x15|0;x7^=u<<9|u>>>32-9;u=x7+x3|0;x11^=u<<13|u>>>32-13;u=x11+x7|0;x15^=u<<18|u>>>32-18;u=x0+x3|0;x1^=u<<7|u>>>32-7;u=x1+x0|0;x2^=u<<9|u>>>32-9;u=x2+x1|0;x3^=u<<13|u>>>32-13;u=x3+x2|0;x0^=u<<18|u>>>32-18;u=x5+x4|0;x6^=u<<7|u>>>32-7;u=x6+x5|0;x7^=u<<9|u>>>32-9;u=x7+x6|0;x4^=u<<13|u>>>32-13;u=x4+x7|0;x5^=u<<18|u>>>32-18;u=x10+x9|0;x11^=u<<7|u>>>32-7;u=x11+x10|0;x8^=u<<9|u>>>32-9;u=x8+x11|0;x9^=u<<13|u>>>32-13;u=x9+x8|0;x10^=u<<18|u>>>32-18;u=x15+x14|0;x12^=u<<7|u>>>32-7;u=x12+x15|0;x13^=u<<9|u>>>32-9;u=x13+x12|0;x14^=u<<13|u>>>32-13;u=x14+x13|0;x15^=u<<18|u>>>32-18}x0=x0+j0|0;x1=x1+j1|0;x2=x2+j2|0;x3=x3+j3|0;x4=x4+j4|0;x5=x5+j5|0;x6=x6+j6|0;x7=x7+j7|0;x8=x8+j8|0;x9=x9+j9|0;x10=x10+j10|0;x11=x11+j11|0;x12=x12+j12|0;x13=x13+j13|0;x14=x14+j14|0;x15=x15+j15|0;o[0]=x0>>>0&255;o[1]=x0>>>8&255;o[2]=x0>>>16&255;o[3]=x0>>>24&255;o[4]=x1>>>0&255;o[5]=x1>>>8&255;o[6]=x1>>>16&255;o[7]=x1>>>24&255;o[8]=x2>>>0&255;o[9]=x2>>>8&255;o[10]=x2>>>16&255;o[11]=x2>>>24&255;o[12]=x3>>>0&255;o[13]=x3>>>8&255;o[14]=x3>>>16&255;o[15]=x3>>>24&255;o[16]=x4>>>0&255;o[17]=x4>>>8&255;o[18]=x4>>>16&255;o[19]=x4>>>24&255;o[20]=x5>>>0&255;o[21]=x5>>>8&255;o[22]=x5>>>16&255;o[23]=x5>>>24&255;o[24]=x6>>>0&255;o[25]=x6>>>8&255;o[26]=x6>>>16&255;o[27]=x6>>>24&255;o[28]=x7>>>0&255;o[29]=x7>>>8&255;o[30]=x7>>>16&255;o[31]=x7>>>24&255;o[32]=x8>>>0&255;o[33]=x8>>>8&255;o[34]=x8>>>16&255;o[35]=x8>>>24&255;o[36]=x9>>>0&255;o[37]=x9>>>8&255;o[38]=x9>>>16&255;o[39]=x9>>>24&255;o[40]=x10>>>0&255;o[41]=x10>>>8&255;o[42]=x10>>>16&255;o[43]=x10>>>24&255;o[44]=x11>>>0&255;o[45]=x11>>>8&255;o[46]=x11>>>16&255;o[47]=x11>>>24&255;o[48]=x12>>>0&255;o[49]=x12>>>8&255;o[50]=x12>>>16&255;o[51]=x12>>>24&255;o[52]=x13>>>0&255;o[53]=x13>>>8&255;o[54]=x13>>>16&255;o[55]=x13>>>24&255;o[56]=x14>>>0&255;o[57]=x14>>>8&255;o[58]=x14>>>16&255;o[59]=x14>>>24&255;o[60]=x15>>>0&255;o[61]=x15>>>8&255;o[62]=x15>>>16&255;o[63]=x15>>>24&255}function core_hsalsa20(o,p,k,c){var j0=c[0]&255|(c[1]&255)<<8|(c[2]&255)<<16|(c[3]&255)<<24,j1=k[0]&255|(k[1]&255)<<8|(k[2]&255)<<16|(k[3]&255)<<24,j2=k[4]&255|(k[5]&255)<<8|(k[6]&255)<<16|(k[7]&255)<<24,j3=k[8]&255|(k[9]&255)<<8|(k[10]&255)<<16|(k[11]&255)<<24,j4=k[12]&255|(k[13]&255)<<8|(k[14]&255)<<16|(k[15]&255)<<24,j5=c[4]&255|(c[5]&255)<<8|(c[6]&255)<<16|(c[7]&255)<<24,j6=p[0]&255|(p[1]&255)<<8|(p[2]&255)<<16|(p[3]&255)<<24,j7=p[4]&255|(p[5]&255)<<8|(p[6]&255)<<16|(p[7]&255)<<24,j8=p[8]&255|(p[9]&255)<<8|(p[10]&255)<<16|(p[11]&255)<<24,j9=p[12]&255|(p[13]&255)<<8|(p[14]&255)<<16|(p[15]&255)<<24,j10=c[8]&255|(c[9]&255)<<8|(c[10]&255)<<16|(c[11]&255)<<24,j11=k[16]&255|(k[17]&255)<<8|(k[18]&255)<<16|(k[19]&255)<<24,j12=k[20]&255|(k[21]&255)<<8|(k[22]&255)<<16|(k[23]&255)<<24,j13=k[24]&255|(k[25]&255)<<8|(k[26]&255)<<16|(k[27]&255)<<24,j14=k[28]&255|(k[29]&255)<<8|(k[30]&255)<<16|(k[31]&255)<<24,j15=c[12]&255|(c[13]&255)<<8|(c[14]&255)<<16|(c[15]&255)<<24;var x0=j0,x1=j1,x2=j2,x3=j3,x4=j4,x5=j5,x6=j6,x7=j7,x8=j8,x9=j9,x10=j10,x11=j11,x12=j12,x13=j13,x14=j14,x15=j15,u;for(var i=0;i<20;i+=2){u=x0+x12|0;x4^=u<<7|u>>>32-7;u=x4+x0|0;x8^=u<<9|u>>>32-9;u=x8+x4|0;x12^=u<<13|u>>>32-13;u=x12+x8|0;x0^=u<<18|u>>>32-18;u=x5+x1|0;x9^=u<<7|u>>>32-7;u=x9+x5|0;x13^=u<<9|u>>>32-9;u=x13+x9|0;x1^=u<<13|u>>>32-13;u=x1+x13|0;x5^=u<<18|u>>>32-18;u=x10+x6|0;x14^=u<<7|u>>>32-7;u=x14+x10|0;x2^=u<<9|u>>>32-9;u=x2+x14|0;x6^=u<<13|u>>>32-13;u=x6+x2|0;x10^=u<<18|u>>>32-18;u=x15+x11|0;x3^=u<<7|u>>>32-7;u=x3+x15|0;x7^=u<<9|u>>>32-9;u=x7+x3|0;x11^=u<<13|u>>>32-13;u=x11+x7|0;x15^=u<<18|u>>>32-18;u=x0+x3|0;x1^=u<<7|u>>>32-7;u=x1+x0|0;x2^=u<<9|u>>>32-9;u=x2+x1|0;x3^=u<<13|u>>>32-13;u=x3+x2|0;x0^=u<<18|u>>>32-18;u=x5+x4|0;x6^=u<<7|u>>>32-7;u=x6+x5|0;x7^=u<<9|u>>>32-9;u=x7+x6|0;x4^=u<<13|u>>>32-13;u=x4+x7|0;x5^=u<<18|u>>>32-18;u=x10+x9|0;x11^=u<<7|u>>>32-7;u=x11+x10|0;x8^=u<<9|u>>>32-9;u=x8+x11|0;x9^=u<<13|u>>>32-13;u=x9+x8|0;x10^=u<<18|u>>>32-18;u=x15+x14|0;x12^=u<<7|u>>>32-7;u=x12+x15|0;x13^=u<<9|u>>>32-9;u=x13+x12|0;x14^=u<<13|u>>>32-13;u=x14+x13|0;x15^=u<<18|u>>>32-18}o[0]=x0>>>0&255;o[1]=x0>>>8&255;o[2]=x0>>>16&255;o[3]=x0>>>24&255;o[4]=x5>>>0&255;o[5]=x5>>>8&255;o[6]=x5>>>16&255;o[7]=x5>>>24&255;o[8]=x10>>>0&255;o[9]=x10>>>8&255;o[10]=x10>>>16&255;o[11]=x10>>>24&255;o[12]=x15>>>0&255;o[13]=x15>>>8&255;o[14]=x15>>>16&255;o[15]=x15>>>24&255;o[16]=x6>>>0&255;o[17]=x6>>>8&255;o[18]=x6>>>16&255;o[19]=x6>>>24&255;o[20]=x7>>>0&255;o[21]=x7>>>8&255;o[22]=x7>>>16&255;o[23]=x7>>>24&255;o[24]=x8>>>0&255;o[25]=x8>>>8&255;o[26]=x8>>>16&255;o[27]=x8>>>24&255;o[28]=x9>>>0&255;o[29]=x9>>>8&255;o[30]=x9>>>16&255;o[31]=x9>>>24&255}function crypto_core_salsa20(out,inp,k,c){core_salsa20(out,inp,k,c)}function crypto_core_hsalsa20(out,inp,k,c){core_hsalsa20(out,inp,k,c)}var sigma=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k){var z=new Uint8Array(16),x=new Uint8Array(64);var u,i;for(i=0;i<16;i++)z[i]=0;for(i=0;i<8;i++)z[i]=n[i];while(b>=64){crypto_core_salsa20(x,z,k,sigma);for(i=0;i<64;i++)c[cpos+i]=m[mpos+i]^x[i];u=1;for(i=8;i<16;i++){u=u+(z[i]&255)|0;z[i]=u&255;u>>>=8}b-=64;cpos+=64;mpos+=64}if(b>0){crypto_core_salsa20(x,z,k,sigma);for(i=0;i=64){crypto_core_salsa20(x,z,k,sigma);for(i=0;i<64;i++)c[cpos+i]=x[i];u=1;for(i=8;i<16;i++){u=u+(z[i]&255)|0;z[i]=u&255;u>>>=8}b-=64;cpos+=64}if(b>0){crypto_core_salsa20(x,z,k,sigma);for(i=0;i>>13|t1<<3)&8191;t2=key[4]&255|(key[5]&255)<<8;this.r[2]=(t1>>>10|t2<<6)&7939;t3=key[6]&255|(key[7]&255)<<8;this.r[3]=(t2>>>7|t3<<9)&8191;t4=key[8]&255|(key[9]&255)<<8;this.r[4]=(t3>>>4|t4<<12)&255;this.r[5]=t4>>>1&8190;t5=key[10]&255|(key[11]&255)<<8;this.r[6]=(t4>>>14|t5<<2)&8191;t6=key[12]&255|(key[13]&255)<<8;this.r[7]=(t5>>>11|t6<<5)&8065;t7=key[14]&255|(key[15]&255)<<8;this.r[8]=(t6>>>8|t7<<8)&8191;this.r[9]=t7>>>5&127;this.pad[0]=key[16]&255|(key[17]&255)<<8;this.pad[1]=key[18]&255|(key[19]&255)<<8;this.pad[2]=key[20]&255|(key[21]&255)<<8;this.pad[3]=key[22]&255|(key[23]&255)<<8;this.pad[4]=key[24]&255|(key[25]&255)<<8;this.pad[5]=key[26]&255|(key[27]&255)<<8;this.pad[6]=key[28]&255|(key[29]&255)<<8;this.pad[7]=key[30]&255|(key[31]&255)<<8};poly1305.prototype.blocks=function(m,mpos,bytes){var hibit=this.fin?0:1<<11;var t0,t1,t2,t3,t4,t5,t6,t7,c;var d0,d1,d2,d3,d4,d5,d6,d7,d8,d9;var h0=this.h[0],h1=this.h[1],h2=this.h[2],h3=this.h[3],h4=this.h[4],h5=this.h[5],h6=this.h[6],h7=this.h[7],h8=this.h[8],h9=this.h[9];var r0=this.r[0],r1=this.r[1],r2=this.r[2],r3=this.r[3],r4=this.r[4],r5=this.r[5],r6=this.r[6],r7=this.r[7],r8=this.r[8],r9=this.r[9];while(bytes>=16){t0=m[mpos+0]&255|(m[mpos+1]&255)<<8;h0+=t0&8191;t1=m[mpos+2]&255|(m[mpos+3]&255)<<8;h1+=(t0>>>13|t1<<3)&8191;t2=m[mpos+4]&255|(m[mpos+5]&255)<<8;h2+=(t1>>>10|t2<<6)&8191;t3=m[mpos+6]&255|(m[mpos+7]&255)<<8;h3+=(t2>>>7|t3<<9)&8191;t4=m[mpos+8]&255|(m[mpos+9]&255)<<8;h4+=(t3>>>4|t4<<12)&8191;h5+=t4>>>1&8191;t5=m[mpos+10]&255|(m[mpos+11]&255)<<8;h6+=(t4>>>14|t5<<2)&8191;t6=m[mpos+12]&255|(m[mpos+13]&255)<<8;h7+=(t5>>>11|t6<<5)&8191;t7=m[mpos+14]&255|(m[mpos+15]&255)<<8;h8+=(t6>>>8|t7<<8)&8191;h9+=t7>>>5|hibit;c=0;d0=c;d0+=h0*r0;d0+=h1*(5*r9);d0+=h2*(5*r8);d0+=h3*(5*r7);d0+=h4*(5*r6);c=d0>>>13;d0&=8191;d0+=h5*(5*r5);d0+=h6*(5*r4);d0+=h7*(5*r3);d0+=h8*(5*r2);d0+=h9*(5*r1);c+=d0>>>13;d0&=8191;d1=c;d1+=h0*r1;d1+=h1*r0;d1+=h2*(5*r9);d1+=h3*(5*r8);d1+=h4*(5*r7);c=d1>>>13;d1&=8191;d1+=h5*(5*r6);d1+=h6*(5*r5);d1+=h7*(5*r4);d1+=h8*(5*r3);d1+=h9*(5*r2);c+=d1>>>13;d1&=8191;d2=c;d2+=h0*r2;d2+=h1*r1;d2+=h2*r0;d2+=h3*(5*r9);d2+=h4*(5*r8);c=d2>>>13;d2&=8191;d2+=h5*(5*r7);d2+=h6*(5*r6);d2+=h7*(5*r5);d2+=h8*(5*r4);d2+=h9*(5*r3);c+=d2>>>13;d2&=8191;d3=c;d3+=h0*r3;d3+=h1*r2;d3+=h2*r1;d3+=h3*r0;d3+=h4*(5*r9);c=d3>>>13;d3&=8191;d3+=h5*(5*r8);d3+=h6*(5*r7);d3+=h7*(5*r6);d3+=h8*(5*r5);d3+=h9*(5*r4);c+=d3>>>13;d3&=8191;d4=c;d4+=h0*r4;d4+=h1*r3;d4+=h2*r2;d4+=h3*r1;d4+=h4*r0;c=d4>>>13;d4&=8191;d4+=h5*(5*r9);d4+=h6*(5*r8);d4+=h7*(5*r7);d4+=h8*(5*r6);d4+=h9*(5*r5);c+=d4>>>13;d4&=8191;d5=c;d5+=h0*r5;d5+=h1*r4;d5+=h2*r3;d5+=h3*r2;d5+=h4*r1;c=d5>>>13;d5&=8191;d5+=h5*r0;d5+=h6*(5*r9);d5+=h7*(5*r8);d5+=h8*(5*r7);d5+=h9*(5*r6);c+=d5>>>13;d5&=8191;d6=c;d6+=h0*r6;d6+=h1*r5;d6+=h2*r4;d6+=h3*r3;d6+=h4*r2;c=d6>>>13;d6&=8191;d6+=h5*r1;d6+=h6*r0;d6+=h7*(5*r9);d6+=h8*(5*r8);d6+=h9*(5*r7);c+=d6>>>13;d6&=8191;d7=c;d7+=h0*r7;d7+=h1*r6;d7+=h2*r5;d7+=h3*r4;d7+=h4*r3;c=d7>>>13;d7&=8191;d7+=h5*r2;d7+=h6*r1;d7+=h7*r0;d7+=h8*(5*r9);d7+=h9*(5*r8);c+=d7>>>13;d7&=8191;d8=c;d8+=h0*r8;d8+=h1*r7;d8+=h2*r6;d8+=h3*r5;d8+=h4*r4;c=d8>>>13;d8&=8191;d8+=h5*r3;d8+=h6*r2;d8+=h7*r1;d8+=h8*r0;d8+=h9*(5*r9);c+=d8>>>13;d8&=8191;d9=c;d9+=h0*r9;d9+=h1*r8;d9+=h2*r7;d9+=h3*r6;d9+=h4*r5;c=d9>>>13;d9&=8191;d9+=h5*r4;d9+=h6*r3;d9+=h7*r2;d9+=h8*r1;d9+=h9*r0;c+=d9>>>13;d9&=8191;c=(c<<2)+c|0;c=c+d0|0;d0=c&8191;c=c>>>13;d1+=c;h0=d0;h1=d1;h2=d2;h3=d3;h4=d4;h5=d5;h6=d6;h7=d7;h8=d8;h9=d9;mpos+=16;bytes-=16}this.h[0]=h0;this.h[1]=h1;this.h[2]=h2;this.h[3]=h3;this.h[4]=h4;this.h[5]=h5;this.h[6]=h6;this.h[7]=h7;this.h[8]=h8;this.h[9]=h9};poly1305.prototype.finish=function(mac,macpos){var g=new Uint16Array(10);var c,mask,f,i;if(this.leftover){i=this.leftover;this.buffer[i++]=1;for(;i<16;i++)this.buffer[i]=0;this.fin=1;this.blocks(this.buffer,0,16)}c=this.h[1]>>>13;this.h[1]&=8191;for(i=2;i<10;i++){this.h[i]+=c;c=this.h[i]>>>13;this.h[i]&=8191}this.h[0]+=c*5;c=this.h[0]>>>13;this.h[0]&=8191;this.h[1]+=c;c=this.h[1]>>>13;this.h[1]&=8191;this.h[2]+=c;g[0]=this.h[0]+5;c=g[0]>>>13;g[0]&=8191;for(i=1;i<10;i++){g[i]=this.h[i]+c;c=g[i]>>>13;g[i]&=8191}g[9]-=1<<13;mask=(c^1)-1;for(i=0;i<10;i++)g[i]&=mask;mask=~mask;for(i=0;i<10;i++)this.h[i]=this.h[i]&mask|g[i];this.h[0]=(this.h[0]|this.h[1]<<13)&65535;this.h[1]=(this.h[1]>>>3|this.h[2]<<10)&65535;this.h[2]=(this.h[2]>>>6|this.h[3]<<7)&65535;this.h[3]=(this.h[3]>>>9|this.h[4]<<4)&65535;this.h[4]=(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14)&65535;this.h[5]=(this.h[6]>>>2|this.h[7]<<11)&65535;this.h[6]=(this.h[7]>>>5|this.h[8]<<8)&65535;this.h[7]=(this.h[8]>>>8|this.h[9]<<5)&65535;f=this.h[0]+this.pad[0];this.h[0]=f&65535;for(i=1;i<8;i++){f=(this.h[i]+this.pad[i]|0)+(f>>>16)|0;this.h[i]=f&65535}mac[macpos+0]=this.h[0]>>>0&255;mac[macpos+1]=this.h[0]>>>8&255;mac[macpos+2]=this.h[1]>>>0&255;mac[macpos+3]=this.h[1]>>>8&255;mac[macpos+4]=this.h[2]>>>0&255;mac[macpos+5]=this.h[2]>>>8&255;mac[macpos+6]=this.h[3]>>>0&255;mac[macpos+7]=this.h[3]>>>8&255;mac[macpos+8]=this.h[4]>>>0&255;mac[macpos+9]=this.h[4]>>>8&255;mac[macpos+10]=this.h[5]>>>0&255;mac[macpos+11]=this.h[5]>>>8&255;mac[macpos+12]=this.h[6]>>>0&255;mac[macpos+13]=this.h[6]>>>8&255;mac[macpos+14]=this.h[7]>>>0&255;mac[macpos+15]=this.h[7]>>>8&255};poly1305.prototype.update=function(m,mpos,bytes){var i,want;if(this.leftover){want=16-this.leftover;if(want>bytes)want=bytes;for(i=0;i=16){want=bytes-bytes%16;this.blocks(m,mpos,want);mpos+=want;bytes-=want}if(bytes){for(i=0;i>16&1);m[i-1]&=65535}m[15]=t[15]-32767-(m[14]>>16&1);b=m[15]>>16&1;m[14]&=65535;sel25519(t,m,1-b)}for(i=0;i<16;i++){o[2*i]=t[i]&255;o[2*i+1]=t[i]>>8}}function neq25519(a,b){var c=new Uint8Array(32),d=new Uint8Array(32);pack25519(c,a);pack25519(d,b);return crypto_verify_32(c,0,d,0)}function par25519(a){var d=new Uint8Array(32);pack25519(d,a);return d[0]&1}function unpack25519(o,n){var i;for(i=0;i<16;i++)o[i]=n[2*i]+(n[2*i+1]<<8);o[15]&=32767}function A(o,a,b){for(var i=0;i<16;i++)o[i]=a[i]+b[i]}function Z(o,a,b){for(var i=0;i<16;i++)o[i]=a[i]-b[i]}function M(o,a,b){var v,c,t0=0,t1=0,t2=0,t3=0,t4=0,t5=0,t6=0,t7=0,t8=0,t9=0,t10=0,t11=0,t12=0,t13=0,t14=0,t15=0,t16=0,t17=0,t18=0,t19=0,t20=0,t21=0,t22=0,t23=0,t24=0,t25=0,t26=0,t27=0,t28=0,t29=0,t30=0,b0=b[0],b1=b[1],b2=b[2],b3=b[3],b4=b[4],b5=b[5],b6=b[6],b7=b[7],b8=b[8],b9=b[9],b10=b[10],b11=b[11],b12=b[12],b13=b[13],b14=b[14],b15=b[15];v=a[0];t0+=v*b0;t1+=v*b1;t2+=v*b2;t3+=v*b3;t4+=v*b4;t5+=v*b5;t6+=v*b6;t7+=v*b7;t8+=v*b8;t9+=v*b9;t10+=v*b10;t11+=v*b11;t12+=v*b12;t13+=v*b13;t14+=v*b14;t15+=v*b15;v=a[1];t1+=v*b0;t2+=v*b1;t3+=v*b2;t4+=v*b3;t5+=v*b4;t6+=v*b5;t7+=v*b6;t8+=v*b7;t9+=v*b8;t10+=v*b9;t11+=v*b10;t12+=v*b11;t13+=v*b12;t14+=v*b13;t15+=v*b14;t16+=v*b15;v=a[2];t2+=v*b0;t3+=v*b1;t4+=v*b2;t5+=v*b3;t6+=v*b4;t7+=v*b5;t8+=v*b6;t9+=v*b7;t10+=v*b8;t11+=v*b9;t12+=v*b10;t13+=v*b11;t14+=v*b12;t15+=v*b13;t16+=v*b14;t17+=v*b15;v=a[3];t3+=v*b0;t4+=v*b1;t5+=v*b2;t6+=v*b3;t7+=v*b4;t8+=v*b5;t9+=v*b6;t10+=v*b7;t11+=v*b8;t12+=v*b9;t13+=v*b10;t14+=v*b11;t15+=v*b12;t16+=v*b13;t17+=v*b14;t18+=v*b15;v=a[4];t4+=v*b0;t5+=v*b1;t6+=v*b2;t7+=v*b3;t8+=v*b4;t9+=v*b5;t10+=v*b6;t11+=v*b7;t12+=v*b8;t13+=v*b9;t14+=v*b10;t15+=v*b11;t16+=v*b12;t17+=v*b13;t18+=v*b14;t19+=v*b15;v=a[5];t5+=v*b0;t6+=v*b1;t7+=v*b2;t8+=v*b3;t9+=v*b4;t10+=v*b5;t11+=v*b6;t12+=v*b7;t13+=v*b8;t14+=v*b9;t15+=v*b10;t16+=v*b11;t17+=v*b12;t18+=v*b13;t19+=v*b14;t20+=v*b15;v=a[6];t6+=v*b0;t7+=v*b1;t8+=v*b2;t9+=v*b3;t10+=v*b4;t11+=v*b5;t12+=v*b6;t13+=v*b7;t14+=v*b8;t15+=v*b9;t16+=v*b10;t17+=v*b11;t18+=v*b12;t19+=v*b13;t20+=v*b14;t21+=v*b15;v=a[7];t7+=v*b0;t8+=v*b1;t9+=v*b2;t10+=v*b3;t11+=v*b4;t12+=v*b5;t13+=v*b6;t14+=v*b7;t15+=v*b8;t16+=v*b9;t17+=v*b10;t18+=v*b11;t19+=v*b12;t20+=v*b13;t21+=v*b14;t22+=v*b15;v=a[8];t8+=v*b0;t9+=v*b1;t10+=v*b2;t11+=v*b3;t12+=v*b4;t13+=v*b5;t14+=v*b6;t15+=v*b7;t16+=v*b8;t17+=v*b9;t18+=v*b10;t19+=v*b11;t20+=v*b12;t21+=v*b13;t22+=v*b14;t23+=v*b15;v=a[9];t9+=v*b0;t10+=v*b1;t11+=v*b2;t12+=v*b3;t13+=v*b4;t14+=v*b5;t15+=v*b6;t16+=v*b7;t17+=v*b8;t18+=v*b9;t19+=v*b10;t20+=v*b11;t21+=v*b12;t22+=v*b13;t23+=v*b14;t24+=v*b15;v=a[10];t10+=v*b0;t11+=v*b1;t12+=v*b2;t13+=v*b3;t14+=v*b4;t15+=v*b5;t16+=v*b6;t17+=v*b7;t18+=v*b8;t19+=v*b9;t20+=v*b10;t21+=v*b11;t22+=v*b12;t23+=v*b13;t24+=v*b14;t25+=v*b15;v=a[11];t11+=v*b0;t12+=v*b1;t13+=v*b2;t14+=v*b3;t15+=v*b4;t16+=v*b5;t17+=v*b6;t18+=v*b7;t19+=v*b8;t20+=v*b9;t21+=v*b10;t22+=v*b11;t23+=v*b12;t24+=v*b13;t25+=v*b14;t26+=v*b15;v=a[12];t12+=v*b0;t13+=v*b1;t14+=v*b2;t15+=v*b3;t16+=v*b4;t17+=v*b5;t18+=v*b6;t19+=v*b7;t20+=v*b8;t21+=v*b9;t22+=v*b10;t23+=v*b11;t24+=v*b12;t25+=v*b13;t26+=v*b14;t27+=v*b15;v=a[13];t13+=v*b0;t14+=v*b1;t15+=v*b2;t16+=v*b3;t17+=v*b4;t18+=v*b5;t19+=v*b6;t20+=v*b7;t21+=v*b8;t22+=v*b9;t23+=v*b10;t24+=v*b11;t25+=v*b12;t26+=v*b13;t27+=v*b14;t28+=v*b15;v=a[14];t14+=v*b0;t15+=v*b1;t16+=v*b2;t17+=v*b3;t18+=v*b4;t19+=v*b5;t20+=v*b6;t21+=v*b7;t22+=v*b8;t23+=v*b9;t24+=v*b10;t25+=v*b11;t26+=v*b12;t27+=v*b13;t28+=v*b14;t29+=v*b15;v=a[15];t15+=v*b0;t16+=v*b1;t17+=v*b2;t18+=v*b3;t19+=v*b4;t20+=v*b5;t21+=v*b6;t22+=v*b7;t23+=v*b8;t24+=v*b9;t25+=v*b10;t26+=v*b11;t27+=v*b12;t28+=v*b13;t29+=v*b14;t30+=v*b15;t0+=38*t16;t1+=38*t17;t2+=38*t18;t3+=38*t19;t4+=38*t20;t5+=38*t21;t6+=38*t22;t7+=38*t23;t8+=38*t24;t9+=38*t25;t10+=38*t26;t11+=38*t27;t12+=38*t28;t13+=38*t29;t14+=38*t30;c=1;v=t0+c+65535;c=Math.floor(v/65536);t0=v-c*65536;v=t1+c+65535;c=Math.floor(v/65536);t1=v-c*65536;v=t2+c+65535;c=Math.floor(v/65536);t2=v-c*65536;v=t3+c+65535;c=Math.floor(v/65536);t3=v-c*65536;v=t4+c+65535;c=Math.floor(v/65536);t4=v-c*65536;v=t5+c+65535;c=Math.floor(v/65536);t5=v-c*65536;v=t6+c+65535;c=Math.floor(v/65536);t6=v-c*65536;v=t7+c+65535;c=Math.floor(v/65536);t7=v-c*65536;v=t8+c+65535;c=Math.floor(v/65536);t8=v-c*65536;v=t9+c+65535;c=Math.floor(v/65536);t9=v-c*65536;v=t10+c+65535;c=Math.floor(v/65536);t10=v-c*65536;v=t11+c+65535;c=Math.floor(v/65536);t11=v-c*65536;v=t12+c+65535;c=Math.floor(v/65536);t12=v-c*65536;v=t13+c+65535;c=Math.floor(v/65536);t13=v-c*65536;v=t14+c+65535;c=Math.floor(v/65536);t14=v-c*65536;v=t15+c+65535;c=Math.floor(v/65536);t15=v-c*65536;t0+=c-1+37*(c-1);c=1;v=t0+c+65535;c=Math.floor(v/65536);t0=v-c*65536;v=t1+c+65535;c=Math.floor(v/65536);t1=v-c*65536;v=t2+c+65535;c=Math.floor(v/65536);t2=v-c*65536;v=t3+c+65535;c=Math.floor(v/65536);t3=v-c*65536;v=t4+c+65535;c=Math.floor(v/65536);t4=v-c*65536;v=t5+c+65535;c=Math.floor(v/65536);t5=v-c*65536;v=t6+c+65535;c=Math.floor(v/65536);t6=v-c*65536;v=t7+c+65535;c=Math.floor(v/65536);t7=v-c*65536;v=t8+c+65535;c=Math.floor(v/65536);t8=v-c*65536;v=t9+c+65535;c=Math.floor(v/65536);t9=v-c*65536;v=t10+c+65535;c=Math.floor(v/65536);t10=v-c*65536;v=t11+c+65535;c=Math.floor(v/65536);t11=v-c*65536;v=t12+c+65535;c=Math.floor(v/65536);t12=v-c*65536;v=t13+c+65535;c=Math.floor(v/65536);t13=v-c*65536;v=t14+c+65535;c=Math.floor(v/65536);t14=v-c*65536;v=t15+c+65535;c=Math.floor(v/65536);t15=v-c*65536;t0+=c-1+37*(c-1);o[0]=t0;o[1]=t1;o[2]=t2;o[3]=t3;o[4]=t4;o[5]=t5;o[6]=t6;o[7]=t7;o[8]=t8;o[9]=t9;o[10]=t10;o[11]=t11;o[12]=t12;o[13]=t13;o[14]=t14;o[15]=t15}function S(o,a){M(o,a,a)}function inv25519(o,i){var c=gf();var a;for(a=0;a<16;a++)c[a]=i[a];for(a=253;a>=0;a--){S(c,c);if(a!==2&&a!==4)M(c,c,i)}for(a=0;a<16;a++)o[a]=c[a]}function pow2523(o,i){var c=gf();var a;for(a=0;a<16;a++)c[a]=i[a];for(a=250;a>=0;a--){S(c,c);if(a!==1)M(c,c,i)}for(a=0;a<16;a++)o[a]=c[a]}function crypto_scalarmult(q,n,p){var z=new Uint8Array(32);var x=new Float64Array(80),r,i;var a=gf(),b=gf(),c=gf(),d=gf(),e=gf(),f=gf();for(i=0;i<31;i++)z[i]=n[i];z[31]=n[31]&127|64;z[0]&=248;unpack25519(x,p);for(i=0;i<16;i++){b[i]=x[i];d[i]=a[i]=c[i]=0}a[0]=d[0]=1;for(i=254;i>=0;--i){r=z[i>>>3]>>>(i&7)&1;sel25519(a,b,r);sel25519(c,d,r);A(e,a,c);Z(a,a,c);A(c,b,d);Z(b,b,d);S(d,e);S(f,a);M(a,c,a);M(c,b,e);A(e,a,c);Z(a,a,c);S(b,a);Z(c,d,f);M(a,c,_121665);A(a,a,d);M(c,c,a);M(a,d,f);M(d,b,x);S(b,e);sel25519(a,b,r);sel25519(c,d,r)}for(i=0;i<16;i++){x[i+16]=a[i];x[i+32]=c[i];x[i+48]=b[i];x[i+64]=d[i]}var x32=x.subarray(32);var x16=x.subarray(16);inv25519(x32,x32);M(x16,x16,x32);pack25519(q,x16);return 0}function crypto_scalarmult_base(q,n){return crypto_scalarmult(q,n,_9)}function crypto_box_keypair(y,x){randombytes(x,32);return crypto_scalarmult_base(y,x)}function crypto_box_beforenm(k,y,x){var s=new Uint8Array(32);crypto_scalarmult(s,x,y);return crypto_core_hsalsa20(k,_0,s,sigma)}var crypto_box_afternm=crypto_secretbox;var crypto_box_open_afternm=crypto_secretbox_open;function crypto_box(c,m,d,n,y,x){var k=new Uint8Array(32);crypto_box_beforenm(k,y,x);return crypto_box_afternm(c,m,d,n,k)}function crypto_box_open(m,c,d,n,y,x){var k=new Uint8Array(32);crypto_box_beforenm(k,y,x);return crypto_box_open_afternm(m,c,d,n,k)}var K=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function crypto_hashblocks_hl(hh,hl,m,n){var wh=new Int32Array(16),wl=new Int32Array(16),bh0,bh1,bh2,bh3,bh4,bh5,bh6,bh7,bl0,bl1,bl2,bl3,bl4,bl5,bl6,bl7,th,tl,i,j,h,l,a,b,c,d;var ah0=hh[0],ah1=hh[1],ah2=hh[2],ah3=hh[3],ah4=hh[4],ah5=hh[5],ah6=hh[6],ah7=hh[7],al0=hl[0],al1=hl[1],al2=hl[2],al3=hl[3],al4=hl[4],al5=hl[5],al6=hl[6],al7=hl[7];var pos=0;while(n>=128){for(i=0;i<16;i++){j=8*i+pos;wh[i]=m[j+0]<<24|m[j+1]<<16|m[j+2]<<8|m[j+3];wl[i]=m[j+4]<<24|m[j+5]<<16|m[j+6]<<8|m[j+7]}for(i=0;i<80;i++){bh0=ah0;bh1=ah1;bh2=ah2;bh3=ah3;bh4=ah4;bh5=ah5;bh6=ah6;bh7=ah7;bl0=al0;bl1=al1;bl2=al2;bl3=al3;bl4=al4;bl5=al5;bl6=al6;bl7=al7;h=ah7;l=al7;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=(ah4>>>14|al4<<32-14)^(ah4>>>18|al4<<32-18)^(al4>>>41-32|ah4<<32-(41-32));l=(al4>>>14|ah4<<32-14)^(al4>>>18|ah4<<32-18)^(ah4>>>41-32|al4<<32-(41-32));a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;h=ah4&ah5^~ah4&ah6;l=al4&al5^~al4&al6;a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;h=K[i*2];l=K[i*2+1];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;h=wh[i%16];l=wl[i%16];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;th=c&65535|d<<16;tl=a&65535|b<<16;h=th;l=tl;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=(ah0>>>28|al0<<32-28)^(al0>>>34-32|ah0<<32-(34-32))^(al0>>>39-32|ah0<<32-(39-32));l=(al0>>>28|ah0<<32-28)^(ah0>>>34-32|al0<<32-(34-32))^(ah0>>>39-32|al0<<32-(39-32));a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;h=ah0&ah1^ah0&ah2^ah1&ah2;l=al0&al1^al0&al2^al1&al2;a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;bh7=c&65535|d<<16;bl7=a&65535|b<<16;h=bh3;l=bl3;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=th;l=tl;a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;bh3=c&65535|d<<16;bl3=a&65535|b<<16;ah1=bh0;ah2=bh1;ah3=bh2;ah4=bh3;ah5=bh4;ah6=bh5;ah7=bh6;ah0=bh7;al1=bl0;al2=bl1;al3=bl2;al4=bl3;al5=bl4;al6=bl5;al7=bl6;al0=bl7;if(i%16===15){for(j=0;j<16;j++){h=wh[j];l=wl[j];a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=wh[(j+9)%16];l=wl[(j+9)%16];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;th=wh[(j+1)%16];tl=wl[(j+1)%16];h=(th>>>1|tl<<32-1)^(th>>>8|tl<<32-8)^th>>>7;l=(tl>>>1|th<<32-1)^(tl>>>8|th<<32-8)^(tl>>>7|th<<32-7);a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;th=wh[(j+14)%16];tl=wl[(j+14)%16];h=(th>>>19|tl<<32-19)^(tl>>>61-32|th<<32-(61-32))^th>>>6;l=(tl>>>19|th<<32-19)^(th>>>61-32|tl<<32-(61-32))^(tl>>>6|th<<32-6);a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;wh[j]=c&65535|d<<16;wl[j]=a&65535|b<<16}}}h=ah0;l=al0;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[0];l=hl[0];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[0]=ah0=c&65535|d<<16;hl[0]=al0=a&65535|b<<16;h=ah1;l=al1;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[1];l=hl[1];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[1]=ah1=c&65535|d<<16;hl[1]=al1=a&65535|b<<16;h=ah2;l=al2;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[2];l=hl[2];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[2]=ah2=c&65535|d<<16;hl[2]=al2=a&65535|b<<16;h=ah3;l=al3;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[3];l=hl[3];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[3]=ah3=c&65535|d<<16;hl[3]=al3=a&65535|b<<16;h=ah4;l=al4;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[4];l=hl[4];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[4]=ah4=c&65535|d<<16;hl[4]=al4=a&65535|b<<16;h=ah5;l=al5;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[5];l=hl[5];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[5]=ah5=c&65535|d<<16;hl[5]=al5=a&65535|b<<16;h=ah6;l=al6;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[6];l=hl[6];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[6]=ah6=c&65535|d<<16;hl[6]=al6=a&65535|b<<16;h=ah7;l=al7;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[7];l=hl[7];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[7]=ah7=c&65535|d<<16;hl[7]=al7=a&65535|b<<16;pos+=128;n-=128}return n}function crypto_hash(out,m,n){var hh=new Int32Array(8),hl=new Int32Array(8),x=new Uint8Array(256),i,b=n;hh[0]=1779033703;hh[1]=3144134277;hh[2]=1013904242;hh[3]=2773480762;hh[4]=1359893119;hh[5]=2600822924;hh[6]=528734635;hh[7]=1541459225;hl[0]=4089235720;hl[1]=2227873595;hl[2]=4271175723;hl[3]=1595750129;hl[4]=2917565137;hl[5]=725511199;hl[6]=4215389547;hl[7]=327033209;crypto_hashblocks_hl(hh,hl,m,n);n%=128;for(i=0;i=0;--i){b=s[i/8|0]>>(i&7)&1;cswap(p,q,b);add(q,p);add(p,p);cswap(p,q,b)}}function scalarbase(p,s){var q=[gf(),gf(),gf(),gf()];set25519(q[0],X);set25519(q[1],Y);set25519(q[2],gf1);M(q[3],X,Y);scalarmult(p,q,s)}function crypto_sign_keypair(pk,sk,seeded){var d=new Uint8Array(64);var p=[gf(),gf(),gf(),gf()];var i;if(!seeded)randombytes(sk,32);crypto_hash(d,sk,32);d[0]&=248;d[31]&=127;d[31]|=64;scalarbase(p,d);pack(pk,p);for(i=0;i<32;i++)sk[i+32]=pk[i];return 0}var L=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function modL(r,x){var carry,i,j,k;for(i=63;i>=32;--i){carry=0;for(j=i-32,k=i-12;j>4)*L[j];carry=x[j]>>8;x[j]&=255}for(j=0;j<32;j++)x[j]-=carry*L[j];for(i=0;i<32;i++){x[i+1]+=x[i]>>8;r[i]=x[i]&255}}function reduce(r){var x=new Float64Array(64),i;for(i=0;i<64;i++)x[i]=r[i];for(i=0;i<64;i++)r[i]=0;modL(r,x)}function crypto_sign(sm,m,n,sk){var d=new Uint8Array(64),h=new Uint8Array(64),r=new Uint8Array(64);var i,j,x=new Float64Array(64);var p=[gf(),gf(),gf(),gf()];crypto_hash(d,sk,32);d[0]&=248;d[31]&=127;d[31]|=64;var smlen=n+64;for(i=0;i>7)Z(r[0],gf0,r[0]);M(r[3],r[0],r[1]);return 0}function crypto_sign_open(m,sm,n,pk){var i;var t=new Uint8Array(32),h=new Uint8Array(64);var p=[gf(),gf(),gf(),gf()],q=[gf(),gf(),gf(),gf()];if(n<64)return-1;if(unpackneg(q,pk))return-1;for(i=0;i=0};nacl.sign.keyPair=function(){var pk=new Uint8Array(crypto_sign_PUBLICKEYBYTES);var sk=new Uint8Array(crypto_sign_SECRETKEYBYTES);crypto_sign_keypair(pk,sk);return{publicKey:pk,secretKey:sk}};nacl.sign.keyPair.fromSecretKey=function(secretKey){checkArrayTypes(secretKey);if(secretKey.length!==crypto_sign_SECRETKEYBYTES)throw new Error("bad secret key size");var pk=new Uint8Array(crypto_sign_PUBLICKEYBYTES);for(var i=0;i{let parsedData=undefined;try{if(typeof ciphertext==="string"){parsedData=JSON.parse(ciphertext)}}catch{}if(!parsedData){const toDecrypt=typeof ciphertext==="string"?fromHexString(ciphertext):ciphertext;const jsonString=Buffer.from(toDecrypt).toString("utf8");parsedData=JSON.parse(jsonString)}if(!parsedData){throw new Error("Failed to parse sealed data")}const nonce=naclUtilExports.decodeBase64(parsedData.nonce);const ephemPublicKey=naclUtilExports.decodeBase64(parsedData.ephemPublicKey);const dataToDecrypt=naclUtilExports.decodeBase64(parsedData.ciphertext);const decryptedMessage=naclFastExports.box.open(dataToDecrypt,nonce,ephemPublicKey,fromHexString(this.privateKey));if(!decryptedMessage){throw new Error("Failed to decrypt message")}return toBigInt(decryptedMessage)};if(privateKey.length!==PRIVATE_KEY_LENGTH){throw new Error(`Private key must be of length ${PRIVATE_KEY_LENGTH}`)}if(publicKey.length!==PUBLIC_KEY_LENGTH){throw new Error(`Private key must be of length ${PUBLIC_KEY_LENGTH}`)}this.privateKey=privateKey;this.publicKey=publicKey}}SealingKey.seal=(value,publicKey)=>{isString(publicKey);isBigIntOrNumber(value);const ephemeralKeyPair=naclFastExports.box.keyPair();const nonce=naclFastExports.randomBytes(naclFastExports.box.nonceLength);const encryptedMessage=naclFastExports.box(toBeArray(value),nonce,fromHexString(publicKey),ephemeralKeyPair.secretKey);const output={version:"x25519-xsalsa20-poly1305",nonce:naclUtilExports.encodeBase64(nonce),ephemPublicKey:naclUtilExports.encodeBase64(ephemeralKeyPair.publicKey),ciphertext:naclUtilExports.encodeBase64(encryptedMessage)};return toHexString$1(Buffer.from(JSON.stringify(output)))};const GenerateSealingKey=async()=>{const sodiumKeypair=naclFastExports.box.keyPair();return new SealingKey(toHexString$1(sodiumKeypair.secretKey),toHexString$1(sodiumKeypair.publicKey))};let wasm$1;const heap=new Array(128).fill(undefined);heap.push(undefined,null,true,false);let heap_next=heap.length;function addHeapObject(obj){if(heap_next===heap.length)heap.push(heap.length+1);const idx=heap_next;heap_next=heap[idx];heap[idx]=obj;return idx}function getObject(idx){return heap[idx]}function dropObject(idx){if(idx<132)return;heap[idx]=heap_next;heap_next=idx}function takeObject(idx){const ret=getObject(idx);dropObject(idx);return ret}const cachedTextDecoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-8",{ignoreBOM:true,fatal:true}):{decode:()=>{throw Error("TextDecoder not available")}};if(typeof TextDecoder!=="undefined"){cachedTextDecoder.decode()}let cachedUint8Memory0=null;function getUint8Memory0(){if(cachedUint8Memory0===null||cachedUint8Memory0.byteLength===0){cachedUint8Memory0=new Uint8Array(wasm$1.memory.buffer)}return cachedUint8Memory0}function getStringFromWasm0(ptr,len){ptr=ptr>>>0;return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr,ptr+len))}function isLikeNone(x){return x===undefined||x===null}let cachedBigInt64Memory0=null;function getBigInt64Memory0(){if(cachedBigInt64Memory0===null||cachedBigInt64Memory0.byteLength===0){cachedBigInt64Memory0=new BigInt64Array(wasm$1.memory.buffer)}return cachedBigInt64Memory0}let cachedInt32Memory0=null;function getInt32Memory0(){if(cachedInt32Memory0===null||cachedInt32Memory0.byteLength===0){cachedInt32Memory0=new Int32Array(wasm$1.memory.buffer)}return cachedInt32Memory0}function debugString(val){const type=typeof val;if(type=="number"||type=="boolean"||val==null){return`${val}`}if(type=="string"){return`"${val}"`}if(type=="symbol"){const description=val.description;if(description==null){return"Symbol"}else{return`Symbol(${description})`}}if(type=="function"){const name=val.name;if(typeof name=="string"&&name.length>0){return`Function(${name})`}else{return"Function"}}if(Array.isArray(val)){const length=val.length;let debug="[";if(length>0){debug+=debugString(val[0])}for(let i=1;i1){className=builtInMatches[1]}else{return toString.call(val)}if(className=="Object"){try{return"Object("+JSON.stringify(val)+")"}catch(_){return"Object"}}if(val instanceof Error){return`${val.name}: ${val.message}\n${val.stack}`}return className}let WASM_VECTOR_LEN=0;const cachedTextEncoder=typeof TextEncoder!=="undefined"?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}};const encodeString=typeof cachedTextEncoder.encodeInto==="function"?function(arg,view){return cachedTextEncoder.encodeInto(arg,view)}:function(arg,view){const buf=cachedTextEncoder.encode(arg);view.set(buf);return{read:arg.length,written:buf.length}};function passStringToWasm0(arg,malloc,realloc){if(realloc===undefined){const buf=cachedTextEncoder.encode(arg);const ptr=malloc(buf.length,1)>>>0;getUint8Memory0().subarray(ptr,ptr+buf.length).set(buf);WASM_VECTOR_LEN=buf.length;return ptr}let len=arg.length;let ptr=malloc(len,1)>>>0;const mem=getUint8Memory0();let offset=0;for(;offset127)break;mem[ptr+offset]=code}if(offset!==len){if(offset!==0){arg=arg.slice(offset)}ptr=realloc(ptr,len,len=offset+arg.length*3,1)>>>0;const view=getUint8Memory0().subarray(ptr+offset,ptr+len);const ret=encodeString(arg,view);offset+=ret.written}WASM_VECTOR_LEN=offset;return ptr}function _assertClass(instance,klass){if(!(instance instanceof klass)){throw new Error(`expected instance of ${klass.name}`)}return instance.ptr}function getArrayU8FromWasm0(ptr,len){ptr=ptr>>>0;return getUint8Memory0().subarray(ptr/1,ptr/1+len)}function passArray8ToWasm0(arg,malloc){const ptr=malloc(arg.length*1,1)>>>0;getUint8Memory0().set(arg,ptr/1);WASM_VECTOR_LEN=arg.length;return ptr}function handleError(f,args){try{return f.apply(this,args)}catch(e){wasm$1.__wbindgen_exn_store(addHeapObject(e))}}class CompactFheBool{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheBool.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_compactfhebool_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm$1.compactfhebool_encrypt_with_compact_public_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheBool.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfhebool_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfhebool_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfhebool_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheBool.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfhebool_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfhebool_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheBool.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint128{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint128.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_compactfheuint128_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm$1.compactfheuint128_encrypt_with_compact_public_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint128_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint128_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint128_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint128_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint16{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint16.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_compactfheuint16_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm$1.compactfheuint16_encrypt_with_compact_public_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint16_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint16_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint16_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint16_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint160{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint160.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_compactfheuint160_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm$1.compactfheuint160_encrypt_with_compact_public_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint160_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint160_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint160_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint160_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint256{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint256.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_compactfheuint256_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm$1.compactfheuint256_encrypt_with_compact_public_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint256_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint256_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint256_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint256_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint32{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint32.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_compactfheuint32_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm$1.compactfheuint32_encrypt_with_compact_public_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint32_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint32_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint32_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint32_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint64{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint64.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_compactfheuint64_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm$1.compactfheuint64_encrypt_with_compact_public_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint64_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint64_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint64_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint64_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint8{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint8.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_compactfheuint8_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm$1.compactfheuint8_encrypt_with_compact_public_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint8_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint8_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.compactfheuint8_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.compactfheuint8_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheBool{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheBool.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fhebool_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fhebool_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fhebool_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fhebool_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fhebool_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fhebool_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0!==0}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fhebool_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fhebool_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fhebool_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fhebool_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheInt128{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt128.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheint128_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint128_encrypt_with_client_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheint128_encrypt_with_public_key(retptr,addHeapObject(value),public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheint128_encrypt_with_compressed_public_key(retptr,addHeapObject(value),compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheint128_encrypt_with_compact_public_key(retptr,addHeapObject(value),compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint128_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return takeObject(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint128_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint128_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint128_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint128_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheInt16{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt16.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheint16_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint16_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheint16_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheint16_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheint16_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint16_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint16_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint16_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint16_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint16_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheInt160{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt160.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheint160_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint160_encrypt_with_client_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheint160_encrypt_with_public_key(retptr,addHeapObject(value),public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheint160_encrypt_with_compressed_public_key(retptr,addHeapObject(value),compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheint160_encrypt_with_compact_public_key(retptr,addHeapObject(value),compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint160_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return takeObject(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint160_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint160_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint160_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint160_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheInt256{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt256.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheint256_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint256_encrypt_with_client_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheint256_encrypt_with_public_key(retptr,addHeapObject(value),public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheint256_encrypt_with_compressed_public_key(retptr,addHeapObject(value),compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheint256_encrypt_with_compact_public_key(retptr,addHeapObject(value),compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint256_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return takeObject(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint256_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint256_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint256_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint256_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheInt32{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt32.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheint32_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint32_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheint32_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheint32_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheint32_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint32_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint32_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint32_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint32_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint32_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheInt64{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt64.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheint64_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint64_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheint64_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheint64_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheint64_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint64_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getBigInt64Memory0()[retptr/8+0];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}return r0}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint64_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint64_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint64_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint64_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheInt8{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt8.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheint8_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint8_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheint8_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheint8_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheint8_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheint8_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint8_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint8_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheint8_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheint8_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheUint128{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint128.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheuint128_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint128_encrypt_with_client_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheuint128_encrypt_with_public_key(retptr,addHeapObject(value),public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheuint128_encrypt_with_compressed_public_key(retptr,addHeapObject(value),compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheuint128_encrypt_with_compact_public_key(retptr,addHeapObject(value),compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint128_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return takeObject(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint128_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint128_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint128_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint128_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheUint16{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint16.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheuint16_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint16_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheuint16_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheuint16_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheuint16_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint16_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint16_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint16_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint16_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint16_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheUint160{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint160.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheuint160_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint160_encrypt_with_client_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheuint160_encrypt_with_public_key(retptr,addHeapObject(value),public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheuint160_encrypt_with_compressed_public_key(retptr,addHeapObject(value),compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheuint160_encrypt_with_compact_public_key(retptr,addHeapObject(value),compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint160_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return takeObject(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint160_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint160_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint160_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint160_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheUint256{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint256.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheuint256_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint256_encrypt_with_client_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheuint256_encrypt_with_public_key(retptr,addHeapObject(value),public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheuint256_encrypt_with_compressed_public_key(retptr,addHeapObject(value),compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheuint256_encrypt_with_compact_public_key(retptr,addHeapObject(value),compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint256_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return takeObject(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint256_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint256_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint256_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint256_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheUint32{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint32.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheuint32_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint32_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheuint32_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheuint32_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheuint32_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint32_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0>>>0}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint32_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint32_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint32_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint32_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheUint64{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint64.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheuint64_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint64_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheuint64_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheuint64_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheuint64_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint64_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getBigInt64Memory0()[retptr/8+0];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}return BigInt.asUintN(64,r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint64_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint64_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint64_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint64_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class FheUint8{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint8.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_fheuint8_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint8_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm$1.fheuint8_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm$1.fheuint8_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm$1.fheuint8_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.fheuint8_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint8_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint8_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.fheuint8_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.fheuint8_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class TfheClientKey{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(TfheClientKey.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_tfheclientkey_free(ptr)}static generate(config){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(config,TfheConfig);wasm$1.tfheclientkey_generate(retptr,config.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheClientKey.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static generate_with_seed(config,seed){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(config,TfheConfig);wasm$1.tfheclientkey_generate_with_seed(retptr,config.__wbg_ptr,addHeapObject(seed));var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheClientKey.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.tfheclientkey_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.tfheclientkey_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheClientKey.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class TfheCompactPublicKey{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(TfheCompactPublicKey.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_tfhecompactpublickey_free(ptr)}static new(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.tfhecompactpublickey_new(retptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheCompactPublicKey.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.tfhecompactpublickey_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.tfhecompactpublickey_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheCompactPublicKey.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class TfheCompressedPublicKey{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(TfheCompressedPublicKey.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_tfhecompressedpublickey_free(ptr)}static new(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.tfhecompressedpublickey_new(retptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheCompressedPublicKey.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}decompress(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.tfhecompressedpublickey_decompress(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfhePublicKey.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.tfhecompressedpublickey_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.tfhecompressedpublickey_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheCompressedPublicKey.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}class TfheConfig{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(TfheConfig.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_tfheconfig_free(ptr)}}class TfheConfigBuilder{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(TfheConfigBuilder.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_tfheconfigbuilder_free(ptr)}static default(){const ret=wasm$1.tfheconfigbuilder_default();return TfheConfigBuilder.__wrap(ret)}static default_with_small_encryption(){const ret=wasm$1.tfheconfigbuilder_default_with_small_encryption();return TfheConfigBuilder.__wrap(ret)}static default_with_big_encryption(){const ret=wasm$1.tfheconfigbuilder_default();return TfheConfigBuilder.__wrap(ret)}build(){const ptr=this.__destroy_into_raw();const ret=wasm$1.tfheconfigbuilder_build(ptr);return TfheConfig.__wrap(ret)}}class TfhePublicKey{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(TfhePublicKey.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm$1.__wbg_tfhepublickey_free(ptr)}static new(client_key){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm$1.tfhepublickey_new(retptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfhePublicKey.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);wasm$1.tfhepublickey_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm$1.__wbindgen_free(r0,r1*1);return v1}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm$1.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm$1.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm$1.tfhepublickey_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfhePublicKey.__wrap(r0)}finally{wasm$1.__wbindgen_add_to_stack_pointer(16)}}}async function __wbg_load(module,imports){if(typeof Response==="function"&&module instanceof Response){if(typeof WebAssembly.instantiateStreaming==="function"){try{return await WebAssembly.instantiateStreaming(module,imports)}catch(e){if(module.headers.get("Content-Type")!="application/wasm"){console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",e)}else{throw e}}}const bytes=await module.arrayBuffer();return await WebAssembly.instantiate(bytes,imports)}else{const instance=await WebAssembly.instantiate(module,imports);if(instance instanceof WebAssembly.Instance){return{instance:instance,module:module}}else{return instance}}}function __wbg_get_imports(){const imports={};imports.wbg={};imports.wbg.__wbindgen_bigint_from_u64=function(arg0){const ret=BigInt.asUintN(64,arg0);return addHeapObject(ret)};imports.wbg.__wbindgen_shr=function(arg0,arg1){const ret=getObject(arg0)>>getObject(arg1);return addHeapObject(ret)};imports.wbg.__wbindgen_object_drop_ref=function(arg0){takeObject(arg0)};imports.wbg.__wbindgen_bigint_from_i64=function(arg0){const ret=arg0;return addHeapObject(ret)};imports.wbg.__wbindgen_jsval_eq=function(arg0,arg1){const ret=getObject(arg0)===getObject(arg1);return ret};imports.wbg.__wbindgen_error_new=function(arg0,arg1){const ret=new Error(getStringFromWasm0(arg0,arg1));return addHeapObject(ret)};imports.wbg.__wbindgen_bigint_from_i128=function(arg0,arg1){const ret=arg0<>>0,arg2>>>0);return addHeapObject(ret)};imports.wbg.__wbg_new_bc5d9aad3f9ac80e=function(arg0){const ret=new Uint8Array(getObject(arg0));return addHeapObject(ret)};imports.wbg.__wbg_set_4b3aa8445ac1e91c=function(arg0,arg1,arg2){getObject(arg0).set(getObject(arg1),arg2>>>0)};imports.wbg.__wbg_newwithlength_89eca18f2603a999=function(arg0){const ret=new Uint8Array(arg0>>>0);return addHeapObject(ret)};imports.wbg.__wbg_subarray_7649d027b2b141b3=function(arg0,arg1,arg2){const ret=getObject(arg0).subarray(arg1>>>0,arg2>>>0);return addHeapObject(ret)};imports.wbg.__wbindgen_object_clone_ref=function(arg0){const ret=getObject(arg0);return addHeapObject(ret)};imports.wbg.__wbindgen_bigint_get_as_i64=function(arg0,arg1){const v=getObject(arg1);const ret=typeof v==="bigint"?v:undefined;getBigInt64Memory0()[arg0/8+1]=isLikeNone(ret)?BigInt(0):ret;getInt32Memory0()[arg0/4+0]=!isLikeNone(ret)};imports.wbg.__wbindgen_debug_string=function(arg0,arg1){const ret=debugString(getObject(arg1));const ptr1=passStringToWasm0(ret,wasm$1.__wbindgen_malloc,wasm$1.__wbindgen_realloc);const len1=WASM_VECTOR_LEN;getInt32Memory0()[arg0/4+1]=len1;getInt32Memory0()[arg0/4+0]=ptr1};imports.wbg.__wbindgen_throw=function(arg0,arg1){throw new Error(getStringFromWasm0(arg0,arg1))};imports.wbg.__wbindgen_memory=function(){const ret=wasm$1.memory;return addHeapObject(ret)};return imports}function __wbg_finalize_init(instance,module){wasm$1=instance.exports;__wbg_init.__wbindgen_wasm_module=module;cachedBigInt64Memory0=null;cachedInt32Memory0=null;cachedUint8Memory0=null;return wasm$1}async function __wbg_init(input){if(wasm$1!==undefined)return wasm$1;const imports=__wbg_get_imports();if(typeof input==="string"||typeof Request==="function"&&input instanceof Request||typeof URL==="function"&&input instanceof URL){input=fetch(input)}const{instance,module}=await __wbg_load(await input,imports);return __wbg_finalize_init(instance,module)}const createTfheKeypair=()=>{const config=TfheConfigBuilder.default().build();const clientKey=TfheClientKey.generate(config);let publicKey=TfheCompactPublicKey.new(clientKey);publicKey=TfheCompactPublicKey.deserialize(publicKey.serialize());return{clientKey:clientKey,publicKey:publicKey}};const createTfhePublicKey=()=>{const{publicKey}=createTfheKeypair();return toHexString(publicKey.serialize())};const toHexString=bytes=>bytes.reduce((str,byte)=>str+byte.toString(16).padStart(2,"0"),"");exports.EncryptionTypes=void 0;(function(EncryptionTypes){EncryptionTypes["bool"]="bool";EncryptionTypes["uint8"]="uint8";EncryptionTypes["uint16"]="uint16";EncryptionTypes["uint32"]="uint32";EncryptionTypes["uint64"]="uint64";EncryptionTypes["uint128"]="uint128";EncryptionTypes["uint256"]="uint256";EncryptionTypes["address"]="address"})(exports.EncryptionTypes||(exports.EncryptionTypes={}));exports.FheUType=void 0;(function(FheUType){FheUType[FheUType["bool"]=13]="bool";FheUType[FheUType["uint8"]=0]="uint8";FheUType[FheUType["uint16"]=1]="uint16";FheUType[FheUType["uint32"]=2]="uint32";FheUType[FheUType["uint64"]=3]="uint64";FheUType[FheUType["uint128"]=4]="uint128";FheUType[FheUType["uint256"]=5]="uint256";FheUType[FheUType["address"]=12]="address"})(exports.FheUType||(exports.FheUType={}));const FheUintUTypes=[exports.FheUType.uint8,exports.FheUType.uint16,exports.FheUType.uint32,exports.FheUType.uint64,exports.FheUType.uint128,exports.FheUType.uint256];const FheAllUTypes=[exports.FheUType.bool,exports.FheUType.uint8,exports.FheUType.uint16,exports.FheUType.uint32,exports.FheUType.uint64,exports.FheUType.uint128,exports.FheUType.uint256,exports.FheUType.address];const Encryptable={bool:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:exports.FheUType.bool}),uint8:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:exports.FheUType.uint8}),uint16:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:exports.FheUType.uint16}),uint32:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:exports.FheUType.uint32}),uint64:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:exports.FheUType.uint64}),uint128:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:exports.FheUType.uint128}),uint256:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:exports.FheUType.uint256}),address:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:exports.FheUType.address})};function isEncryptableItem(value){return typeof value==="object"&&value!==null&&["string","number","bigint","boolean"].includes(typeof value.data)&&typeof value.securityZone==="number"&&FheAllUTypes.includes(value.utype)}const ResultErr=error=>({success:false,data:null,error:error});const ResultOk=data=>({success:true,data:data,error:null});function getAsSealedItem(value){if(Array.isArray(value)&&value.length===2&&typeof value[0]==="string"&&FheAllUTypes.includes(parseInt(`${value[1]}`)))return{data:value[0],utype:value[1]};if(typeof value==="object"&&value!==null&&typeof value.data==="string"&&FheAllUTypes.includes(value.utype))return value;return undefined}function isSealedBool(value){return parseInt(`${value.utype}`)===exports.FheUType.bool}function isSealedUint(value){return FheUintUTypes.includes(parseInt(`${value.utype}`))}function isSealedAddress(value){return parseInt(`${value.utype}`)===exports.FheUType.address}const createStoreImpl=createState=>{let state;const listeners=new Set;const setState=(partial,replace)=>{const nextState=typeof partial==="function"?partial(state):partial;if(!Object.is(nextState,state)){const previousState=state;state=(replace!=null?replace:typeof nextState!=="object"||nextState===null)?nextState:Object.assign({},state,nextState);listeners.forEach(listener=>listener(state,previousState))}};const getState=()=>state;const getInitialState=()=>initialState;const subscribe=listener=>{listeners.add(listener);return()=>listeners.delete(listener)};const api={setState:setState,getState:getState,getInitialState:getInitialState,subscribe:subscribe};const initialState=state=createState(setState,getState,api);return api};const createStore=createState=>createState?createStoreImpl(createState):createStoreImpl;function createJSONStorage(getStorage,options){let storage;try{storage=getStorage()}catch(e){return}const persistStorage={getItem:name=>{var _a;const parse=str2=>{if(str2===null){return null}return JSON.parse(str2,void 0)};const str=(_a=storage.getItem(name))!=null?_a:null;if(str instanceof Promise){return str.then(parse)}return parse(str)},setItem:(name,newValue)=>storage.setItem(name,JSON.stringify(newValue,void 0)),removeItem:name=>storage.removeItem(name)};return persistStorage}const toThenable=fn=>input=>{try{const result=fn(input);if(result instanceof Promise){return result}return{then(onFulfilled){return toThenable(onFulfilled)(result)},catch(_onRejected){return this}}}catch(e){return{then(_onFulfilled){return this},catch(onRejected){return toThenable(onRejected)(e)}}}};const persistImpl=(config,baseOptions)=>(set,get,api)=>{let options={storage:createJSONStorage(()=>localStorage),partialize:state=>state,version:0,merge:(persistedState,currentState)=>({...currentState,...persistedState}),...baseOptions};let hasHydrated=false;const hydrationListeners=new Set;const finishHydrationListeners=new Set;let storage=options.storage;if(!storage){return config((...args)=>{console.warn(`[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`);set(...args)},get,api)}const setItem=()=>{const state=options.partialize({...get()});return storage.setItem(options.name,{state:state,version:options.version})};const savedSetState=api.setState;api.setState=(state,replace)=>{savedSetState(state,replace);void setItem()};const configResult=config((...args)=>{set(...args);void setItem()},get,api);api.getInitialState=()=>configResult;let stateFromStorage;const hydrate=()=>{var _a,_b;if(!storage)return;hasHydrated=false;hydrationListeners.forEach(cb=>{var _a2;return cb((_a2=get())!=null?_a2:configResult)});const postRehydrationCallback=((_b=options.onRehydrateStorage)==null?void 0:_b.call(options,(_a=get())!=null?_a:configResult))||void 0;return toThenable(storage.getItem.bind(storage))(options.name).then(deserializedStorageValue=>{if(deserializedStorageValue){if(typeof deserializedStorageValue.version==="number"&&deserializedStorageValue.version!==options.version){if(options.migrate){return[true,options.migrate(deserializedStorageValue.state,deserializedStorageValue.version)]}console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`)}else{return[false,deserializedStorageValue.state]}}return[false,void 0]}).then(migrationResult=>{var _a2;const[migrated,migratedState]=migrationResult;stateFromStorage=options.merge(migratedState,(_a2=get())!=null?_a2:configResult);set(stateFromStorage,true);if(migrated){return setItem()}}).then(()=>{postRehydrationCallback==null?void 0:postRehydrationCallback(stateFromStorage,void 0);stateFromStorage=get();hasHydrated=true;finishHydrationListeners.forEach(cb=>cb(stateFromStorage))}).catch(e=>{postRehydrationCallback==null?void 0:postRehydrationCallback(void 0,e)})};api.persist={setOptions:newOptions=>{options={...options,...newOptions};if(newOptions.storage){storage=newOptions.storage}},clearStorage:()=>{storage==null?void 0:storage.removeItem(options.name)},getOptions:()=>options,rehydrate:()=>hydrate(),hasHydrated:()=>hasHydrated,onHydrate:cb=>{hydrationListeners.add(cb);return()=>{hydrationListeners.delete(cb)}},onFinishHydration:cb=>{finishHydrationListeners.add(cb);return()=>{finishHydrationListeners.delete(cb)}}};if(!options.skipHydration){hydrate()}return stateFromStorage||configResult};const persist=persistImpl;var NOTHING=Symbol.for("immer-nothing");var DRAFTABLE=Symbol.for("immer-draftable");var DRAFT_STATE=Symbol.for("immer-state");var errors=process.env.NODE_ENV!=="production"?[function(plugin){return`The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \`enable${plugin}()\` when initializing your application.`},function(thing){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`},"This object has been frozen and should not be mutated",function(data){return"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? "+data},"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.","Immer forbids circular references","The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(thing){return`'current' expects a draft, got: ${thing}`},"Object.defineProperty() cannot be used on an Immer draft","Object.setPrototypeOf() cannot be used on an Immer draft","Immer only supports deleting array indices","Immer only supports setting array indices and the 'length' property",function(thing){return`'original' expects a draft, got: ${thing}`}]:[];function die(error,...args){if(process.env.NODE_ENV!=="production"){const e=errors[error];const msg=typeof e==="function"?e.apply(null,args):e;throw new Error(`[Immer] ${msg}`)}throw new Error(`[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`)}var getPrototypeOf=Object.getPrototypeOf;function isDraft(value){return!!value&&!!value[DRAFT_STATE]}function isDraftable(value){if(!value)return false;return isPlainObject(value)||Array.isArray(value)||!!value[DRAFTABLE]||!!value.constructor?.[DRAFTABLE]||isMap(value)||isSet(value)}var objectCtorString=Object.prototype.constructor.toString();function isPlainObject(value){if(!value||typeof value!=="object")return false;const proto=getPrototypeOf(value);if(proto===null){return true}const Ctor=Object.hasOwnProperty.call(proto,"constructor")&&proto.constructor;if(Ctor===Object)return true;return typeof Ctor=="function"&&Function.toString.call(Ctor)===objectCtorString}function each(obj,iter){if(getArchtype(obj)===0){Reflect.ownKeys(obj).forEach(key=>{iter(key,obj[key],obj)})}else{obj.forEach((entry,index)=>iter(index,entry,obj))}}function getArchtype(thing){const state=thing[DRAFT_STATE];return state?state.type_:Array.isArray(thing)?1:isMap(thing)?2:isSet(thing)?3:0}function has(thing,prop){return getArchtype(thing)===2?thing.has(prop):Object.prototype.hasOwnProperty.call(thing,prop)}function set(thing,propOrOldValue,value){const t=getArchtype(thing);if(t===2)thing.set(propOrOldValue,value);else if(t===3){thing.add(value)}else thing[propOrOldValue]=value}function is(x,y){if(x===y){return x!==0||1/x===1/y}else{return x!==x&&y!==y}}function isMap(target){return target instanceof Map}function isSet(target){return target instanceof Set}function latest(state){return state.copy_||state.base_}function shallowCopy(base,strict){if(isMap(base)){return new Map(base)}if(isSet(base)){return new Set(base)}if(Array.isArray(base))return Array.prototype.slice.call(base);const isPlain=isPlainObject(base);if(strict===true||strict==="class_only"&&!isPlain){const descriptors=Object.getOwnPropertyDescriptors(base);delete descriptors[DRAFT_STATE];let keys=Reflect.ownKeys(descriptors);for(let i=0;i1){obj.set=obj.add=obj.clear=obj.delete=dontMutateFrozenCollections}Object.freeze(obj);if(deep)Object.entries(obj).forEach(([key,value])=>freeze(value,true));return obj}function dontMutateFrozenCollections(){die(2)}function isFrozen(obj){return Object.isFrozen(obj)}var plugins={};function getPlugin(pluginKey){const plugin=plugins[pluginKey];if(!plugin){die(0,pluginKey)}return plugin}var currentScope;function getCurrentScope(){return currentScope}function createScope(parent_,immer_){return{drafts_:[],parent_:parent_,immer_:immer_,canAutoFreeze_:true,unfinalizedDrafts_:0}}function usePatchesInScope(scope,patchListener){if(patchListener){getPlugin("Patches");scope.patches_=[];scope.inversePatches_=[];scope.patchListener_=patchListener}}function revokeScope(scope){leaveScope(scope);scope.drafts_.forEach(revokeDraft);scope.drafts_=null}function leaveScope(scope){if(scope===currentScope){currentScope=scope.parent_}}function enterScope(immer2){return currentScope=createScope(currentScope,immer2)}function revokeDraft(draft){const state=draft[DRAFT_STATE];if(state.type_===0||state.type_===1)state.revoke_();else state.revoked_=true}function processResult(result,scope){scope.unfinalizedDrafts_=scope.drafts_.length;const baseDraft=scope.drafts_[0];const isReplaced=result!==void 0&&result!==baseDraft;if(isReplaced){if(baseDraft[DRAFT_STATE].modified_){revokeScope(scope);die(4)}if(isDraftable(result)){result=finalize(scope,result);if(!scope.parent_)maybeFreeze(scope,result)}if(scope.patches_){getPlugin("Patches").generateReplacementPatches_(baseDraft[DRAFT_STATE].base_,result,scope.patches_,scope.inversePatches_)}}else{result=finalize(scope,baseDraft,[])}revokeScope(scope);if(scope.patches_){scope.patchListener_(scope.patches_,scope.inversePatches_)}return result!==NOTHING?result:void 0}function finalize(rootScope,value,path){if(isFrozen(value))return value;const state=value[DRAFT_STATE];if(!state){each(value,(key,childValue)=>finalizeProperty(rootScope,state,value,key,childValue,path));return value}if(state.scope_!==rootScope)return value;if(!state.modified_){maybeFreeze(rootScope,state.base_,true);return state.base_}if(!state.finalized_){state.finalized_=true;state.scope_.unfinalizedDrafts_--;const result=state.copy_;let resultEach=result;let isSet2=false;if(state.type_===3){resultEach=new Set(result);result.clear();isSet2=true}each(resultEach,(key,childValue)=>finalizeProperty(rootScope,state,result,key,childValue,path,isSet2));maybeFreeze(rootScope,result,false);if(path&&rootScope.patches_){getPlugin("Patches").generatePatches_(state,path,rootScope.patches_,rootScope.inversePatches_)}}return state.copy_}function finalizeProperty(rootScope,parentState,targetObject,prop,childValue,rootPath,targetIsSet){if(process.env.NODE_ENV!=="production"&&childValue===targetObject)die(5);if(isDraft(childValue)){const path=rootPath&&parentState&&parentState.type_!==3&&!has(parentState.assigned_,prop)?rootPath.concat(prop):void 0;const res=finalize(rootScope,childValue,path);set(targetObject,prop,res);if(isDraft(res)){rootScope.canAutoFreeze_=false}else return}else if(targetIsSet){targetObject.add(childValue)}if(isDraftable(childValue)&&!isFrozen(childValue)){if(!rootScope.immer_.autoFreeze_&&rootScope.unfinalizedDrafts_<1){return}finalize(rootScope,childValue);if((!parentState||!parentState.scope_.parent_)&&typeof prop!=="symbol"&&Object.prototype.propertyIsEnumerable.call(targetObject,prop))maybeFreeze(rootScope,childValue)}}function maybeFreeze(scope,value,deep=false){if(!scope.parent_&&scope.immer_.autoFreeze_&&scope.canAutoFreeze_){freeze(value,deep)}}function createProxyProxy(base,parent){const isArray=Array.isArray(base);const state={type_:isArray?1:0,scope_:parent?parent.scope_:getCurrentScope(),modified_:false,finalized_:false,assigned_:{},parent_:parent,base_:base,draft_:null,copy_:null,revoke_:null,isManual_:false};let target=state;let traps=objectTraps;if(isArray){target=[state];traps=arrayTraps}const{revoke,proxy}=Proxy.revocable(target,traps);state.draft_=proxy;state.revoke_=revoke;return proxy}var objectTraps={get(state,prop){if(prop===DRAFT_STATE)return state;const source=latest(state);if(!has(source,prop)){return readPropFromProto(state,source,prop)}const value=source[prop];if(state.finalized_||!isDraftable(value)){return value}if(value===peek(state.base_,prop)){prepareCopy(state);return state.copy_[prop]=createProxy(value,state)}return value},has(state,prop){return prop in latest(state)},ownKeys(state){return Reflect.ownKeys(latest(state))},set(state,prop,value){const desc=getDescriptorFromProto(latest(state),prop);if(desc?.set){desc.set.call(state.draft_,value);return true}if(!state.modified_){const current2=peek(latest(state),prop);const currentState=current2?.[DRAFT_STATE];if(currentState&¤tState.base_===value){state.copy_[prop]=value;state.assigned_[prop]=false;return true}if(is(value,current2)&&(value!==void 0||has(state.base_,prop)))return true;prepareCopy(state);markChanged(state)}if(state.copy_[prop]===value&&(value!==void 0||prop in state.copy_)||Number.isNaN(value)&&Number.isNaN(state.copy_[prop]))return true;state.copy_[prop]=value;state.assigned_[prop]=true;return true},deleteProperty(state,prop){if(peek(state.base_,prop)!==void 0||prop in state.base_){state.assigned_[prop]=false;prepareCopy(state);markChanged(state)}else{delete state.assigned_[prop]}if(state.copy_){delete state.copy_[prop]}return true},getOwnPropertyDescriptor(state,prop){const owner=latest(state);const desc=Reflect.getOwnPropertyDescriptor(owner,prop);if(!desc)return desc;return{writable:true,configurable:state.type_!==1||prop!=="length",enumerable:desc.enumerable,value:owner[prop]}},defineProperty(){die(11)},getPrototypeOf(state){return getPrototypeOf(state.base_)},setPrototypeOf(){die(12)}};var arrayTraps={};each(objectTraps,(key,fn)=>{arrayTraps[key]=function(){arguments[0]=arguments[0][0];return fn.apply(this,arguments)}});arrayTraps.deleteProperty=function(state,prop){if(process.env.NODE_ENV!=="production"&&isNaN(parseInt(prop)))die(13);return arrayTraps.set.call(this,state,prop,void 0)};arrayTraps.set=function(state,prop,value){if(process.env.NODE_ENV!=="production"&&prop!=="length"&&isNaN(parseInt(prop)))die(14);return objectTraps.set.call(this,state[0],prop,value,state[0])};function peek(draft,prop){const state=draft[DRAFT_STATE];const source=state?latest(state):draft;return source[prop]}function readPropFromProto(state,source,prop){const desc=getDescriptorFromProto(source,prop);return desc?`value`in desc?desc.value:desc.get?.call(state.draft_):void 0}function getDescriptorFromProto(source,prop){if(!(prop in source))return void 0;let proto=getPrototypeOf(source);while(proto){const desc=Object.getOwnPropertyDescriptor(proto,prop);if(desc)return desc;proto=getPrototypeOf(proto)}return void 0}function markChanged(state){if(!state.modified_){state.modified_=true;if(state.parent_){markChanged(state.parent_)}}}function prepareCopy(state){if(!state.copy_){state.copy_=shallowCopy(state.base_,state.scope_.immer_.useStrictShallowCopy_)}}var Immer2=class{constructor(config){this.autoFreeze_=true;this.useStrictShallowCopy_=false;this.produce=(base,recipe,patchListener)=>{if(typeof base==="function"&&typeof recipe!=="function"){const defaultBase=recipe;recipe=base;const self=this;return function curriedProduce(base2=defaultBase,...args){return self.produce(base2,draft=>recipe.call(this,draft,...args))}}if(typeof recipe!=="function")die(6);if(patchListener!==void 0&&typeof patchListener!=="function")die(7);let result;if(isDraftable(base)){const scope=enterScope(this);const proxy=createProxy(base,void 0);let hasError=true;try{result=recipe(proxy);hasError=false}finally{if(hasError)revokeScope(scope);else leaveScope(scope)}usePatchesInScope(scope,patchListener);return processResult(result,scope)}else if(!base||typeof base!=="object"){result=recipe(base);if(result===void 0)result=base;if(result===NOTHING)result=void 0;if(this.autoFreeze_)freeze(result,true);if(patchListener){const p=[];const ip=[];getPlugin("Patches").generateReplacementPatches_(base,result,p,ip);patchListener(p,ip)}return result}else die(1,base)};this.produceWithPatches=(base,recipe)=>{if(typeof base==="function"){return(state,...args)=>this.produceWithPatches(state,draft=>base(draft,...args))}let patches,inversePatches;const result=this.produce(base,recipe,(p,ip)=>{patches=p;inversePatches=ip});return[result,patches,inversePatches]};if(typeof config?.autoFreeze==="boolean")this.setAutoFreeze(config.autoFreeze);if(typeof config?.useStrictShallowCopy==="boolean")this.setUseStrictShallowCopy(config.useStrictShallowCopy)}createDraft(base){if(!isDraftable(base))die(8);if(isDraft(base))base=current(base);const scope=enterScope(this);const proxy=createProxy(base,void 0);proxy[DRAFT_STATE].isManual_=true;leaveScope(scope);return proxy}finishDraft(draft,patchListener){const state=draft&&draft[DRAFT_STATE];if(!state||!state.isManual_)die(9);const{scope_:scope}=state;usePatchesInScope(scope,patchListener);return processResult(void 0,scope)}setAutoFreeze(value){this.autoFreeze_=value}setUseStrictShallowCopy(value){this.useStrictShallowCopy_=value}applyPatches(base,patches){let i;for(i=patches.length-1;i>=0;i--){const patch=patches[i];if(patch.path.length===0&&patch.op==="replace"){base=patch.value;break}}if(i>-1){patches=patches.slice(i+1)}const applyPatchesImpl=getPlugin("Patches").applyPatches_;if(isDraft(base)){return applyPatchesImpl(base,patches)}return this.produce(base,draft=>applyPatchesImpl(draft,patches))}};function createProxy(value,parent){const draft=isMap(value)?getPlugin("MapSet").proxyMap_(value,parent):isSet(value)?getPlugin("MapSet").proxySet_(value,parent):createProxyProxy(value,parent);const scope=parent?parent.scope_:getCurrentScope();scope.drafts_.push(draft);return draft}function current(value){if(!isDraft(value))die(10,value);return currentImpl(value)}function currentImpl(value){if(!isDraftable(value)||isFrozen(value))return value;const state=value[DRAFT_STATE];let copy;if(state){if(!state.modified_)return state.base_;state.finalized_=true;copy=shallowCopy(value,state.scope_.immer_.useStrictShallowCopy_)}else{copy=shallowCopy(value,true)}each(copy,(key,childValue)=>{set(copy,key,currentImpl(childValue))});if(state){state.finalized_=false}return copy}var immer=new Immer2;var produce=immer.produce;immer.produceWithPatches.bind(immer);immer.setAutoFreeze.bind(immer);immer.setUseStrictShallowCopy.bind(immer);immer.applyPatches.bind(immer);immer.createDraft.bind(immer);immer.finishDraft.bind(immer);const version="6.13.1";function defineProperties(target,values,types){for(let key in values){let value=values[key];Object.defineProperty(target,key,{enumerable:true,value:value,writable:false})}}function stringify(value){if(value==null){return"null"}if(Array.isArray(value)){return"[ "+value.map(stringify).join(", ")+" ]"}if(value instanceof Uint8Array){const HEX="0123456789abcdef";let result="0x";for(let i=0;i>4];result+=HEX[value[i]&15]}return result}if(typeof value==="object"&&typeof value.toJSON==="function"){return stringify(value.toJSON())}switch(typeof value){case"boolean":case"symbol":return value.toString();case"bigint":return BigInt(value).toString();case"number":return value.toString();case"string":return JSON.stringify(value);case"object":{const keys=Object.keys(value);keys.sort();return"{ "+keys.map(k=>`${stringify(k)}: ${stringify(value[k])}`).join(", ")+" }"}}return`[ COULD NOT SERIALIZE ]`}function makeError(message,code,info){let shortMessage=message;{const details=[];if(info){if("message"in info||"code"in info||"name"in info){throw new Error(`value will overwrite populated values: ${stringify(info)}`)}for(const key in info){if(key==="shortMessage"){continue}const value=info[key];details.push(key+"="+stringify(value))}}details.push(`code=${code}`);details.push(`version=${version}`);if(details.length){message+=" ("+details.join(", ")+")"}}let error;switch(code){case"INVALID_ARGUMENT":error=new TypeError(message);break;case"NUMERIC_FAULT":case"BUFFER_OVERRUN":error=new RangeError(message);break;default:error=new Error(message)}defineProperties(error,{code:code});if(info){Object.assign(error,info)}if(error.shortMessage==null){defineProperties(error,{shortMessage:shortMessage})}return error}function assert(check,message,code,info){if(!check){throw makeError(message,code,info)}}function assertArgument(check,message,name,value){assert(check,message,"INVALID_ARGUMENT",{argument:name,value:value})}["NFD","NFC","NFKD","NFKC"].reduce((accum,form)=>{try{if("test".normalize(form)!=="test"){throw new Error("bad")}if(form==="NFD"){const check=String.fromCharCode(233).normalize("NFD");const expected=String.fromCharCode(101,769);if(check!==expected){throw new Error("broken")}}accum.push(form)}catch(error){}return accum},[]);function _getBytes(value,name,copy){if(value instanceof Uint8Array){return value}if(typeof value==="string"&&value.match(/^0x(?:[0-9a-f][0-9a-f])*$/i)){const result=new Uint8Array((value.length-2)/2);let offset=2;for(let i=0;i>4]+HexCharacters[v&15]}return result}function toUtf8Bytes(str,form){assertArgument(typeof str==="string","invalid string value","str",str);let result=[];for(let i=0;i>6|192);result.push(c&63|128)}else if((c&64512)==55296){i++;const c2=str.charCodeAt(i);assertArgument(i>18|240);result.push(pair>>12&63|128);result.push(pair>>6&63|128);result.push(pair&63|128)}else{result.push(c>>12|224);result.push(c>>6&63|128);result.push(c&63|128)}}return new Uint8Array(result)}function number(n){if(!Number.isSafeInteger(n)||n<0)throw new Error(`Wrong positive integer: ${n}`)}function bytes(b,...lengths){if(!(b instanceof Uint8Array))throw new Error("Expected Uint8Array");if(lengths.length>0&&!lengths.includes(b.length))throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`)}function exists(instance,checkFinished=true){if(instance.destroyed)throw new Error("Hash instance has been destroyed");if(checkFinished&&instance.finished)throw new Error("Hash#digest() has already been called")}function output(out,instance){bytes(out);const min=instance.outputLen;if(out.lengtha instanceof Uint8Array;const u32=arr=>new Uint32Array(arr.buffer,arr.byteOffset,Math.floor(arr.byteLength/4));const isLE=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!isLE)throw new Error("Non little-endian hardware is not supported");function utf8ToBytes(str){if(typeof str!=="string")throw new Error(`utf8ToBytes expected string, got ${typeof str}`);return new Uint8Array((new TextEncoder).encode(str))}function toBytes(data){if(typeof data==="string")data=utf8ToBytes(data);if(!u8a(data))throw new Error(`expected Uint8Array, got ${typeof data}`);return data}class Hash{clone(){return this._cloneInto()}}function wrapConstructor(hashCons){const hashC=msg=>hashCons().update(toBytes(msg)).digest();const tmp=hashCons();hashC.outputLen=tmp.outputLen;hashC.blockLen=tmp.blockLen;hashC.create=()=>hashCons();return hashC}const U32_MASK64=BigInt(2**32-1);const _32n=BigInt(32);function fromBig(n,le=false){if(le)return{h:Number(n&U32_MASK64),l:Number(n>>_32n&U32_MASK64)};return{h:Number(n>>_32n&U32_MASK64)|0,l:Number(n&U32_MASK64)|0}}function split(lst,le=false){let Ah=new Uint32Array(lst.length);let Al=new Uint32Array(lst.length);for(let i=0;ih<>>32-s;const rotlSL=(h,l,s)=>l<>>32-s;const rotlBH=(h,l,s)=>l<>>64-s;const rotlBL=(h,l,s)=>h<>>64-s;const[SHA3_PI,SHA3_ROTL,_SHA3_IOTA]=[[],[],[]];const _0n=BigInt(0);const _1n=BigInt(1);const _2n=BigInt(2);const _7n=BigInt(7);const _256n=BigInt(256);const _0x71n=BigInt(113);for(let round=0,R=_1n,x=1,y=0;round<24;round++){[x,y]=[y,(2*x+3*y)%5];SHA3_PI.push(2*(5*y+x));SHA3_ROTL.push((round+1)*(round+2)/2%64);let t=_0n;for(let j=0;j<7;j++){R=(R<<_1n^(R>>_7n)*_0x71n)%_256n;if(R&_2n)t^=_1n<<(_1n<s>32?rotlBH(h,l,s):rotlSH(h,l,s);const rotlL=(h,l,s)=>s>32?rotlBL(h,l,s):rotlSL(h,l,s);function keccakP(s,rounds=24){const B=new Uint32Array(5*2);for(let round=24-rounds;round<24;round++){for(let x=0;x<10;x++)B[x]=s[x]^s[x+10]^s[x+20]^s[x+30]^s[x+40];for(let x=0;x<10;x+=2){const idx1=(x+8)%10;const idx0=(x+2)%10;const B0=B[idx0];const B1=B[idx0+1];const Th=rotlH(B0,B1,1)^B[idx1];const Tl=rotlL(B0,B1,1)^B[idx1+1];for(let y=0;y<50;y+=10){s[x+y]^=Th;s[x+y+1]^=Tl}}let curH=s[2];let curL=s[3];for(let t=0;t<24;t++){const shift=SHA3_ROTL[t];const Th=rotlH(curH,curL,shift);const Tl=rotlL(curH,curL,shift);const PI=SHA3_PI[t];curH=s[PI];curL=s[PI+1];s[PI]=Th;s[PI+1]=Tl}for(let y=0;y<50;y+=10){for(let x=0;x<10;x++)B[x]=s[y+x];for(let x=0;x<10;x++)s[y+x]^=~B[(x+2)%10]&B[(x+4)%10]}s[0]^=SHA3_IOTA_H[round];s[1]^=SHA3_IOTA_L[round]}B.fill(0)}class Keccak extends Hash{constructor(blockLen,suffix,outputLen,enableXOF=false,rounds=24){super();this.blockLen=blockLen;this.suffix=suffix;this.outputLen=outputLen;this.enableXOF=enableXOF;this.rounds=rounds;this.pos=0;this.posOut=0;this.finished=false;this.destroyed=false;number(outputLen);if(0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200);this.state32=u32(this.state)}keccak(){keccakP(this.state32,this.rounds);this.posOut=0;this.pos=0}update(data){exists(this);const{blockLen,state}=this;data=toBytes(data);const len=data.length;for(let pos=0;pos=blockLen)this.keccak();const take=Math.min(blockLen-this.posOut,len-pos);out.set(bufferOut.subarray(this.posOut,this.posOut+take),pos);this.posOut+=take;pos+=take}return out}xofInto(out){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(out)}xof(bytes){number(bytes);return this.xofInto(new Uint8Array(bytes))}digestInto(out){output(out,this);if(this.finished)throw new Error("digest() was already called");this.writeInto(out);this.destroy();return out}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=true;this.state.fill(0)}_cloneInto(to){const{blockLen,suffix,outputLen,rounds,enableXOF}=this;to||(to=new Keccak(blockLen,suffix,outputLen,enableXOF,rounds));to.state32.set(this.state32);to.pos=this.pos;to.posOut=this.posOut;to.finished=this.finished;to.rounds=rounds;to.suffix=suffix;to.outputLen=outputLen;to.enableXOF=enableXOF;to.destroyed=this.destroyed;return to}}const gen=(suffix,blockLen,outputLen)=>wrapConstructor(()=>new Keccak(blockLen,suffix,outputLen));const keccak_256=gen(1,136,256/8);let locked=false;const _keccak256=function(data){return keccak_256(data)};let __keccak256=_keccak256;function keccak256(_data){const data=getBytes(_data,"data");return hexlify(__keccak256(data))}keccak256._=_keccak256;keccak256.lock=function(){locked=true};keccak256.register=function(func){if(locked){throw new TypeError("keccak256 is locked")}__keccak256=func};Object.freeze(keccak256);const ZeroAddress="0x0000000000000000000000000000000000000000";const BN_0=BigInt(0);const BN_36=BigInt(36);function getChecksumAddress(address){address=address.toLowerCase();const chars=address.substring(2).split("");const expanded=new Uint8Array(40);for(let i=0;i<40;i++){expanded[i]=chars[i].charCodeAt(0)}const hashed=getBytes(keccak256(expanded));for(let i=0;i<40;i+=2){if(hashed[i>>1]>>4>=8){chars[i]=chars[i].toUpperCase()}if((hashed[i>>1]&15)>=8){chars[i+1]=chars[i+1].toUpperCase()}}return"0x"+chars.join("")}const ibanLookup={};for(let i=0;i<10;i++){ibanLookup[String(i)]=String(i)}for(let i=0;i<26;i++){ibanLookup[String.fromCharCode(65+i)]=String(10+i)}const safeDigits=15;function ibanChecksum(address){address=address.toUpperCase();address=address.substring(4)+address.substring(0,2)+"00";let expanded=address.split("").map(c=>{return ibanLookup[c]}).join("");while(expanded.length>=safeDigits){let block=expanded.substring(0,safeDigits);expanded=parseInt(block,10)%97+expanded.substring(block.length)}let checksum=String(98-parseInt(expanded,10)%97);while(checksum.length<2){checksum="0"+checksum}return checksum}const Base36=function(){const result={};for(let i=0;i<36;i++){const key="0123456789abcdefghijklmnopqrstuvwxyz"[i];result[key]=BigInt(i)}return result}();function fromBase36(value){value=value.toLowerCase();let result=BN_0;for(let i=0;i{const types={[primaryType]:PermitV2SignatureAllFields.filter(fieldType=>fields.includes(fieldType.name))};const message={};fields.forEach(field=>{if(field in values){message[field]=values[field]}});return{types:types,primaryType:primaryType,message:message}};const getSignatureDomain=chainId=>({name:"Fhenix Permission v2.0.0",version:"v2.0.0",chainId:parseInt(chainId),verifyingContract:ZeroAddress});var util;(function(util){util.assertEqual=val=>val;function assertIs(_arg){}util.assertIs=assertIs;function assertNever(_x){throw new Error}util.assertNever=assertNever;util.arrayToEnum=items=>{const obj={};for(const item of items){obj[item]=item}return obj};util.getValidEnumValues=obj=>{const validKeys=util.objectKeys(obj).filter(k=>typeof obj[obj[k]]!=="number");const filtered={};for(const k of validKeys){filtered[k]=obj[k]}return util.objectValues(filtered)};util.objectValues=obj=>{return util.objectKeys(obj).map(function(e){return obj[e]})};util.objectKeys=typeof Object.keys==="function"?obj=>Object.keys(obj):object=>{const keys=[];for(const key in object){if(Object.prototype.hasOwnProperty.call(object,key)){keys.push(key)}}return keys};util.find=(arr,checker)=>{for(const item of arr){if(checker(item))return item}return undefined};util.isInteger=typeof Number.isInteger==="function"?val=>Number.isInteger(val):val=>typeof val==="number"&&isFinite(val)&&Math.floor(val)===val;function joinValues(array,separator=" | "){return array.map(val=>typeof val==="string"?`'${val}'`:val).join(separator)}util.joinValues=joinValues;util.jsonStringifyReplacer=(_,value)=>{if(typeof value==="bigint"){return value.toString()}return value}})(util||(util={}));var objectUtil;(function(objectUtil){objectUtil.mergeShapes=(first,second)=>{return{...first,...second}}})(objectUtil||(objectUtil={}));const ZodParsedType=util.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]);const getParsedType=data=>{const t=typeof data;switch(t){case"undefined":return ZodParsedType.undefined;case"string":return ZodParsedType.string;case"number":return isNaN(data)?ZodParsedType.nan:ZodParsedType.number;case"boolean":return ZodParsedType.boolean;case"function":return ZodParsedType.function;case"bigint":return ZodParsedType.bigint;case"symbol":return ZodParsedType.symbol;case"object":if(Array.isArray(data)){return ZodParsedType.array}if(data===null){return ZodParsedType.null}if(data.then&&typeof data.then==="function"&&data.catch&&typeof data.catch==="function"){return ZodParsedType.promise}if(typeof Map!=="undefined"&&data instanceof Map){return ZodParsedType.map}if(typeof Set!=="undefined"&&data instanceof Set){return ZodParsedType.set}if(typeof Date!=="undefined"&&data instanceof Date){return ZodParsedType.date}return ZodParsedType.object;default:return ZodParsedType.unknown}};const ZodIssueCode=util.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);const quotelessJson=obj=>{const json=JSON.stringify(obj,null,2);return json.replace(/"([^"]+)":/g,"$1:")};class ZodError extends Error{constructor(issues){super();this.issues=[];this.addIssue=sub=>{this.issues=[...this.issues,sub]};this.addIssues=(subs=[])=>{this.issues=[...this.issues,...subs]};const actualProto=new.target.prototype;if(Object.setPrototypeOf){Object.setPrototypeOf(this,actualProto)}else{this.__proto__=actualProto}this.name="ZodError";this.issues=issues}get errors(){return this.issues}format(_mapper){const mapper=_mapper||function(issue){return issue.message};const fieldErrors={_errors:[]};const processError=error=>{for(const issue of error.issues){if(issue.code==="invalid_union"){issue.unionErrors.map(processError)}else if(issue.code==="invalid_return_type"){processError(issue.returnTypeError)}else if(issue.code==="invalid_arguments"){processError(issue.argumentsError)}else if(issue.path.length===0){fieldErrors._errors.push(mapper(issue))}else{let curr=fieldErrors;let i=0;while(iissue.message){const fieldErrors={};const formErrors=[];for(const sub of this.issues){if(sub.path.length>0){fieldErrors[sub.path[0]]=fieldErrors[sub.path[0]]||[];fieldErrors[sub.path[0]].push(mapper(sub))}else{formErrors.push(mapper(sub))}}return{formErrors:formErrors,fieldErrors:fieldErrors}}get formErrors(){return this.flatten()}}ZodError.create=issues=>{const error=new ZodError(issues);return error};const errorMap=(issue,_ctx)=>{let message;switch(issue.code){case ZodIssueCode.invalid_type:if(issue.received===ZodParsedType.undefined){message="Required"}else{message=`Expected ${issue.expected}, received ${issue.received}`}break;case ZodIssueCode.invalid_literal:message=`Invalid literal value, expected ${JSON.stringify(issue.expected,util.jsonStringifyReplacer)}`;break;case ZodIssueCode.unrecognized_keys:message=`Unrecognized key(s) in object: ${util.joinValues(issue.keys,", ")}`;break;case ZodIssueCode.invalid_union:message=`Invalid input`;break;case ZodIssueCode.invalid_union_discriminator:message=`Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;break;case ZodIssueCode.invalid_enum_value:message=`Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;break;case ZodIssueCode.invalid_arguments:message=`Invalid function arguments`;break;case ZodIssueCode.invalid_return_type:message=`Invalid function return type`;break;case ZodIssueCode.invalid_date:message=`Invalid date`;break;case ZodIssueCode.invalid_string:if(typeof issue.validation==="object"){if("includes"in issue.validation){message=`Invalid input: must include "${issue.validation.includes}"`;if(typeof issue.validation.position==="number"){message=`${message} at one or more positions greater than or equal to ${issue.validation.position}`}}else if("startsWith"in issue.validation){message=`Invalid input: must start with "${issue.validation.startsWith}"`}else if("endsWith"in issue.validation){message=`Invalid input: must end with "${issue.validation.endsWith}"`}else{util.assertNever(issue.validation)}}else if(issue.validation!=="regex"){message=`Invalid ${issue.validation}`}else{message="Invalid"}break;case ZodIssueCode.too_small:if(issue.type==="array")message=`Array must contain ${issue.exact?"exactly":issue.inclusive?`at least`:`more than`} ${issue.minimum} element(s)`;else if(issue.type==="string")message=`String must contain ${issue.exact?"exactly":issue.inclusive?`at least`:`over`} ${issue.minimum} character(s)`;else if(issue.type==="number")message=`Number must be ${issue.exact?`exactly equal to `:issue.inclusive?`greater than or equal to `:`greater than `}${issue.minimum}`;else if(issue.type==="date")message=`Date must be ${issue.exact?`exactly equal to `:issue.inclusive?`greater than or equal to `:`greater than `}${new Date(Number(issue.minimum))}`;else message="Invalid input";break;case ZodIssueCode.too_big:if(issue.type==="array")message=`Array must contain ${issue.exact?`exactly`:issue.inclusive?`at most`:`less than`} ${issue.maximum} element(s)`;else if(issue.type==="string")message=`String must contain ${issue.exact?`exactly`:issue.inclusive?`at most`:`under`} ${issue.maximum} character(s)`;else if(issue.type==="number")message=`Number must be ${issue.exact?`exactly`:issue.inclusive?`less than or equal to`:`less than`} ${issue.maximum}`;else if(issue.type==="bigint")message=`BigInt must be ${issue.exact?`exactly`:issue.inclusive?`less than or equal to`:`less than`} ${issue.maximum}`;else if(issue.type==="date")message=`Date must be ${issue.exact?`exactly`:issue.inclusive?`smaller than or equal to`:`smaller than`} ${new Date(Number(issue.maximum))}`;else message="Invalid input";break;case ZodIssueCode.custom:message=`Invalid input`;break;case ZodIssueCode.invalid_intersection_types:message=`Intersection results could not be merged`;break;case ZodIssueCode.not_multiple_of:message=`Number must be a multiple of ${issue.multipleOf}`;break;case ZodIssueCode.not_finite:message="Number must be finite";break;default:message=_ctx.defaultError;util.assertNever(issue)}return{message:message}};let overrideErrorMap=errorMap;function setErrorMap(map){overrideErrorMap=map}function getErrorMap(){return overrideErrorMap}const makeIssue=params=>{const{data,path,errorMaps,issueData}=params;const fullPath=[...path,...issueData.path||[]];const fullIssue={...issueData,path:fullPath};if(issueData.message!==undefined){return{...issueData,path:fullPath,message:issueData.message}}let errorMessage="";const maps=errorMaps.filter(m=>!!m).slice().reverse();for(const map of maps){errorMessage=map(fullIssue,{data:data,defaultError:errorMessage}).message}return{...issueData,path:fullPath,message:errorMessage}};const EMPTY_PATH=[];function addIssueToContext(ctx,issueData){const overrideMap=getErrorMap();const issue=makeIssue({issueData:issueData,data:ctx.data,path:ctx.path,errorMaps:[ctx.common.contextualErrorMap,ctx.schemaErrorMap,overrideMap,overrideMap===errorMap?undefined:errorMap].filter(x=>!!x)});ctx.common.issues.push(issue)}class ParseStatus{constructor(){this.value="valid"}dirty(){if(this.value==="valid")this.value="dirty"}abort(){if(this.value!=="aborted")this.value="aborted"}static mergeArray(status,results){const arrayValue=[];for(const s of results){if(s.status==="aborted")return INVALID;if(s.status==="dirty")status.dirty();arrayValue.push(s.value)}return{status:status.value,value:arrayValue}}static async mergeObjectAsync(status,pairs){const syncPairs=[];for(const pair of pairs){const key=await pair.key;const value=await pair.value;syncPairs.push({key:key,value:value})}return ParseStatus.mergeObjectSync(status,syncPairs)}static mergeObjectSync(status,pairs){const finalObject={};for(const pair of pairs){const{key,value}=pair;if(key.status==="aborted")return INVALID;if(value.status==="aborted")return INVALID;if(key.status==="dirty")status.dirty();if(value.status==="dirty")status.dirty();if(key.value!=="__proto__"&&(typeof value.value!=="undefined"||pair.alwaysSet)){finalObject[key.value]=value.value}}return{status:status.value,value:finalObject}}}const INVALID=Object.freeze({status:"aborted"});const DIRTY=value=>({status:"dirty",value:value});const OK=value=>({status:"valid",value:value});const isAborted=x=>x.status==="aborted";const isDirty=x=>x.status==="dirty";const isValid=x=>x.status==="valid";const isAsync=x=>typeof Promise!=="undefined"&&x instanceof Promise;function __classPrivateFieldGet(receiver,state,kind,f){if(typeof state==="function"?receiver!==state||!f:!state.has(receiver))throw new TypeError("Cannot read private member from an object whose class did not declare it");return state.get(receiver)}function __classPrivateFieldSet(receiver,state,value,kind,f){if(typeof state==="function"?receiver!==state||!f:!state.has(receiver))throw new TypeError("Cannot write private member to an object whose class did not declare it");return state.set(receiver,value),value}typeof SuppressedError==="function"?SuppressedError:function(error,suppressed,message){var e=new Error(message);return e.name="SuppressedError",e.error=error,e.suppressed=suppressed,e};var errorUtil;(function(errorUtil){errorUtil.errToObj=message=>typeof message==="string"?{message:message}:message||{};errorUtil.toString=message=>typeof message==="string"?message:message===null||message===void 0?void 0:message.message})(errorUtil||(errorUtil={}));var _ZodEnum_cache,_ZodNativeEnum_cache;class ParseInputLazyPath{constructor(parent,value,path,key){this._cachedPath=[];this.parent=parent;this.data=value;this._path=path;this._key=key}get path(){if(!this._cachedPath.length){if(this._key instanceof Array){this._cachedPath.push(...this._path,...this._key)}else{this._cachedPath.push(...this._path,this._key)}}return this._cachedPath}}const handleResult=(ctx,result)=>{if(isValid(result)){return{success:true,data:result.value}}else{if(!ctx.common.issues.length){throw new Error("Validation failed but no issues detected.")}return{success:false,get error(){if(this._error)return this._error;const error=new ZodError(ctx.common.issues);this._error=error;return this._error}}}};function processCreateParams(params){if(!params)return{};const{errorMap,invalid_type_error,required_error,description}=params;if(errorMap&&(invalid_type_error||required_error)){throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`)}if(errorMap)return{errorMap:errorMap,description:description};const customMap=(iss,ctx)=>{var _a,_b;const{message}=params;if(iss.code==="invalid_enum_value"){return{message:message!==null&&message!==void 0?message:ctx.defaultError}}if(typeof ctx.data==="undefined"){return{message:(_a=message!==null&&message!==void 0?message:required_error)!==null&&_a!==void 0?_a:ctx.defaultError}}if(iss.code!=="invalid_type")return{message:ctx.defaultError};return{message:(_b=message!==null&&message!==void 0?message:invalid_type_error)!==null&&_b!==void 0?_b:ctx.defaultError}};return{errorMap:customMap,description:description}}class ZodType{constructor(def){this.spa=this.safeParseAsync;this._def=def;this.parse=this.parse.bind(this);this.safeParse=this.safeParse.bind(this);this.parseAsync=this.parseAsync.bind(this);this.safeParseAsync=this.safeParseAsync.bind(this);this.spa=this.spa.bind(this);this.refine=this.refine.bind(this);this.refinement=this.refinement.bind(this);this.superRefine=this.superRefine.bind(this);this.optional=this.optional.bind(this);this.nullable=this.nullable.bind(this);this.nullish=this.nullish.bind(this);this.array=this.array.bind(this);this.promise=this.promise.bind(this);this.or=this.or.bind(this);this.and=this.and.bind(this);this.transform=this.transform.bind(this);this.brand=this.brand.bind(this);this.default=this.default.bind(this);this.catch=this.catch.bind(this);this.describe=this.describe.bind(this);this.pipe=this.pipe.bind(this);this.readonly=this.readonly.bind(this);this.isNullable=this.isNullable.bind(this);this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(input){return getParsedType(input.data)}_getOrReturnCtx(input,ctx){return ctx||{common:input.parent.common,data:input.data,parsedType:getParsedType(input.data),schemaErrorMap:this._def.errorMap,path:input.path,parent:input.parent}}_processInputParams(input){return{status:new ParseStatus,ctx:{common:input.parent.common,data:input.data,parsedType:getParsedType(input.data),schemaErrorMap:this._def.errorMap,path:input.path,parent:input.parent}}}_parseSync(input){const result=this._parse(input);if(isAsync(result)){throw new Error("Synchronous parse encountered promise.")}return result}_parseAsync(input){const result=this._parse(input);return Promise.resolve(result)}parse(data,params){const result=this.safeParse(data,params);if(result.success)return result.data;throw result.error}safeParse(data,params){var _a;const ctx={common:{issues:[],async:(_a=params===null||params===void 0?void 0:params.async)!==null&&_a!==void 0?_a:false,contextualErrorMap:params===null||params===void 0?void 0:params.errorMap},path:(params===null||params===void 0?void 0:params.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:data,parsedType:getParsedType(data)};const result=this._parseSync({data:data,path:ctx.path,parent:ctx});return handleResult(ctx,result)}async parseAsync(data,params){const result=await this.safeParseAsync(data,params);if(result.success)return result.data;throw result.error}async safeParseAsync(data,params){const ctx={common:{issues:[],contextualErrorMap:params===null||params===void 0?void 0:params.errorMap,async:true},path:(params===null||params===void 0?void 0:params.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:data,parsedType:getParsedType(data)};const maybeAsyncResult=this._parse({data:data,path:ctx.path,parent:ctx});const result=await(isAsync(maybeAsyncResult)?maybeAsyncResult:Promise.resolve(maybeAsyncResult));return handleResult(ctx,result)}refine(check,message){const getIssueProperties=val=>{if(typeof message==="string"||typeof message==="undefined"){return{message:message}}else if(typeof message==="function"){return message(val)}else{return message}};return this._refinement((val,ctx)=>{const result=check(val);const setError=()=>ctx.addIssue({code:ZodIssueCode.custom,...getIssueProperties(val)});if(typeof Promise!=="undefined"&&result instanceof Promise){return result.then(data=>{if(!data){setError();return false}else{return true}})}if(!result){setError();return false}else{return true}})}refinement(check,refinementData){return this._refinement((val,ctx)=>{if(!check(val)){ctx.addIssue(typeof refinementData==="function"?refinementData(val,ctx):refinementData);return false}else{return true}})}_refinement(refinement){return new ZodEffects({schema:this,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:{type:"refinement",refinement:refinement}})}superRefine(refinement){return this._refinement(refinement)}optional(){return ZodOptional.create(this,this._def)}nullable(){return ZodNullable.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return ZodArray.create(this,this._def)}promise(){return ZodPromise.create(this,this._def)}or(option){return ZodUnion.create([this,option],this._def)}and(incoming){return ZodIntersection.create(this,incoming,this._def)}transform(transform){return new ZodEffects({...processCreateParams(this._def),schema:this,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:{type:"transform",transform:transform}})}default(def){const defaultValueFunc=typeof def==="function"?def:()=>def;return new ZodDefault({...processCreateParams(this._def),innerType:this,defaultValue:defaultValueFunc,typeName:ZodFirstPartyTypeKind.ZodDefault})}brand(){return new ZodBranded({typeName:ZodFirstPartyTypeKind.ZodBranded,type:this,...processCreateParams(this._def)})}catch(def){const catchValueFunc=typeof def==="function"?def:()=>def;return new ZodCatch({...processCreateParams(this._def),innerType:this,catchValue:catchValueFunc,typeName:ZodFirstPartyTypeKind.ZodCatch})}describe(description){const This=this.constructor;return new This({...this._def,description:description})}pipe(target){return ZodPipeline.create(this,target)}readonly(){return ZodReadonly.create(this)}isOptional(){return this.safeParse(undefined).success}isNullable(){return this.safeParse(null).success}}const cuidRegex=/^c[^\s-]{8,}$/i;const cuid2Regex=/^[0-9a-z]+$/;const ulidRegex=/^[0-9A-HJKMNP-TV-Z]{26}$/;const uuidRegex=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i;const nanoidRegex=/^[a-z0-9_-]{21}$/i;const durationRegex=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/;const emailRegex=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i;const _emojiRegex=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;let emojiRegex;const ipv4Regex=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;const ipv6Regex=/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;const base64Regex=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;const dateRegexSource=`((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`;const dateRegex=new RegExp(`^${dateRegexSource}$`);function timeRegexSource(args){let regex=`([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d`;if(args.precision){regex=`${regex}\\.\\d{${args.precision}}`}else if(args.precision==null){regex=`${regex}(\\.\\d+)?`}return regex}function timeRegex(args){return new RegExp(`^${timeRegexSource(args)}$`)}function datetimeRegex(args){let regex=`${dateRegexSource}T${timeRegexSource(args)}`;const opts=[];opts.push(args.local?`Z?`:`Z`);if(args.offset)opts.push(`([+-]\\d{2}:?\\d{2})`);regex=`${regex}(${opts.join("|")})`;return new RegExp(`^${regex}$`)}function isValidIP(ip,version){if((version==="v4"||!version)&&ipv4Regex.test(ip)){return true}if((version==="v6"||!version)&&ipv6Regex.test(ip)){return true}return false}class ZodString extends ZodType{_parse(input){if(this._def.coerce){input.data=String(input.data)}const parsedType=this._getType(input);if(parsedType!==ZodParsedType.string){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.string,received:ctx.parsedType});return INVALID}const status=new ParseStatus;let ctx=undefined;for(const check of this._def.checks){if(check.kind==="min"){if(input.data.lengthcheck.value){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:check.value,type:"string",inclusive:true,exact:false,message:check.message});status.dirty()}}else if(check.kind==="length"){const tooBig=input.data.length>check.value;const tooSmall=input.data.lengthregex.test(data),{validation:validation,code:ZodIssueCode.invalid_string,...errorUtil.errToObj(message)})}_addCheck(check){return new ZodString({...this._def,checks:[...this._def.checks,check]})}email(message){return this._addCheck({kind:"email",...errorUtil.errToObj(message)})}url(message){return this._addCheck({kind:"url",...errorUtil.errToObj(message)})}emoji(message){return this._addCheck({kind:"emoji",...errorUtil.errToObj(message)})}uuid(message){return this._addCheck({kind:"uuid",...errorUtil.errToObj(message)})}nanoid(message){return this._addCheck({kind:"nanoid",...errorUtil.errToObj(message)})}cuid(message){return this._addCheck({kind:"cuid",...errorUtil.errToObj(message)})}cuid2(message){return this._addCheck({kind:"cuid2",...errorUtil.errToObj(message)})}ulid(message){return this._addCheck({kind:"ulid",...errorUtil.errToObj(message)})}base64(message){return this._addCheck({kind:"base64",...errorUtil.errToObj(message)})}ip(options){return this._addCheck({kind:"ip",...errorUtil.errToObj(options)})}datetime(options){var _a,_b;if(typeof options==="string"){return this._addCheck({kind:"datetime",precision:null,offset:false,local:false,message:options})}return this._addCheck({kind:"datetime",precision:typeof(options===null||options===void 0?void 0:options.precision)==="undefined"?null:options===null||options===void 0?void 0:options.precision,offset:(_a=options===null||options===void 0?void 0:options.offset)!==null&&_a!==void 0?_a:false,local:(_b=options===null||options===void 0?void 0:options.local)!==null&&_b!==void 0?_b:false,...errorUtil.errToObj(options===null||options===void 0?void 0:options.message)})}date(message){return this._addCheck({kind:"date",message:message})}time(options){if(typeof options==="string"){return this._addCheck({kind:"time",precision:null,message:options})}return this._addCheck({kind:"time",precision:typeof(options===null||options===void 0?void 0:options.precision)==="undefined"?null:options===null||options===void 0?void 0:options.precision,...errorUtil.errToObj(options===null||options===void 0?void 0:options.message)})}duration(message){return this._addCheck({kind:"duration",...errorUtil.errToObj(message)})}regex(regex,message){return this._addCheck({kind:"regex",regex:regex,...errorUtil.errToObj(message)})}includes(value,options){return this._addCheck({kind:"includes",value:value,position:options===null||options===void 0?void 0:options.position,...errorUtil.errToObj(options===null||options===void 0?void 0:options.message)})}startsWith(value,message){return this._addCheck({kind:"startsWith",value:value,...errorUtil.errToObj(message)})}endsWith(value,message){return this._addCheck({kind:"endsWith",value:value,...errorUtil.errToObj(message)})}min(minLength,message){return this._addCheck({kind:"min",value:minLength,...errorUtil.errToObj(message)})}max(maxLength,message){return this._addCheck({kind:"max",value:maxLength,...errorUtil.errToObj(message)})}length(len,message){return this._addCheck({kind:"length",value:len,...errorUtil.errToObj(message)})}nonempty(message){return this.min(1,errorUtil.errToObj(message))}trim(){return new ZodString({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new ZodString({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new ZodString({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(ch=>ch.kind==="datetime")}get isDate(){return!!this._def.checks.find(ch=>ch.kind==="date")}get isTime(){return!!this._def.checks.find(ch=>ch.kind==="time")}get isDuration(){return!!this._def.checks.find(ch=>ch.kind==="duration")}get isEmail(){return!!this._def.checks.find(ch=>ch.kind==="email")}get isURL(){return!!this._def.checks.find(ch=>ch.kind==="url")}get isEmoji(){return!!this._def.checks.find(ch=>ch.kind==="emoji")}get isUUID(){return!!this._def.checks.find(ch=>ch.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(ch=>ch.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(ch=>ch.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(ch=>ch.kind==="cuid2")}get isULID(){return!!this._def.checks.find(ch=>ch.kind==="ulid")}get isIP(){return!!this._def.checks.find(ch=>ch.kind==="ip")}get isBase64(){return!!this._def.checks.find(ch=>ch.kind==="base64")}get minLength(){let min=null;for(const ch of this._def.checks){if(ch.kind==="min"){if(min===null||ch.value>min)min=ch.value}}return min}get maxLength(){let max=null;for(const ch of this._def.checks){if(ch.kind==="max"){if(max===null||ch.value{var _a;return new ZodString({checks:[],typeName:ZodFirstPartyTypeKind.ZodString,coerce:(_a=params===null||params===void 0?void 0:params.coerce)!==null&&_a!==void 0?_a:false,...processCreateParams(params)})};function floatSafeRemainder(val,step){const valDecCount=(val.toString().split(".")[1]||"").length;const stepDecCount=(step.toString().split(".")[1]||"").length;const decCount=valDecCount>stepDecCount?valDecCount:stepDecCount;const valInt=parseInt(val.toFixed(decCount).replace(".",""));const stepInt=parseInt(step.toFixed(decCount).replace(".",""));return valInt%stepInt/Math.pow(10,decCount)}class ZodNumber extends ZodType{constructor(){super(...arguments);this.min=this.gte;this.max=this.lte;this.step=this.multipleOf}_parse(input){if(this._def.coerce){input.data=Number(input.data)}const parsedType=this._getType(input);if(parsedType!==ZodParsedType.number){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.number,received:ctx.parsedType});return INVALID}let ctx=undefined;const status=new ParseStatus;for(const check of this._def.checks){if(check.kind==="int"){if(!util.isInteger(input.data)){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:"integer",received:"float",message:check.message});status.dirty()}}else if(check.kind==="min"){const tooSmall=check.inclusive?input.datacheck.value:input.data>=check.value;if(tooBig){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:check.value,type:"number",inclusive:check.inclusive,exact:false,message:check.message});status.dirty()}}else if(check.kind==="multipleOf"){if(floatSafeRemainder(input.data,check.value)!==0){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.not_multiple_of,multipleOf:check.value,message:check.message});status.dirty()}}else if(check.kind==="finite"){if(!Number.isFinite(input.data)){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.not_finite,message:check.message});status.dirty()}}else{util.assertNever(check)}}return{status:status.value,value:input.data}}gte(value,message){return this.setLimit("min",value,true,errorUtil.toString(message))}gt(value,message){return this.setLimit("min",value,false,errorUtil.toString(message))}lte(value,message){return this.setLimit("max",value,true,errorUtil.toString(message))}lt(value,message){return this.setLimit("max",value,false,errorUtil.toString(message))}setLimit(kind,value,inclusive,message){return new ZodNumber({...this._def,checks:[...this._def.checks,{kind:kind,value:value,inclusive:inclusive,message:errorUtil.toString(message)}]})}_addCheck(check){return new ZodNumber({...this._def,checks:[...this._def.checks,check]})}int(message){return this._addCheck({kind:"int",message:errorUtil.toString(message)})}positive(message){return this._addCheck({kind:"min",value:0,inclusive:false,message:errorUtil.toString(message)})}negative(message){return this._addCheck({kind:"max",value:0,inclusive:false,message:errorUtil.toString(message)})}nonpositive(message){return this._addCheck({kind:"max",value:0,inclusive:true,message:errorUtil.toString(message)})}nonnegative(message){return this._addCheck({kind:"min",value:0,inclusive:true,message:errorUtil.toString(message)})}multipleOf(value,message){return this._addCheck({kind:"multipleOf",value:value,message:errorUtil.toString(message)})}finite(message){return this._addCheck({kind:"finite",message:errorUtil.toString(message)})}safe(message){return this._addCheck({kind:"min",inclusive:true,value:Number.MIN_SAFE_INTEGER,message:errorUtil.toString(message)})._addCheck({kind:"max",inclusive:true,value:Number.MAX_SAFE_INTEGER,message:errorUtil.toString(message)})}get minValue(){let min=null;for(const ch of this._def.checks){if(ch.kind==="min"){if(min===null||ch.value>min)min=ch.value}}return min}get maxValue(){let max=null;for(const ch of this._def.checks){if(ch.kind==="max"){if(max===null||ch.valuech.kind==="int"||ch.kind==="multipleOf"&&util.isInteger(ch.value))}get isFinite(){let max=null,min=null;for(const ch of this._def.checks){if(ch.kind==="finite"||ch.kind==="int"||ch.kind==="multipleOf"){return true}else if(ch.kind==="min"){if(min===null||ch.value>min)min=ch.value}else if(ch.kind==="max"){if(max===null||ch.value{return new ZodNumber({checks:[],typeName:ZodFirstPartyTypeKind.ZodNumber,coerce:(params===null||params===void 0?void 0:params.coerce)||false,...processCreateParams(params)})};class ZodBigInt extends ZodType{constructor(){super(...arguments);this.min=this.gte;this.max=this.lte}_parse(input){if(this._def.coerce){input.data=BigInt(input.data)}const parsedType=this._getType(input);if(parsedType!==ZodParsedType.bigint){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.bigint,received:ctx.parsedType});return INVALID}let ctx=undefined;const status=new ParseStatus;for(const check of this._def.checks){if(check.kind==="min"){const tooSmall=check.inclusive?input.datacheck.value:input.data>=check.value;if(tooBig){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.too_big,type:"bigint",maximum:check.value,inclusive:check.inclusive,message:check.message});status.dirty()}}else if(check.kind==="multipleOf"){if(input.data%check.value!==BigInt(0)){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.not_multiple_of,multipleOf:check.value,message:check.message});status.dirty()}}else{util.assertNever(check)}}return{status:status.value,value:input.data}}gte(value,message){return this.setLimit("min",value,true,errorUtil.toString(message))}gt(value,message){return this.setLimit("min",value,false,errorUtil.toString(message))}lte(value,message){return this.setLimit("max",value,true,errorUtil.toString(message))}lt(value,message){return this.setLimit("max",value,false,errorUtil.toString(message))}setLimit(kind,value,inclusive,message){return new ZodBigInt({...this._def,checks:[...this._def.checks,{kind:kind,value:value,inclusive:inclusive,message:errorUtil.toString(message)}]})}_addCheck(check){return new ZodBigInt({...this._def,checks:[...this._def.checks,check]})}positive(message){return this._addCheck({kind:"min",value:BigInt(0),inclusive:false,message:errorUtil.toString(message)})}negative(message){return this._addCheck({kind:"max",value:BigInt(0),inclusive:false,message:errorUtil.toString(message)})}nonpositive(message){return this._addCheck({kind:"max",value:BigInt(0),inclusive:true,message:errorUtil.toString(message)})}nonnegative(message){return this._addCheck({kind:"min",value:BigInt(0),inclusive:true,message:errorUtil.toString(message)})}multipleOf(value,message){return this._addCheck({kind:"multipleOf",value:value,message:errorUtil.toString(message)})}get minValue(){let min=null;for(const ch of this._def.checks){if(ch.kind==="min"){if(min===null||ch.value>min)min=ch.value}}return min}get maxValue(){let max=null;for(const ch of this._def.checks){if(ch.kind==="max"){if(max===null||ch.value{var _a;return new ZodBigInt({checks:[],typeName:ZodFirstPartyTypeKind.ZodBigInt,coerce:(_a=params===null||params===void 0?void 0:params.coerce)!==null&&_a!==void 0?_a:false,...processCreateParams(params)})};class ZodBoolean extends ZodType{_parse(input){if(this._def.coerce){input.data=Boolean(input.data)}const parsedType=this._getType(input);if(parsedType!==ZodParsedType.boolean){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.boolean,received:ctx.parsedType});return INVALID}return OK(input.data)}}ZodBoolean.create=params=>{return new ZodBoolean({typeName:ZodFirstPartyTypeKind.ZodBoolean,coerce:(params===null||params===void 0?void 0:params.coerce)||false,...processCreateParams(params)})};class ZodDate extends ZodType{_parse(input){if(this._def.coerce){input.data=new Date(input.data)}const parsedType=this._getType(input);if(parsedType!==ZodParsedType.date){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.date,received:ctx.parsedType});return INVALID}if(isNaN(input.data.getTime())){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_date});return INVALID}const status=new ParseStatus;let ctx=undefined;for(const check of this._def.checks){if(check.kind==="min"){if(input.data.getTime()check.value){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.too_big,message:check.message,inclusive:true,exact:false,maximum:check.value,type:"date"});status.dirty()}}else{util.assertNever(check)}}return{status:status.value,value:new Date(input.data.getTime())}}_addCheck(check){return new ZodDate({...this._def,checks:[...this._def.checks,check]})}min(minDate,message){return this._addCheck({kind:"min",value:minDate.getTime(),message:errorUtil.toString(message)})}max(maxDate,message){return this._addCheck({kind:"max",value:maxDate.getTime(),message:errorUtil.toString(message)})}get minDate(){let min=null;for(const ch of this._def.checks){if(ch.kind==="min"){if(min===null||ch.value>min)min=ch.value}}return min!=null?new Date(min):null}get maxDate(){let max=null;for(const ch of this._def.checks){if(ch.kind==="max"){if(max===null||ch.value{return new ZodDate({checks:[],coerce:(params===null||params===void 0?void 0:params.coerce)||false,typeName:ZodFirstPartyTypeKind.ZodDate,...processCreateParams(params)})};class ZodSymbol extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType!==ZodParsedType.symbol){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.symbol,received:ctx.parsedType});return INVALID}return OK(input.data)}}ZodSymbol.create=params=>{return new ZodSymbol({typeName:ZodFirstPartyTypeKind.ZodSymbol,...processCreateParams(params)})};class ZodUndefined extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType!==ZodParsedType.undefined){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.undefined,received:ctx.parsedType});return INVALID}return OK(input.data)}}ZodUndefined.create=params=>{return new ZodUndefined({typeName:ZodFirstPartyTypeKind.ZodUndefined,...processCreateParams(params)})};class ZodNull extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType!==ZodParsedType.null){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.null,received:ctx.parsedType});return INVALID}return OK(input.data)}}ZodNull.create=params=>{return new ZodNull({typeName:ZodFirstPartyTypeKind.ZodNull,...processCreateParams(params)})};class ZodAny extends ZodType{constructor(){super(...arguments);this._any=true}_parse(input){return OK(input.data)}}ZodAny.create=params=>{return new ZodAny({typeName:ZodFirstPartyTypeKind.ZodAny,...processCreateParams(params)})};class ZodUnknown extends ZodType{constructor(){super(...arguments);this._unknown=true}_parse(input){return OK(input.data)}}ZodUnknown.create=params=>{return new ZodUnknown({typeName:ZodFirstPartyTypeKind.ZodUnknown,...processCreateParams(params)})};class ZodNever extends ZodType{_parse(input){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.never,received:ctx.parsedType});return INVALID}}ZodNever.create=params=>{return new ZodNever({typeName:ZodFirstPartyTypeKind.ZodNever,...processCreateParams(params)})};class ZodVoid extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType!==ZodParsedType.undefined){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.void,received:ctx.parsedType});return INVALID}return OK(input.data)}}ZodVoid.create=params=>{return new ZodVoid({typeName:ZodFirstPartyTypeKind.ZodVoid,...processCreateParams(params)})};class ZodArray extends ZodType{_parse(input){const{ctx,status}=this._processInputParams(input);const def=this._def;if(ctx.parsedType!==ZodParsedType.array){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.array,received:ctx.parsedType});return INVALID}if(def.exactLength!==null){const tooBig=ctx.data.length>def.exactLength.value;const tooSmall=ctx.data.lengthdef.maxLength.value){addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:def.maxLength.value,type:"array",inclusive:true,exact:false,message:def.maxLength.message});status.dirty()}}if(ctx.common.async){return Promise.all([...ctx.data].map((item,i)=>{return def.type._parseAsync(new ParseInputLazyPath(ctx,item,ctx.path,i))})).then(result=>{return ParseStatus.mergeArray(status,result)})}const result=[...ctx.data].map((item,i)=>{return def.type._parseSync(new ParseInputLazyPath(ctx,item,ctx.path,i))});return ParseStatus.mergeArray(status,result)}get element(){return this._def.type}min(minLength,message){return new ZodArray({...this._def,minLength:{value:minLength,message:errorUtil.toString(message)}})}max(maxLength,message){return new ZodArray({...this._def,maxLength:{value:maxLength,message:errorUtil.toString(message)}})}length(len,message){return new ZodArray({...this._def,exactLength:{value:len,message:errorUtil.toString(message)}})}nonempty(message){return this.min(1,message)}}ZodArray.create=(schema,params)=>{return new ZodArray({type:schema,minLength:null,maxLength:null,exactLength:null,typeName:ZodFirstPartyTypeKind.ZodArray,...processCreateParams(params)})};function deepPartialify(schema){if(schema instanceof ZodObject){const newShape={};for(const key in schema.shape){const fieldSchema=schema.shape[key];newShape[key]=ZodOptional.create(deepPartialify(fieldSchema))}return new ZodObject({...schema._def,shape:()=>newShape})}else if(schema instanceof ZodArray){return new ZodArray({...schema._def,type:deepPartialify(schema.element)})}else if(schema instanceof ZodOptional){return ZodOptional.create(deepPartialify(schema.unwrap()))}else if(schema instanceof ZodNullable){return ZodNullable.create(deepPartialify(schema.unwrap()))}else if(schema instanceof ZodTuple){return ZodTuple.create(schema.items.map(item=>deepPartialify(item)))}else{return schema}}class ZodObject extends ZodType{constructor(){super(...arguments);this._cached=null;this.nonstrict=this.passthrough;this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const shape=this._def.shape();const keys=util.objectKeys(shape);return this._cached={shape:shape,keys:keys}}_parse(input){const parsedType=this._getType(input);if(parsedType!==ZodParsedType.object){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:ctx.parsedType});return INVALID}const{status,ctx}=this._processInputParams(input);const{shape,keys:shapeKeys}=this._getCached();const extraKeys=[];if(!(this._def.catchall instanceof ZodNever&&this._def.unknownKeys==="strip")){for(const key in ctx.data){if(!shapeKeys.includes(key)){extraKeys.push(key)}}}const pairs=[];for(const key of shapeKeys){const keyValidator=shape[key];const value=ctx.data[key];pairs.push({key:{status:"valid",value:key},value:keyValidator._parse(new ParseInputLazyPath(ctx,value,ctx.path,key)),alwaysSet:key in ctx.data})}if(this._def.catchall instanceof ZodNever){const unknownKeys=this._def.unknownKeys;if(unknownKeys==="passthrough"){for(const key of extraKeys){pairs.push({key:{status:"valid",value:key},value:{status:"valid",value:ctx.data[key]}})}}else if(unknownKeys==="strict"){if(extraKeys.length>0){addIssueToContext(ctx,{code:ZodIssueCode.unrecognized_keys,keys:extraKeys});status.dirty()}}else if(unknownKeys==="strip");else{throw new Error(`Internal ZodObject error: invalid unknownKeys value.`)}}else{const catchall=this._def.catchall;for(const key of extraKeys){const value=ctx.data[key];pairs.push({key:{status:"valid",value:key},value:catchall._parse(new ParseInputLazyPath(ctx,value,ctx.path,key)),alwaysSet:key in ctx.data})}}if(ctx.common.async){return Promise.resolve().then(async()=>{const syncPairs=[];for(const pair of pairs){const key=await pair.key;const value=await pair.value;syncPairs.push({key:key,value:value,alwaysSet:pair.alwaysSet})}return syncPairs}).then(syncPairs=>{return ParseStatus.mergeObjectSync(status,syncPairs)})}else{return ParseStatus.mergeObjectSync(status,pairs)}}get shape(){return this._def.shape()}strict(message){errorUtil.errToObj;return new ZodObject({...this._def,unknownKeys:"strict",...message!==undefined?{errorMap:(issue,ctx)=>{var _a,_b,_c,_d;const defaultError=(_c=(_b=(_a=this._def).errorMap)===null||_b===void 0?void 0:_b.call(_a,issue,ctx).message)!==null&&_c!==void 0?_c:ctx.defaultError;if(issue.code==="unrecognized_keys")return{message:(_d=errorUtil.errToObj(message).message)!==null&&_d!==void 0?_d:defaultError};return{message:defaultError}}}:{}})}strip(){return new ZodObject({...this._def,unknownKeys:"strip"})}passthrough(){return new ZodObject({...this._def,unknownKeys:"passthrough"})}extend(augmentation){return new ZodObject({...this._def,shape:()=>({...this._def.shape(),...augmentation})})}merge(merging){const merged=new ZodObject({unknownKeys:merging._def.unknownKeys,catchall:merging._def.catchall,shape:()=>({...this._def.shape(),...merging._def.shape()}),typeName:ZodFirstPartyTypeKind.ZodObject});return merged}setKey(key,schema){return this.augment({[key]:schema})}catchall(index){return new ZodObject({...this._def,catchall:index})}pick(mask){const shape={};util.objectKeys(mask).forEach(key=>{if(mask[key]&&this.shape[key]){shape[key]=this.shape[key]}});return new ZodObject({...this._def,shape:()=>shape})}omit(mask){const shape={};util.objectKeys(this.shape).forEach(key=>{if(!mask[key]){shape[key]=this.shape[key]}});return new ZodObject({...this._def,shape:()=>shape})}deepPartial(){return deepPartialify(this)}partial(mask){const newShape={};util.objectKeys(this.shape).forEach(key=>{const fieldSchema=this.shape[key];if(mask&&!mask[key]){newShape[key]=fieldSchema}else{newShape[key]=fieldSchema.optional()}});return new ZodObject({...this._def,shape:()=>newShape})}required(mask){const newShape={};util.objectKeys(this.shape).forEach(key=>{if(mask&&!mask[key]){newShape[key]=this.shape[key]}else{const fieldSchema=this.shape[key];let newField=fieldSchema;while(newField instanceof ZodOptional){newField=newField._def.innerType}newShape[key]=newField}});return new ZodObject({...this._def,shape:()=>newShape})}keyof(){return createZodEnum(util.objectKeys(this.shape))}}ZodObject.create=(shape,params)=>{return new ZodObject({shape:()=>shape,unknownKeys:"strip",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(params)})};ZodObject.strictCreate=(shape,params)=>{return new ZodObject({shape:()=>shape,unknownKeys:"strict",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(params)})};ZodObject.lazycreate=(shape,params)=>{return new ZodObject({shape:shape,unknownKeys:"strip",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(params)})};class ZodUnion extends ZodType{_parse(input){const{ctx}=this._processInputParams(input);const options=this._def.options;function handleResults(results){for(const result of results){if(result.result.status==="valid"){return result.result}}for(const result of results){if(result.result.status==="dirty"){ctx.common.issues.push(...result.ctx.common.issues);return result.result}}const unionErrors=results.map(result=>new ZodError(result.ctx.common.issues));addIssueToContext(ctx,{code:ZodIssueCode.invalid_union,unionErrors:unionErrors});return INVALID}if(ctx.common.async){return Promise.all(options.map(async option=>{const childCtx={...ctx,common:{...ctx.common,issues:[]},parent:null};return{result:await option._parseAsync({data:ctx.data,path:ctx.path,parent:childCtx}),ctx:childCtx}})).then(handleResults)}else{let dirty=undefined;const issues=[];for(const option of options){const childCtx={...ctx,common:{...ctx.common,issues:[]},parent:null};const result=option._parseSync({data:ctx.data,path:ctx.path,parent:childCtx});if(result.status==="valid"){return result}else if(result.status==="dirty"&&!dirty){dirty={result:result,ctx:childCtx}}if(childCtx.common.issues.length){issues.push(childCtx.common.issues)}}if(dirty){ctx.common.issues.push(...dirty.ctx.common.issues);return dirty.result}const unionErrors=issues.map(issues=>new ZodError(issues));addIssueToContext(ctx,{code:ZodIssueCode.invalid_union,unionErrors:unionErrors});return INVALID}}get options(){return this._def.options}}ZodUnion.create=(types,params)=>{return new ZodUnion({options:types,typeName:ZodFirstPartyTypeKind.ZodUnion,...processCreateParams(params)})};const getDiscriminator=type=>{if(type instanceof ZodLazy){return getDiscriminator(type.schema)}else if(type instanceof ZodEffects){return getDiscriminator(type.innerType())}else if(type instanceof ZodLiteral){return[type.value]}else if(type instanceof ZodEnum){return type.options}else if(type instanceof ZodNativeEnum){return util.objectValues(type.enum)}else if(type instanceof ZodDefault){return getDiscriminator(type._def.innerType)}else if(type instanceof ZodUndefined){return[undefined]}else if(type instanceof ZodNull){return[null]}else if(type instanceof ZodOptional){return[undefined,...getDiscriminator(type.unwrap())]}else if(type instanceof ZodNullable){return[null,...getDiscriminator(type.unwrap())]}else if(type instanceof ZodBranded){return getDiscriminator(type.unwrap())}else if(type instanceof ZodReadonly){return getDiscriminator(type.unwrap())}else if(type instanceof ZodCatch){return getDiscriminator(type._def.innerType)}else{return[]}};class ZodDiscriminatedUnion extends ZodType{_parse(input){const{ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.object){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:ctx.parsedType});return INVALID}const discriminator=this.discriminator;const discriminatorValue=ctx.data[discriminator];const option=this.optionsMap.get(discriminatorValue);if(!option){addIssueToContext(ctx,{code:ZodIssueCode.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[discriminator]});return INVALID}if(ctx.common.async){return option._parseAsync({data:ctx.data,path:ctx.path,parent:ctx})}else{return option._parseSync({data:ctx.data,path:ctx.path,parent:ctx})}}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(discriminator,options,params){const optionsMap=new Map;for(const type of options){const discriminatorValues=getDiscriminator(type.shape[discriminator]);if(!discriminatorValues.length){throw new Error(`A discriminator value for key \`${discriminator}\` could not be extracted from all schema options`)}for(const value of discriminatorValues){if(optionsMap.has(value)){throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`)}optionsMap.set(value,type)}}return new ZodDiscriminatedUnion({typeName:ZodFirstPartyTypeKind.ZodDiscriminatedUnion,discriminator:discriminator,options:options,optionsMap:optionsMap,...processCreateParams(params)})}}function mergeValues(a,b){const aType=getParsedType(a);const bType=getParsedType(b);if(a===b){return{valid:true,data:a}}else if(aType===ZodParsedType.object&&bType===ZodParsedType.object){const bKeys=util.objectKeys(b);const sharedKeys=util.objectKeys(a).filter(key=>bKeys.indexOf(key)!==-1);const newObj={...a,...b};for(const key of sharedKeys){const sharedValue=mergeValues(a[key],b[key]);if(!sharedValue.valid){return{valid:false}}newObj[key]=sharedValue.data}return{valid:true,data:newObj}}else if(aType===ZodParsedType.array&&bType===ZodParsedType.array){if(a.length!==b.length){return{valid:false}}const newArray=[];for(let index=0;index{if(isAborted(parsedLeft)||isAborted(parsedRight)){return INVALID}const merged=mergeValues(parsedLeft.value,parsedRight.value);if(!merged.valid){addIssueToContext(ctx,{code:ZodIssueCode.invalid_intersection_types});return INVALID}if(isDirty(parsedLeft)||isDirty(parsedRight)){status.dirty()}return{status:status.value,value:merged.data}};if(ctx.common.async){return Promise.all([this._def.left._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}),this._def.right._parseAsync({data:ctx.data,path:ctx.path,parent:ctx})]).then(([left,right])=>handleParsed(left,right))}else{return handleParsed(this._def.left._parseSync({data:ctx.data,path:ctx.path,parent:ctx}),this._def.right._parseSync({data:ctx.data,path:ctx.path,parent:ctx}))}}}ZodIntersection.create=(left,right,params)=>{return new ZodIntersection({left:left,right:right,typeName:ZodFirstPartyTypeKind.ZodIntersection,...processCreateParams(params)})};class ZodTuple extends ZodType{_parse(input){const{status,ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.array){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.array,received:ctx.parsedType});return INVALID}if(ctx.data.lengththis._def.items.length){addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:this._def.items.length,inclusive:true,exact:false,type:"array"});status.dirty()}const items=[...ctx.data].map((item,itemIndex)=>{const schema=this._def.items[itemIndex]||this._def.rest;if(!schema)return null;return schema._parse(new ParseInputLazyPath(ctx,item,ctx.path,itemIndex))}).filter(x=>!!x);if(ctx.common.async){return Promise.all(items).then(results=>{return ParseStatus.mergeArray(status,results)})}else{return ParseStatus.mergeArray(status,items)}}get items(){return this._def.items}rest(rest){return new ZodTuple({...this._def,rest:rest})}}ZodTuple.create=(schemas,params)=>{if(!Array.isArray(schemas)){throw new Error("You must pass an array of schemas to z.tuple([ ... ])")}return new ZodTuple({items:schemas,typeName:ZodFirstPartyTypeKind.ZodTuple,rest:null,...processCreateParams(params)})};class ZodRecord extends ZodType{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(input){const{status,ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.object){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:ctx.parsedType});return INVALID}const pairs=[];const keyType=this._def.keyType;const valueType=this._def.valueType;for(const key in ctx.data){pairs.push({key:keyType._parse(new ParseInputLazyPath(ctx,key,ctx.path,key)),value:valueType._parse(new ParseInputLazyPath(ctx,ctx.data[key],ctx.path,key)),alwaysSet:key in ctx.data})}if(ctx.common.async){return ParseStatus.mergeObjectAsync(status,pairs)}else{return ParseStatus.mergeObjectSync(status,pairs)}}get element(){return this._def.valueType}static create(first,second,third){if(second instanceof ZodType){return new ZodRecord({keyType:first,valueType:second,typeName:ZodFirstPartyTypeKind.ZodRecord,...processCreateParams(third)})}return new ZodRecord({keyType:ZodString.create(),valueType:first,typeName:ZodFirstPartyTypeKind.ZodRecord,...processCreateParams(second)})}}class ZodMap extends ZodType{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(input){const{status,ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.map){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.map,received:ctx.parsedType});return INVALID}const keyType=this._def.keyType;const valueType=this._def.valueType;const pairs=[...ctx.data.entries()].map(([key,value],index)=>{return{key:keyType._parse(new ParseInputLazyPath(ctx,key,ctx.path,[index,"key"])),value:valueType._parse(new ParseInputLazyPath(ctx,value,ctx.path,[index,"value"]))}});if(ctx.common.async){const finalMap=new Map;return Promise.resolve().then(async()=>{for(const pair of pairs){const key=await pair.key;const value=await pair.value;if(key.status==="aborted"||value.status==="aborted"){return INVALID}if(key.status==="dirty"||value.status==="dirty"){status.dirty()}finalMap.set(key.value,value.value)}return{status:status.value,value:finalMap}})}else{const finalMap=new Map;for(const pair of pairs){const key=pair.key;const value=pair.value;if(key.status==="aborted"||value.status==="aborted"){return INVALID}if(key.status==="dirty"||value.status==="dirty"){status.dirty()}finalMap.set(key.value,value.value)}return{status:status.value,value:finalMap}}}}ZodMap.create=(keyType,valueType,params)=>{return new ZodMap({valueType:valueType,keyType:keyType,typeName:ZodFirstPartyTypeKind.ZodMap,...processCreateParams(params)})};class ZodSet extends ZodType{_parse(input){const{status,ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.set){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.set,received:ctx.parsedType});return INVALID}const def=this._def;if(def.minSize!==null){if(ctx.data.sizedef.maxSize.value){addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:def.maxSize.value,type:"set",inclusive:true,exact:false,message:def.maxSize.message});status.dirty()}}const valueType=this._def.valueType;function finalizeSet(elements){const parsedSet=new Set;for(const element of elements){if(element.status==="aborted")return INVALID;if(element.status==="dirty")status.dirty();parsedSet.add(element.value)}return{status:status.value,value:parsedSet}}const elements=[...ctx.data.values()].map((item,i)=>valueType._parse(new ParseInputLazyPath(ctx,item,ctx.path,i)));if(ctx.common.async){return Promise.all(elements).then(elements=>finalizeSet(elements))}else{return finalizeSet(elements)}}min(minSize,message){return new ZodSet({...this._def,minSize:{value:minSize,message:errorUtil.toString(message)}})}max(maxSize,message){return new ZodSet({...this._def,maxSize:{value:maxSize,message:errorUtil.toString(message)}})}size(size,message){return this.min(size,message).max(size,message)}nonempty(message){return this.min(1,message)}}ZodSet.create=(valueType,params)=>{return new ZodSet({valueType:valueType,minSize:null,maxSize:null,typeName:ZodFirstPartyTypeKind.ZodSet,...processCreateParams(params)})};class ZodFunction extends ZodType{constructor(){super(...arguments);this.validate=this.implement}_parse(input){const{ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.function){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.function,received:ctx.parsedType});return INVALID}function makeArgsIssue(args,error){return makeIssue({data:args,path:ctx.path,errorMaps:[ctx.common.contextualErrorMap,ctx.schemaErrorMap,getErrorMap(),errorMap].filter(x=>!!x),issueData:{code:ZodIssueCode.invalid_arguments,argumentsError:error}})}function makeReturnsIssue(returns,error){return makeIssue({data:returns,path:ctx.path,errorMaps:[ctx.common.contextualErrorMap,ctx.schemaErrorMap,getErrorMap(),errorMap].filter(x=>!!x),issueData:{code:ZodIssueCode.invalid_return_type,returnTypeError:error}})}const params={errorMap:ctx.common.contextualErrorMap};const fn=ctx.data;if(this._def.returns instanceof ZodPromise){const me=this;return OK(async function(...args){const error=new ZodError([]);const parsedArgs=await me._def.args.parseAsync(args,params).catch(e=>{error.addIssue(makeArgsIssue(args,e));throw error});const result=await Reflect.apply(fn,this,parsedArgs);const parsedReturns=await me._def.returns._def.type.parseAsync(result,params).catch(e=>{error.addIssue(makeReturnsIssue(result,e));throw error});return parsedReturns})}else{const me=this;return OK(function(...args){const parsedArgs=me._def.args.safeParse(args,params);if(!parsedArgs.success){throw new ZodError([makeArgsIssue(args,parsedArgs.error)])}const result=Reflect.apply(fn,this,parsedArgs.data);const parsedReturns=me._def.returns.safeParse(result,params);if(!parsedReturns.success){throw new ZodError([makeReturnsIssue(result,parsedReturns.error)])}return parsedReturns.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...items){return new ZodFunction({...this._def,args:ZodTuple.create(items).rest(ZodUnknown.create())})}returns(returnType){return new ZodFunction({...this._def,returns:returnType})}implement(func){const validatedFunc=this.parse(func);return validatedFunc}strictImplement(func){const validatedFunc=this.parse(func);return validatedFunc}static create(args,returns,params){return new ZodFunction({args:args?args:ZodTuple.create([]).rest(ZodUnknown.create()),returns:returns||ZodUnknown.create(),typeName:ZodFirstPartyTypeKind.ZodFunction,...processCreateParams(params)})}}class ZodLazy extends ZodType{get schema(){return this._def.getter()}_parse(input){const{ctx}=this._processInputParams(input);const lazySchema=this._def.getter();return lazySchema._parse({data:ctx.data,path:ctx.path,parent:ctx})}}ZodLazy.create=(getter,params)=>{return new ZodLazy({getter:getter,typeName:ZodFirstPartyTypeKind.ZodLazy,...processCreateParams(params)})};class ZodLiteral extends ZodType{_parse(input){if(input.data!==this._def.value){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{received:ctx.data,code:ZodIssueCode.invalid_literal,expected:this._def.value});return INVALID}return{status:"valid",value:input.data}}get value(){return this._def.value}}ZodLiteral.create=(value,params)=>{return new ZodLiteral({value:value,typeName:ZodFirstPartyTypeKind.ZodLiteral,...processCreateParams(params)})};function createZodEnum(values,params){return new ZodEnum({values:values,typeName:ZodFirstPartyTypeKind.ZodEnum,...processCreateParams(params)})}class ZodEnum extends ZodType{constructor(){super(...arguments);_ZodEnum_cache.set(this,void 0)}_parse(input){if(typeof input.data!=="string"){const ctx=this._getOrReturnCtx(input);const expectedValues=this._def.values;addIssueToContext(ctx,{expected:util.joinValues(expectedValues),received:ctx.parsedType,code:ZodIssueCode.invalid_type});return INVALID}if(!__classPrivateFieldGet(this,_ZodEnum_cache)){__classPrivateFieldSet(this,_ZodEnum_cache,new Set(this._def.values))}if(!__classPrivateFieldGet(this,_ZodEnum_cache).has(input.data)){const ctx=this._getOrReturnCtx(input);const expectedValues=this._def.values;addIssueToContext(ctx,{received:ctx.data,code:ZodIssueCode.invalid_enum_value,options:expectedValues});return INVALID}return OK(input.data)}get options(){return this._def.values}get enum(){const enumValues={};for(const val of this._def.values){enumValues[val]=val}return enumValues}get Values(){const enumValues={};for(const val of this._def.values){enumValues[val]=val}return enumValues}get Enum(){const enumValues={};for(const val of this._def.values){enumValues[val]=val}return enumValues}extract(values,newDef=this._def){return ZodEnum.create(values,{...this._def,...newDef})}exclude(values,newDef=this._def){return ZodEnum.create(this.options.filter(opt=>!values.includes(opt)),{...this._def,...newDef})}}_ZodEnum_cache=new WeakMap;ZodEnum.create=createZodEnum;class ZodNativeEnum extends ZodType{constructor(){super(...arguments);_ZodNativeEnum_cache.set(this,void 0)}_parse(input){const nativeEnumValues=util.getValidEnumValues(this._def.values);const ctx=this._getOrReturnCtx(input);if(ctx.parsedType!==ZodParsedType.string&&ctx.parsedType!==ZodParsedType.number){const expectedValues=util.objectValues(nativeEnumValues);addIssueToContext(ctx,{expected:util.joinValues(expectedValues),received:ctx.parsedType,code:ZodIssueCode.invalid_type});return INVALID}if(!__classPrivateFieldGet(this,_ZodNativeEnum_cache)){__classPrivateFieldSet(this,_ZodNativeEnum_cache,new Set(util.getValidEnumValues(this._def.values)))}if(!__classPrivateFieldGet(this,_ZodNativeEnum_cache).has(input.data)){const expectedValues=util.objectValues(nativeEnumValues);addIssueToContext(ctx,{received:ctx.data,code:ZodIssueCode.invalid_enum_value,options:expectedValues});return INVALID}return OK(input.data)}get enum(){return this._def.values}}_ZodNativeEnum_cache=new WeakMap;ZodNativeEnum.create=(values,params)=>{return new ZodNativeEnum({values:values,typeName:ZodFirstPartyTypeKind.ZodNativeEnum,...processCreateParams(params)})};class ZodPromise extends ZodType{unwrap(){return this._def.type}_parse(input){const{ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.promise&&ctx.common.async===false){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.promise,received:ctx.parsedType});return INVALID}const promisified=ctx.parsedType===ZodParsedType.promise?ctx.data:Promise.resolve(ctx.data);return OK(promisified.then(data=>{return this._def.type.parseAsync(data,{path:ctx.path,errorMap:ctx.common.contextualErrorMap})}))}}ZodPromise.create=(schema,params)=>{return new ZodPromise({type:schema,typeName:ZodFirstPartyTypeKind.ZodPromise,...processCreateParams(params)})};class ZodEffects extends ZodType{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===ZodFirstPartyTypeKind.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(input){const{status,ctx}=this._processInputParams(input);const effect=this._def.effect||null;const checkCtx={addIssue:arg=>{addIssueToContext(ctx,arg);if(arg.fatal){status.abort()}else{status.dirty()}},get path(){return ctx.path}};checkCtx.addIssue=checkCtx.addIssue.bind(checkCtx);if(effect.type==="preprocess"){const processed=effect.transform(ctx.data,checkCtx);if(ctx.common.async){return Promise.resolve(processed).then(async processed=>{if(status.value==="aborted")return INVALID;const result=await this._def.schema._parseAsync({data:processed,path:ctx.path,parent:ctx});if(result.status==="aborted")return INVALID;if(result.status==="dirty")return DIRTY(result.value);if(status.value==="dirty")return DIRTY(result.value);return result})}else{if(status.value==="aborted")return INVALID;const result=this._def.schema._parseSync({data:processed,path:ctx.path,parent:ctx});if(result.status==="aborted")return INVALID;if(result.status==="dirty")return DIRTY(result.value);if(status.value==="dirty")return DIRTY(result.value);return result}}if(effect.type==="refinement"){const executeRefinement=acc=>{const result=effect.refinement(acc,checkCtx);if(ctx.common.async){return Promise.resolve(result)}if(result instanceof Promise){throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.")}return acc};if(ctx.common.async===false){const inner=this._def.schema._parseSync({data:ctx.data,path:ctx.path,parent:ctx});if(inner.status==="aborted")return INVALID;if(inner.status==="dirty")status.dirty();executeRefinement(inner.value);return{status:status.value,value:inner.value}}else{return this._def.schema._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}).then(inner=>{if(inner.status==="aborted")return INVALID;if(inner.status==="dirty")status.dirty();return executeRefinement(inner.value).then(()=>{return{status:status.value,value:inner.value}})})}}if(effect.type==="transform"){if(ctx.common.async===false){const base=this._def.schema._parseSync({data:ctx.data,path:ctx.path,parent:ctx});if(!isValid(base))return base;const result=effect.transform(base.value,checkCtx);if(result instanceof Promise){throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`)}return{status:status.value,value:result}}else{return this._def.schema._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}).then(base=>{if(!isValid(base))return base;return Promise.resolve(effect.transform(base.value,checkCtx)).then(result=>({status:status.value,value:result}))})}}util.assertNever(effect)}}ZodEffects.create=(schema,effect,params)=>{return new ZodEffects({schema:schema,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:effect,...processCreateParams(params)})};ZodEffects.createWithPreprocess=(preprocess,schema,params)=>{return new ZodEffects({schema:schema,effect:{type:"preprocess",transform:preprocess},typeName:ZodFirstPartyTypeKind.ZodEffects,...processCreateParams(params)})};class ZodOptional extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType===ZodParsedType.undefined){return OK(undefined)}return this._def.innerType._parse(input)}unwrap(){return this._def.innerType}}ZodOptional.create=(type,params)=>{return new ZodOptional({innerType:type,typeName:ZodFirstPartyTypeKind.ZodOptional,...processCreateParams(params)})};class ZodNullable extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType===ZodParsedType.null){return OK(null)}return this._def.innerType._parse(input)}unwrap(){return this._def.innerType}}ZodNullable.create=(type,params)=>{return new ZodNullable({innerType:type,typeName:ZodFirstPartyTypeKind.ZodNullable,...processCreateParams(params)})};class ZodDefault extends ZodType{_parse(input){const{ctx}=this._processInputParams(input);let data=ctx.data;if(ctx.parsedType===ZodParsedType.undefined){data=this._def.defaultValue()}return this._def.innerType._parse({data:data,path:ctx.path,parent:ctx})}removeDefault(){return this._def.innerType}}ZodDefault.create=(type,params)=>{return new ZodDefault({innerType:type,typeName:ZodFirstPartyTypeKind.ZodDefault,defaultValue:typeof params.default==="function"?params.default:()=>params.default,...processCreateParams(params)})};class ZodCatch extends ZodType{_parse(input){const{ctx}=this._processInputParams(input);const newCtx={...ctx,common:{...ctx.common,issues:[]}};const result=this._def.innerType._parse({data:newCtx.data,path:newCtx.path,parent:{...newCtx}});if(isAsync(result)){return result.then(result=>{return{status:"valid",value:result.status==="valid"?result.value:this._def.catchValue({get error(){return new ZodError(newCtx.common.issues)},input:newCtx.data})}})}else{return{status:"valid",value:result.status==="valid"?result.value:this._def.catchValue({get error(){return new ZodError(newCtx.common.issues)},input:newCtx.data})}}}removeCatch(){return this._def.innerType}}ZodCatch.create=(type,params)=>{return new ZodCatch({innerType:type,typeName:ZodFirstPartyTypeKind.ZodCatch,catchValue:typeof params.catch==="function"?params.catch:()=>params.catch,...processCreateParams(params)})};class ZodNaN extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType!==ZodParsedType.nan){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.nan,received:ctx.parsedType});return INVALID}return{status:"valid",value:input.data}}}ZodNaN.create=params=>{return new ZodNaN({typeName:ZodFirstPartyTypeKind.ZodNaN,...processCreateParams(params)})};const BRAND=Symbol("zod_brand");class ZodBranded extends ZodType{_parse(input){const{ctx}=this._processInputParams(input);const data=ctx.data;return this._def.type._parse({data:data,path:ctx.path,parent:ctx})}unwrap(){return this._def.type}}class ZodPipeline extends ZodType{_parse(input){const{status,ctx}=this._processInputParams(input);if(ctx.common.async){const handleAsync=async()=>{const inResult=await this._def.in._parseAsync({data:ctx.data,path:ctx.path,parent:ctx});if(inResult.status==="aborted")return INVALID;if(inResult.status==="dirty"){status.dirty();return DIRTY(inResult.value)}else{return this._def.out._parseAsync({data:inResult.value,path:ctx.path,parent:ctx})}};return handleAsync()}else{const inResult=this._def.in._parseSync({data:ctx.data,path:ctx.path,parent:ctx});if(inResult.status==="aborted")return INVALID;if(inResult.status==="dirty"){status.dirty();return{status:"dirty",value:inResult.value}}else{return this._def.out._parseSync({data:inResult.value,path:ctx.path,parent:ctx})}}}static create(a,b){return new ZodPipeline({in:a,out:b,typeName:ZodFirstPartyTypeKind.ZodPipeline})}}class ZodReadonly extends ZodType{_parse(input){const result=this._def.innerType._parse(input);const freeze=data=>{if(isValid(data)){data.value=Object.freeze(data.value)}return data};return isAsync(result)?result.then(data=>freeze(data)):freeze(result)}unwrap(){return this._def.innerType}}ZodReadonly.create=(type,params)=>{return new ZodReadonly({innerType:type,typeName:ZodFirstPartyTypeKind.ZodReadonly,...processCreateParams(params)})};function custom(check,params={},fatal){if(check)return ZodAny.create().superRefine((data,ctx)=>{var _a,_b;if(!check(data)){const p=typeof params==="function"?params(data):typeof params==="string"?{message:params}:params;const _fatal=(_b=(_a=p.fatal)!==null&&_a!==void 0?_a:fatal)!==null&&_b!==void 0?_b:true;const p2=typeof p==="string"?{message:p}:p;ctx.addIssue({code:"custom",...p2,fatal:_fatal})}});return ZodAny.create()}const late={object:ZodObject.lazycreate};var ZodFirstPartyTypeKind;(function(ZodFirstPartyTypeKind){ZodFirstPartyTypeKind["ZodString"]="ZodString";ZodFirstPartyTypeKind["ZodNumber"]="ZodNumber";ZodFirstPartyTypeKind["ZodNaN"]="ZodNaN";ZodFirstPartyTypeKind["ZodBigInt"]="ZodBigInt";ZodFirstPartyTypeKind["ZodBoolean"]="ZodBoolean";ZodFirstPartyTypeKind["ZodDate"]="ZodDate";ZodFirstPartyTypeKind["ZodSymbol"]="ZodSymbol";ZodFirstPartyTypeKind["ZodUndefined"]="ZodUndefined";ZodFirstPartyTypeKind["ZodNull"]="ZodNull";ZodFirstPartyTypeKind["ZodAny"]="ZodAny";ZodFirstPartyTypeKind["ZodUnknown"]="ZodUnknown";ZodFirstPartyTypeKind["ZodNever"]="ZodNever";ZodFirstPartyTypeKind["ZodVoid"]="ZodVoid";ZodFirstPartyTypeKind["ZodArray"]="ZodArray";ZodFirstPartyTypeKind["ZodObject"]="ZodObject";ZodFirstPartyTypeKind["ZodUnion"]="ZodUnion";ZodFirstPartyTypeKind["ZodDiscriminatedUnion"]="ZodDiscriminatedUnion";ZodFirstPartyTypeKind["ZodIntersection"]="ZodIntersection";ZodFirstPartyTypeKind["ZodTuple"]="ZodTuple";ZodFirstPartyTypeKind["ZodRecord"]="ZodRecord";ZodFirstPartyTypeKind["ZodMap"]="ZodMap";ZodFirstPartyTypeKind["ZodSet"]="ZodSet";ZodFirstPartyTypeKind["ZodFunction"]="ZodFunction";ZodFirstPartyTypeKind["ZodLazy"]="ZodLazy";ZodFirstPartyTypeKind["ZodLiteral"]="ZodLiteral";ZodFirstPartyTypeKind["ZodEnum"]="ZodEnum";ZodFirstPartyTypeKind["ZodEffects"]="ZodEffects";ZodFirstPartyTypeKind["ZodNativeEnum"]="ZodNativeEnum";ZodFirstPartyTypeKind["ZodOptional"]="ZodOptional";ZodFirstPartyTypeKind["ZodNullable"]="ZodNullable";ZodFirstPartyTypeKind["ZodDefault"]="ZodDefault";ZodFirstPartyTypeKind["ZodCatch"]="ZodCatch";ZodFirstPartyTypeKind["ZodPromise"]="ZodPromise";ZodFirstPartyTypeKind["ZodBranded"]="ZodBranded";ZodFirstPartyTypeKind["ZodPipeline"]="ZodPipeline";ZodFirstPartyTypeKind["ZodReadonly"]="ZodReadonly"})(ZodFirstPartyTypeKind||(ZodFirstPartyTypeKind={}));const instanceOfType=(cls,params={message:`Input not instance of ${cls.name}`})=>custom(data=>data instanceof cls,params);const stringType=ZodString.create;const numberType=ZodNumber.create;const nanType=ZodNaN.create;const bigIntType=ZodBigInt.create;const booleanType=ZodBoolean.create;const dateType=ZodDate.create;const symbolType=ZodSymbol.create;const undefinedType=ZodUndefined.create;const nullType=ZodNull.create;const anyType=ZodAny.create;const unknownType=ZodUnknown.create;const neverType=ZodNever.create;const voidType=ZodVoid.create;const arrayType=ZodArray.create;const objectType=ZodObject.create;const strictObjectType=ZodObject.strictCreate;const unionType=ZodUnion.create;const discriminatedUnionType=ZodDiscriminatedUnion.create;const intersectionType=ZodIntersection.create;const tupleType=ZodTuple.create;const recordType=ZodRecord.create;const mapType=ZodMap.create;const setType=ZodSet.create;const functionType=ZodFunction.create;const lazyType=ZodLazy.create;const literalType=ZodLiteral.create;const enumType=ZodEnum.create;const nativeEnumType=ZodNativeEnum.create;const promiseType=ZodPromise.create;const effectsType=ZodEffects.create;const optionalType=ZodOptional.create;const nullableType=ZodNullable.create;const preprocessType=ZodEffects.createWithPreprocess;const pipelineType=ZodPipeline.create;const ostring=()=>stringType().optional();const onumber=()=>numberType().optional();const oboolean=()=>booleanType().optional();const coerce={string:arg=>ZodString.create({...arg,coerce:true}),number:arg=>ZodNumber.create({...arg,coerce:true}),boolean:arg=>ZodBoolean.create({...arg,coerce:true}),bigint:arg=>ZodBigInt.create({...arg,coerce:true}),date:arg=>ZodDate.create({...arg,coerce:true})};const NEVER=INVALID;var z=Object.freeze({__proto__:null,defaultErrorMap:errorMap,setErrorMap:setErrorMap,getErrorMap:getErrorMap,makeIssue:makeIssue,EMPTY_PATH:EMPTY_PATH,addIssueToContext:addIssueToContext,ParseStatus:ParseStatus,INVALID:INVALID,DIRTY:DIRTY,OK:OK,isAborted:isAborted,isDirty:isDirty,isValid:isValid,isAsync:isAsync,get util(){return util},get objectUtil(){return objectUtil},ZodParsedType:ZodParsedType,getParsedType:getParsedType,ZodType:ZodType,datetimeRegex:datetimeRegex,ZodString:ZodString,ZodNumber:ZodNumber,ZodBigInt:ZodBigInt,ZodBoolean:ZodBoolean,ZodDate:ZodDate,ZodSymbol:ZodSymbol,ZodUndefined:ZodUndefined,ZodNull:ZodNull,ZodAny:ZodAny,ZodUnknown:ZodUnknown,ZodNever:ZodNever,ZodVoid:ZodVoid,ZodArray:ZodArray,ZodObject:ZodObject,ZodUnion:ZodUnion,ZodDiscriminatedUnion:ZodDiscriminatedUnion,ZodIntersection:ZodIntersection,ZodTuple:ZodTuple,ZodRecord:ZodRecord,ZodMap:ZodMap,ZodSet:ZodSet,ZodFunction:ZodFunction,ZodLazy:ZodLazy,ZodLiteral:ZodLiteral,ZodEnum:ZodEnum,ZodNativeEnum:ZodNativeEnum,ZodPromise:ZodPromise,ZodEffects:ZodEffects,ZodTransformer:ZodEffects,ZodOptional:ZodOptional,ZodNullable:ZodNullable,ZodDefault:ZodDefault,ZodCatch:ZodCatch,ZodNaN:ZodNaN,BRAND:BRAND,ZodBranded:ZodBranded,ZodPipeline:ZodPipeline,ZodReadonly:ZodReadonly,custom:custom,Schema:ZodType,ZodSchema:ZodType,late:late,get ZodFirstPartyTypeKind(){return ZodFirstPartyTypeKind},coerce:coerce,any:anyType,array:arrayType,bigint:bigIntType,boolean:booleanType,date:dateType,discriminatedUnion:discriminatedUnionType,effect:effectsType,enum:enumType,function:functionType,instanceof:instanceOfType,intersection:intersectionType,lazy:lazyType,literal:literalType,map:mapType,nan:nanType,nativeEnum:nativeEnumType,never:neverType,null:nullType,nullable:nullableType,number:numberType,object:objectType,oboolean:oboolean,onumber:onumber,optional:optionalType,ostring:ostring,pipeline:pipelineType,preprocess:preprocessType,promise:promiseType,record:recordType,set:setType,strictObject:strictObjectType,string:stringType,symbol:symbolType,transformer:effectsType,tuple:tupleType,undefined:undefinedType,union:unionType,unknown:unknownType,void:voidType,NEVER:NEVER,ZodIssueCode:ZodIssueCode,quotelessJson:quotelessJson,ZodError:ZodError});const SerializedSealingPair=z.object({privateKey:z.string(),publicKey:z.string()});const zPermitV2WithDefaults=z.object({name:z.string().optional().default("Unnamed Permit"),type:z.enum(["self","sharing","recipient"]),issuer:z.string().refine(val=>isAddress(val),{message:"PermitV2 issuer :: invalid address"}).refine(val=>val!==ZeroAddress,{message:"PermitV2 issuer :: must not be zeroAddress"}),expiration:z.number().optional().default(1e12),contracts:z.array(z.string()).optional().default([]),projects:z.array(z.string()).optional().default([]),recipient:z.string().optional().default(ZeroAddress).refine(val=>isAddress(val),{message:"PermitV2 recipient :: invalid address"}),validatorId:z.number().optional().default(0),validatorContract:z.string().optional().default(ZeroAddress).refine(val=>isAddress(val),{message:"PermitV2 validatorContract :: invalid address"}),sealingPair:SerializedSealingPair.optional(),issuerSignature:z.string().optional().default("0x"),recipientSignature:z.string().optional().default("0x")});const PermitV2RefineAccess=[data=>{return data.contracts.length+data.projects.length>0},{message:"PermitV2 access :: at least one contract or project must be accessible.",path:["contracts","projects"]}];const PermitV2RefineValidator=[data=>data.validatorId!==0&&data.validatorContract!==ZeroAddress||data.validatorId===0&&data.validatorContract===ZeroAddress,{message:"PermitV2 external validator :: validatorId and validatorContract must either both be set or both be unset.",path:["validatorId","validatorContract"]}];const PermitV2SignaturesSuperRefinement=options=>{return(data,ctx)=>{if(options.checkRecipient){if(data.type==="self"&&data.recipient!==ZeroAddress)ctx.addIssue({code:z.ZodIssueCode.custom,path:["recipient"],message:`PermitV2 (type '${data.type}') recipient :: must be empty (zeroAddress)`});if((data.type==="recipient"||data.type==="sharing")&&data.recipient===ZeroAddress){ctx.addIssue({code:z.ZodIssueCode.custom,path:["recipient"],message:`PermitV2 (type '${data.type}') recipient :: must not be empty`})}}if(options.checkSealingPair&&data.sealingPair==null)ctx.addIssue({code:z.ZodIssueCode.custom,path:["sealingPair"],message:`PermitV2 sealingPair :: must not be empty`});if((data.type==="self"||data.type==="sharing")&&data.recipientSignature!=="0x"){ctx.addIssue({code:z.ZodIssueCode.custom,path:["recipientSignature"],message:`PermitV2 (type '${data.type}') recipientSignature :: should not be populated by the issuer`})}if(data.type==="recipient"&&data.issuerSignature==="0x"){ctx.addIssue({code:z.ZodIssueCode.custom,path:["issuerSignature"],message:`PermitV2 (type 'recipient') issuerSignature :: \`issuer\` must sign the PermitV2 before sharing it with \`recipient\``})}if(options.checkSigned){if((data.type==="self"||data.type==="sharing")&&data.issuerSignature==="0x")ctx.addIssue({code:z.ZodIssueCode.custom,path:["issuerSignature"],message:`PermitV2 (type '${data.type}') issuerSignature :: must be populated with issuer's signature. Use \`PermitV2.sign\` or create permit with \`PermitV2.createAndSign\``});if(data.type==="recipient"&&data.recipientSignature==="0x"){ctx.addIssue({code:z.ZodIssueCode.custom,path:["recipientSignature"],message:`PermitV2 (type 'recipient') recipientSignature :: must be populated with recipient's signature. Use \`PermitV2.sign\` or create permit with \`PermitV2.createAndSign\``})}}return}};const PermitV2ParamsValidator=zPermitV2WithDefaults.refine(...PermitV2RefineAccess).refine(...PermitV2RefineValidator).superRefine(PermitV2SignaturesSuperRefinement({checkRecipient:true,checkSealingPair:false,checkSigned:false}));const FullyFormedPermitV2Validator=zPermitV2WithDefaults.required().refine(...PermitV2RefineAccess).refine(...PermitV2RefineValidator).superRefine(PermitV2SignaturesSuperRefinement({checkRecipient:true,checkSealingPair:true,checkSigned:true}));const chainIsHardhat=chainId=>{if(chainId==null)return false;return parseInt(chainId)===31337};const hardhatMockUnseal=value=>{let result=BigInt(0);for(const byteArrayItem of stringToUint8Array(value)){result=(result<({data:bigintToUint8Array(BigInt(value)),securityZone:securityZone||0});class PermitV2{constructor(options,metadata){this._signedChainId=undefined;this.updateName=name=>{this.name=name};this.getInterface=()=>{return{name:this.name,type:this.type,issuer:this.issuer,expiration:this.expiration,contracts:this.contracts,projects:this.projects,recipient:this.recipient,validatorId:this.validatorId,validatorContract:this.validatorContract,sealingPair:this.sealingPair,issuerSignature:this.issuerSignature,recipientSignature:this.recipientSignature}};this.export=()=>{const cleanedPermit={name:this.name,type:this.type,issuer:this.issuer,expiration:this.expiration};if(this.contracts.length>0)cleanedPermit.contracts=this.contracts;if(this.projects.length>0)cleanedPermit.projects=this.projects;if(this.recipient!==ZeroAddress)cleanedPermit.recipient=this.recipient;if(this.validatorId!==0)cleanedPermit.validatorId=this.validatorId;if(this.validatorContract!==ZeroAddress)cleanedPermit.validatorContract=this.validatorContract;if(this.type==="sharing"&&this.issuerSignature!=="0x")cleanedPermit.issuerSignature=this.issuerSignature;return JSON.stringify(cleanedPermit,undefined,2)};this.serialize=()=>{const{sealingPair,...permit}=this.getInterface();return{...permit,_signedChainId:this._signedChainId,sealingPair:{publicKey:sealingPair.publicKey,privateKey:sealingPair.privateKey}}};this.getPermission=(skipValidation=false)=>{const permitData=this.getInterface();if(!skipValidation){const validationResult=FullyFormedPermitV2Validator.safeParse(permitData);if(!validationResult.success){throw new Error(`PermitV2 :: getPermission :: permit validation failed - ${JSON.stringify(validationResult.error,null,2)} ${JSON.stringify(permitData,null,2)}`)}}const{name,type,sealingPair,...permit}=permitData;return{...permit,sealingKey:`0x${sealingPair.publicKey}`}};this.getHash=()=>keccak256(id(JSON.stringify({type:this.type,issuer:this.issuer,expiration:this.expiration,contracts:this.contracts,projects:this.projects,recipient:this.recipient,validatorId:this.validatorId,validatorContract:this.validatorContract})));this.getSignatureParams=(chainId,primaryType)=>{return{domain:getSignatureDomain(chainId),...getSignatureTypesAndMessage(primaryType,SignatureTypes[primaryType],this.getPermission(true))}};this.sign=async(chainId,signer)=>{if(chainId==null)throw new Error("PermitV2 :: sign - chainId undefined, cannot sign a permit with an unknown chainId");if(signer==null)throw new Error("PermitV2 :: sign - signer undefined, you must pass in a `signer` for the connected user to create a permitV2 signature");let primaryType="PermissionedV2IssuerSelf";if(this.type==="self")primaryType="PermissionedV2IssuerSelf";if(this.type==="sharing")primaryType="PermissionedV2IssuerShared";if(this.type==="recipient")primaryType="PermissionedV2Recipient";const{domain,types,message}=this.getSignatureParams(chainId,primaryType);const signature=await signer.signTypedData(domain,types,message);if(this.type==="self"||this.type==="sharing"){this.issuerSignature=signature}if(this.type==="recipient"){this.recipientSignature=signature}this._signedChainId=chainId};this.unsealCiphertext=ciphertext=>{if(chainIsHardhat(this._signedChainId))return hardhatMockUnseal(ciphertext);return this.sealingPair.unseal(ciphertext)};this.getSatisfies=requirements=>{let contractsSatisfied=true;const unsatisfiedContracts=[];for(const contract in requirements.contracts){if(!this.contracts.includes(contract)){contractsSatisfied=false;unsatisfiedContracts.push(contract)}}let projectsSatisfied=true;const unsatisfiedProjects=[];for(const project in requirements.projects){if(!this.projects.includes(project)){projectsSatisfied=false;unsatisfiedProjects.push(project)}}if(contractsSatisfied||projectsSatisfied)return{satisfies:true,unsatisfiedContracts:null,unsatisfiedProjects:null};return{satisfies:false,unsatisfiedContracts:unsatisfiedContracts,unsatisfiedProjects:unsatisfiedProjects}};this.isSigned=()=>{if(this.type==="self"||this.type==="sharing"){return this.issuerSignature!=="0x"}if(this.type==="recipient"){return this.recipientSignature!="0x"}return false};this.isExpired=()=>{return this.expiration{if(this.isExpired())return{valid:false,error:"expired"};if(!this.isSigned())return{valid:false,error:"not-signed"};return{valid:true,error:null}};this.name=options.name;this.type=options.type;this.issuer=options.issuer;this.expiration=options.expiration;this.contracts=options.contracts;this.projects=options.projects;this.recipient=options.recipient;this.validatorId=options.validatorId;this.validatorContract=options.validatorContract;this.sealingPair=options.sealingPair;this.issuerSignature=options.issuerSignature;this.recipientSignature=options.recipientSignature;this._signedChainId=metadata?._signedChainId}static async create(options){const{success,data:parsed,error}=PermitV2ParamsValidator.safeParse(options);if(!success){throw new Error("PermitV2 :: create :: Parsing PermitV2Options failed "+JSON.stringify(error,null,2))}const sealingPair=parsed.sealingPair!=null?new SealingKey(parsed.sealingPair.privateKey,parsed.sealingPair.publicKey):await GenerateSealingKey();return new PermitV2({...parsed,sealingPair:sealingPair})}static async createAndSign(options,chainId,signer){const permit=await PermitV2.create(options);await permit.sign(chainId,signer);return permit}unseal(item){const sealedItem=getAsSealedItem(item);if(sealedItem!=null){const bn=chainIsHardhat(this._signedChainId)?hardhatMockUnseal(sealedItem.data):this.sealingPair.unseal(sealedItem.data);if(isSealedBool(sealedItem)){return Boolean(bn).valueOf()}if(isSealedAddress(sealedItem)){return getAddress(`0x${bn.toString(16).slice(-40)}`)}if(isSealedUint(sealedItem)){return bn}}if(typeof item==="object"&&item!==null){if(Array.isArray(item)){return item.map(nestedItem=>this.unseal(nestedItem))}else{const result={};for(const key in item){result[key]=this.unseal(item[key])}return result}}return item}}PermitV2.deserialize=({_signedChainId,sealingPair,...permit})=>{return new PermitV2({...permit,sealingPair:new SealingKey(sealingPair.privateKey,sealingPair.publicKey)},{_signedChainId:_signedChainId})};PermitV2.validate=permit=>{return FullyFormedPermitV2Validator.safeParse(permit)};const _permitStore=createStore()(persist(()=>({permits:{},activePermitHash:{}}),{name:"fhenixjs-permits"}));const getPermit$1=(account,hash)=>{if(account==null||hash==null)return;const savedPermit=_permitStore.getState().permits[account]?.[hash];if(savedPermit==null)return;return PermitV2.deserialize(savedPermit)};const getActivePermit=account=>{if(account==null)return;const activePermitHash=_permitStore.getState().activePermitHash[account];return getPermit$1(account,activePermitHash)};const getPermits=account=>{if(account==null)return{};return Object.entries(_permitStore.getState().permits[account]??{}).reduce((acc,[hash,permit])=>{if(permit==undefined)return acc;return{...acc,[hash]:PermitV2.deserialize(permit)}},{})};const setPermit=(account,permitV2)=>{_permitStore.setState(produce(state=>{if(state.permits[account]==null)state.permits[account]={};state.permits[account][permitV2.getHash()]=permitV2.serialize()}))};const removePermit=(account,hash)=>{_permitStore.setState(produce(state=>{state.permits[account][hash]=undefined}))};const getActivePermitHash=account=>{if(account==null)return undefined;return _permitStore.getState().activePermitHash[account]};const setActivePermitHash=(account,hash)=>{_permitStore.setState(produce(state=>{state.activePermitHash[account]=hash}))};const removeActivePermitHash=account=>{_permitStore.setState(produce(state=>{state.activePermitHash[account]=undefined}))};const permitStore={store:_permitStore,getPermit:getPermit$1,getActivePermit:getActivePermit,getPermits:getPermits,setPermit:setPermit,removePermit:removePermit,getActivePermitHash:getActivePermitHash,setActivePermitHash:setActivePermitHash,removeActivePermitHash:removeActivePermitHash};function _loadWasmModule(sync,filepath,src,imports){function _instantiateOrCompile(source,imports,stream){var instantiateFunc=WebAssembly.instantiate;var compileFunc=WebAssembly.compile;if(imports){return instantiateFunc(source,imports)}else{return compileFunc(source)}}var buf=null;var isNode=typeof process!=="undefined"&&process.versions!=null&&process.versions.node!=null;if(isNode){buf=Buffer.from(src,"base64")}else{var raw=globalThis.atob(src);var rawLength=raw.length;buf=new Uint8Array(new ArrayBuffer(rawLength));for(var i=0;i{if(!initialized){try{initialized=await __wbg_init(wasm)}catch(_){initialized=await __wbg_init(wasm())}}return initialized};const asyncInitFhevm=async()=>{try{await initFhevm()}catch(err){throw new Error(`Error initializing FhenixClient ${err}`)}};const PUBLIC_KEY_LENGTH_MIN=15e3;const _sdkStore=createStore(()=>({fheKeysInitialized:false,securityZones:[0],fheKeys:{},accessRequirements:{contracts:[],projects:[]},coFheUrl:undefined,providerInitialized:false,provider:undefined,chainId:undefined,signerInitialized:false,signer:undefined,account:undefined}));const _store_getFheKey=(chainId,securityZone=0)=>{if(chainId==null||securityZone==null)return undefined;const serialized=_sdkStore.getState().fheKeys[chainId]?.[securityZone];if(serialized==null)return undefined;return TfheCompactPublicKey.deserialize(serialized)};const _store_getConnectedChainFheKey=(securityZone=0)=>{const state=_sdkStore.getState();if(securityZone==null)return undefined;if(state.chainId==null)return undefined;const serialized=state.fheKeys[state.chainId]?.[securityZone];if(serialized==null)return undefined;return TfheCompactPublicKey.deserialize(serialized)};const _store_setFheKey=(chainId,securityZone,fheKey)=>{if(chainId==null||securityZone==null)return;_sdkStore.setState(produce(state=>{if(state.fheKeys[chainId]==null)state.fheKeys[chainId]={};state.fheKeys[chainId][securityZone]=fheKey?.serialize()}))};const getChainIdFromProvider=async provider=>{var chainId=null;try{chainId=await provider.getChainId()}catch(err){const network=await provider.getNetwork();chainId=network.chainId}if(chainId==null)throw new Error("sdk :: getChainIdFromProvider :: provider.getChainId returned a null result, ensure that your provider is connected to a network");return chainId};const _store_initialize=async params=>{const{provider,signer,securityZones=[0],contracts:contractRequirements=[],projects:projectRequirements=[],coFheUrl=undefined}=params;_sdkStore.setState({providerInitialized:false,signerInitialized:false,accessRequirements:{contracts:contractRequirements,projects:projectRequirements},coFheUrl:coFheUrl});const chainId=await getChainIdFromProvider(provider);const chainIdChanged=chainId!=null&&chainId!==_sdkStore.getState().chainId;if(chainId!=null&&provider!=null){_sdkStore.setState({providerInitialized:true,provider:provider,chainId:chainId})}const account=await signer?.getAddress();if(account!=null&&signer!=null){_sdkStore.setState({signerInitialized:true,account:account,signer:signer})}else{_sdkStore.setState({signerInitialized:false,account:undefined,signer:undefined})}const securityZonesChanged=securityZones!==_sdkStore.getState().securityZones;if(chainIdChanged||securityZonesChanged){_sdkStore.setState({securityZones:securityZones,fheKeysInitialized:false})}if(!chainIsHardhat(chainId)&&!_sdkStore.getState().fheKeysInitialized){await Promise.all(securityZones.map(securityZone=>_store_fetchFheKey(chainId,securityZone,true)))}_sdkStore.setState({fheKeysInitialized:true})};const _store_fetchFheKey=async(chainId,securityZone=0,forceFetch=false)=>{const storedKey=_store_getFheKey(chainId,securityZone);if(storedKey!=null&&!forceFetch)return storedKey;const coFheUrl=_sdkStore.getState().coFheUrl;if(coFheUrl==null||typeof coFheUrl!=="string"){throw new Error("Error initializing fhenixjs; coFheUrl invalid, ensure it is set in `fhenixsdk.initialize`")}let publicKey=undefined;try{const res=await fetch(`${coFheUrl}/GetNetworkPublickKey`,{method:"POST",body:JSON.stringify({SecurityZone:securityZone})});const data=await res.json();publicKey=`0x${data.securityZone}`}catch(err){throw new Error(`Error initializing fhenixjs; fetching FHE publicKey from CoFHE failed with error ${err}`)}if(publicKey==null||typeof publicKey!=="string"){throw new Error(`Error initializing fhenixjs; FHE publicKey fetched from CoFHE invalid: not a string`)}if(publicKey==="0x"){throw new Error("Error initializing fhenixjs; provided chain is not FHE enabled, no FHE publicKey found")}if(publicKey.length= ${PUBLIC_KEY_LENGTH_MIN}`)}const buff=fromHexString(publicKey);try{const key=TfheCompactPublicKey.deserialize(buff);_store_setFheKey(chainId,securityZone,key);return key}catch(err){throw new Error(`Error deserializing public key ${err}`)}};const encrypt_bool=(value,publicKey,securityZone=0)=>{const encrypted=CompactFheBool.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_uint8=(value,publicKey,securityZone=0)=>{const encrypted=CompactFheUint8.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_uint16=(value,publicKey,securityZone=0)=>{const encrypted=CompactFheUint16.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_uint32=(value,publicKey,securityZone=0)=>{const encrypted=CompactFheUint32.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_uint64=(value,publicKey,securityZone=0)=>{if(typeof value==="string"){value=toBigInt(fromHexString(value))}else{value=value}const encrypted=CompactFheUint64.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_uint128=(value,publicKey,securityZone=0)=>{if(typeof value==="string"){value=toBigInt(fromHexString(value))}else{value=value}const encrypted=CompactFheUint128.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_uint256=(value,publicKey,securityZone=0)=>{if(typeof value==="string"){value=toBigInt(fromHexString(value))}else{value=value}const encrypted=CompactFheUint256.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_address=(value,publicKey,securityZone=0)=>{if(typeof value==="string"){value=toBigInt(fromHexString(value))}else{value=value}const encrypted=CompactFheUint160.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const InitFhevm=async()=>{await asyncInitFhevm()};const initialize=async params=>{await InitFhevm().catch(err=>{if(params.ignoreErrors){return undefined}else{return ResultErr(`initialize :: failed to initialize fhenixjs - is the network FHE-enabled? ${err}`)}});if(params.provider==null)return ResultErr("initialize :: missing provider - Please provide an AbstractProvider interface");if(params.securityZones!=null&¶ms.securityZones.length===0)return ResultErr("initialize :: a list of securityZones was provided, but it is empty");await _store_initialize(params);if(params.generatePermit===false)return ResultOk(undefined);const userActivePermit=getPermit();if(userActivePermit.success)return userActivePermit;return createPermit()};const _checkInitialized=(state,options)=>{if(options?.fheKeys!==false&&!state.fheKeysInitialized){return ResultErr("fhenixsdk not initialized. Use `fhenixsdk.initialize(...)`.")}if(options?.coFheUrl!==false&&!state.coFheUrl)return ResultErr("fhenixsdk not initialized with a coFheUrl. Set `coFheUrl` in `fhenixsdk.initialize`.");if(options?.provider!==false&&!state.providerInitialized)return ResultErr("fhenixsdk not initialized with valid provider. Use `fhenixsdk.initialize(...)` with a valid provider that satisfies `AbstractProvider`.");if(options?.signer!==false&&!state.signerInitialized)return ResultErr("fhenixsdk not initialized with a valid signer. Use `fhenixsdk.initialize(...)` with a valid signer that satisfies `AbstractSigner`.");return ResultOk(null)};const createPermit=async options=>{const state=_sdkStore.getState();const initialized=_checkInitialized(state);if(!initialized.success)return ResultErr(`${createPermit.name} :: ${initialized.error}`);const optionsWithDefaults={type:"self",issuer:state.account,contracts:state.accessRequirements.contracts,projects:state.accessRequirements.projects,...options};let permit;try{permit=await PermitV2.createAndSign(optionsWithDefaults,state.chainId,state.signer)}catch(e){return ResultErr(`${createPermit.name} :: ${e}`)}permitStore.setPermit(state.account,permit);permitStore.setActivePermitHash(state.account,permit.getHash());return ResultOk(permit)};const importPermit=async imported=>{const state=_sdkStore.getState();const initialized=_checkInitialized(state);if(!initialized.success)return ResultErr(`${createPermit.name} :: ${initialized.error}`);if(typeof imported==="string"){try{imported=JSON.parse(imported)}catch(e){return ResultErr(`importPermit :: json parsing failed - ${e}`)}}const{success,data:parsedPermit,error:permitParsingError}=PermitV2ParamsValidator.safeParse(imported);if(!success){const errorString=Object.entries(permitParsingError.flatten().fieldErrors).map(([field,err])=>`- ${field}: ${err}`).join("\n");return ResultErr(`importPermit :: invalid permit data - ${errorString}`)}if(parsedPermit.type!=="self"){if(parsedPermit.issuer===state.account)parsedPermit.type="sharing";else if(parsedPermit.recipient===state.account)parsedPermit.type="recipient";else{return ResultErr(`importPermit :: invalid Permit - connected account <${state.account}> is not issuer or recipient`)}}let permit;try{permit=await PermitV2.create(parsedPermit)}catch(e){return ResultErr(`importPermit :: ${e}`)}const{valid,error}=permit.isValid();if(!valid){return ResultErr(`importPermit :: newly imported permit is invalid - ${error}`)}permitStore.setPermit(state.account,permit);permitStore.setActivePermitHash(state.account,permit.getHash());return ResultOk(permit)};const selectActivePermit=hash=>{const state=_sdkStore.getState();const initialized=_checkInitialized(state);if(!initialized.success)return ResultErr(`${selectActivePermit.name} :: ${initialized.error}`);const permit=permitStore.getPermit(state.account,hash);if(permit==null)return ResultErr(`${selectActivePermit.name} :: Permit with hash <${hash}> not found`);permitStore.setActivePermitHash(state.account,permit.getHash());return ResultOk(permit)};const getPermit=hash=>{const state=_sdkStore.getState();const initialized=_checkInitialized(state);if(!initialized.success)return ResultErr(`${getPermit.name} :: ${initialized.error}`);if(hash==null){const permit=permitStore.getActivePermit(state.account);if(permit==null)return ResultErr(`getPermit :: active permit not found`);return ResultOk(permit)}const permit=permitStore.getPermit(state.account,hash);if(permit==null)return ResultErr(`getPermit :: permit with hash <${hash}> not found`);return ResultOk(permit)};const getPermission=hash=>{const permitResult=getPermit(hash);if(!permitResult.success)return ResultErr(`${getPermission.name} :: ${permitResult.error}`);return ResultOk(permitResult.data.getPermission())};const getAllPermits=()=>{const state=_sdkStore.getState();const initialized=_checkInitialized(state);if(!initialized.success)return ResultErr(`${getAllPermits.name} :: ${initialized.error}`);return ResultOk(permitStore.getPermits(state.account))};async function encrypt(item){const state=_sdkStore.getState();const initialized=_checkInitialized(state,{provider:false,signer:false});if(!initialized.success)return ResultErr(`${encrypt.name} :: ${initialized.error}`);if(item==="permission"){return getPermission()}if(isEncryptableItem(item)){if(chainIsHardhat(state.coFheUrl))return ResultOk(hardhatMockEncrypt(BigInt(item.data)));const fhePublicKey=_store_getConnectedChainFheKey(item.securityZone??0);if(fhePublicKey==null)return ResultErr("encrypt :: fheKey for current chain not found");let preEncryptedItem;try{switch(item.utype){case exports.FheUType.bool:{preEncryptedItem=encrypt_bool(item.data,fhePublicKey,item.securityZone);break}case exports.FheUType.uint8:{preEncryptedItem=encrypt_uint8(item.data,fhePublicKey,item.securityZone);break}case exports.FheUType.uint16:{preEncryptedItem=encrypt_uint16(item.data,fhePublicKey,item.securityZone);break}case exports.FheUType.uint32:{preEncryptedItem=encrypt_uint32(item.data,fhePublicKey,item.securityZone);break}case exports.FheUType.uint64:{preEncryptedItem=encrypt_uint64(item.data,fhePublicKey,item.securityZone);break}case exports.FheUType.uint128:{preEncryptedItem=encrypt_uint128(item.data,fhePublicKey,item.securityZone);break}case exports.FheUType.uint256:{preEncryptedItem=encrypt_uint256(item.data,fhePublicKey,item.securityZone);break}case exports.FheUType.address:{preEncryptedItem=encrypt_address(item.data,fhePublicKey,item.securityZone);break}}}catch(e){return ResultErr(`encrypt :: tfhe_encrypt_xxxx :: ${e}`)}const res=await fetch(`${state.coFheUrl}/UpdateCT`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({UType:item.utype,Value:toHexString$1(preEncryptedItem.data),SecurityZone:item.securityZone})});const data=await res.json();return ResultOk({securityZone:item.securityZone,hash:BigInt(`0x${data.ctHash}`),utype:item.utype,signature:data.signature})}if(typeof item==="object"&&item!==null){if(Array.isArray(item)){const nestedItems=await Promise.all(item.map(nestedItem=>encrypt(nestedItem)));const nestedItemResultErr=nestedItems.find(nestedItem=>!nestedItem.success);if(nestedItemResultErr!=null)return nestedItemResultErr;return ResultOk(nestedItems.map(nestedItem=>nestedItem.data))}else{const nestedKeyedItems=await Promise.all(Object.entries(item).map(async([key,value])=>({key:key,value:await encrypt(value)})));const nestedItemResultErr=nestedKeyedItems.find(({value})=>!value.success);if(nestedItemResultErr!=null)return nestedItemResultErr;const result={};nestedKeyedItems.forEach(({key,value})=>{result[key]=value.data});return ResultOk(result)}}return ResultOk(item)}const unsealCiphertext=(ciphertext,account,hash)=>{const state=_sdkStore.getState();const initialized=_checkInitialized(state);if(!initialized.success)return ResultErr(`${getAllPermits.name} :: ${initialized.error}`);isString(ciphertext);const resolvedAccount=account??state.account;const resolvedHash=hash??permitStore.getActivePermitHash(resolvedAccount);if(resolvedAccount==null||resolvedHash==null){return ResultErr(`unsealCiphertext :: PermitV2 hash not provided and active PermitV2 not found`)}const permit=permitStore.getPermit(resolvedAccount,resolvedHash);if(permit==null){return ResultErr(`unsealCiphertext :: PermitV2 with account <${account}> and hash <${hash}> not found`)}let unsealed;try{unsealed=permit.unsealCiphertext(ciphertext)}catch(e){return ResultErr(`unsealCiphertext :: ${e}`)}return ResultOk(unsealed)};function unseal(item,account,hash){const resolvedAccount=account??_sdkStore.getState().account;const resolvedHash=hash??permitStore.getActivePermitHash(resolvedAccount);if(resolvedAccount==null||resolvedHash==null){return ResultErr(`unseal :: PermitV2 hash not provided and active PermitV2 not found`)}const permit=permitStore.getPermit(resolvedAccount,resolvedHash);if(permit==null){return ResultErr(`unseal :: PermitV2 with account <${account}> and hash <${hash}> not found`)}let unsealed;try{unsealed=permit.unseal(item)}catch(e){return ResultErr(`unseal :: ${e}`)}return ResultOk(unsealed)}const fhenixsdk={store:_sdkStore,initialize:initialize,createPermit:createPermit,importPermit:importPermit,selectActivePermit:selectActivePermit,getPermit:getPermit,getPermission:getPermission,getAllPermits:getAllPermits,encrypt:encrypt,unsealCiphertext:unsealCiphertext,unseal:unseal};exports.Encryptable=Encryptable;exports.FheAllUTypes=FheAllUTypes;exports.FheUintUTypes=FheUintUTypes;exports.FullyFormedPermitV2Validator=FullyFormedPermitV2Validator;exports.GenerateSealingKey=GenerateSealingKey;exports.PermitV2=PermitV2;exports.PermitV2ParamsValidator=PermitV2ParamsValidator;exports.ResultErr=ResultErr;exports.ResultOk=ResultOk;exports.SealingKey=SealingKey;exports.SignatureTypes=SignatureTypes;exports.createTfheKeypair=createTfheKeypair;exports.createTfhePublicKey=createTfhePublicKey;exports.fhenixsdk=fhenixsdk;exports.getAsSealedItem=getAsSealedItem;exports.getSignatureDomain=getSignatureDomain;exports.getSignatureTypesAndMessage=getSignatureTypesAndMessage;exports.isEncryptableItem=isEncryptableItem;exports.isSealedAddress=isSealedAddress;exports.isSealedBool=isSealedBool;exports.isSealedUint=isSealedUint;exports.permitStore=permitStore}); \ No newline at end of file diff --git a/dist/fhenix.esm.js b/dist/fhenix.esm.js deleted file mode 100644 index 115e6ef..0000000 --- a/dist/fhenix.esm.js +++ /dev/null @@ -1,16408 +0,0 @@ -function _loadWasmModule (sync, filepath, src, imports) { - function _instantiateOrCompile(source, imports, stream) { - var instantiateFunc = WebAssembly.instantiate; - var compileFunc = WebAssembly.compile; - - if (imports) { - return instantiateFunc(source, imports) - } else { - return compileFunc(source) - } - } - - -var buf = null; -var isNode = typeof process !== 'undefined' && process.versions != null && process.versions.node != null; -if (isNode) { - -buf = Buffer.from(src, 'base64'); - -} else { - -var raw = globalThis.atob(src); -var rawLength = raw.length; -buf = new Uint8Array(new ArrayBuffer(rawLength)); -for(var i = 0; i < rawLength; i++) { - buf[i] = raw.charCodeAt(i); -} - -} - - - { - return _instantiateOrCompile(buf, imports) - } -} - -function wasm$1(imports){return _loadWasmModule(0, null, 'AGFzbQEAAAABjwREYAJ/fwBgAX8AYAN/f38AYAJ/fwF/YAh/f39/f39/fwBgAX8Bf2ADf39/AX9gBH9/f38AYAABf2AAAGAFf39/f38AYAN/fn8AYAN/f34AYAR/f39+AGAGf39/f39/AGAFf39/f38Bf2AFf39/fn4AYAJ/fgBgBn9/f39/fwF/YAN/f34Bf2AEf35+fwBgBH9/f38Bf2AGf39/f35+AGACf38BfmABfgF/YAJ+fgF/YAJ/fABgBX9/fn9/AGAHf39/f39/fwBgAXwBfGALf39/f39/f39/f38AYAZ/f39+f38AYAR/f35+AGAEf35+fgBgBH9+f38AYAJ/fgF/YAF8AX9gBn9+f39/fwBgCX9/f39/f3x8fwBgA35/fwBgCX9/f39/f39/fwBgDH9+fn9/f39/f39/fwBgBH9+f3wAYAl/f39/f39+fn4AYAp/f39/f39+fn5+AGAHf39/f39/fwF/YAN+f38Bf2ABfwF+YAV/f39/fgF+YAN/f38BfmAEf398fABgBX9+f35/AGADf39+AX5gCX9/f39/f35+fwBgC39/f39/f39/f39/AX9gBH9/f38BfmADf35+AGACfn8AYAJ+fgF8YAh/f39/fn5+fgBgBX9+fn9/AGACf34BfmAEf39+fgF+YAV/f3x/fwBgBH98f38AYAV/f31/fwBgBH99f38AYAN8fHwBfAL4D0IDd2JnGl9fd2JpbmRnZW5fYmlnaW50X2Zyb21fdTY0ABgDd2JnDl9fd2JpbmRnZW5fc2hyAAMDd2JnGl9fd2JpbmRnZW5fb2JqZWN0X2Ryb3BfcmVmAAEDd2JnGl9fd2JpbmRnZW5fYmlnaW50X2Zyb21faTY0ABgDd2JnE19fd2JpbmRnZW5fanN2YWxfZXEAAwN3YmcUX193YmluZGdlbl9lcnJvcl9uZXcAAwN3YmcbX193YmluZGdlbl9iaWdpbnRfZnJvbV9pMTI4ABkDd2JnG19fd2JpbmRnZW5fYmlnaW50X2Zyb21fdTEyOAAZA3diZxNfX3diZ19maGV1aW50MTZfbmV3AAUDd2JnFF9fd2JnX2ZoZXVpbnQxNjBfbmV3AAUDd2JnFF9fd2JnX2ZoZXVpbnQyNTZfbmV3AAUDd2JnE19fd2JnX2ZoZXVpbnQzMl9uZXcABQN3YmcUX193YmdfZmhldWludDEyOF9uZXcABQN3YmcSX193YmdfZmhldWludDhfbmV3AAUDd2JnE19fd2JnX2ZoZXVpbnQ2NF9uZXcABQN3YmcSX193YmdfZmhlaW50MzJfbmV3AAUDd2JnEl9fd2JnX2ZoZWludDY0X25ldwAFA3diZxFfX3diZ19maGVib29sX25ldwAFA3diZxNfX3diZ19maGVpbnQyNTZfbmV3AAUDd2JnE19fd2JnX2ZoZWludDE2MF9uZXcABQN3YmcSX193YmdfZmhlaW50MTZfbmV3AAUDd2JnEV9fd2JnX2ZoZWludDhfbmV3AAUDd2JnE19fd2JnX2ZoZWludDEyOF9uZXcABQN3YmcWX193YmluZGdlbl9ib29sZWFuX2dldAAFA3diZxpfX3diaW5kZ2VuX2JpZ2ludF9mcm9tX3N0cgADA3diZxJfX3diaW5kZ2VuX2JpdF9hbmQAAwN3YmcVX193YmluZGdlbl9udW1iZXJfbmV3ACQDd2JnDV9fd2JpbmRnZW5fbHQAAwN3YmcOX193YmluZGdlbl9uZWcABQN3YmcOX193YmluZGdlbl9zaGwAAwN3YmcOX193YmluZGdlbl9hZGQAAwN3YmcRX193YmluZGdlbl9iaXRfb3IAAwN3YmcaX193YmdfbmV3X2FiZGE3NmU4ODNiYThhNWYACAN3YmccX193Ymdfc3RhY2tfNjU4Mjc5ZmU0NDU0MWNmNgAAA3diZxxfX3diZ19lcnJvcl9mODUxNjY3YWY3MWJjZmM2AAADd2JnHV9fd2JnX2NyeXB0b183MGE5NmRlM2I2YjczZGFjAAUDd2JnFF9fd2JpbmRnZW5faXNfb2JqZWN0AAUDd2JnHl9fd2JnX3Byb2Nlc3NfZGQxNTc3NDQ1MTUyMTEyZQAFA3diZx9fX3diZ192ZXJzaW9uc181ODAzNmJlYzNhZGQ5ZTZmAAUDd2JnG19fd2JnX25vZGVfNmE5ZDI4MjA1ZWQ1YjBkOAAFA3diZxRfX3diaW5kZ2VuX2lzX3N0cmluZwAFA3diZx5fX3diZ19yZXF1aXJlX2YwNWQ3Nzk3Njk3NjRlODIACAN3YmcVX193YmluZGdlbl9zdHJpbmdfbmV3AAMDd2JnH19fd2JnX21zQ3J5cHRvX2FkYmM3NzBlYzllY2E5YzcABQN3YmclX193YmdfcmFuZG9tRmlsbFN5bmNfZTk1MDM2NmM0Mjc2NGEwNwAAA3diZyZfX3diZ19nZXRSYW5kb21WYWx1ZXNfMzc3NDc0NGUyMjFhMjJhZAAAA3diZxZfX3diaW5kZ2VuX2lzX2Z1bmN0aW9uAAUDd2JnIF9fd2JnX25ld25vYXJnc19lNjQzODU1YzY1NzJhNGE4AAMDd2JnG19fd2JnX2NhbGxfZjk2YjM5ODUxNTYzNTUxNAADA3diZxtfX3diZ19zZWxmX2I5YWFkN2YxYzYxOGJmYWYACAN3YmcdX193Ymdfd2luZG93XzU1ZTQ2OTg0MmM5OGIwODYACAN3YmchX193YmdfZ2xvYmFsVGhpc19kMDk1N2UzMDI3NTI1NDdlAAgDd2JnHV9fd2JnX2dsb2JhbF9hZTJmODczMTJiODk4N2ZiAAgDd2JnF19fd2JpbmRnZW5faXNfdW5kZWZpbmVkAAUDd2JnG19fd2JnX2NhbGxfMzU3ODJlOWExYWE1ZTA5MQAGA3diZx1fX3diZ19idWZmZXJfZmNiZmI2ZDg4YjI3MzJlOQAFA3diZzFfX3diZ19uZXd3aXRoYnl0ZW9mZnNldGFuZGxlbmd0aF85MmMyNTE5ODljNDg1Nzg1AAYDd2JnGl9fd2JnX25ld19iYzVkOWFhZDNmOWFjODBlAAUDd2JnGl9fd2JnX3NldF80YjNhYTg0NDVhYzFlOTFjAAIDd2JnJF9fd2JnX25ld3dpdGhsZW5ndGhfODllY2ExOGYyNjAzYTk5OQAFA3diZx9fX3diZ19zdWJhcnJheV83NjQ5ZDAyN2IyYjE0MWIzAAYDd2JnG19fd2JpbmRnZW5fb2JqZWN0X2Nsb25lX3JlZgAFA3diZxxfX3diaW5kZ2VuX2JpZ2ludF9nZXRfYXNfaTY0AAADd2JnF19fd2JpbmRnZW5fZGVidWdfc3RyaW5nAAADd2JnEF9fd2JpbmRnZW5fdGhyb3cAAAN3YmcRX193YmluZGdlbl9tZW1vcnkACAO2CbQJBQAlGhsAAgcHAgwDBgMGDgAmBwAAAAAAAAIDDgISCgonAAAFAgICAgEBBgAAAQIAAAYAAAQEAygEAAAAAAAGAQAAAAcHAikAAAoKAw4AKgAKAAcHAgErAwEBAw4BAQAsHAMAAwMtAA8dAAMDAh4DAwMDAwMDAwICAgIBAQACAgICAgICAgIDLi8DAgICAgIeAgICAgICBwgAHx8DAAAwAwMDAgMDAwMDAwMDBgMDAwADAwEODgAaAAIHAAEAAAAAAAAAAAADAAAAAQECBwAAAAoDAQUQAQABAAIAABYAAAACAAAAAAICAgICAgICAgICAgAAAAMAAAAAAAEHBwcHBwAAAAASBgYDAAcPMQMHBwMABgcMDAwMDAwMDAwRAAEOAAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAMFAAACMwIAEDQHBwAXADU2AAcHBwcHBwcCCAU3AQAWFgAAAAAAAgIDEgAABwcAAgIIBQAAAgICAwcDAwAFAAcAAAABAAAAAAAAAgICAgICOAICCTkCDQ0BAwM6AgIAAAAAAAAAFwACAAIAAAAACAEXAw0NDQ0NDQ0CAgICAgICAgICAgICAgAAAhMAAwMDFDsAHAADAQAAAgAAIAMCAgMAAAcCAgICAwIDAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgILCwsLCwICAgICAgICAgICAgICAgsLCwsLCgMAAAcHBwcHBwcHBwcHIQECAgICAgICAgILAgICCwIBAwMJCAAgAAE8BQUBBwYAAAMBEAMBAgAAAAAAAAAAACIBAAUDAAAHAwICAgICEwACAAAAAQABAAICAAIDAwMHAxMTBxEAABEAEQAFAAEAAgUBAAIAARQUAgIAAAEFBQUFAAUFBQEBARQJBQMBAAECAQEABQEAIwEDAgMKAwECAAEAAwEADAEBAQMDCSMAAAAAAAIAAgACAgIAAAIJCQAQAQ4BAAIAAz0DAwUBAQEABQMFAAYABgIBCQADAAAFAQUFBQEBAwUIEAEAABEPAyEABQMCAwMICAUAAwEDAQMDAgEBCQkJCQABBQADBQMFBwcHBwMDBwcHAwMDAAADAQEDAwMVAwEFBQUFBQUFAAMDAwMDAwMDAwMDAwUFBQUFBQUBAwMDAwUDAwMBAgECAAACAQMHAQEIAQUBAQEDAwACBQIABQUIBQAAChIDAwABAz4BChs/D0EABRUBCAMFBwUDAQEGCAEABQUFAQMDAQMDBh0DAQEDBQEVAgMDBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAwMGBwEFAwADCgMCAwMDAAEAAgACCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQMDAwAAAAAAAwYBBgUDAwMDAwUDAwEDAwEDAQEBAQEBAwMDAAkJAwADAwkDAAADAwMAAwMGBgZDBgYFAwUDCQgDAAEBBQUBBAQHAXAB4APgAwUDAQARBgkBfwFBgIDAAAsHz3zUAwZtZW1vcnkCAA9pbml0X3BhbmljX2hvb2sAzgYYX193YmdfdGZoZWNsaWVudGtleV9mcmVlAIIGFnRmaGVjbGllbnRrZXlfZ2VuZXJhdGUA+AQgdGZoZWNsaWVudGtleV9nZW5lcmF0ZV93aXRoX3NlZWQApgQXdGZoZWNsaWVudGtleV9zZXJpYWxpemUA4gIZdGZoZWNsaWVudGtleV9kZXNlcmlhbGl6ZQDaAyJfX3diZ190ZmhlY29tcHJlc3NlZHNlcnZlcmtleV9mcmVlAOsFG3RmaGVjb21wcmVzc2Vkc2VydmVya2V5X25ldwCJBCF0ZmhlY29tcHJlc3NlZHNlcnZlcmtleV9zZXJpYWxpemUA4wIjdGZoZWNvbXByZXNzZWRzZXJ2ZXJrZXlfZGVzZXJpYWxpemUA2wMYX193YmdfdGZoZXB1YmxpY2tleV9mcmVlAMIGEXRmaGVwdWJsaWNrZXlfbmV3ANwDF3RmaGVwdWJsaWNrZXlfc2VyaWFsaXplAOQCGXRmaGVwdWJsaWNrZXlfZGVzZXJpYWxpemUA9wMiX193YmdfdGZoZWNvbXByZXNzZWRwdWJsaWNrZXlfZnJlZQDDBht0ZmhlY29tcHJlc3NlZHB1YmxpY2tleV9uZXcA3QMidGZoZWNvbXByZXNzZWRwdWJsaWNrZXlfZGVjb21wcmVzcwDeAyF0ZmhlY29tcHJlc3NlZHB1YmxpY2tleV9zZXJpYWxpemUA5QIjdGZoZWNvbXByZXNzZWRwdWJsaWNrZXlfZGVzZXJpYWxpemUA+AMfX193YmdfdGZoZWNvbXBhY3RwdWJsaWNrZXlfZnJlZQDCBhh0ZmhlY29tcGFjdHB1YmxpY2tleV9uZXcA3wMedGZoZWNvbXBhY3RwdWJsaWNrZXlfc2VyaWFsaXplAOQCIHRmaGVjb21wYWN0cHVibGlja2V5X2Rlc2VyaWFsaXplAPkDKV9fd2JnX3RmaGVjb21wcmVzc2VkY29tcGFjdHB1YmxpY2tleV9mcmVlAMMGInRmaGVjb21wcmVzc2VkY29tcGFjdHB1YmxpY2tleV9uZXcA4AModGZoZWNvbXByZXNzZWRjb21wYWN0cHVibGlja2V5X3NlcmlhbGl6ZQDlAip0ZmhlY29tcHJlc3NlZGNvbXBhY3RwdWJsaWNrZXlfZGVzZXJpYWxpemUA+gMpdGZoZWNvbXByZXNzZWRjb21wYWN0cHVibGlja2V5X2RlY29tcHJlc3MA4QMVX193YmdfdGZoZWNvbmZpZ19mcmVlAPcHHF9fd2JnX3RmaGVjb25maWdidWlsZGVyX2ZyZWUA9wcZdGZoZWNvbmZpZ2J1aWxkZXJfZGVmYXVsdADrBi90ZmhlY29uZmlnYnVpbGRlcl9kZWZhdWx0X3dpdGhfc21hbGxfZW5jcnlwdGlvbgDsBhd0ZmhlY29uZmlnYnVpbGRlcl9idWlsZADZByJmaGV1aW50MTI4X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AKoEImZoZXVpbnQxMjhfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkAqwQtZmhldWludDEyOF9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5AKwEKmZoZXVpbnQxMjhfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCtBBJmaGV1aW50MTI4X2RlY3J5cHQAyAMUZmhldWludDEyOF9zZXJpYWxpemUA5wIWZmhldWludDEyOF9kZXNlcmlhbGl6ZQD7AxlmaGV1aW50MTI4X3NhZmVfc2VyaWFsaXplANUCG2ZoZXVpbnQxMjhfc2FmZV9kZXNlcmlhbGl6ZQDwAyxjb21wcmVzc2VkZmhldWludDEyOF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQCuBB9jb21wcmVzc2VkZmhldWludDEyOF9kZWNvbXByZXNzAOQDHmNvbXByZXNzZWRmaGV1aW50MTI4X3NlcmlhbGl6ZQDoAiBjb21wcmVzc2VkZmhldWludDEyOF9kZXNlcmlhbGl6ZQDlAyNjb21wcmVzc2VkZmhldWludDEyOF9zYWZlX3NlcmlhbGl6ZQDWAiVjb21wcmVzc2VkZmhldWludDEyOF9zYWZlX2Rlc2VyaWFsaXplANQDMWNvbXBhY3RmaGV1aW50MTI4X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAhwUbY29tcGFjdGZoZXVpbnQxMjhfc2VyaWFsaXplAOkCHWNvbXBhY3RmaGV1aW50MTI4X2Rlc2VyaWFsaXplAPwDIGNvbXBhY3RmaGV1aW50MTI4X3NhZmVfc2VyaWFsaXplANcCImNvbXBhY3RmaGV1aW50MTI4X3NhZmVfZGVzZXJpYWxpemUA8QM1Y29tcGFjdGZoZXVpbnQxMjhsaXN0X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAkAMcY29tcGFjdGZoZXVpbnQxMjhsaXN0X2V4cGFuZADqAh9jb21wYWN0ZmhldWludDEyOGxpc3Rfc2VyaWFsaXplAOkCIWNvbXBhY3RmaGV1aW50MTI4bGlzdF9kZXNlcmlhbGl6ZQD9AyJmaGV1aW50MTYwX2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AK8EImZoZXVpbnQxNjBfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkAsAQtZmhldWludDE2MF9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5ALEEKmZoZXVpbnQxNjBfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCyBBJmaGV1aW50MTYwX2RlY3J5cHQAyQMUZmhldWludDE2MF9zZXJpYWxpemUA5wIWZmhldWludDE2MF9kZXNlcmlhbGl6ZQD7AxlmaGV1aW50MTYwX3NhZmVfc2VyaWFsaXplANUCG2ZoZXVpbnQxNjBfc2FmZV9kZXNlcmlhbGl6ZQDwAyxjb21wcmVzc2VkZmhldWludDE2MF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQCzBB9jb21wcmVzc2VkZmhldWludDE2MF9kZWNvbXByZXNzAOQDHmNvbXByZXNzZWRmaGV1aW50MTYwX3NlcmlhbGl6ZQDoAiBjb21wcmVzc2VkZmhldWludDE2MF9kZXNlcmlhbGl6ZQDlAyNjb21wcmVzc2VkZmhldWludDE2MF9zYWZlX3NlcmlhbGl6ZQDWAiVjb21wcmVzc2VkZmhldWludDE2MF9zYWZlX2Rlc2VyaWFsaXplANQDMWNvbXBhY3RmaGV1aW50MTYwX2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAiAUbY29tcGFjdGZoZXVpbnQxNjBfc2VyaWFsaXplAOkCHWNvbXBhY3RmaGV1aW50MTYwX2Rlc2VyaWFsaXplAPwDIGNvbXBhY3RmaGV1aW50MTYwX3NhZmVfc2VyaWFsaXplANcCImNvbXBhY3RmaGV1aW50MTYwX3NhZmVfZGVzZXJpYWxpemUA8QM1Y29tcGFjdGZoZXVpbnQxNjBsaXN0X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAkQMcY29tcGFjdGZoZXVpbnQxNjBsaXN0X2V4cGFuZADrAh9jb21wYWN0ZmhldWludDE2MGxpc3Rfc2VyaWFsaXplAOkCIWNvbXBhY3RmaGV1aW50MTYwbGlzdF9kZXNlcmlhbGl6ZQD9AyJmaGV1aW50MjU2X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5ALQEImZoZXVpbnQyNTZfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkAtQQtZmhldWludDI1Nl9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5ALYEKmZoZXVpbnQyNTZfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQC3BBJmaGV1aW50MjU2X2RlY3J5cHQAyQMUZmhldWludDI1Nl9zZXJpYWxpemUA5wIWZmhldWludDI1Nl9kZXNlcmlhbGl6ZQD7AxlmaGV1aW50MjU2X3NhZmVfc2VyaWFsaXplANUCG2ZoZXVpbnQyNTZfc2FmZV9kZXNlcmlhbGl6ZQDwAyxjb21wcmVzc2VkZmhldWludDI1Nl9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQC4BB9jb21wcmVzc2VkZmhldWludDI1Nl9kZWNvbXByZXNzAOQDHmNvbXByZXNzZWRmaGV1aW50MjU2X3NlcmlhbGl6ZQDoAiBjb21wcmVzc2VkZmhldWludDI1Nl9kZXNlcmlhbGl6ZQDlAyNjb21wcmVzc2VkZmhldWludDI1Nl9zYWZlX3NlcmlhbGl6ZQDWAiVjb21wcmVzc2VkZmhldWludDI1Nl9zYWZlX2Rlc2VyaWFsaXplANQDMWNvbXBhY3RmaGV1aW50MjU2X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAiQUbY29tcGFjdGZoZXVpbnQyNTZfc2VyaWFsaXplAOkCHWNvbXBhY3RmaGV1aW50MjU2X2Rlc2VyaWFsaXplAPwDIGNvbXBhY3RmaGV1aW50MjU2X3NhZmVfc2VyaWFsaXplANcCImNvbXBhY3RmaGV1aW50MjU2X3NhZmVfZGVzZXJpYWxpemUA8QM1Y29tcGFjdGZoZXVpbnQyNTZsaXN0X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAkgMcY29tcGFjdGZoZXVpbnQyNTZsaXN0X2V4cGFuZADsAh9jb21wYWN0ZmhldWludDI1Nmxpc3Rfc2VyaWFsaXplAOkCIWNvbXBhY3RmaGV1aW50MjU2bGlzdF9kZXNlcmlhbGl6ZQD9AxRfX3diZ19maGVpbnQxMjhfZnJlZQDOByFmaGVpbnQxMjhfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkAuQQhZmhlaW50MTI4X2VuY3J5cHRfd2l0aF9wdWJsaWNfa2V5ALoELGZoZWludDEyOF9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5ALsEKWZoZWludDEyOF9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5ALwEEWZoZWludDEyOF9kZWNyeXB0AMoDE2ZoZWludDEyOF9zZXJpYWxpemUA5wIVZmhlaW50MTI4X2Rlc2VyaWFsaXplAP4DGGZoZWludDEyOF9zYWZlX3NlcmlhbGl6ZQDYAhpmaGVpbnQxMjhfc2FmZV9kZXNlcmlhbGl6ZQDyAx5fX3diZ19jb21wcmVzc2VkZmhlaW50MTI4X2ZyZWUA5gcrY29tcHJlc3NlZGZoZWludDEyOF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQC9BB5jb21wcmVzc2VkZmhlaW50MTI4X2RlY29tcHJlc3MA5gMdY29tcHJlc3NlZGZoZWludDEyOF9zZXJpYWxpemUA6AIfY29tcHJlc3NlZGZoZWludDEyOF9kZXNlcmlhbGl6ZQDnAyJjb21wcmVzc2VkZmhlaW50MTI4X3NhZmVfc2VyaWFsaXplANkCJGNvbXByZXNzZWRmaGVpbnQxMjhfc2FmZV9kZXNlcmlhbGl6ZQDVAxtfX3diZ19jb21wYWN0ZmhlaW50MTI4X2ZyZWUA2AYwY29tcGFjdGZoZWludDEyOF9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AIoFF2NvbXBhY3RmaGVpbnQxMjhfZXhwYW5kAOgDGmNvbXBhY3RmaGVpbnQxMjhfc2VyaWFsaXplAOkCHGNvbXBhY3RmaGVpbnQxMjhfZGVzZXJpYWxpemUA/wMfY29tcGFjdGZoZWludDEyOF9zYWZlX3NlcmlhbGl6ZQDaAiFjb21wYWN0ZmhlaW50MTI4X3NhZmVfZGVzZXJpYWxpemUA8wM0Y29tcGFjdGZoZWludDEyOGxpc3RfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCTAxtjb21wYWN0ZmhlaW50MTI4bGlzdF9leHBhbmQA7QIeY29tcGFjdGZoZWludDEyOGxpc3Rfc2VyaWFsaXplAOkCIGNvbXBhY3RmaGVpbnQxMjhsaXN0X2Rlc2VyaWFsaXplAIAEIWZoZWludDE2MF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQC+BCFmaGVpbnQxNjBfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkAvwQsZmhlaW50MTYwX2VuY3J5cHRfd2l0aF9jb21wcmVzc2VkX3B1YmxpY19rZXkAwAQpZmhlaW50MTYwX2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAwQQRZmhlaW50MTYwX2RlY3J5cHQAywMTZmhlaW50MTYwX3NlcmlhbGl6ZQDnAhVmaGVpbnQxNjBfZGVzZXJpYWxpemUA/gMYZmhlaW50MTYwX3NhZmVfc2VyaWFsaXplANgCGmZoZWludDE2MF9zYWZlX2Rlc2VyaWFsaXplAPIDK2NvbXByZXNzZWRmaGVpbnQxNjBfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkAwgQeY29tcHJlc3NlZGZoZWludDE2MF9kZWNvbXByZXNzAOYDHWNvbXByZXNzZWRmaGVpbnQxNjBfc2VyaWFsaXplAOgCH2NvbXByZXNzZWRmaGVpbnQxNjBfZGVzZXJpYWxpemUA5wMiY29tcHJlc3NlZGZoZWludDE2MF9zYWZlX3NlcmlhbGl6ZQDZAiRjb21wcmVzc2VkZmhlaW50MTYwX3NhZmVfZGVzZXJpYWxpemUA1QMwY29tcGFjdGZoZWludDE2MF9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AIsFGmNvbXBhY3RmaGVpbnQxNjBfc2VyaWFsaXplAOkCHGNvbXBhY3RmaGVpbnQxNjBfZGVzZXJpYWxpemUA/wMfY29tcGFjdGZoZWludDE2MF9zYWZlX3NlcmlhbGl6ZQDaAiFjb21wYWN0ZmhlaW50MTYwX3NhZmVfZGVzZXJpYWxpemUA8wM0Y29tcGFjdGZoZWludDE2MGxpc3RfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCUAxtjb21wYWN0ZmhlaW50MTYwbGlzdF9leHBhbmQA7gIeY29tcGFjdGZoZWludDE2MGxpc3Rfc2VyaWFsaXplAOkCIGNvbXBhY3RmaGVpbnQxNjBsaXN0X2Rlc2VyaWFsaXplAIAEIWZoZWludDI1Nl9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQDDBCFmaGVpbnQyNTZfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkAxAQsZmhlaW50MjU2X2VuY3J5cHRfd2l0aF9jb21wcmVzc2VkX3B1YmxpY19rZXkAxQQpZmhlaW50MjU2X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAxgQRZmhlaW50MjU2X2RlY3J5cHQAywMTZmhlaW50MjU2X3NlcmlhbGl6ZQDnAhVmaGVpbnQyNTZfZGVzZXJpYWxpemUA/gMYZmhlaW50MjU2X3NhZmVfc2VyaWFsaXplANgCGmZoZWludDI1Nl9zYWZlX2Rlc2VyaWFsaXplAPIDK2NvbXByZXNzZWRmaGVpbnQyNTZfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkAxwQeY29tcHJlc3NlZGZoZWludDI1Nl9kZWNvbXByZXNzAOYDHWNvbXByZXNzZWRmaGVpbnQyNTZfc2VyaWFsaXplAOgCH2NvbXByZXNzZWRmaGVpbnQyNTZfZGVzZXJpYWxpemUA5wMiY29tcHJlc3NlZGZoZWludDI1Nl9zYWZlX3NlcmlhbGl6ZQDZAiRjb21wcmVzc2VkZmhlaW50MjU2X3NhZmVfZGVzZXJpYWxpemUA1QMwY29tcGFjdGZoZWludDI1Nl9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AIwFGmNvbXBhY3RmaGVpbnQyNTZfc2VyaWFsaXplAOkCHGNvbXBhY3RmaGVpbnQyNTZfZGVzZXJpYWxpemUA/wMfY29tcGFjdGZoZWludDI1Nl9zYWZlX3NlcmlhbGl6ZQDaAiFjb21wYWN0ZmhlaW50MjU2X3NhZmVfZGVzZXJpYWxpemUA8wM0Y29tcGFjdGZoZWludDI1Nmxpc3RfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCVAxtjb21wYWN0ZmhlaW50MjU2bGlzdF9leHBhbmQA7wIeY29tcGFjdGZoZWludDI1Nmxpc3Rfc2VyaWFsaXplAOkCIGNvbXBhY3RmaGVpbnQyNTZsaXN0X2Rlc2VyaWFsaXplAIAEEl9fd2JnX2ZoZWJvb2xfZnJlZQDZBh9maGVib29sX2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AMgEH2ZoZWJvb2xfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkAyQQqZmhlYm9vbF9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5AMoEJ2ZoZWJvb2xfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQDLBA9maGVib29sX2RlY3J5cHQAlgQRZmhlYm9vbF9zZXJpYWxpemUA8AITZmhlYm9vbF9kZXNlcmlhbGl6ZQCBBBZmaGVib29sX3NhZmVfc2VyaWFsaXplANsCGGZoZWJvb2xfc2FmZV9kZXNlcmlhbGl6ZQD0AxxfX3diZ19jb21wcmVzc2VkZmhlYm9vbF9mcmVlALYGKWNvbXByZXNzZWRmaGVib29sX2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AMwEHGNvbXByZXNzZWRmaGVib29sX2RlY29tcHJlc3MA6QMbY29tcHJlc3NlZGZoZWJvb2xfc2VyaWFsaXplAPECHWNvbXByZXNzZWRmaGVib29sX2Rlc2VyaWFsaXplAIIEIGNvbXByZXNzZWRmaGVib29sX3NhZmVfc2VyaWFsaXplANwCImNvbXByZXNzZWRmaGVib29sX3NhZmVfZGVzZXJpYWxpemUA9QMZX193YmdfY29tcGFjdGZoZWJvb2xfZnJlZQDYBi5jb21wYWN0ZmhlYm9vbF9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AM0EFWNvbXBhY3RmaGVib29sX2V4cGFuZADqAxhjb21wYWN0ZmhlYm9vbF9zZXJpYWxpemUA6QIaY29tcGFjdGZoZWJvb2xfZGVzZXJpYWxpemUAgwQdY29tcGFjdGZoZWJvb2xfc2FmZV9zZXJpYWxpemUA3QIfY29tcGFjdGZoZWJvb2xfc2FmZV9kZXNlcmlhbGl6ZQD2Axljb21wYWN0ZmhlYm9vbGxpc3RfZXhwYW5kAPICHGNvbXBhY3RmaGVib29sbGlzdF9zZXJpYWxpemUA6QIeY29tcGFjdGZoZWJvb2xsaXN0X2Rlc2VyaWFsaXplAIQEIGZoZXVpbnQ4X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AM4EIGZoZXVpbnQ4X2VuY3J5cHRfd2l0aF9wdWJsaWNfa2V5AM8EK2ZoZXVpbnQ4X2VuY3J5cHRfd2l0aF9jb21wcmVzc2VkX3B1YmxpY19rZXkA0AQoZmhldWludDhfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQDRBBBmaGV1aW50OF9kZWNyeXB0AK0DEmZoZXVpbnQ4X3NlcmlhbGl6ZQDnAhRmaGV1aW50OF9kZXNlcmlhbGl6ZQD7AxdmaGV1aW50OF9zYWZlX3NlcmlhbGl6ZQDVAhlmaGV1aW50OF9zYWZlX2Rlc2VyaWFsaXplAPADKmNvbXByZXNzZWRmaGV1aW50OF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQDSBB1jb21wcmVzc2VkZmhldWludDhfZGVjb21wcmVzcwDkAxxjb21wcmVzc2VkZmhldWludDhfc2VyaWFsaXplAOgCHmNvbXByZXNzZWRmaGV1aW50OF9kZXNlcmlhbGl6ZQDlAyFjb21wcmVzc2VkZmhldWludDhfc2FmZV9zZXJpYWxpemUA1gIjY29tcHJlc3NlZGZoZXVpbnQ4X3NhZmVfZGVzZXJpYWxpemUA1AMvY29tcGFjdGZoZXVpbnQ4X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAjQUZY29tcGFjdGZoZXVpbnQ4X3NlcmlhbGl6ZQDpAhtjb21wYWN0ZmhldWludDhfZGVzZXJpYWxpemUA/AMeY29tcGFjdGZoZXVpbnQ4X3NhZmVfc2VyaWFsaXplANcCIGNvbXBhY3RmaGV1aW50OF9zYWZlX2Rlc2VyaWFsaXplAPEDGmNvbXBhY3RmaGV1aW50OGxpc3RfZXhwYW5kAPMCHWNvbXBhY3RmaGV1aW50OGxpc3Rfc2VyaWFsaXplAOkCH2NvbXBhY3RmaGV1aW50OGxpc3RfZGVzZXJpYWxpemUA/QMhZmhldWludDE2X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5ANMEIWZoZXVpbnQxNl9lbmNyeXB0X3dpdGhfcHVibGljX2tleQDUBCxmaGV1aW50MTZfZW5jcnlwdF93aXRoX2NvbXByZXNzZWRfcHVibGljX2tleQDVBClmaGV1aW50MTZfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQDWBBFmaGV1aW50MTZfZGVjcnlwdACuAxNmaGV1aW50MTZfc2VyaWFsaXplAOcCFWZoZXVpbnQxNl9kZXNlcmlhbGl6ZQD7AxhmaGV1aW50MTZfc2FmZV9zZXJpYWxpemUA1QIaZmhldWludDE2X3NhZmVfZGVzZXJpYWxpemUA8AMrY29tcHJlc3NlZGZoZXVpbnQxNl9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQDXBB5jb21wcmVzc2VkZmhldWludDE2X2RlY29tcHJlc3MA5AMdY29tcHJlc3NlZGZoZXVpbnQxNl9zZXJpYWxpemUA6AIfY29tcHJlc3NlZGZoZXVpbnQxNl9kZXNlcmlhbGl6ZQDlAyJjb21wcmVzc2VkZmhldWludDE2X3NhZmVfc2VyaWFsaXplANYCJGNvbXByZXNzZWRmaGV1aW50MTZfc2FmZV9kZXNlcmlhbGl6ZQDUAzBjb21wYWN0ZmhldWludDE2X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAjgUaY29tcGFjdGZoZXVpbnQxNl9zZXJpYWxpemUA6QIcY29tcGFjdGZoZXVpbnQxNl9kZXNlcmlhbGl6ZQD8Ax9jb21wYWN0ZmhldWludDE2X3NhZmVfc2VyaWFsaXplANcCIWNvbXBhY3RmaGV1aW50MTZfc2FmZV9kZXNlcmlhbGl6ZQDxAxtjb21wYWN0ZmhldWludDE2bGlzdF9leHBhbmQA9AIeY29tcGFjdGZoZXVpbnQxNmxpc3Rfc2VyaWFsaXplAOkCIGNvbXBhY3RmaGV1aW50MTZsaXN0X2Rlc2VyaWFsaXplAP0DIWZoZXVpbnQzMl9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQDYBCFmaGV1aW50MzJfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkA2QQsZmhldWludDMyX2VuY3J5cHRfd2l0aF9jb21wcmVzc2VkX3B1YmxpY19rZXkA2gQpZmhldWludDMyX2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkA2wQRZmhldWludDMyX2RlY3J5cHQAtAMTZmhldWludDMyX3NlcmlhbGl6ZQDnAhVmaGV1aW50MzJfZGVzZXJpYWxpemUA+wMYZmhldWludDMyX3NhZmVfc2VyaWFsaXplANUCGmZoZXVpbnQzMl9zYWZlX2Rlc2VyaWFsaXplAPADK2NvbXByZXNzZWRmaGV1aW50MzJfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkA3AQeY29tcHJlc3NlZGZoZXVpbnQzMl9kZWNvbXByZXNzAOQDHWNvbXByZXNzZWRmaGV1aW50MzJfc2VyaWFsaXplAOgCH2NvbXByZXNzZWRmaGV1aW50MzJfZGVzZXJpYWxpemUA5QMiY29tcHJlc3NlZGZoZXVpbnQzMl9zYWZlX3NlcmlhbGl6ZQDWAiRjb21wcmVzc2VkZmhldWludDMyX3NhZmVfZGVzZXJpYWxpemUA1AMwY29tcGFjdGZoZXVpbnQzMl9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AI8FGmNvbXBhY3RmaGV1aW50MzJfc2VyaWFsaXplAOkCHGNvbXBhY3RmaGV1aW50MzJfZGVzZXJpYWxpemUA/AMfY29tcGFjdGZoZXVpbnQzMl9zYWZlX3NlcmlhbGl6ZQDXAiFjb21wYWN0ZmhldWludDMyX3NhZmVfZGVzZXJpYWxpemUA8QMbY29tcGFjdGZoZXVpbnQzMmxpc3RfZXhwYW5kAPUCHmNvbXBhY3RmaGV1aW50MzJsaXN0X3NlcmlhbGl6ZQDpAiBjb21wYWN0ZmhldWludDMybGlzdF9kZXNlcmlhbGl6ZQD9AyFmaGV1aW50NjRfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkA3QQhZmhldWludDY0X2VuY3J5cHRfd2l0aF9wdWJsaWNfa2V5AN4ELGZoZXVpbnQ2NF9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5AN8EKWZoZXVpbnQ2NF9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AOAEEWZoZXVpbnQ2NF9kZWNyeXB0ALUDE2ZoZXVpbnQ2NF9zZXJpYWxpemUA5wIVZmhldWludDY0X2Rlc2VyaWFsaXplAPsDGGZoZXVpbnQ2NF9zYWZlX3NlcmlhbGl6ZQDVAhpmaGV1aW50NjRfc2FmZV9kZXNlcmlhbGl6ZQDwAytjb21wcmVzc2VkZmhldWludDY0X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AOEEHmNvbXByZXNzZWRmaGV1aW50NjRfZGVjb21wcmVzcwDkAx1jb21wcmVzc2VkZmhldWludDY0X3NlcmlhbGl6ZQDoAh9jb21wcmVzc2VkZmhldWludDY0X2Rlc2VyaWFsaXplAOUDImNvbXByZXNzZWRmaGV1aW50NjRfc2FmZV9zZXJpYWxpemUA1gIkY29tcHJlc3NlZGZoZXVpbnQ2NF9zYWZlX2Rlc2VyaWFsaXplANQDMGNvbXBhY3RmaGV1aW50NjRfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCQBRpjb21wYWN0ZmhldWludDY0X3NlcmlhbGl6ZQDpAhxjb21wYWN0ZmhldWludDY0X2Rlc2VyaWFsaXplAPwDH2NvbXBhY3RmaGV1aW50NjRfc2FmZV9zZXJpYWxpemUA1wIhY29tcGFjdGZoZXVpbnQ2NF9zYWZlX2Rlc2VyaWFsaXplAPEDG2NvbXBhY3RmaGV1aW50NjRsaXN0X2V4cGFuZAD2Ah5jb21wYWN0ZmhldWludDY0bGlzdF9zZXJpYWxpemUA6QIgY29tcGFjdGZoZXVpbnQ2NGxpc3RfZGVzZXJpYWxpemUA/QMfZmhlaW50OF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQDiBB9maGVpbnQ4X2VuY3J5cHRfd2l0aF9wdWJsaWNfa2V5AOMEKmZoZWludDhfZW5jcnlwdF93aXRoX2NvbXByZXNzZWRfcHVibGljX2tleQDkBCdmaGVpbnQ4X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkA5QQPZmhlaW50OF9kZWNyeXB0AMwDEWZoZWludDhfc2VyaWFsaXplAOcCE2ZoZWludDhfZGVzZXJpYWxpemUA/gMWZmhlaW50OF9zYWZlX3NlcmlhbGl6ZQDYAhhmaGVpbnQ4X3NhZmVfZGVzZXJpYWxpemUA8gMpY29tcHJlc3NlZGZoZWludDhfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkA5gQcY29tcHJlc3NlZGZoZWludDhfZGVjb21wcmVzcwDmAxtjb21wcmVzc2VkZmhlaW50OF9zZXJpYWxpemUA6AIdY29tcHJlc3NlZGZoZWludDhfZGVzZXJpYWxpemUA5wMgY29tcHJlc3NlZGZoZWludDhfc2FmZV9zZXJpYWxpemUA2QIiY29tcHJlc3NlZGZoZWludDhfc2FmZV9kZXNlcmlhbGl6ZQDVAy5jb21wYWN0ZmhlaW50OF9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AJEFGGNvbXBhY3RmaGVpbnQ4X3NlcmlhbGl6ZQDpAhpjb21wYWN0ZmhlaW50OF9kZXNlcmlhbGl6ZQD/Ax1jb21wYWN0ZmhlaW50OF9zYWZlX3NlcmlhbGl6ZQDaAh9jb21wYWN0ZmhlaW50OF9zYWZlX2Rlc2VyaWFsaXplAPMDGWNvbXBhY3RmaGVpbnQ4bGlzdF9leHBhbmQA9wIcY29tcGFjdGZoZWludDhsaXN0X3NlcmlhbGl6ZQDpAh5jb21wYWN0ZmhlaW50OGxpc3RfZGVzZXJpYWxpemUAgAQgZmhlaW50MTZfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkA5wQgZmhlaW50MTZfZW5jcnlwdF93aXRoX3B1YmxpY19rZXkA6AQrZmhlaW50MTZfZW5jcnlwdF93aXRoX2NvbXByZXNzZWRfcHVibGljX2tleQDpBChmaGVpbnQxNl9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AOoEEGZoZWludDE2X2RlY3J5cHQAzQMSZmhlaW50MTZfc2VyaWFsaXplAOcCFGZoZWludDE2X2Rlc2VyaWFsaXplAP4DF2ZoZWludDE2X3NhZmVfc2VyaWFsaXplANgCGWZoZWludDE2X3NhZmVfZGVzZXJpYWxpemUA8gMqY29tcHJlc3NlZGZoZWludDE2X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5AOsEHWNvbXByZXNzZWRmaGVpbnQxNl9kZWNvbXByZXNzAOYDHGNvbXByZXNzZWRmaGVpbnQxNl9zZXJpYWxpemUA6AIeY29tcHJlc3NlZGZoZWludDE2X2Rlc2VyaWFsaXplAOcDIWNvbXByZXNzZWRmaGVpbnQxNl9zYWZlX3NlcmlhbGl6ZQDZAiNjb21wcmVzc2VkZmhlaW50MTZfc2FmZV9kZXNlcmlhbGl6ZQDVAy9jb21wYWN0ZmhlaW50MTZfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQCSBRljb21wYWN0ZmhlaW50MTZfc2VyaWFsaXplAOkCG2NvbXBhY3RmaGVpbnQxNl9kZXNlcmlhbGl6ZQD/Ax5jb21wYWN0ZmhlaW50MTZfc2FmZV9zZXJpYWxpemUA2gIgY29tcGFjdGZoZWludDE2X3NhZmVfZGVzZXJpYWxpemUA8wMaY29tcGFjdGZoZWludDE2bGlzdF9leHBhbmQA+AIdY29tcGFjdGZoZWludDE2bGlzdF9zZXJpYWxpemUA6QIfY29tcGFjdGZoZWludDE2bGlzdF9kZXNlcmlhbGl6ZQCABCBmaGVpbnQzMl9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQDsBCBmaGVpbnQzMl9lbmNyeXB0X3dpdGhfcHVibGljX2tleQDtBCtmaGVpbnQzMl9lbmNyeXB0X3dpdGhfY29tcHJlc3NlZF9wdWJsaWNfa2V5AO4EKGZoZWludDMyX2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkA7wQQZmhlaW50MzJfZGVjcnlwdADPAxJmaGVpbnQzMl9zZXJpYWxpemUA5wIUZmhlaW50MzJfZGVzZXJpYWxpemUA/gMXZmhlaW50MzJfc2FmZV9zZXJpYWxpemUA2AIZZmhlaW50MzJfc2FmZV9kZXNlcmlhbGl6ZQDyAypjb21wcmVzc2VkZmhlaW50MzJfZW5jcnlwdF93aXRoX2NsaWVudF9rZXkA8AQdY29tcHJlc3NlZGZoZWludDMyX2RlY29tcHJlc3MA5gMcY29tcHJlc3NlZGZoZWludDMyX3NlcmlhbGl6ZQDoAh5jb21wcmVzc2VkZmhlaW50MzJfZGVzZXJpYWxpemUA5wMhY29tcHJlc3NlZGZoZWludDMyX3NhZmVfc2VyaWFsaXplANkCI2NvbXByZXNzZWRmaGVpbnQzMl9zYWZlX2Rlc2VyaWFsaXplANUDL2NvbXBhY3RmaGVpbnQzMl9lbmNyeXB0X3dpdGhfY29tcGFjdF9wdWJsaWNfa2V5AJMFGWNvbXBhY3RmaGVpbnQzMl9zZXJpYWxpemUA6QIbY29tcGFjdGZoZWludDMyX2Rlc2VyaWFsaXplAP8DHmNvbXBhY3RmaGVpbnQzMl9zYWZlX3NlcmlhbGl6ZQDaAiBjb21wYWN0ZmhlaW50MzJfc2FmZV9kZXNlcmlhbGl6ZQDzAxpjb21wYWN0ZmhlaW50MzJsaXN0X2V4cGFuZAD5Ah1jb21wYWN0ZmhlaW50MzJsaXN0X3NlcmlhbGl6ZQDpAh9jb21wYWN0ZmhlaW50MzJsaXN0X2Rlc2VyaWFsaXplAIAEIGZoZWludDY0X2VuY3J5cHRfd2l0aF9jbGllbnRfa2V5APEEIGZoZWludDY0X2VuY3J5cHRfd2l0aF9wdWJsaWNfa2V5APIEK2ZoZWludDY0X2VuY3J5cHRfd2l0aF9jb21wcmVzc2VkX3B1YmxpY19rZXkA8wQoZmhlaW50NjRfZW5jcnlwdF93aXRoX2NvbXBhY3RfcHVibGljX2tleQD0BBBmaGVpbnQ2NF9kZWNyeXB0ANADEmZoZWludDY0X3NlcmlhbGl6ZQDnAhRmaGVpbnQ2NF9kZXNlcmlhbGl6ZQD+AxdmaGVpbnQ2NF9zYWZlX3NlcmlhbGl6ZQDYAhlmaGVpbnQ2NF9zYWZlX2Rlc2VyaWFsaXplAPIDKmNvbXByZXNzZWRmaGVpbnQ2NF9lbmNyeXB0X3dpdGhfY2xpZW50X2tleQD1BB1jb21wcmVzc2VkZmhlaW50NjRfZGVjb21wcmVzcwDmAxxjb21wcmVzc2VkZmhlaW50NjRfc2VyaWFsaXplAOgCHmNvbXByZXNzZWRmaGVpbnQ2NF9kZXNlcmlhbGl6ZQDnAyFjb21wcmVzc2VkZmhlaW50NjRfc2FmZV9zZXJpYWxpemUA2QIjY29tcHJlc3NlZGZoZWludDY0X3NhZmVfZGVzZXJpYWxpemUA1QMvY29tcGFjdGZoZWludDY0X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAlAUZY29tcGFjdGZoZWludDY0X3NlcmlhbGl6ZQDpAhtjb21wYWN0ZmhlaW50NjRfZGVzZXJpYWxpemUA/wMeY29tcGFjdGZoZWludDY0X3NhZmVfc2VyaWFsaXplANoCIGNvbXBhY3RmaGVpbnQ2NF9zYWZlX2Rlc2VyaWFsaXplAPMDGmNvbXBhY3RmaGVpbnQ2NGxpc3RfZXhwYW5kAPoCHWNvbXBhY3RmaGVpbnQ2NGxpc3Rfc2VyaWFsaXplAOkCH2NvbXBhY3RmaGVpbnQ2NGxpc3RfZGVzZXJpYWxpemUAgAQyY29tcGFjdGZoZWJvb2xsaXN0X2VuY3J5cHRfd2l0aF9jb21wYWN0X3B1YmxpY19rZXkAlgMPX193YmdfdGZoZV9mcmVlAPEJLXRmaGVjb25maWdidWlsZGVyX2RlZmF1bHRfd2l0aF9iaWdfZW5jcnlwdGlvbgDrBhVfX3diZ19maGV1aW50MTYwX2ZyZWUAzgcfX193YmdfY29tcHJlc3NlZGZoZXVpbnQxNjBfZnJlZQDmBxVfX3diZ19maGV1aW50MjU2X2ZyZWUAzgcfX193YmdfY29tcHJlc3NlZGZoZXVpbnQyNTZfZnJlZQDmBxVfX3diZ19maGV1aW50MTI4X2ZyZWUAzgcfX193YmdfY29tcHJlc3NlZGZoZXVpbnQxMjhfZnJlZQDmBxRfX3diZ19maGVpbnQxNjBfZnJlZQDOBx5fX3diZ19jb21wcmVzc2VkZmhlaW50MTYwX2ZyZWUA5gcUX193YmdfZmhlaW50MjU2X2ZyZWUAzgceX193YmdfY29tcHJlc3NlZGZoZWludDI1Nl9mcmVlAOYHE19fd2JnX2ZoZXVpbnQ4X2ZyZWUAzgcdX193YmdfY29tcHJlc3NlZGZoZXVpbnQ4X2ZyZWUA5gcUX193YmdfZmhldWludDE2X2ZyZWUAzgceX193YmdfY29tcHJlc3NlZGZoZXVpbnQxNl9mcmVlAOYHFF9fd2JnX2ZoZXVpbnQzMl9mcmVlAM4HHl9fd2JnX2NvbXByZXNzZWRmaGV1aW50MzJfZnJlZQDmBxRfX3diZ19maGV1aW50NjRfZnJlZQDOBx5fX3diZ19jb21wcmVzc2VkZmhldWludDY0X2ZyZWUA5gcSX193YmdfZmhlaW50OF9mcmVlAM4HHF9fd2JnX2NvbXByZXNzZWRmaGVpbnQ4X2ZyZWUA5gcTX193YmdfZmhlaW50MTZfZnJlZQDOBx1fX3diZ19jb21wcmVzc2VkZmhlaW50MTZfZnJlZQDmBxNfX3diZ19maGVpbnQzMl9mcmVlAM4HHV9fd2JnX2NvbXByZXNzZWRmaGVpbnQzMl9mcmVlAOYHE19fd2JnX2ZoZWludDY0X2ZyZWUAzgcdX193YmdfY29tcHJlc3NlZGZoZWludDY0X2ZyZWUA5gcYY29tcGFjdGZoZXVpbnQxNjBfZXhwYW5kAOgDGGNvbXBhY3RmaGV1aW50MjU2X2V4cGFuZADoAxhjb21wYWN0ZmhldWludDEyOF9leHBhbmQA6AMVY29tcGFjdGZoZWludDhfZXhwYW5kAOgDF2NvbXBhY3RmaGVpbnQyNTZfZXhwYW5kAOgDF2NvbXBhY3RmaGVpbnQxNjBfZXhwYW5kAOgDF2NvbXBhY3RmaGV1aW50MTZfZXhwYW5kAOgDF2NvbXBhY3RmaGV1aW50MzJfZXhwYW5kAOgDF2NvbXBhY3RmaGV1aW50NjRfZXhwYW5kAOgDFmNvbXBhY3RmaGV1aW50OF9leHBhbmQA6AMWY29tcGFjdGZoZWludDE2X2V4cGFuZADoAxZjb21wYWN0ZmhlaW50MzJfZXhwYW5kAOgDFmNvbXBhY3RmaGVpbnQ2NF9leHBhbmQA6AMgX193YmdfY29tcGFjdGZoZXVpbnQxMjhsaXN0X2ZyZWUA2AYcX193YmdfY29tcGFjdGZoZXVpbnQxNjBfZnJlZQDYBiBfX3diZ19jb21wYWN0ZmhldWludDE2MGxpc3RfZnJlZQDYBhxfX3diZ19jb21wYWN0ZmhldWludDI1Nl9mcmVlANgGIF9fd2JnX2NvbXBhY3RmaGV1aW50MjU2bGlzdF9mcmVlANgGHF9fd2JnX2NvbXBhY3RmaGV1aW50MTI4X2ZyZWUA2AYZX193YmdfY29tcGFjdGZoZWludDhfZnJlZQDYBhtfX3diZ19jb21wYWN0ZmhlaW50MTYwX2ZyZWUA2AYfX193YmdfY29tcGFjdGZoZWludDE2MGxpc3RfZnJlZQDYBhtfX3diZ19jb21wYWN0ZmhlaW50MjU2X2ZyZWUA2AYfX193YmdfY29tcGFjdGZoZWludDI1Nmxpc3RfZnJlZQDYBh1fX3diZ19jb21wYWN0ZmhlYm9vbGxpc3RfZnJlZQDYBh9fX3diZ19jb21wYWN0ZmhlaW50MTI4bGlzdF9mcmVlANgGHl9fd2JnX2NvbXBhY3RmaGV1aW50OGxpc3RfZnJlZQDYBhtfX3diZ19jb21wYWN0ZmhldWludDE2X2ZyZWUA2AYfX193YmdfY29tcGFjdGZoZXVpbnQxNmxpc3RfZnJlZQDYBhtfX3diZ19jb21wYWN0ZmhldWludDMyX2ZyZWUA2AYfX193YmdfY29tcGFjdGZoZXVpbnQzMmxpc3RfZnJlZQDYBhtfX3diZ19jb21wYWN0ZmhldWludDY0X2ZyZWUA2AYfX193YmdfY29tcGFjdGZoZXVpbnQ2NGxpc3RfZnJlZQDYBhpfX3diZ19jb21wYWN0ZmhldWludDhfZnJlZQDYBh1fX3diZ19jb21wYWN0ZmhlaW50OGxpc3RfZnJlZQDYBhpfX3diZ19jb21wYWN0ZmhlaW50MTZfZnJlZQDYBh5fX3diZ19jb21wYWN0ZmhlaW50MTZsaXN0X2ZyZWUA2AYaX193YmdfY29tcGFjdGZoZWludDMyX2ZyZWUA2AYeX193YmdfY29tcGFjdGZoZWludDMybGlzdF9mcmVlANgGGl9fd2JnX2NvbXBhY3RmaGVpbnQ2NF9mcmVlANgGHl9fd2JnX2NvbXBhY3RmaGVpbnQ2NGxpc3RfZnJlZQDYBhFfX3diaW5kZ2VuX21hbGxvYwDaBhJfX3diaW5kZ2VuX3JlYWxsb2MAmAcfX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcgDACQ9fX3diaW5kZ2VuX2ZyZWUAjggUX193YmluZGdlbl9leG5fc3RvcmUAhwkJuQcBAEEBC98DmwGaAfIJ9AnCCcEJvwe9B78Huge9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SSAlmoN7OaIgIiAgoSABoaEiI6EhAQsgACABOQMAIAAgICABoSAjoTkDECAhRAAAAAAAAODBZiEFIABB/////wcCfyAhmUQAAAAAAADgQWMEQCAhqgwBC0GAgICAeAtBgICAgHggBRsgIUQAAMD////fQWQbQQAgISAhYRs2AggMCAtBgICAgHgLQYCAgIB4IAQbIAFEAADA////30FkG0EAIAEgAWEbtyIgOQMAIAEgIKFEAAAAAAAAcEGiIgFEAAAAAAAA4MFmIQQgCkH/////BwJ/IAGZRAAAAAAAAOBBYwRAIAGqDAELQYCAgIB4C0GAgICAeCAEGyABRAAAwP///99BZBtBACABIAFhGyIEtyIgOQMIIAogASAgoUQAAAAAAABwQaIiATkDECAKQgA3AyggCkIANwMgIApCADcDGCAKQRhqIRIjAEGwBGsiAyQAIANCADcDmAEgA0IANwOQASADQgA3A4gBIANCADcDgAEgA0IANwN4IANCADcDcCADQgA3A2ggA0IANwNgIANCADcDWCADQgA3A1AgA0IANwNIIANCADcDQCADQgA3AzggA0IANwMwIANCADcDKCADQgA3AyAgA0IANwMYIANCADcDECADQgA3AwggA0IANwMAIANCADcDuAIgA0IANwOwAiADQgA3A6gCIANCADcDoAIgA0IANwOYAiADQgA3A5ACIANCADcDiAIgA0IANwOAAiADQgA3A/gBIANCADcD8AEgA0IANwPoASADQgA3A+ABIANCADcD2AEgA0IANwPQASADQgA3A8gBIANCADcDwAEgA0IANwO4ASADQgA3A7ABIANCADcDqAEgA0IANwOgASADQgA3A9gDIANCADcD0AMgA0IANwPIAyADQgA3A8ADIANCADcDuAMgA0IANwOwAyADQgA3A6gDIANCADcDoAMgA0IANwOYAyADQgA3A5ADIANCADcDiAMgA0IANwOAAyADQgA3A/gCIANCADcD8AIgA0IANwPoAiADQgA3A+ACIANCADcD2AIgA0IANwPQAiADQgA3A8gCIANCADcDwAIgA0HgA2pBAEHQABDkCRpBvMPDACgCACILQQNBAkEBIAQbIAFEAAAAAAAAAABiGyICQQFrIgxqIQkgBUEUdkGWCGsiEEEDa0EYbSIFQQAgBUEAShsiDiAMayEEIA5BAnQg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AAAAAAAAAAAhAQwBCyACQX5xIQ5EAAAAAAAAAAAhAUEAIQJBACEEA0AgASACQdDFwwBqKwMAIAIgB2oiECsDAKKgIAJB2MXDAGorAwAgEEEIaisDAKKgIQEgAkEQaiECIA4gBEECaiIERw0ACwsgA0GgAWogBkEDdGogDAR8IAEgBEEDdEHQxcMAaisDACADQcACaiAEIAlqQQN0aisDAKKgBSABCzkDACAHQQhrIQcgCUEBayECIAkNAAsCQCAIQQNxIglFBEBEAAAAAAAAAAAhASAFIQQMAQsgA0GgAWogBUEDdGohAkQAAAAAAAAAACEBIAUhBANAIARBAWshBCABIAIrAwCgIQEgAkEIayECIAlBAWsiCQ0ACwsgBUEDTwRAIARBA3QgA2pBiAFqIQIDQCABIAJBGGorAwCgIAJBEGorAwCgIAJBCGorAwCgIAIrAwCgIQEgAkEgayECIARBA0cgBEEEayEEDQALCyASIAGaIAEgDRs5AwAgAysDoAEgAaEhAQJAIAVFDQBBASECA0AgASADQaABaiACQQN0aisDAKAhASACIAVPDQEgAiACIAVJaiICIAVNDQALCyASIAGaIAEgDRs5AwggA0GwBGokACAPQQdxIQUgJEIAWQRAIAAgBTYCCCAAIAorAyA5AxAgACAKKwMYOQMADAcLIABBACAFazYCCCAAIAorAyCaOQMQIAAgCisDGJo5AwAMBgsgBUG9+9eABE8EQCAFQfvD5IAERgRAAkAgASABRIPIyW0wX+Q/okQAAAAAAAA4Q6BEAAAAAAAAOMOgIiFEAABAVPsh+b+ioCIBICFEMWNiGmG00D2iIiOhIiC9QoCAgICAgID4/wCDQv////////+HP1YNACABICFEAABgGmG00D2iIiChIiIgIURzcAMuihmjO6IgASAioSAgoaEiI6EiIL1CgICAgICAgID/AINC//////////88VgRAICIhAQwBCyAiICFEAAAALooZozuiIiChIgEgIUTBSSAlmoN7OaIgIiABoSAgoaEiI6EhIAsgACAgOQMAIAAgASAgoSAjoTkDECAhRAAAAAAAAODBZiEFIABB/////wcCfyAhmUQAAAAAAADgQWMEQCAhqgwBC0GAgICAeAtBgICAgHggBRsgIUQAAMD////fQWQbQQAgISAhYRs2AggMBwsgJEIA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QAJAAkAgAS0AsAIiBUUEQCAEQQFrDgIDBQELAkACQAJAIARBAWsOAgECAAsgA0FAayABQQhqQYABEOcJGiADQThqIANB2ABqKQMANwMAIANBMGogA0HQAGopAwA3AwAgAyADKQNINwMoDAMLIAFBCGoMBAsgAUEIagwFCyADQUBrIAFBCGpBgAEQ5wkaIANBOGogA0HwAGopAwA3AwAgA0EwaiADQegAaikDADcDACADIANB4ABqKQMANwMoCyADIANBKGo2AkwgAyADNgJIIAMgA0EIajYCRCADIAE2AkAgA0FAaxCLAiAAIAMpAwg3AwAgAEEIaiADQRBqKQMANwMAIABBEGogA0EYaikDADcDACAAQRhqIANBIGopAwA3AwAgAUH4AGohBCABKAJ0DAQLIAFBIGoLIgRBEGopAwA3AwAgA0EwaiAEQQhqKQMANwMAIAMgBCkDADcDKCADIANBKGo2AkwgAyADNgJIIAMgA0EIajYCRCADIAE2AkAgA0FAaxCLAiAAIAMpAwg3AwAgAEEIaiADQRBqKQMANwMAIABBEGogA0EYaikDADcDACAAQRhqIANBIGopAwA3AwAgAUGQAWohBCABQYwBaigCAAwCCyABQSBqCyIEQRBqKQMANwMAIANBMGogBEEIaikDADcDACADIAQpAwA3AyggAyADQShqNgJMIAMgAzYCSCADIANBCGo2AkQgAyABNgJAIANBQGsQiwIgACADKQMINwMAIABBCGogA0EQaikDADcDACAAQRBqIANBGGopAwA3AwAgAEEYaiADQSBqKQMANwMAIAFB8ABqIQQgASgCbAshASAAIAU6ADAgACABNgIoIABBATYCJCAAIAQoAgA2AiwgACABQQFrNgIgIANBwAFqJAAL5AgBAX8jAEEwayICJAACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAALQAAQQFrDhEBAgMEBQYHCAkKCwwNDg8QEQALIAIgAC0AAToACCACQSRqQgE3AgAgAkECNgIcIAJBqOfCADYCGCACQakDNgIUIAIgAkEQajYCICACIAJBCGo2AhAgASACQRhqEPgIDBELIAIgACkDCDcDCCACQSRqQgE3AgAgAkECNgIcIAJBxOfCADYCGCACQd4BNgIUIAIgAkEQajYCICACIAJBCGo2AhAgASACQRhqEPgIDBALIAIgACkDCDcDCCACQSRqQgE3AgAgAkECNgIcIAJBxOfCADYCGCACQaoDNgIUIAIgAkEQajYCICACIAJBCGo2AhAgASACQRhqEPgIDA8LIAIgACsDCDkDCCACQSRqQgE3AgAgAkECNgIcIAJB5OfCADYCGCACQasDNgIUIAIgAkEQajYCICACIAJBCGo2AhAgASACQRhqEPgIDA4LIAIgACgCBDYCCCACQSRqQgE3AgAgAkECNgIcIAJBgOjCADYCGCACQawDNgIUIAIgAkEQajYCICACIAJBCGo2AhAgASACQRhqEPgIDA0LIAIgACkCBDcCCCACQSRqQgE3AgAgAkEBNgIcIAJBmOjCADYCGCACQeUBNgIUIAIgAkEQajYCICACIAJBCGo2AhAgASACQRhqEPgIDAwLIAJBJGpCADcCACACQQE2AhwgAkGg6MIANgIYIAJBlOfCADYCICABIAJBGGoQ+AgMCwsgAkEkakIANwIAIAJBATYCHCACQbTowgA2AhggAkGU58IANgIgIAEgAkEYahD4CAwKCyACQSRqQgA3AgAgAkEBNgIcIAJByOjCADYCGCACQZTnwgA2AiAgASACQRhqEPgIDAkLIAJBJGpCADcCACACQQE2AhwgAkHg6MIANgIYIAJBlOfCADYCICABIAJBGGoQ+AgMCAsgAkEkakIANwIAIAJBATYCHCACQfDowgA2AhggAkGU58IANgIgIAEgAkEYahD4CAwHCyACQSRqQgA3AgAgAkEBNgIcIAJB/OjCADYCGCACQZTnwgA2AiAgASACQRhqEPgIDAYLIAJBJGpCADcCACACQQE2AhwgAkGI6cIANgIYIAJBlOfCADYCICABIAJBGGoQ+AgMBQsgAkEkakIANwIAIAJBATYCHCACQZzpwgA2AhggAkGU58IANgIgIAEgAkEYahD4CAwECyACQSRqQgA3AgAgAkEBNgIcIAJBtOnCADYCGCACQZTnwgA2AiAgASACQRhqEPgIDAMLIAJBJGpCADcCACACQQE2AhwgAkHM6cIANgIYIAJBlOfCADYCICABIAJBGGoQ+AgMAgsgAkEkakIANwIAIAJBATYCHCACQeTpwgA2AhggAkGU58IANgIgIAEgAkEYahD4CAwBCyABIAAoAgQgAEEIaigCABCFCAsgAkEw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IAFBGGopAwA3AwAgAkHIAGogAUEQaikDADcDACACIAEpAwg3A0AgAkFAayADQSAQ5glFDQELIAJBOGogA0EYaikDADcDACACQTBqIANBEGopAwA3AwAgAkEoaiADQQhqKQMANwMAIAIgAykDADcDICACQdgAaiABQeAAaikDADcDACACQdAAaiABQdgAaikDADcDACACQcgAaiABQdAAaikDADcDACACIAEpA0g3A0ADQCACQSBqIARqIgUgBSkDACACQUBrIARqKQMAgzcDACAEQQhqIgRBIEcNAAsgAkEYaiIIIAJBOGoiCSkDADcDACACQRBqIgogAkEwaiILKQMANwMAIAJBCGoiDCACQShqIg0pAwA3AwAgAiACKQMgNwMAIAMgASgCiAFBARDkASABKAKMASIDIAEoAogBIgZJBEAgAUHoAGohBQNAIAJB2ABqIgQgBUEYaikDADcDACACQdAAaiIHIAVBEGopAwA3AwAgAkHIAGoiDiAFQQhqKQMANwMAIAIgBSkDADcDQCACQUBrIAMQygIgCSAEKQMANwMAIAsgBykDADcDACANIA4pAwA3AwAgAiACKQNANwMgQQAhBANAIAIgBGoiByAHKQMAIAJBIGogBGopAwCENwMAIARBCGoiBEEgRw0ACyADQQFqIgMgBkcNAAsgASgCiAEhBiABKAKMASEDCyAAIAIpAwA3AwggAEIBNwMAIABBEGogDCkDADcDACAAQRhqIAopAwA3AwAgAEEgaiAIKQMANwMAIAEgAyAGayIAQQAgACADTRs2AowBDAELIABCADcDAAsgAkHgAGokAAu6BQENfyMAQeAAayICJAACQCABKAKMAUUEQCAAQgA3AwAMAQsgAUEoaiEDAkAgASkDAFBFBEAgAkHYAGogAUEgaikDADcDACACQdAAaiABQRhqKQMANwMAIAJByABqIAFBEGopAwA3AwAgAiABKQMINwNAIAJBQGsgA0EgEOYJRQ0BCyACQThqIANBGGopAwA3AwAgAkEwaiADQRBqKQMANwMAIAJBKGogA0EIaikDADcDACACIAMpAwA3AyAgAkHYAGogAUHgAGopAwA3AwAgAkHQAGogAUHYAGopAwA3AwAgAkHIAGogAUHQAGopAwA3AwAgAiABKQNINwNAA0AgAkEgaiAEaiIFIAUpAwAgAkFAayAEaikDAIM3AwAgBEEIaiIEQSBHDQALIAJBGGoiCCACQThqIgkpAwA3AwAgAkEQaiIKIAJBMGoiCykDADcDACACQQhqIgwgAkEoaiINKQMANwMAIAIgAikDIDcDACADIAEoAogBQQAQ5AEgASgCjAEiAyABKAKIASIGSQRAIAFB6ABqIQUDQCACQdgAaiIEIAVBGGopAwA3AwAgAkHQAGoiByAFQRBqKQMANwMAIAJByABqIg4gBUEIaikDADcDACACIAUpAwA3A0AgAkFAayADEMoCIAkgBCkDADcDACALIAcpAwA3AwAgDSAOKQMANwMAIAIgAikDQDcDIEEAIQQDQCACIARqIgcgBykDACACQSBqIARqKQMAhDcDACAEQQhqIgRBIEcNAAsgA0EBaiIDIAZHDQALIAEoAogBIQYgASgCjAEhAwsgACACKQMANwMIIABCATcDACAAQRBqIAwpAwA3AwAgAEEYaiAKKQMANwMAIABBIGogCCkDADcDACABIAMgBmsiAEEAIAAgA00bNgKMAQwBCyAAQgA3AwALIAJB4ABqJAALzlQDKH8IfAV+IwBBIGsiEiQAQfDMwwAtAABBA0cEQCMAQRBrIgQkAEHwzMMALQAAQQNHBEAgBEHIzMMANgIAIAQgBEEPajYCBCAEIAQ2AgggBEEIaiEBIwBBQGoiByQAAkACQAJAAkACQEHwzMMALQAAQQJrDgIDAQALQfDMwwBBAjoAACABKAIAIgEoAgAhBiABQQA2AgAgBkUNASMAQRBrIgEkAAJAQQBB3MrAACgCABEFACIFBEAgBSAFKQMAIjFCAXw3AwAgByAFKQMINwMIIAcgMTcDACABQRBqJAAMAQtBpMDCAEHGACABQQ9qQezAwgBBzMHCABD2BAALIAdBG2pB8MrAACkDADcAACAHQejKwAApAwA3ABMgBykDACE0IAcpAwghMiAHQTdqIgUgB0EfaigAADYAACAHQTBqIgEgB0EYaikAADcDACAHIAcpABAiMTcDKCAGQQA6AAQgBkEANgIAIAYgMTcABSAGQQ1qIAEpAwA3AAAgBkEUaiAFKAAANgAAIAYgMjcDICAGIDQ3AxhB8MzDAEEDOgAACyAHQUBrJAAMAgtB8MzAAEErQZDWwAAQzAYACyAHQRxqQgA3AgAgB0EBNgIUIAdB6MzAADYCECAHQbDMwAA2AhggB0EQakGc8MEAEPwGAAsLIARBEGokAAtByMzDACgCACEBQcjMwwBBfzYCACASIAA2AgQCQAJAAkACQAJAAkAgAQ0AQezNwwAoAgBB/////wdxBEAQ7QlBAXMhEwtBzMzDAC0AAA0BIwBBEGsiBSQAIAUgADYCDEHQzMMAKAIAIgdBCGshBEHUzMMAKAIAIgYgBUEMahDKASI1p3EhCiA1QhmIQv8Ag0KBgoSIkKDAgAF+ITIgEkEIaiIVAn8CQANAIAcgCmopAAAiNCAyhSIxQn+FIDFCgYKEiJCgwIABfYNCgIGChIiQoMCAf4MhMwNAIDNQBEAgNCA0QgGGg0KAgYKEiJCgwIB/g1BFDQMgCiADQQhqIgNqIAZxIQoMAgsgM3ohMSAzQgF9IDODITMgBCAxp0EDdiAKaiAGcSIBQQN0aygCACAARw0ACwsgFUEBNgIEIBVBEGpB0MzDADYCACAVQQhqIAA2AgAgFUEMaiAHQQAgAWtBA3RqNgIAQQAMAQtB2MzDACgCAEUEQCMAQSBrIhEkAAJAQdzMwwAoAgAiCUEBaiIDIAlJBEAQoQYgESgCBCEBIBEoAgAhDwwBCwJAQdjMwwACfwJAAkBB1MzDACgCACIWIBZBAWoiBkEDdiIEQQdsIBZBCEkbIgFBAXYgA0kEQCADIAFBAWoiASABIANJGyIDQQhJDQEgA0GAgICAAkkEQEEBIQEgA0EDdCIDQQ5JDQVBfyADQQduQQFrZ3ZBAWohAQwFCxChBiARKAIMIQEgESgCCCIPQYGAgIB4Rw0FDAQLQdDMwwAoAgAhAyAEIAZBB3FBAEdqIg8EQCADIQEDQCABIAEpAwAiMUJ/hUIHiEKBgoSIkKDAgAGDIDFC//79+/fv37//AIR8NwMAIAFBCGohASAPQQFrIg8NAAsLIAZBCE8EQCADIAZqIAMpAAA3AAAMAgsgA0EIaiADIAYQ4wkaIBZBf0cNAUEADAILQQRBCCADQQRJGyEBDAILQQAhAQNAAkBB0MzDACgCACILIAEiA2otAABBgAFHDQAgCyAMaiENQQAgA2shCiALIANBA3RrQQhrIQcDQEHUzMMAKAIAIgggCyAKQQN0akEIaxDKAaciCXEiBiEPIAYgC2opAABCgIGChIiQoMCAf4MiMlAEQEEIIQEDQCABIA9qIQQgAUEIaiEBIAsgBCAIcSIPaikAAEKAgYKEiJCgwIB/gyIyUA0ACwsgCyAyeqdBA3YgD2ogCHEiAWosAABBAE4EQCALKQMAQoCBgoSIkKDAgH+DeqdBA3YhAQsCQCABIAZrIAMgBmtzIAhxQQhPBEAgASALaiIELQAAIAQgCUEZdiIEOgAAQdDMwwAoAgAgAUEIayAIcWpBCGogBDoAACALIAFBA3RrIQlB/wFHBEBBeCEBA0AgASANaiIELQAAIQYgBCABIAlqIgQtAAA6AAAgBCAGOgAAIAFBAWoiAQ0ACwwCC0HUzMMAKAIAIQFB0MzDACgCACADakH/AToAAEHQzMMAKAIAIAEgA0EIa3FqQQhqQf8BOgAAIAlBCGsgBykAADcAAAwDCyADIAtqIAlBGXYiAToAAEHQzMMAKAIAIAggA0EIa3FqQQhqIAE6AAAMAgtB0MzDACgCACELDAALAAsgA0EBaiEBIAxBCGshDCADIBZHDQALQdzMwwAoAgAhCUHUzMMAKAIAIgEgAUEBakEDdkEHbCABQQhJGwsiASAJazYCAEGBgICAeCEPDAELIBFBEGohCiMAQRBrIgckAAJAAkACQCABrUIDhiIxQiCIpw0AIDGnIgRBB2oiAyAESQ0AIAEgA0F4cSIGakEIaiIEIAZJDQAgBEH4////B00NAQsQoQYgCiAHKQMANwIEIApBADYCAAwBCyAEBH9Bgc3DAC0AABogBEEIEIQJBUEICyIDBEAgCkEANgIMIAogAUEBayIENgIEIAogAyAGajYCACAKIAQgAUEDdkEHbCAEQQhJGzYCCAwBC0EIIAQQ3wkACyAHQRBqJAAgESgCECIBRQRAIBFBGGooAgAhASARKAIUIQ8MAQsgESgCGCEKIAFB/wEgESgCFCINQQlqEOQJIQxB3MzDACAJBH9B0MzDACgCACIDKQMAQn+FQoCBgoSIkKDAgH+DITIDQCAyUARAIAMhAQNAIAtBCGohCyABKQMIIAFBCGoiAyEBQn+FQoCBgoSIkKDAgH+DIjJQDQALCyAMIA1B0MzDACgCACAyeqdBA3YgC2pBA3QiB2tBCGsQygGnIgZxIg9qKQAAQoCBgoSIkKDAgH+DIjFQBEBBCCEBA0AgASAPaiEEIAFBCGohASAMIAQgDXEiD2opAABCgIGChIiQoMCAf4MiMVANAAsLIDJCAX0gMoMhMiAMIDF6p0EDdiAPaiANcSIBaiwAAEEATgRAIAwpAwBCgIGChIiQoMCAf4N6p0EDdiEBCyABIAxqIAZBGXYiBDoAACABQQhrIA1xIAxqQQhqIAQ6AAAgDCABQQN0a0EIa0HQzMMAKAIAIAdrQQhrKQAANwAAIAlBAWsiCQ0AC0HUzMMAKAIAIRZB3MzDACgCAAVBAAsiATYCAEHUzMMAIA02AgBB2MzDACAKIAFrNgIAQdDMwwAoAgBB0MzDACAMNgIAQYGAgIB4IQ9BCCEBIBZFDQAgFiAWQQN0IgNqQW9GDQAgA2tBCGsQawsgBSABNgIEIAUgDzYCACARQSBqJAALIBUgNTcDCCAVQRRqQdDMwwA2AgAgFUEQaiAANgIAQQELNgIAIAVBEGokACASKAIIBEBBgc3DAC0AABogEkEcaigCACEKIBJBGGooAgAhBSASKQMQITFBEEEEEIQJIgZFDQMgBkEAOgAMIAZCgYCAgBA3AgAgCigCACINIAooAgQiBCAxpyIDcSIHaikAAEKAgYKEiJCgwIB/gyIzUARAQQghCQNAIAcgCWohASAJQQhqIQkgDSABIARxIgdqKQAAQoCBgoSIkKDAgH+DIjNQDQALCyANIDN6p0EDdiAHaiAEcSIJaiwAACIHQQBOBEAgDSANKQMAQoCBgoSIkKDAgH+DeqdBA3YiCWotAAAhBwsgCSANaiADQRl2IgE6AAAgCUEIayAEcSANakEIaiABOgAAIAogCigCCCAHQQFxazYCCCAKIAooAgxBAWo2AgwgDSAJQQN0a0EIayIBQQRqIAY2AgAgASAFNgIACyASIBM6AAwgEkHIzMMANgIIIBJBCGoQqAVByMzDACgCACIGQQBIDQBByMzDACAGQQFqNgIAQczMwwAtAAANA0HczMMAKAIARQ0FQdDMwwAoAgAiBEEIayEDQdTMwwAoAgAiBSASQQRqEMoBIjGncSETIDFCGYhC/wCDQoGChIiQoMCAAX4hMgNAIAQgE2opAAAiNCAyhSIxQn+FIDFCgYKEiJCgwIABfYNCgIGChIiQoMCAf4MhMwNAIDNQBEAgNCA0QgGGg0KAgYKEiJCgwIB/g1BFDQggEyAOQQhqIg5qIAVxIRMMAgsgM3ohMSAzQgF9IDODITMgAyAxp0EDdiATaiAFcSIBQQN0aygCACAARw0ACwsgBEEAIAFrQQN0akEEaygCACIBIAEoAgAiAEEBajYCACAAQQBIDQRByMzDAEHIzMMAKAIAQQFrNgIAIBIgATYCCCABQQhqIRwgAUEMai0AAEEDRwRAIwBBIGsiGSQAIBwtAARBA0cEQCAZIBw2AhAgGSASQQRqNgIMIBkgGUEfajYCFCAZIBlBDGo2AhggGUEYaiEAIwBB8ABrIhckAAJAAkACQAJAAkACQCAcQQRqIiMtAABBAmsOAgQBAAsgI0ECOgAAIAAoAgAiASgCACEAIAFBADYCACAARQ0BIAEoAgQgF0EEaiEJIAAoAgBBAXYiDiEDIwBBIGsiCCQAIAhBBGogAxCaBiAIKAIMIg0gCCgCCEkEQCAIQQRqIA0Q3AcgCCgCDCENCyAIKAIEIQogCEEEaiADEJoGIAgoAgwiByAIKAIISQRAIAhBBGogBxDcByAIKAIMIQcLIAgoAgQhBiAIQQRqIgVBADYCECAFIAY2AgggBSAKIA1BA3RqIgE2AgQgBSAKNgIAIAVBDGogBiAHQQN0aiIANgIAIAUgASAKa0EDdiIBNgIYIAUgASAAIAZrQQN2IgAgACABSxs2AhQgCCgCGCIAIAgoAhQiAUsEQEQYLURU+yEJQCADuCIqICqgoyEvIAAgAWshAyABQQN0IgAgCCgCBGohBCAIKAIMIABqIQUDQCMAQSBrIgEkAAJAIC8gMKIiLCIpvUIgiKdB/////wdxIgBB/MOk/wNPBEACQAJAAkACQCAAQf//v/8HTQRAIAFBCGogKRBFIAErAxghLSABKwMIIS4gASgCEEEDcQ4DAgMEAQsgKSApoSEpDAULRAAAAAAAAPA/IC4gLqIiK0QAAAAAAADgP6IiKaEiKkQAAAAAAADwPyAqoSApoSArICsgKyArRJAVyxmgAfo+okR3UcEWbMFWv6CiRExVVVVVVaU/oKIgKyAroiIqICqiICsgK0TUOIi+6fqovaJExLG0vZ7uIT6gokStUpyAT36SvqCioKIgLiAtoqGgoJohKQwECyAuIC4gLiAuoiIpoiIqRElVVVVVVcU/oiApIC1EAAAAAAAA4D+iICogKSApICmioiApRHzVz1o62eU9okTrnCuK5uVavqCiICkgKUR9/rFX4x3HPqJE1WHBGaABKr+gokSm+BARERGBP6CgoqGiIC2hoKEhKQwDC0QAAAAAAADwPyAuIC6iIitEAAAAAAAA4D+iIimhIipEAAAAAAAA8D8gKqEgKaEgKyArICsgK0SQFcsZoAH6PqJEd1HBFmzBVr+gokRMVVVVVVWlP6CiICsgK6IiKiAqoiArICtE1DiIvun6qL2iRMSxtL2e7iE+oKJErVKcgE9+kr6goqCiIC4gLaKhoKAhKQwCCyAuIC4gLiAuoiIpoiIqRElVVVVVVcU/oiApIC1EAAAAAAAA4D+iICogKSApICmioiApRHzVz1o62eU9okTrnCuK5uVavqCiICkgKUR9/rFX4x3HPqJE1WHBGaABKr+gokSm+BARERGBP6CgoqGiIC2hoKGaISkMAQsgAEGAgMDyA08EQCApICmiIiogKaIgKiAqICogKqKiICpEfNXPWjrZ5T2iROucK4rm5Vq+oKIgKiAqRH3+sVfjHcc+okTVYcEZoAEqv6CiRKb4EBEREYE/oKCiRElVVVVVVcW/oKIgKaAhKQwBCyAAQYCAwABPBEAgASApRAAAAAAAAHBHoDkDCCABKwMIGgwBCyABIClEAAAAAAAAcDiiOQMIIAErAwgaCyABQSBqJAAgBSApOQMAIwBBIGsiDCQAAnwCQAJAAkACQAJAICy9QiCIp0H/////B3EiAUH8w6T/A08EQCABQf//v/8HSw0BIAxBCGogLBBFIAwrAxghLSAMKwMIISwgDCgCEEEDcQ4DAwQFAgsgLEQAAAAAAADgwWYhAEH/////BwJ/ICyZRAAAAAAAAOBBYwRAICyqDAELQYCAgIB4C0GAgICAeCAAGyAsRAAAwP///99BZBtBACAsICxhG0UEQEQAAAAAAADwPyABQZ7BmvIDSQ0GGgtEAAAAAAAA8D8gLCAsoiItRAAAAAAAAOA/oiIpoSIqRAAAAAAAAPA/ICqhICmhIC0gLSAtIC1EkBXLGaAB+j6iRHdRwRZswVa/oKJETFVVVVVVpT+goiAtIC2iIiogKqIgLSAtRNQ4iL7p+qi9okTEsbS9nu4hPqCiRK1SnIBPfpK+oKKgoiAsRAAAAAAAAACAoqCgoAwFCyAsICyhDAQLICwgLCAsICyiIimiIipESVVVVVVVxT+iICkgLUQAAAAAAADgP6IgKiApICkgKaKiIClEfNXPWjrZ5T2iROucK4rm5Vq+oKIgKSApRH3+sVfjHcc+okTVYcEZoAEqv6CiRKb4EBEREYE/oKCioaIgLaGgoQwDC0QAAAAAAADwPyAsICyiIitEAAAAAAAA4D+iIimhIipEAAAAAAAA8D8gKqEgKaEgKyArICsgK0SQFcsZoAH6PqJEd1HBFmzBVr+gokRMVVVVVVWlP6CiICsgK6IiKiAqoiArICtE1DiIvun6qL2iRMSxtL2e7iE+oKJErVKcgE9+kr6goqCiICwgLaKhoKAMAgsgLCAsICwgLKIiKaIiKkRJVVVVVVXFP6IgKSAtRAAAAAAAAOA/oiAqICkgKSApoqIgKUR81c9aOtnlPaJE65wriublWr6goiApIClEff6xV+Mdxz6iRNVhwRmgASq/oKJEpvgQERERgT+goKKhoiAtoaChmgwBC0QAAAAAAADwPyAsICyiIitEAAAAAAAA4D+iIimhIipEAAAAAAAA8D8gKqEgKaEgKyArICsgK0SQFcsZoAH6PqJEd1HBFmzBVr+gokRMVVVVVVWlP6CiICsgK6IiKiAqoiArICtE1DiIvun6qL2iRMSxtL2e7iE+oKJErVKcgE9+kr6goqCiICwgLaKhoKCaCyEqIAxBIGokACAEICo5AwAgBEEIaiEEIAVBCGohBSAwRAAAAAAAAPA/oCEwIANBAWsiAw0ACwsgCSAGNgIIIAkgDTYCBCAJIAo2AgAgCUEMaiAHNgIAIAhBIGokACAXQYCt4gQ2AmggF0IANwNgIBdBFGohFCAXQeAAaiEAQQAhCyMAQbACayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgDmlBAUYEQCAAKAIIIgRBgJTr3ANGBEAgACgCACIQaUEBRg0CQZTLwgBBKkHAy8IAEMwGAAsgACkDACE1IAJB7ABqIQUCQAJ/IA5BgQRPBEAgAkHgAGpBgCAQrQUgAigCYCEDIAIoAmQgDkGAIGoiAEGAgICAAUkgAEEEdBD9CCEAQcAAIAMgA0HAAE0bIgMQ0QciASAAIAMQ0QdqIgAgAU8gABD9CCAOQYCAgIABSSAOQQR0EP0IIQAgAxDRByIBIAAgAxDRB2oiACABTyAAEP0IQQFBgIAEEP0IIQAgAxDRByIBIAAgAxDRB2oiACABTyAAEP0IDAELIAJB2ABqIA4QrQUgAigCWCEDIAIoAlwLIgEEQCABIAMQhQkiAA0BIAMgARDfCQALIAMhAAsgBSADNgIIIAUgATYCBCAFIAA2AgAgBEHAhD0gBCA1UBsgBEHAhD1LGyETIAIoAnAhDyACKAJsIREgDkGBAkkNAiACQoCEgICAgAE3A3ggAkGIkKDAADYChAFBCCEDA0AgAkGIAWogA2pBgJTr3AM2AgAgA0EQaiIDQcgARw0ACyACKQN4ITEgAkECNgLUASACIDE3A8gBIA5BBHQhCSATuEQAAAAAZc3NQaMgNbqgISogDyARQT9qQUBxIhUgEWsiDWsiCkEEdiEEQQAhAEEAIQMDQCACQcgBaiADQQJ0aigCACIQIA5LDQQgAkGIAmogNSATIBAgESAPEEQCQAJAAkACQAJAAkACQAJAIAtBBEcEQCACKAKYAiEHIAIpA5ACITEgAkGEAWogC2ogAi0AiAIiAToAACAOIBBHBEAgAkGIAmogASAQEKwFIAIoAogCIQUgAkHAADYCrAIgAiANNgLoASACIA82AuQBIA0gD0sNAiACQRk2AuwBIAJBiOLCADYC6AEgAiAKNgLgASACIA4gEGoiFjYC5AEgFkEEdCEBIAQgFkkNAyAWBEAgFUEAIAEQ5AkaCyACQcAANgKsAiACIAEgFWoiBkE/akFAcSAGayIMNgLoASACIAogAWsiATYC5AEgASAMSQ0EIAJBGTYC7AEgAkGI4sIANgLoASACIAEgDGsiAzYC4AEgAiAQNgLkASADQQR2IBBJDQUgBiAMaiIGIBBBBHQiAWohCCAQBEAgBkEAIAEQ5AkaCyACQcAANgKsAiACIAhBP2pBQHEgCGsiDDYC6AEgAiADIAFrIgE2AuQBIAEgDEkNBiACQRk2AuwBIAJBiOLCADYC6AEgAiABIAxrIgE2AuABIAIgDjYC5AEgAUEEdiAOSQ0HIAggDGpBACAJEOQJIQMCQCAQBEAQ+QYgAiACKAJQNgL4ASACIAIpA0g3A/ABICogB7hEAAAAAGXNzUGjIDG6oCAOIBBuuKKjmyIpRAAAAAAAAAAAZiEBQX8CfyApRAAAAAAAAPBBYyApRAAAAAAAAAAAZnEEQCApqwwBC0EAC0EAIAEbIClEAADg////70FkGyIHIQEgBw0BEPkGQevDwgBBNUGgxMIAEIUGAAtB0MLCAEEZQdzJwgAQzAYACwNAIAMgDiAVIBYgBSAQIAYgEEGZAkGaAkGbAhDRASABQQFrIgENAAsQ+QYgAikDOCIxIAetIjSAIjIgAigCQCIDIAduIgEgAyABIAdsa60gMSAyIDR+fUKAlOvcA358IDSAp2oiBUGAlOvcA24iAa18IjEgMlQNCCACQYgBaiALQQR0aiIDIAUgAUGAlOvcA2xrNgIIDAkLIAJBiAFqIAtBBHRqIgMgBzYCCAwICyALQQRBnMnCABDABQALIAJBnAJqQRY2AgAgAkGUAmpBFjYCACACQfwBakIDNwIAIAJBBDYC9AEgAkGox8IANgLwASACQRY2AowCIAIgAkGIAmo2AvgBIAIgAkHkAWo2ApgCIAIgAkHoAWo2ApACIAIgAkGsAmo2AogCDBQLIAJBpAJqQRY2AgAgAkGcAmpBFjYCACACQZQCakEWNgIAIAJB/AFqQgQ3AgAgAkEFNgL0ASACQfTFwgA2AvABIAJBGDYCjAIgAiABNgKsAiACIAJBiAJqNgL4ASACIAJBrAJqNgKgAiACIAJB5AFqNgKYAiACIAJB4AFqNgKQAiACIAJB6AFqNgKIAgwTCyACQZwCakEWNgIAIAJBlAJqQRY2AgAgAkH8AWpCAzcCACACQQQ2AvQBIAJBqMfCADYC8AEgAkEWNgKMAiACIAJBiAJqNgL4ASACIAJB5AFqNgKYAiACIAJB6AFqNgKQAiACIAJBrAJqNgKIAgwTCyACQaQCakEWNgIAIAJBnAJqQRY2AgAgAkGUAmpBFjYCACACQfwBakIENwIAIAJBBTYC9AEgAkH0xcIANgLwASACQRg2AowCIAIgEEEEdDYCrAIgAiACQYgCajYC+AEgAiACQawCajYCoAIgAiACQeQBajYCmAIgAiACQeABajYCkAIgAiACQegBajYCiAIMEgsgAkGcAmpBFjYCACACQZQCakEWNgIAIAJB/AFqQgM3AgAgAkEENgL0ASACQajHwgA2AvABIAJBFjYCjAIgAiACQYgCajYC+AEgAiACQeQBajYCmAIgAiACQegBajYCkAIgAiACQawCajYCiAIMEgsgAkGkAmpBFjYCACACQZwCakEWNgIAIAJBlAJqQRY2AgAgAkH8AWpCBDcCACACQQU2AvQBIAJB9MXCADYC8AEgAkEYNgKMAiACIAk2AqwCIAIgAkGIAmo2AvgBIAIgAkGsAmo2AqACIAIgAkHkAWo2ApgCIAIgAkHgAWo2ApACIAIgAkHoAWo2AogCDBELIAJBlAJqQgA3AgAgAkEBNgKMAiACQYTDwgA2AogCIAJB3MHCADYCkAIgAkGIAmpBjMPCABD8BgALIAMgMTcDACALQQFqIQtBASEDIABBASEARQ0ACwwDC0HcysIAQSVBhMvCABDMBgALAkACQCAOIBBPBEAgAC0ABCEbIA4gEEcgEEEgSXENASAQQf8PcUUNAgwGC0HQy8IAQR1B8MvCABDMBgALQYDMwgBBHkGgzMIAEMwGAAtBsMzCAEEvQeDMwgAQzAYACyACQYgBaiA1IBMgDiARIA8QRCACLQCIASEbIA4hEAwBCyALQQVPDQUgC0UNBAJAIAtBAUYEQCACQYgBaiEBDAELIAJBmAFqIQMgC0EBa0H/////AHEhCCACQYgBaiEBA0AgAiADNgKIAiACIAE2AvABIAMgAQJ/AkAgAkHwAWooAgAiASgCCCIEQYCU69wDRiACQYgCaigCACIAKAIIIgVBgJTr3ANHcQ0AAn9BASAEQYCU69wDRyAFQYCU69wDR3MNABpBACAEQYCU69wDRiAFQYCU69wDRnINABogASkDACIyIAApAwAiMVQNAUEBIDEgMlINABpB/wEgBCAFSQ0AGiAEIAVHCwwBC0H/AQtB/wFxQQFGGyEBIANBEGohAyAIQQFrIggNAAsgAUUNBQsgASgCCCIGQYCU69wDRg0DIAEpAwAhMSALQQR0IQQgAkH4AGohDEEAIQNBACEBAkADQCACQYgBaiADaiIFQQhqKAIAIgBBgJTr3ANGDQQgACAGRgRAIAUpAwAgMVENAgsgDEEEaiEMIAFBAWohASAEIANBEGoiA0cNAAtBwMPCAEErQZzKwgAQzAYACyACQYQBaiABai0AACIbQQhGDQcgAUEBTQRAIAwoAgAhEAwBCyABQQJBvMrCABDABQALIA9FDQAgAigCdBogERBrCyACQYgBaiAbIBAQrAUgAigCjAEhJyACKAKIASEoAkAgDiAQaiIERQRAQcAAIRZBwAAhEQwBCyAEQRAQjgYiFiEDIAQhAQNAIANCgICAgICAgPz/ADcDACADQQhqQoCAgICAgID8/wA3AwAgA0EQaiEDIAFBAWsiAQ0ACyAEQRAQjgYiESEDIAQhAQNAIANCgICAgICAgPz/ADcDACADQQhqQoCAgICAgID8/wA3AwAgA0EQaiEDIAFBAWsiAQ0ACwsgG8BBAnRBrM7CAGooAgAhFSAWIQAgBCIPIQkgECAOIgVJBEAgEEECdCEgIBBBAXQhGANAAkACQAJAQQJBBEEIICAgBSIBRiIHGyABIBhGIgYbIgNBAWsiEyABQQFBAkEDIAcbIAYbdiIFbCIaIA9NBEAgCSAaSQ0BIAkgGmshCSAFRQ0DRAAAAAAAAABAIAG4oyEpIBEgCUEEdGohCyADQQR0QRBrIR1BACENIAAhBkEAIQoDQCAKIQwgCyEDIAYhASANIQggEyEHA0AgCCAaTw0EIAJBGGogKSAMuKIQ+AEgAisDGCEvIAEgAisDICIqOQMAIANBCGogLzkDACADICo5AwAgAUEIaiAvmjkDACAKIAxqIQwgA0EQaiEDIAFBEGohASAIQQFqIQggB0EBayIHDQALIAsgHWohCyAGIB1qIQYgDSATaiENIAUgCkEBaiIKRw0ACwwDC0HcwcIAQSNBrMjCABDMBgALQdzBwgBBI0G8yMIAEMwGAAsgCCAaQczIwgAQwAUACyAPIBprIQ8gACAaQQR0aiEAIAUgEEsNAAsLIAkhE0EAIQkjAEEQayIeJAAgBSAVIgtPBEAgESEGAkAgCwRAIAUgC24hISAPBEAgACAPQQR0aiEBIAAhAwNAIANCgICAgICAgPz/ADcDACADQQhqQoCAgICAgID8/wA3AwAgA0EQaiIDIAFHDQALC0QAAAAAAAAAwCAFuKMhKUEBICEgIUEBTRshGiALQQFrIQ0gC0EEdCEkIAVBBHQhJSAFQQFqIQggC0ECSSEdIAAhASAGIQUMAQtBwOTCAEEZQaTkwgAQzAYACwNAAkAgHQ0AQQEhIiANIQcgCSEMIAEhCiAFIRUgCCEDAkACQAJAA0AgHiApIAy4ohD4ASAhICJsIAlqIh8gD08NASAeKwMIIS8gACAfQQR0IiBqIhggHisDACIqOQMIIBggLzkDACADIA9PDQIgCiAlaiIYQRhqICo5AwAgGEEQaiAvOQMAIBMgH00NAyAGICBqIhggKpoiKjkDCCAYIC85AwAgAyATSQRAIBUgJWoiGEEYaiAqOQMAIBhBEGogLzkDACAiQQFqISIgCSAMaiEMIApBEGohCiAVQRBqIRUgA0EBaiEDIAdBAWsiB0UNBQwBCwsgAyATQYzlwgAQwAUACyAfIA9B3OTCABDABQALIAMgD0Hs5MIAEMAFAAsgHyATQfzkwgAQwAUACyABICRqIQEgBSAkaiEFIAggC2ohCCAJQQFqIgkgGkcNAAsLIB5BEGokACAORQRAQcAAIQZBwAAhDQwFCyAOQRAQjgYiDSEDIA4hAQNAIANCgICAgICAgPz/ADcDACADQQhqQoCAgICAgID8/wA3AwAgA0EQaiEDIAFBAWsiAQ0ACyANIA5BBHRqIQBEAAAAAAAAAMAgDrijISlEAAAAAAAAAAAhLyANIQMDQCACQQhqICkgL6IQ+AEgAisDECEqIANBCGogAisDCDkDACADICo5AwAgL0QAAAAAAADwP6AhLyADQRBqIgMgAEcNAAtBACEIIA5BBBCOBiIGQQAgDkECdCIJEOQJIQpBfyAQaCIAdCEHQQAgDmhrQR9xIQVBACAAa0EfcSEBQQAhAwNAIAggCmogAyAHcSADQRh0IANBgP4DcUEIdHIgA0EIdkGA/gNxIANBGHZyciIAQQR2QY+evPgAcSAAQY+evPgAcUEEdHIiAEECdkGz5syZA3EgAEGz5syZA3FBAnRyIgBBAXZB1arVqgVxIABB1arVqgVxQQF0ciABdnIiAEEYdCAAQYD+A3FBCHRyIABBCHZBgP4DcSAAQRh2cnIiAEEEdkGPnrz4AHEgAEGPnrz4AHFBBHRyIgBBAnZBs+bMmQNxIABBs+bMmQNxQQJ0ciIAQQF2QdWq1aoFcSAAQdWq1aoFcUEBdHIgBXY2AgAgA0EBaiEDIAkgCEEEaiIIRw0ACwwEC0HAw8IAQStBzMrCABDMBgALQcDDwgBBK0GMysIAEMwGAAtBwMPCAEErQfzJwgAQzAYACyALQQRB7MnCABDBBQALIBQgEDYCQCAUQZwCNgI0IBRBnQI2AjAgFEGeAjYCLCAUQZsCNgIoIBRBmgI2AiQgFEGZAjYCICAUIBE2AhggFCAWNgIQIBQgBjYCCCAUIA42AgQgFCANNgIAIBQgGzoASCAUICc2AjwgFCAoNgI4IBQgDjYCRCAUQRxqIAQ2AgAgFEEUaiAENgIAIBRBDGogDjYCACACQbACaiQADAQLQcDDwgBBK0GsysIAEMwGAAsgAkHwAWpBrMnCABD8BgALIAJB8AFqQbzJwgAQ/AYACyACQfABakHMycIAEPwGAAtBgc3DAC0AABpB5ABBBBCECSIARQ0CIABCgYCAgBA3AgAgAEEIaiAXQQRqQdwAEOcJGiAANgIAICNBAzoAAAsgF0HwAGokAAwDC0HwzMAAQStBkNbAABDMBgALQQRB5AAQ3wkACyAXQRBqQgA3AgAgF0EBNgIIIBdB6MzAADYCBCAXQbDMwAA2AgwgF0EEakGc8MEAEPwGAAsLIBlBIGokAAsgHCgCACIDIAMoAgAiAEEBajYCACAAQQBIDQQgEigCCCIAIAAoAgAiAEEBazYCACAAQQFGBEACQCASQQhqKAIAIgVBDGotAABBA0cNACAFQQhqIgEoAgAiACAAKAIAIgBBAWs2AgAgAEEBRw0AIAEQlAILAkAgBUF/Rg0AIAUgBSgCBCIAQQFrNgIEIABBAUcNACAFEGsLCyASQSBqJAAgAw8LAAsgEiATOgAMIBJByMzDADYCCEGn1cEAQSsgEkEIakHU1cEAQeTnwQAQ9gQAC0EEQRAQ3wkACyASQcjMwwA2AgwgEkHQzMMANgIIQafVwQBBKyASQQhqQeTVwQBBhOjBABD2BAALAAtByMzDACAGNgIAQfzUwQBBK0H058EAEMwGAAudBQEHfyMAQcABayIDJAAgA0HMAGpBADoAACADQcgAaiACKAKIATYCACADQcQAaiIIQQA2AgAgA0EYaiABQQhqKQIANwMAIANBIGogAUEQaikCADcDACADQShqIAFBGGopAgA3AwAgA0EANgIwIAMgAkGMAWo2AkAgAyABKQIANwMQIAJBkAFqIgcQ9AchBCAHQQEgA0EQahDPBSACKAKMASIFQfgBahDbBiIGQf8BcSIJRSAEQQFzIAZBCHZB/wFxIAlGckVyRQRAIAVB7AFqQQEQyAYLIANBiAFqIAFBOGooAgA2AgAgA0GAAWogAUEwaikCADcDACADQfgAaiABQShqKQIANwMAIANBAToAjAEgAyABKQIgNwNwIANB0ABqIANB8ABqEJQEAkACQCADKAJQRQRAIANB6ABqIgUgA0HcAGooAgA2AgAgAyADKQJUNwNgIAMoAkRBA0YNASACQaABaiEGAkADQAJAIANBCGogBxCkAQJ/IAMoAggiAQRAIAMoAgwMAQsDQCADQfAAaiAGEI8CIAMoAnAiAUECRg0ACyABQQFrDQEgAygCdCEBIAMoAngLIQQgAUEBRiADQRBqIARGcQ0CIAQgAREBACADKAJEQQNHDQEMBAsLIAMoAkRBA0YNAiACIAgQjwEMAgsgA0HwAGoiASADQRBqQcAAEOcJGiAAQQxqIAFBARCbBCAAQQhqIANB6ABqKAIANgIADAILIAIgA0FAayADKAJUIANB2ABqKAIAEPoIAAsgA0HwAGogA0EQakHAABDnCRogA0G4AWogA0GYAWopAgA3AwAgAyADKQKQATcDsAEgAEEMaiADQbABahCLBiAAQQhqIAUoAgA2AgALIAAgAykDYDcCACADQcABaiQAC50FAQd/IwBBwAFrIgMkACADQcwAakEAOgAAIANByABqIAIoAogBNgIAIANBxABqIghBADYCACADQRhqIAFBCGopAgA3AwAgA0EgaiABQRBqKQIANwMAIANBKGogAUEYaikCADcDACADQQA2AjAgAyACQYwBajYCQCADIAEpAgA3AxAgAkGQAWoiBxD0ByEEIAdBAiADQRBqEM8FIAIoAowBIgVB+AFqENsGIgZB/wFxIglFIARBAXMgBkEIdkH/AXEgCUZyRXJFBEAgBUHsAWpBARDIBgsgA0GIAWogAUE4aigCADYCACADQYABaiABQTBqKQIANwMAIANB+ABqIAFBKGopAgA3AwAgA0EBOgCMASADIAEpAiA3A3AgA0HQAGogA0HwAGoQlQQCQAJAIAMoAlBFBEAgA0HoAGoiBSADQdwAaigCADYCACADIAMpAlQ3A2AgAygCREEDRg0BIAJBoAFqIQYCQANAAkAgA0EIaiAHEKQBAn8gAygCCCIBBEAgAygCDAwBCwNAIANB8ABqIAYQjwIgAygCcCIBQQJGDQALIAFBAWsNASADKAJ0IQEgAygCeAshBCABQQJGIANBEGogBEZxDQIgBCABEQEAIAMoAkRBA0cNAQwECwsgAygCREEDRg0CIAIgCBCPAQwCCyADQfAAaiIBIANBEGpBwAAQ5wkaIABBDGogAUEBEJwEIABBCGogA0HoAGooAgA2AgAMAgsgAiADQUBrIAMoAlQgA0HYAGooAgAQ+ggACyADQfAAaiADQRBqQcAAEOcJGiADQbgBaiADQZgBaikCADcDACADIAMpApABNwOwASAAQQxqIANBsAFqEIsGIABBCGogBSgCADYCAAsgACADKQNgNwIAIANBwAFqJAALnQUBB38jAEHAAWsiAyQAIANBzABqQQA6AAAgA0HIAGogAigCiAE2AgAgA0HEAGoiCEEANgIAIANBGGogAUEIaikCADcDACADQSBqIAFBEGopAgA3AwAgA0EoaiABQRhqKQIANwMAIANBADYCMCADIAJBjAFqNgJAIAMgASkCADcDECACQZABaiIHEPQHIQQgB0EBIANBEGoQzwUgAigCjAEiBUH4AWoQ2wYiBkH/AXEiCUUgBEEBcyAGQQh2Qf8BcSAJRnJFckUEQCAFQewBakEBEMgGCyADQYgBaiABQThqKAIANgIAIANBgAFqIAFBMGopAgA3AwAgA0H4AGogAUEoaikCADcDACADQQA6AIwBIAMgASkCIDcDcCADQdAAaiADQfAAahCUBAJAAkAgAygCUEUEQCADQegAaiIFIANB3ABqKAIANgIAIAMgAykCVDcDYCADKAJEQQNGDQEgAkGgAWohBgJAA0ACQCADQQhqIAcQpAECfyADKAIIIgEEQCADKAIMDAELA0AgA0HwAGogBhCPAiADKAJwIgFBAkYNAAsgAUEBaw0BIAMoAnQhASADKAJ4CyEEIAFBAUYgA0EQaiAERnENAiAEIAERAQAgAygCREEDRw0BDAQLCyADKAJEQQNGDQIgAiAIEI8BDAILIANB8ABqIgEgA0EQakHAABDnCRogAEEMaiABQQAQmwQgAEEIaiADQegAaigCADYCAAwCCyACIANBQGsgAygCVCADQdgAaigCABD6CAALIANB8ABqIANBEGpBwAAQ5wkaIANBuAFqIANBmAFqKQIANwMAIAMgAykCkAE3A7ABIABBDGogA0GwAWoQiwYgAEEIaiAFKAIANgIACyAAIAMpA2A3AgAgA0HAAWokAAudBQEHfyMAQcABayIDJAAgA0HMAGpBADoAACADQcgAaiACKAKIATYCACADQcQAaiIIQQA2AgAgA0EYaiABQQhqKQIANwMAIANBIGogAUEQaikCADcDACADQShqIAFBGGopAgA3AwAgA0EANgIwIAMgAkGMAWo2AkAgAyABKQIANwMQIAJBkAFqIgcQ9AchBCAHQQIgA0EQahDPBSACKAKMASIFQfgBahDbBiIGQf8BcSIJRSAEQQFzIAZBCHZB/wFxIAlGckVyRQRAIAVB7AFqQQEQyAYLIANBiAFqIAFBOGooAgA2AgAgA0GAAWogAUEwaikCADcDACADQfgAaiABQShqKQIANwMAIANBADoAjAEgAyABKQIgNwNwIANB0ABqIANB8ABqEJUEAkACQCADKAJQRQRAIANB6ABqIgUgA0HcAGooAgA2AgAgAyADKQJUNwNgIAMoAkRBA0YNASACQaABaiEGAkADQAJAIANBCGogBxCkAQJ/IAMoAggiAQRAIAMoAgwMAQsDQCADQfAAaiAGEI8CIAMoAnAiAUECRg0ACyABQQFrDQEgAygCdCEBIAMoAngLIQQgAUECRiADQRBqIARGcQ0CIAQgAREBACADKAJEQQNHDQEMBAsLIAMoAkRBA0YNAiACIAgQjwEMAgsgA0HwAGoiASADQRBqQcAAEOcJGiAAQQxqIAFBABCcBCAAQQhqIANB6ABqKAIANgIADAILIAIgA0FAayADKAJUIANB2ABqKAIAEPoIAAsgA0HwAGogA0EQakHAABDnCRogA0G4AWogA0GYAWopAgA3AwAgAyADKQKQATcDsAEgAEEMaiADQbABahCLBiAAQQhqIAUoAgA2AgALIAAgAykDYDcCACADQcABaiQAC8AFAgV/AX4jAEEgayIBJAAgASAAEOAFIAEoAgBFBEAgAUEIai0AACEFIAEoAgQiBEE0ai0AAEUEQCAEQQE6ADQgBEEMaigCACICBEAgBEEIaigCACEAIAJBDGwhAgNAIAAoAgBBDGoiAyADKAIAIgNBAiADGzYCACAAQQxqIQAgAkEMayICDQALCyAEQRhqIgIoAgAhACACQQA2AgAgAUEANgIQIAEgBEEQajYCCCABIAA2AgwgASAEQRRqKAIAIgI2AgAgASACIABBDGxqNgIEAkAgAEUNAANAIAEgAkEMajYCACACKAIAIgBFDQEgAEEMaiIDIAMoAgAiAyACKQIEIganIAMbNgIAIAEgBjcCGCABIAA2AhQgACAAKAIAIgBBAWs2AgAgAEEBRgRAIAFBFGoQhwYLIAEoAgAiAiABKAIERw0ACwsgARD0ASAEQSRqKAIAIgIEQCAEQSBqKAIAIQAgAkEMbCECA0AgACgCAEEMaiIDIAMoAgAiA0ECIAMbNgIAIABBDGohACACQQxrIgINAAsLIARBMGoiAigCACEAIAJBADYCACABQQA2AhAgASAEQShqNgIIIAEgADYCDCABIARBLGooAgAiAjYCACABIAIgAEEMbGo2AgQCQCAARQ0AA0AgASACQQxqNgIAIAIoAgAiAEUNASAAQQxqIgMgAygCACIDIAIpAgQiBqcgAxs2AgAgASAGNwIYIAEgADYCFCAAIAAoAgAiAEEBazYCACAAQQFGBEAgAUEUahCHBgsgASgCACICIAEoAgRHDQALCyABEPQBCwJAIAUNAEHszcMAKAIAQf////8HcUUNABDtCQ0AIARBAToAAQsgBEEAOgAAIAFBIGokAA8LIAEgASgCBDYCFCABIAFBCGotAAA6ABhBxM7AAEErIAFBFGpB8M7AAEHUz8AAEPYEAAv/BQEFfyAAQQhrIgEgAEEEaygCACIDQXhxIgBqIQICQAJAAkACQCADQQFxDQAgA0EDcUUNASABKAIAIgMgAGohACABIANrIgFBoNHDACgCAEYEQCACKAIEQQNxQQNHDQFBmNHDACAANgIAIAIgAigCBEF+cTYCBCABIABBAXI2AgQgAiAANgIADwsgASADEKgBCwJAAkAgAigCBCIDQQJxRQRAIAJBpNHDACgCAEYNAiACQaDRwwAoAgBGDQUgAiADQXhxIgIQqAEgASAAIAJqIgBBAXI2AgQgACABaiAANgIAIAFBoNHDACgCAEcNAUGY0cMAIAA2AgAPCyACIANBfnE2AgQgASAAQQFyNgIEIAAgAWogADYCAAsgAEGAAkkNAiABIAAQ2gFBACEBQbjRwwBBuNHDACgCAEEBayIANgIAIAANAUGAz8MAKAIAIgAEQANAIAFBAWohASAAKAIIIgANAAsLQbjRwwBB/x8gASABQf8fTRs2AgAPC0Gk0cMAIAE2AgBBnNHDAEGc0cMAKAIAIABqIgA2AgAgASAAQQFyNgIEQaDRwwAoAgAgAUYEQEGY0cMAQQA2AgBBoNHDAEEANgIACyAAQbDRwwAoAgAiA00NAEGk0cMAKAIAIgJFDQBBACEBAkBBnNHDACgCACIEQSlJDQBB+M7DACEAA0AgAiAAKAIAIgVPBEAgBSAAKAIEaiACSw0CCyAAKAIIIgANAAsLQYDPwwAoAgAiAARAA0AgAUEBaiEBIAAoAggiAA0ACwtBuNHDAEH/HyABIAFB/x9NGzYCACADIARPDQBBsNHDAEF/NgIACw8LIABBeHFBiM/DAGohAgJ/QZDRwwAoAgAiA0EBIABBA3Z0IgBxRQRAQZDRwwAgACADcjYCACACDAELIAIoAggLIQAgAiABNgIIIAAgATYCDCABIAI2AgwgASAANgIIDwtBoNHDACABNgIAQZjRwwBBmNHDACgCACAAaiIANgIAIAEgAEEBcjYCBCAAIAFqIAA2AgALlgUBC38jAEEwayIDJAAgA0EkaiABNgIAIANBAzoALCADQSA2AhwgA0EANgIoIAMgADYCICADQQA2AhQgA0EANgIMAn8CQAJAAkAgAigCECILRQRAIAJBDGooAgAiAEUNASACKAIIIgEgAEEDdGohBCAAQQFrQf////8BcUEBaiEIIAIoAgAhAANAIABBBGooAgAiBgRAIAMoAiAgACgCACAGIAMoAiQoAgwRBgANBAsgASgCACADQQxqIAFBBGooAgARAwANAyAFQQFqIQUgAEEIaiEAIAFBCGoiASAERw0ACwwBCyACQRRqKAIAIgBFDQAgAEEFdCEMIABBAWtB////P3FBAWohCCACKAIIIQYgAigCACEAA0AgAEEEaigCACIBBEAgAygCICAAKAIAIAEgAygCJCgCDBEGAA0DCyADIAUgC2oiAUEQaigCADYCHCADIAFBHGotAAA6ACwgAyABQRhqKAIANgIoIAFBDGooAgAhB0EAIQpBACEEAkACQAJAIAFBCGooAgBBAWsOAgACAQsgB0EDdCAGaiINKAIEQdEDRw0BIA0oAgAoAgAhBwtBASEECyADIAc2AhAgAyAENgIMIAFBBGooAgAhBAJAAkACQCABKAIAQQFrDgIAAgELIARBA3QgBmoiBygCBEHRA0cNASAHKAIAKAIAIQQLQQEhCgsgAyAENgIYIAMgCjYCFCAGIAFBFGooAgBBA3RqIgEoAgAgA0EMaiABQQRqKAIAEQMADQIgCUEBaiEJIABBCGohACAMIAVBIGoiBUcNAAsLIAggAigCBE8NASADKAIgIAIoAgAgCEEDdGoiACgCACAAKAIEIAMoAiQoAgwRBgBFDQELQQEMAQtBAAsgA0EwaiQAC6oFAgl/An4jAEFAaiICJAAgACgCBCIEQYABaiIFIAAoAgAiByABEPoBAkAgBCgCxAEgBCgCAGogBCgCQCAEKALIAUF/c3FGBEAgBCgCyAEgBCgCQHFFDQELIAEoAgBBDGoiAyADKAIAIgNBASADGzYCAAsgASgCACEBIAAoAggiACkDACELIAAoAggiAEGAlOvcA0YhBgJAAkADQAJAAkACQAJAIAEoAgwiAwRAIANBAWtBAkkNAQwHCyAGDQEQ+QYgAikDGCIMIAtUIAIoAiAiAyAASSALIAxRcXINAiABIAEoAgwiAEEBIAAbNgIMIABFIABBAWtBAklyDQAgAA0GQfzNwABBKEH40sAAEMwGAAsgAkE0aiAFEOAFIAIoAjQNAiACKAI4IgNBBGohCCACQTxqLQAAIQkgA0EMaigCACIGQQxsIQAgA0EIaigCACEBQX8hBQJAAkADQCAARQ0BIABBDGshACAFQQFqIQUgASgCBCEKIAFBDGohASAHIApHDQALIAJBNGogCCAFQYDUwAAQ2QUgAygCDCEGDAELIAJBADYCNAtBACEAIARBnAFqIAYEfyAABSADQRhqKAIARQs6AAACQCAJDQBB7M3DACgCAEH/////B3FFDQAQ7QkNACADQQE6AAELIANBADoAACACKAI0RQ0EIAJBMGogAkE8aigCADYCACACIAIpAjQiCzcDKCALpyIAIAAoAgAiAEEBazYCACAAQQFHDQUgAkEoahCHBgwFCxDRAwwCCyACQQhqIAsgACAMIAMQgwMgAikDCCACKAIQENIDDAELCyACIAIoAjg2AiggAiACQTxqLQAAOgAsQcTOwABBKyACQShqQZDUwABBsNTAABD2BAALQfDMwABBK0GI08AAEMwGAAsgAkFAayQAC6MFAgl/An4jAEFAaiICJAAgACgCBCIEQaABaiIFIAAoAgAiByABEPoBAkAgBCgCACAEKAJAIAQoAsgBQX9zcUYEQCAEKALIASAEKAJAcUUNAQsgASgCAEEMaiIDIAMoAgAiA0EBIAMbNgIACyABKAIAIQEgACgCCCIAKQMAIQsgACgCCCIAQYCU69wDRiEGAkACQANAAkACQAJAAkAgASgCDCIDBEAgA0EBa0ECSQ0BDAcLIAYNARD5BiACKQMYIgwgC1QgAigCICIDIABJIAsgDFFxcg0CIAEgASgCDCIAQQEgABs2AgwgAEUgAEEBa0ECSXINACAADQZB/M3AAEEoQdjSwAAQzAYACyACQTRqIAUQ4AUgAigCNA0CIAIoAjgiA0EEaiEIIAJBPGotAAAhCSADQQxqKAIAIgZBDGwhACADQQhqKAIAIQFBfyEFAkAC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QGsLIgIpAwAgAkEIaikDABDdBgJ/IANByABqIgICfwJAIAICfwJAAkACQCABLQCwAiIGRQRAIApBAWsOAgMFAQsCQAJAAkAgCkEBaw4CAQIACyADQdAAaiABQQhqQYABEOcJGiADQcgAaiADQegAaikDADcDACADQUBrIANB4ABqKQMANwMAIAMgAykDWDcDOAwDCyABQQhqDAQLIAFBCGoMBQsgA0HQAGogAUEIakGAARDnCRogA0HIAGogA0GAAWopAwA3AwAgA0FAayADQfgAaikDADcDACADIANB8ABqKQMANwM4CyADIANBOGo2AlwgAyADQQRqNgJYIAMgA0EQaiICNgJUIAMgATYCUCADQdAAahCMAiABKAJ0IQUgACACQSgQ5wkaIAFB+ABqDAQLIAFBIGoLIgJBEGopAwA3AwAgA0FAayACQQhqKQMANwMAIAMgAikDADcDOCADIANBOGo2AlwgAyADQQRqNgJYIAMgA0EQaiICNgJUIAMgATYCUCADQdAAahCMAiABQYwBaigCACEFIAAgAkEoEOcJGiABQZABagwCCyABQSBqCyICQRBqKQMANwMAIANBQGsgAkEIaikDADcDACADIAIpAwA3AzggAyADQThqNgJcIAMgA0EEajYCWCADIANBEGoiAjYCVCADIAE2AlAgA0HQAGoQjAIgASgCbCEFIAAgAkEoEOcJGiABQfAAagshASAAIAY6ADggACAFNgIsIABBATYCNCAAIAEoAgA2AjAgACAFQQFrNgIoIAMoAgQEQCADKAIIEGsLIANB0AFqJAAMAQtB4I/AAEEZQeyYwAAQzAYACyAAIAQ2AkAgDkHwAGokAAwFCyAGQQhqKQMAIRQgBikDACEVIAhBCGoiBiATIBICfwJAAkACQEICIAEpAwBCAn0iEiASQgJaG6ciDUEBaw4CAQIACyABQfQAagwCCyABQYwBagwBCyABQewAagsoAgAiBSAEEJ8FIAhB2AFqIBUgFCAFIAQQnwUgCEHwAGogBkHoABDnCRpBgc3DAC0AABpB0AFBCBCECSIHRQ0BIAcgCEHwAGpB0AEQ5wkhBSADIAJBIGoiAkYEQEG868EAIQoMBAsgAUH0AGohCSABQYwBaiELIAFB7ABqIQxBvOvBACEKA0AgAkEIaikDACESIAkhBgJAAkACQCANQQFrDgIAAQILIAshBgwBCyAMIQYLIAhB8ABqIAIpAwAgEiAGKAIAIAQQnwVBgc3DAC0AABpB8ABBCBCECSIHRQ0DIAcgCEHwAGpB6AAQ5wkiBiAKNgJsIAYgBTYCaEHY68EAIQogBiEFIAMgAkEQaiICRw0ACwwDCyAIQfwAakIANwIAIAhBATYCdCAIQeTowQA2AnAgCEGw0sEANgJ4IAhB8ABqQZTpwQAQ/AYAC0EIQdABEN8JAAtBCEHwABDfCQALIAAgASAHIAoQVCAAIAQ2AkALIAhBwAJqJAAL0xACDX8EfiMAQcACayIIJAACQAJAAkACQCACIANHBEAgAkEIaikDACESIAIpAwAhEyADIAJBEGoiBkYEQCMAQfAAayIOJAAgDkEIaiICIBMgEgJ/AkACQAJAQgIgASkDAEICfSISIBJCAlobp0EBaw4CAQIACyABQfQAagwCCyABQYwBagwBCyABQewAagsoAgAgBBCfBSMAQdABayIDJAACfwJAAkACQEICIAEpAwBCAn0iEiASQgJaG6ciCkEBaw4CAQIACyABQfQAaiEGIAFB+ABqDAILIAFBjAFqIQYgAUGQAWoMAQsgAUHsAGohBiABQfAAagsgBjUCACESNQIAIRMgA0HQAGoiBiACQegAEOcJGiADIBM3A8ABIAMgEjcDuAEgA0EEaiELIwBBsAFrIgIkAAJAAkACQCAGQegAagJ+AkACQCAGKAJgIgVFDQAgBiAFQQFrNgJgIAYpAxBCAlIEQCACQRBqIAZBEGoiBRDfASACKQMQpw0CIAVCAjcDAAsgBikDAFANACAGKQMIDAILIAtBADYCCCALQoCAgICAATcCAAwCCyACKQMYCxC9BiETIAJBCGpBBCAGKAJgIgkEfyAGKQMAIRICQCAGKQMQQgJRBEBBf0EAIBJCAFIbIQUMAQsgElAEQCAGKAJYIgVFDQQgBSAGKAJcTSEFDAELQX8hBSAGKAJYRQ0DCyAFIAkgBSAJSRsFQQALQQFqIgVBfyAFGyIFIAVBBE0bQQAQzgUgAigCCCEFIAIoAgwiCSATNwMAIAJBNGoiEEEBNgIAIAIgCTYCMCACIAU2AiwgAkE4aiIFIAZB+AAQ5wkaIAJBLGohCSMAQSBrIgwkAAJAIAUoAmAiBkUNACAFQegAaiERIAVBEGohDwNAIAUgBkEBazYCYCARAn4CQCAFKQMQQgJSBEAgDEEIaiAPEN8BIAwpAwinDQEgD0ICNwMACyAFKQMAUA0DIAUpAwgMAQsgDCkDEAsQvQYhEyAFKAJgIQYgCSgCCCINIAkoAgBGBEAgCSANIAYEfyAFKQMAIRICQCAFKQMQQgJRBEBBf0EAIBJCAFIbIQcMAQsgElAEQCAFKAJYIgdFDQcgByAFKAJcTSEHDAELQX8hByAFKAJYRQ0GCyAHIAYgBiAHSxsFQQALQQFqIgdBfyAHGxCuBgsgCSgCBCANQQN0aiATNwMAIAkgDUEBajYCCCAGDQALCyAMQSBqJAAgC0EIaiAQKAIANgIAIAsgAikCLDcCAAsgAkGwAWokACADQRBqIAFBoAJqKAIAQQFqIAMoAgwCfwJAAkACQCAKQQFrDgIBAgALIAFByABqDAILIAFB0ABqDAELIAFBQGsLIgIpAwAgAkEIaikDABDdBgJ/IANByABqIgICfwJAIAICfwJAAkACQCABLQCwAiIGRQRAIApBAWsOAgMFAQsCQAJAAkAgCkEBaw4CAQIACyADQdAAaiABQQhqQYABEOcJGiADQcgAaiADQegAaikDADcDACADQUBrIANB4ABqKQMANwMAIAMgAykDWDcDOAwDCyABQQhqDAQLIAFBCGoMBQsgA0HQAGogAUEIakGAARDnCRogA0HIAGogA0GAAWopAwA3AwAgA0FAayADQfgAaikDADcDACADIANB8ABqKQMANwM4CyADIANBOGo2AlwgAyADQQRqNgJYIAMgA0EQaiICNgJUIAMgATYCUCADQdAAahCMAiABKAJ0IQUgACACQSgQ5wkaIAFB+ABqDAQLIAFBIGoLIgJBEGopAwA3AwAgA0FAayACQQhqKQMANwMAIAMgAikDADcDOCADIANBOGo2AlwgAyADQQRqNgJYIAMgA0EQaiICNgJUIAMgATYCUCADQdAAahCMAiABQYwBaigCACEFIAAgAkEoEOcJGiABQZABagwCCyABQSBqCyICQRBqKQMANwMAIANBQGsgAkEIaikDADcDACADIAIpAwA3AzggAyADQThqNgJcIAMgA0EEajYCWCADIANBEGoiAjYCVCADIAE2AlAgA0HQAGoQjAIgASgCbCEFIAAgAkEoEOcJGiABQfAAagshASAAIAY6ADggACAFNgIsIABBATYCNCAA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AEEcaigCADYCACABIAM2AhAgASAAKQIENwIUIwBBIGsiBCQAIAFBEGoiAigCECEGIAIoAgwhByACKAIIIQUgAigCACEIIAIoAgQhCSAEQRhqIAJBHGooAgA2AgAgBCACKQIUNwMQIAQgCCgCACAJKAIAa0EBIAUoAgAgBSgCBCAHIAYgBEEQahB3IAQpAwAhCiABQQxqIAQoAgg2AgAgASAKNwIEIAFBADYCACAEQSBqJAACfyABKAIARQRAIAFBDGooAgAhA0EBIQQgASgCBCECIAFBCGooAgAMAQtBAiEEIAEoAgQhAiABQQhqKAIACyEFIABBIGoQzAcgAEEsaiADNgIAIABBKGogBTYCACAAQSRqIAI2AgAgACAENgIgIAAoAjAhAwJAIABBPGotAAAiBEUEQCADKAIAIQMMAQsgAygCACIDIAMoAgAiAkEBajYCACACQQBIDQIgASADNgIQCyAAQTRqIgIoAgAgAkEDNgIAQQJGBEAgA0FAayAAQThqKAIAEIoJCwJAIARFDQAgASgCECIAIAAoAgAiAEEBazYCACAAQQFHDQAgAUEQahCXAgsgAUEwaiQADwtBlIrAAEErQeyLwAAQzAYACwALmQQCCX8BfiMAQTBrIgEkACAAKAIAIQMgAEEANgIAAkAgAwRAIAFBHGogAEEMaikCADcCACABQSRqIABBFGopAgA3AgAgAUEsaiAAQRxqKAIANgIAIAEgAzYCECABIAApAgQ3AhQjAEEgayIEJAAgAUEQaiICKAIQIQYgAigCDCEHIAIoAgghBSACKAIAIQggAigCBCEJIARBGGogAkEcaigCADYCACAEIAIpAhQ3AxAgBCAIKAIAIAkoAgBrQQEgBSgCACAFKAIEIAcgBiAEQRBqEHYgBCkDACEKIAFBDGogBCgCCDYCACABIAo3AgQgAUEANgIAIARBIGokAAJ/IAEoAgBFBEAgAUEMaigCACEDQQEhBCABKAIEIQIgAUEIaigCAAwBC0ECIQQgASgCBCECIAFBCGooAgALIQUgAEEgahDMByAAQSxqIAM2AgAgAEEoaiAFNgIAIABBJGogAjYCACAAIAQ2AiAgACgCMCEDAkAgAEE8ai0AACIERQRAIAMoAgAhAwwBCyADKAIAIgMgAygCACICQQFqNgIAIAJBAEgNAiABIAM2AhALIABBNGoiAigCACACQQM2AgBBAkYEQCADQUBrIABBOGooAgAQigkLAkAgBEUNACABKAIQIgAgACgCACIAQQFrNgIAIABBAUcNACABQRBqEJcCCyABQTBqJAAPC0GUisAAQStB7IvAABDMBgALAAvpAgEFfwJAQc3/e0EQIAAgAEEQTRsiAGsgAU0NACAAQRAgAUELakF4cSABQQtJGyIEakEMahBCIgJFDQAgAkEIayEBAkAgAEEBayIDIAJxRQRAIAEhAAwBCyACQQRrIgUoAgAiBkF4cSACIANqQQAgAGtxQQhrIgIgAEEAIAIgAWtBEE0baiIAIAFrIgJrIQMgBkEDcQRAIAAgAyAAKAIEQQFxckECcjYCBCAAIANqIgMgAygCBEEBcjYCBCAFIAIgBSgCAEEBcXJBAnI2AgAgASACaiIDIAMoAgRBAXI2AgQgASACEJMBDAELIAEoAgAhASAAIAM2AgQgACABIAJqNgIACwJAIAAoAgQiAUEDcUUNACABQXhxIgIgBEEQak0NACAAIAQgAUEBcXJBAnI2AgQgACAEaiIBIAIgBGsiBEEDcjYCBCAAIAJqIgIgAigCBEEBcjYCBCABIAQQkwELIABBCGohAwsgAwuNAwEBfwJAIAIEQCABLQAAQTBNDQEgBUECOwEAAkACQAJAIAPBIgZBAEoEQCAFIAE2AgQgA0H//wNxIgMgAk8NASAFQQI7ARggBUECOwEMIAUgAzYCCCAFQSBqIAIgA2siAjYCACAFQRxqIAEgA2o2AgAgBUEUakEBNgIAIAVBEGpB/J/DADYCAEEDIQEgAiAETw0DIAQgAmshBAwCCyAFQQI7ARggBUEAOwEMIAVBAjYCCCAFQf2fwwA2AgQgBUEgaiACNgIAIAVBHGogATYCACAFQRBqQQAgBmsiAzYCAEEDIQEgAiAETw0CIAQgAmsiAiADTQ0CIAIgBmohBAwBCyAFQQA7AQwgBSACNgIIIAVBEGogAyACazYCACAERQRAQQIhAQwCCyAFQQI7ARggBUEgakEBNgIAIAVBHGpB/J/DADYCAAsgBUEAOwEkIAVBKGogBDYCAEEEIQELIAAgATYCBCAAIAU2AgAPC0G8nMMAQSFBiJ/DABDMBgALQZifwwBBH0G4n8MAEMwGAAv6AwEFfyMAQeAAayICJAAgACgCACEBIABBADYCAAJAIAEEQCACQSRqIABBBGpBOBDnCRogAiABNgIgIAJBBGohAyMAQUBqIgEkACABIAJBIGoiBEE8EOcJIQFBgIDAABDHBiIFRQRAQYSAwABBNkGsgcAAEMwGAAsgASAEIAUQZyADQQA2AgAgA0EUaiABQRBqKQMANwIAIANBDGogAUEIaikDADcCACADIAEpAwA3AgQgAUFAayQAAn8gAigCBEUEQCACQShqIAJBGGopAgA3AwAgAiACQRBqKQIANwMgQQEhASACQQxqKAIADAELQQIhASACQQxqKAIACyEDIAIoAgghBCAAQTxqEN4GIABBxABqIAM2AgAgAEFAayAENgIAIAAgATYCPCAAQcgAaiACKQMgNwIAIABB0ABqIAJBKGopAwA3AgAgACgCWCEBAkAgAEHkAGotAAAiA0UEQCABKAIAIQEMAQsgASgCACIBIAEoAgAiBEEBajYCACAEQQBIDQIgAiABNgIgCyAAQdwAaiIEKAIAIARBAzYCAEECRgRAIAFBQGsgAEHgAGooAgAQigkLAkAgA0UNACACKAIgIgAgACgCACIAQQFrNgIAIABBAUcNACACQSBqEJcCCyACQeAAaiQADwtBlIrAAEErQeyLwAAQzAYACwAL+gMBBX8jAEHgAGsiAiQAIAAoAgAhASAAQQA2AgACQCABBEAgAkEkaiAAQQRqQTgQ5wkaIAIgATYCICACQQRqIQMjAEFAaiIBJAAgASACQSBqIgRBPBDnCSEBQYCAwAAQxwYiBUUEQEGEgMAAQTZBrIHAABDMBgALIAEgBCAFEGYgA0EANgIAIANBFGogAUEQaikDADcCACADQQxqIAFBCGopAwA3AgAgAyABKQMANwIEIAFBQGskAAJ/IAIoAgRFBEAgAkEoaiACQRhqKQIANwMAIAIgAkEQaikCADcDIEEBIQEgAkEMaigCAAwBC0ECIQEgAkEMaigCAAshAyACKAIIIQQgAEE8ahDeBiAAQcQAaiADNgIAIABBQGsgBDYCACAAIAE2AjwgAEHIAGogAikDIDcCACAAQdAAaiACQShqKQMANwIAIAAoAlghAQJAIABB5ABqLQAAIgNFBEAgASgCACEBDAELIAEoAgAiASABKAIAIgRBAWo2AgAgBEEASA0CIAIgATYCIAsgAEHcAGoiBCgCACAEQQM2AgBBAkYEQCABQUBrIABB4ABqKAIAEIoJCwJAIANFDQAgAigCICIAIAAoAgAiAEEBazYCACAAQQFHDQAgAkEgahCXAgsgAkHgAGokAA8LQZSKwABBK0Hsi8AAEMwGAAsAC/8CAQd/IwBBEGsiBCQAAkACQAJAAkACQAJAIAEoAgQiAkUNACABKAIAIQYgAkEDcSEHAkAgAkEESQRAQQAhAgwBCyAGQRxqIQMgAkF8cSEIQQAhAgNAIAMoAgAgA0EIaygCACADQRBrKAIAIANBGGsoAgAgAmpqamohAiADQSBqIQMgCCAFQQRqIgVHDQALCyAHBEAgBUEDdCAGakEEaiEDA0AgAygCACACaiECIANBCGohAyAHQQFrIgcNAAsLIAFBDGooAgAEQCACQQBIDQEgBigCBEUgAkEQSXENASACQQF0IQILIAINAQtBASEDQQAhAgwBCyACQQBIDQFBgc3DAC0AABogAkEBEIQJIgNFDQILIARBADYCCCAEIAM2AgQgBCACNgIAIARBsIXDACABEGxFDQJBkIbDAEEzIARBD2pBxIbDAEHshsMAEPYEAAsQ+wYAC0EBIAIQ3wkACyAAIAQpAgA3AgAgAEEIaiAEQQhqKAIANgIAIARBEGokAAugAwEDfyMAQeAAayIKJAAgCiADNgIQIAogAjYCDCAKIAU2AhQCQAJAIAggCYRQRSAIeyAJe3xCAlpxRQRAIAIgA2wgBWwiC0UNASABKAIIIgwgC3BFDQIgCkHUAGpBKDYCACAKQcwAakEqNgIAIApBxABqQSs2AgAgCkE8akEWNgIAIApBJGpCBTcCACAKIAs2AlggCkEFNgIcIApB9MLAADYCGCAKQRY2AjQgCiAMNgJcIAogCkEwajYCICAKIApBEGo2AlAgCiAKQQxqNgJIIAogCkEUajYCQCAKIApB3ABqNgI4IAogCkHYAGo2AjAgCkEYakGcw8AAEPwGAAsgCkE8akIANwIAIApBATYCNCAKQei9wAA2AjAgCkH8n8AANgI4IApBMGpB2MHAABD8BgALQYCgwABBOUHowcAAEMwGAAsgACAINwMQIAAgBjcDACAAIAU2AiwgACAENgIoIAAgAzYCJCAAIAI2AiAgAEEYaiAJNwMAIAAgBzcDCCAAIAEpAgA3AjAgAEE4aiABQQhqKAIANgIAIApB4ABqJAALiQMBAX8jAEHwAGsiByQAIAcgAjYCDCAHIAE2AgggByAENgIUIAcgAzYCECAHAn8CQAJAAkAgAEH/AXFBAWsOAgECAAsgB0Gco8MANgIYQQIMAgsgB0Geo8MANgIYQQIMAQsgB0Ggo8MANgIYQQcLNgIcAkAgBSgCAEUEQCAHQcwAakHUAzYCACAHQcQAakHUAzYCACAHQeQAakIDNwIAIAdBAzYCXCAHQdijwwA2AlggB0HVAzYCPCAHIAdBOGo2AmAgByAHQRBqNgJIIAcgB0EIajYCQAwBCyAHQTBqIAVBEGopAgA3AwAgB0EoaiAFQQhqKQIANwMAIAcgBSkCADcDICAHQeQAakIENwIAIAdB1ABqQdQDNgIAIAdBzABqQdQDNgIAIAdBxABqQdYDNgIAIAdBBDYCXCAHQYykwwA2AlggB0HVAzYCPCAHIAdBOGo2AmAgByAHQRBqNgJQIAcgB0EIajYCSCAHIAdBIGo2AkALIAcgB0EYajYCOCAHQdgAaiAGEPwGAAvfAgIGfwN+IwBBQGoiAiQAIAAoAkQiBEH/AU0EQCABIAQQygIgAkEYaiAAQRhqKQMANwMAIAJBEGogAEEQaikDADcDACACQQhqIABBCGopAwA3AwAgAiAAKQMANwMAIAJBOGogAUEYaikDADcDACACQTBqIAFBEGopAwA3AwAgAkEoaiABQQhqKQMANwMAIAIgASkDADcDICACQUBrIQdBACEBIAJBIGohBQNAQgAhCAJ/QQAgBSIDRQ0AGkEAIAMgB0YNABogAykDACEIIANBCGoLIQUgASACaiIDIAMpAwAiCSAIfCIIIAatfCIKNwMAIAggCVQgCCAKVnIhBiABQQhqIgFBIEcNAAsgACACKQMANwMAIABBGGogAkEYaikDADcDACAAQRBqIAJBEGopAwA3AwAgAEEIaiACQQhqKQMANwMAIAAgACgCQCAEajYCRAsgAkFAayQAIARBgAJJC/sCAQh/AkAgASgCACICQYQBaigCACIDIAJBgAFqKAIAayIEQQBMBEBBACECDAELAkACQAJAIAEtAAxFBEAgAiACKAKAASIGQQFqNgKAAUEAIQIgAyAGQX9zakEASA0BIAFBCGooAgAiA0EEbSEFIAEoAgQgA0EBayAGcUEDdGoiAigCBCEGIAIoAgAhAiADQcEASSAEIAVKcg0EIAEgA0EBdhCaAgwECyACIANBAWsiBDYChAFBACECIAQgASgCACIFQYABaigCACIIayIJQQBIDQEgASgCBCABQQhqKAIAIgdBAWsgBHFBA3RqIgIoAgQhBiACKAIAIQIgBCAIRg0CIAdBwQBJIAdBBG0gCUxyDQMgASAHQQF2EJoCDAMLIAEoAgBBgAFqIAY2AgAMAgsgBUGEAWogAzYCAAwBCyAFIAMgBSgCgAEiBSAEIAVGIgQbNgKAASABKAIAQYQBaiADNgIAIAJBACAEGyECCyAAIAY2AgQgACACNgIAC98CAgV/AX4jAEEQayIEJAACQCAAKQMAIgdCAlIEQCAAKAIgIgIgASABIAJLGyIDIQICQCAAQRtqLQAAQQJHBEAgA0UNASAAQRBqIQYDQAJAIARBCGogBhCcAyAELQAIQQFxRQ0AIAJBAWsiAg0BDAMLCyACRQ0BIABBAjoAGyAAKQMAIQcLIAJBACAHUBshBQsgACAAKAIgIAMgBWsiAms2AiAgASACayIBRQRAQQAhAQwCCyAAQgI3AwALIAApAygiB0ICUQ0AIABByABqKAIAIgIgASABIAJLGyIDIQICQCAALQBDQQJHBEBBACEFIANFDQEgAEE4aiEGA0ACQCAEIAYQnAMgBC0AAEEBcUUNACACQQFrIgINAQwDCwsgAkUNASAAQQI6AEMgACkDKCEHCyACQQAgB1AbIQULIAAgACgCSCADIAVrIgBrNgJIIAEgAGshAQsgBEEQaiQAIAEL3wICBX8BfiMAQRBrIgQkAAJAIAApAwAiB0ICUgRAIAAoAiAiAiABIAEgAksbIgMhAgJAIABBG2otAABBAkcEQCADRQ0BIABBEGohBgNAAkAgBEEIaiAGEKADIAQtAAhBAXFFDQAgAkEBayICDQEMAwsLIAJFDQEgAEECOgAbIAApAwAhBwsgAkEAIAdQGyEFCyAAIAAoAiAgAyAFayICazYCICABIAJrIgFFBEBBACEBDAILIABCAjcDAAsgACkDKCIHQgJRDQAgAEHIAGooAgAiAiABIAEgAksbIgMhAgJAIAAtAENBAkcEQEEAIQUgA0UNASAAQThqIQYDQAJAIAQgBhCgAyAELQAAQQFxRQ0AIAJBAWsiAg0BDAMLCyACRQ0BIABBAjoAQyAAKQMoIQcLIAJBACAHUBshBQsgACAAKAJIIAMgBWsiAGs2AkggASAAayEBCyAEQRBqJAAgAQvcAgEHf0EBIQkCQAJAIAJFDQAgASACQQF0aiEKIABBgP4DcUEIdiELIABB/wFxIQ0DQCABQQJqIQwgByABLQABIgJqIQggCyABLQAAIgFHBEAgASALSw0CIAghByAMIgEgCkYNAgwBCwJAAkAgByAITQRAIAQgCEkNASADIAdqIQEDQCACRQ0DIAJBAWshAiABLQAAIAFBAWohASANRw0AC0EAIQkMBQsgByAIQcSvwwAQwgUACyAIIARBxK/DABDBBQALIAghByAMIgEgCkcNAAsLIAZFDQAgBSAGaiEDIABB//8DcSEBA0AgBUEBaiEAAkAgBS0AACICwCIEQQBOBEAgACEFDAELIAAgA0cEQCAFLQABIARB/wBxQQh0ciECIAVBAmohBQwBC0HdnMMAQStBtK/DABDMBgALIAEgAmsiAUEASA0BIAlBAXMhCSADIAVHDQALCyAJQQFxC/sCAQR/IAAoAgwhAgJAAkAgAUGAAk8EQCAAKAIYIQMCQAJAIAAgAkYEQCAAQRRBECAAQRRqIgIoAgAiBBtqKAIAIgENAUEAIQIMAgsgACgCCCIBIAI2AgwgAiABNgIIDAELIAIgAEEQaiAEGyEEA0AgBCEFIAEiAkEUaiIBIAJBEGogASgCACIBGyEEIAJBFEEQIAEbaigCACIBDQALIAVBADYCAAsgA0UNAiAAIAAoAhxBAnRB+M3DAGoiASgCAEcEQCADQRBBFCADKAIQIABGG2ogAjYCACACRQ0DDAILIAEgAjYCACACDQFBlNHDAEGU0cMAKAIAQX4gACgCHHdxNgIADAILIAAoAggiACACRwRAIAAgAjYCDCACIAA2AggPC0GQ0cMAQZDRwwAoAgBBfiABQQN2d3E2AgAPCyACIAM2AhggACgCECIBBEAgAiABNgIQIAEgAjYCGAsgAEEUaigCACIARQ0AIAJBFGogADYCACAAIAI2AhgLC4wDAgV/AX4jAEFAaiIFJABBASEHAkAgAC0ABA0AIAAtAAUhCSAAKAIAIgYoAhwiCEEEcUUEQCAGKAIUQd+kwwBB3KTDACAJG0ECQQMgCRsgBkEYaigCACgCDBEGAA0BIAYoAhQgASACIAYoAhgoAgwRBgANASAGKAIUQaykwwBBAiAGKAIYKAIMEQYADQEgAyAGIAQoAgwRAwAhBwwBCyAJRQRAIAYoAhRB4aTDAEEDIAZBGGooAgAoAgwRBgANASAGKAIcIQgLIAVBAToAGyAFQTRqQcCkwwA2AgAgBSAGKQIUNwIMIAUgBUEbajYCFCAFIAYpAgg3AiQgBikCACEKIAUgCDYCOCAFIAYoAhA2AiwgBSAGLQAgOgA8IAUgCjcCHCAFIAVBDGoiCDYCMCAIIAEgAhCAAQ0AIAVBDGpBrKTDAEECEIABDQAgAyAFQRxqIAQoAgwRAwANACAFKAIwQeSkwwBBAiAFKAI0KAIMEQYAIQcLIABBAToABSAAIAc6AAQgBUFAayQAIAALzwMDAX4DfwV8AkACQAJAAkACQCAAvSIBQgBTDQAgAUIgiKciAkGAgMAASQ0AIAJB//+//wdLDQNBgIDA/wMhA0GBeCEEIAJBgIDA/wNHBEAgAiEDDAILIAGnDQFEAAAAAAAAAAAPCyABQv///////////wCDUA0DIAFCAFMNASAARAAAAAAAAFBDor0iAUIgiKchA0HLdyEECyABQv////8PgyADQeK+JWoiAkH//z9xQZ7Bmv8Daq1CIIaEv0QAAAAAAADwv6AiACAAIABEAAAAAAAA4D+ioiIFob1CgICAgHCDvyIGRAAAIGVHFfc/oiIHIAJBFHYgBGq3IgigIgkgByAIIAmhoCAAIAahIAWhIAAgAEQAAAAAAAAAQKCjIgAgBSAAIACiIgUgBaIiACAAIABEn8Z40Amawz+iRK94jh3Fccw/oKJEBPqXmZmZ2T+goiAFIAAgACAARERSPt8S8cI/okTeA8uWZEbHP6CiRFmTIpQkSdI/oKJEk1VVVVVV5T+goqCgoqAiAEQAACBlRxX3P6IgACAGoEQAou8u/AXnPaKgoKAPCyAAIAChRAAAAAAAAAAAoyEACyAADwtEAAAAAAAA8L8gACAAoqMLzgICBX8DfiMAQSBrIQIDQCABIANqIgQgBCkDAEJ/hTcDACADQQhqIgNBIEcNAAtBACEDQbCLwQAhBANAQgAhBwJ/QQAgBCIFRQ0AGkEAIAVB0IvBAEYNABogBSkDACEHIAVBCGoLIQQgASADaiIFIAUpAwAiCCAHfCIHIAatfCIJNwMAIAcgCFQgByAJVnIhBiADQQhqIgNBIEcNAAsgAkEYaiABQRhqKQMANwMAIAJBEGogAUEQaikDADcDACACQQhqIAFBCGopAwA3AwAgAiABKQMANwMAIAJBIGohBUEAIQMgAiEEQQAhAQNAQgAhBwJ/QQAgBCICRQ0AGkEAIAIgBUYNABogAikDACEHIAJBCGoLIQQgACADaiICIAIpAwAiCCAHfCIHIAGtQgGDfCIJNwMAIAcgCFQgByAJVnIhASADQQhqIgNBIEcNAAsL3gICBX8BfiMAQTBrIgQkAAJAIAApAwAiB0ICUgRAIAAoAqABIgIgASABIAJLGyIDIQICQCAAKQMQQgJSBEAgA0UNASAAQRBqIQYDQAJAIARBCGogBhBjIAQpAwhQDQAgAkEBayICDQEMAwsLIAJFDQEgAEICNwMQIAApAwAhBwsgAkEAIAdQGyEFCyAAIAAoAqABIAMgBWsiAms2AqABIAEgAmsiAUUEQEEAIQEMAgsgAEICNwMACyAAKQOoASIHQgJRDQAgAEHIAmooAgAiAiABIAEgAksbIgMhAgJAIABBuAFqIgYpAwBCAlIEQEEAIQUgA0UNAQNAAkAgBEEIaiAGEGMgBCkDCFANACACQQFrIgINAQwDCwsgAkUNASAAQgI3A7gBIAApA6gBIQcLIAJBACAHUBshBQsgACAAKALIAiADIAVrIgBrNgLIAiABIABrIQELIARBMGokACABC94CAgV/AX4jAEEwayIEJAACQCAAKQMAIgdCAlIEQCAAKAKgASICIAEgASACSxsiAyECAkAgACkDEEICUgRAIANFDQEgAEEQaiEGA0ACQCAEQQhqIAYQZCAEKQMIUA0AIAJBAWsiAg0BDAMLCyACRQ0BIABCAjcDECAAKQMAIQcLIAJBACAHUBshBQsgACAAKAKgASADIAVrIgJrNgKgASABIAJrIgFFBEBBACEBDAILIABCAjcDAAsgACkDqAEiB0ICUQ0AIABByAJqKAIAIgIgASABIAJLGyIDIQICQCAAQbgBaiIGKQMAQgJSBEBBACEFIANFDQEDQAJAIARBCGogBhBkIAQpAwhQDQAgAkEBayICDQEMAwsLIAJFDQEgAEICNwO4ASAAKQOoASEHCyACQQAgB1AbIQULIAAgACgCyAIgAyAFayIAazYCyAIgASAAayEBCyAEQTBqJAAgAQvZAgIFfwJ+IwBBIGsiAyQAAn4CQAJ+AkACQCABKQMAIghCAlIEQCABQRBqIQcgASgCICIEIAIgAiAESxsiBCEFAkAgAUEbai0AAEECRwRAIARFDQEDQAJAIANBGGogBxCcAyADLQAYQQFxRQ0AIAVBAWsiBQ0BDAMLCyAFRQ0BIAFBAjoAGyABKQMAIQgLIAVBACAIUBshBgsgASABKAIgIgUgBCAGayIGayIENgIgIAIgBmsiAiAFIAZGckUEQCABIARBAWs2AiAgAS0AG0ECRwRAIANBEGogBxCcAyADLQAQQQFxDQQgAUECOgAbCyABKQMAQgBSDQILIAFCAjcDAAsgASkDKEICUg0DQgAMBAsgASkDCAwBCyADMQARQv8BgwshCUIBDAELIAMgAUEoaiACEMABIAMpAwghCSADKQMACyEIIAAgCTcDCCAAIAg3AwAgA0EgaiQAC98CAQl/IwBBIGsiDCQAAkACQAJAIAEgBUcEQCADIAFBAkEDIAVBAnQgAUYiDxtBASAFQQF0IAFHIg4bdiILQQNBByAPG0EBIA4bbCINSQ0BIAtFDQIgAyANayIRQQR0IRIgCyABIAEgC3BrIhBNBEAgC0EEdCETIAAhAwNAIAMgCyACIBEgBCAFIAYgByAIIAkgChCvASADIBNqIQMgECALayIQIAtPDQALCyACIBJqIQIgDkUEQCAAIAEgAiANIAgRBwAMBAsgDiAPcQRAIAAgASACIA0gCREHAAwECyAAIAEgAiANIAoRBwAMAwsgACABIAYgByACIANBAXYiACACIABBBHRqIAMgAGsgBBEEAAwCC0HcwcIAQSNB/MjCABDMBgALIAxBFGpCADcCACAMQQE2AgwgDEG4w8IANgIIIAxB3MHCADYCECAMQQhqQYzJwgAQ/AYACyAMQSBqJAAL1wICBX8BfiMAQTBrIgQkAAJAIAApAwAiB0ICUgRAIAAoAmAiAiABIAEgAksbIgMhAgJAIAApAxBCAlIEQCADRQ0BIABBEGohBgNAAkAgBEEYaiAGEN8BIAQoAhhFDQAgAkEBayICDQEMAwsLIAJFDQEgAEICNwMQIAApAwAhBwsgAkEAIAdQGyEFCyAAIAAoAmAgAyAFayICazYCYCABIAJrIgFFBEBBACEBDAILIABCAjcDAAsgACkDaCIHQgJRDQAgAEHIAWooAgAiAiABIAEgAksbIgMhAgJAIABB+ABqIgYpAwBCAlIEQEEAIQUgA0UNAQNAAkAgBCAGEN8BIAQoAgBFDQAgAkEBayICDQEMAwsLIAJFDQEgAEICNwN4IAApA2ghBwsgAkEAIAdQGyEFCyAAIAAoAsgBIAMgBWsiAGs2AsgBIAEgAGshAQsgBEEwaiQAIAEL1QICBX8BfiMAQRBrIgQkAAJAIAApAwAiB0ICUgRAIAAoAjAiAiABIAEgAksbIgMhAgJAIAAoAhBBAkcEQCADRQ0BIABBEGohBgNAAkAgBEEIaiAGEMMDIAQoAghFDQAgAkEBayICDQEMAwsLIAJFDQEgAEECNgIQIAApAwAhBwsgAkEAIAdQGyEFCyAAIAAoAjAgAyAFayICazYCMCABIAJrIgFFBEBBACEBDAILIABCAjcDAAsgACkDOCIHQgJRDQAgAEHoAGooAgAiAiABIAEgAksbIgMhAgJAIABByABqIgYoAgBBAkcEQEEAIQUgA0UNAQNAAkAgBCAGEMMDIAQoAgBFDQAgAkEBayICDQEMAwsLIAJFDQEgAEECNgJIIAApAzghBwsgAkEAIAdQGyEFCyAAIAAoAmggAyAFayIAazYCaCABIABrIQELIARBEGokACABC9cCAgV/AX4jAEEgayIEJAACQCAAKQMAIgdCAlIEQCAAKAJAIgIgASABIAJLGyIDIQICQCAAKQMQQgJSBEAgA0UNASAAQRBqIQYDQAJAIARBEGogBhCxAyAEKAIQRQ0AIAJBAWsiAg0BDAMLCyACRQ0BIABCAjcDECAAKQMAIQcLIAJBACAHUBshBQsgACAAKAJAIAMgBWsiAms2AkAgASACayIBRQRAQQAhAQwCCyAAQgI3AwALIAApA0giB0ICUQ0AIABBiAFqKAIAIgIgASABIAJLGyIDIQICQCAAQdgAaiIGKQMAQgJSBEBBACEFIANFDQEDQAJAIAQgBhCxAyAEKAIARQ0AIAJBAWsiAg0BDAMLCyACRQ0BIABCAjcDWCAAKQNIIQcLIAJBACAHUBshBQsgACAAKAKIASADIAVrIgBrNgKIASABIABrIQELIARBIGokACABC9QCAgV/AX4jAEEQayIEJAACQCAAKQMAIgdCAlIEQCAAKAIoIgIgASABIAJLGyIDIQICQCAALwEQQQJHBEAgA0UNASAAQRBqIQYDQAJAIARBCGogBhCoAyAELwEIRQ0AIAJBAWsiAg0BDAMLCyACRQ0BIABBAjsBECAAKQMAIQcLIAJBACAHUBshBQsgACAAKAIoIAMgBWsiAms2AiggASACayIBRQRAQQAhAQwCCyAAQgI3AwALIAApAzAiB0ICUQ0AIABB2ABqKAIAIgIgASABIAJLGyIDIQICQCAAQUBrIgYvAQBBAkcEQEEAIQUgA0UNAQNAAkAgBCAGEKgDIAQvAQBFDQAgAkEBayICDQEMAwsLIAJFDQEgAEECOwFAIAApAzAhBwsgAkEAIAdQGyEFCyAAIAAoAlggAyAFayIAazYCWCABIABrIQELIARBEGokACABC9QCAgV/AX4jAEEQayIEJAACQCAAKQMAIgdCAlIEQCAAKAIoIgIgASABIAJLGyIDIQICQCAALwEQQQJHBEAgA0UNASAAQRBqIQYDQAJAIARBCGogBhChAyAELwEIRQ0AIAJBAWsiAg0BDAMLCyACRQ0BIABBAjsBECAAKQMAIQcLIAJBACAHUBshBQsgACAAKAIoIAMgBWsiAms2AiggASACayIBRQRAQQAhAQwCCyAAQgI3AwALIAApAzAiB0ICUQ0AIABB2ABqKAIAIgIgASABIAJLGyIDIQICQCAAQUBrIgYvAQBBAkcEQEEAIQUgA0UNAQNAAkAgBCAGEKEDIAQvAQBFDQAgAkEBayICDQEMAwsLIAJFDQEgAEECOwFAIAApAzAhBwsgAkEAIAdQGyEFCyAAIAAoAlggAyAFayIAazYCWCABIABrIQELIARBEGokACABC9UCAgV/AX4jAEEQayIEJAACQCAAKQMAIgdCAlIEQCAAKAIwIgIgASABIAJLGyIDIQICQCAAKAIQQQJHBEAgA0UNASAAQRBqIQYDQAJAIARBCGogBhDCAyAEKAIIRQ0AIAJBAWsiAg0BDAMLCyACRQ0BIABBAjYCECAAKQMAIQcLIAJBACAHUBshBQsgACAAKAIwIAMgBWsiAms2AjAgASACayIBRQRAQQAhAQwCCyAAQgI3AwALIAApAzgiB0ICUQ0AIABB6ABqKAIAIgIgASABIAJLGyIDIQICQCAAQcgAaiIGKAIAQQJHBEBBACEFIANFDQEDQAJAIAQgBhDCAyAEKAIARQ0AIAJBAWsiAg0BDAMLCyACRQ0BIABBAjYCSCAAKQM4IQcLIAJBACAHUBshBQsgACAAKAJoIAMgBWsiAGs2AmggASAAayEBCyAEQRBqJAAgAQvXAgIFfwF+IwBBMGsiBCQAAkAgACkDACIHQgJSBEAgACgCYCICIAEgASACSxsiAyECAkAgACkDEEICUgRAIANFDQEgAEEQaiEGA0ACQCAEQRhqIAYQ3gEgBCgCGEUNACACQQFrIgINAQwDCwsgAkUNASAAQgI3AxAgACkDACEHCyACQQAgB1AbIQULIAAgACgCYCADIAVrIgJrNgJgIAEgAmsiAUUEQEEAIQEMAgsgAEICNwMACyAAKQNoIgdCAlENACAAQcgBaigCACICIAEgASACSxsiAyECAkAgAEH4AGoiBikDAEICUgRAQQAhBSADRQ0BA0ACQCAEIAYQ3gEgBCgCAEUNACACQQFrIgINAQwDCwsgAkUNASAAQgI3A3ggACkDaCEHCyACQQAgB1AbIQULIAAgACgCyAEgAyAFayIAazYCyAEgASAAayEBCyAEQTBqJAAgAQvXAgIFfwF+IwBBIGsiBCQAAkAgACkDACIHQgJSBEAgACgCQCICIAEgASACSxsiAyECAkAgACkDEEICUgRAIANFDQEgAEEQaiEGA0ACQCAEQRBqIAYQsgMgBCgCEEUNACACQQFrIgINAQwDCwsgAkUNASAAQgI3AxAgACkDACEHCyACQQAgB1AbIQULIAAgACgCQCADIAVrIgJrNgJAIAEgAmsiAUUEQEEAIQEMAgsgAEICNwMACyAAKQNIIgdCAlENACAAQYgBaigCACICIAEgASACSxsiAyECAkAgAEHYAGoiBikDAEICUgRAQQAhBSADRQ0BA0ACQCAEIAYQsgMgBCgCAEUNACACQQFrIgINAQwDCwsgAkUNASAAQgI3A1ggACkDSCEHCyACQQAgB1AbIQULIAAgACgCiAEgAyAFayIAazYCiAEgASAAayEBCyAEQSBqJAAgAQvWAgIFfwJ+IwBBIGsiAyQAAn4CQAJ+AkACQCABKQMAIghCAlIEQCABQRBqIQcgASgCICIEIAIgAiAESxsiBCEFAkAgAUEbai0AAEECRwRAIARFDQEDQAJAIANBGGogBxCgAyADLQAYQQFxRQ0AIAVBAWsiBQ0BDAMLCyAFRQ0BIAFBAjoAGyABKQMAIQgLIAVBACAIUBshBgsgASABKAIgIgUgBCAGayIGayIENgIgIAIgBmsiAiAFIAZGckUEQCABIARBAWs2AiAgAS0AG0ECRwRAIANBEGogBxCgAyADLQAQQQFxDQQgAUECOgAbCyABKQMAQgBSDQILIAFCAjcDAAsgASkDKEICUg0DQgAMBAsgASkDCAwBCyADMQARwgshCUIBDAELIAMgAUEoaiACEMcBIAMpAwghCSADKQMACyEIIAAgCTcDCCAAIAg3AwAgA0EgaiQAC9YCAgV/An4jAEFAaiIDJAACfgJAAn4CQAJAIAEpAwAiCEICUgRAIAFBEGohByABKAKgASIEIAIgAiAESxsiBCEFAkAgASkDEEICUgRAIARFDQEDQAJAIANBGGogBxBjIAMpAxhQDQAgBUEBayIFDQEMAwsLIAVFDQEgAUICNwMQIAEpAwAhCAsgBUEAIAhQGyEGCyABIAEoAqABIgUgBCAGayIGayIENgKgASACIAZrIgIgBSAGRnJFBEAgASAEQQFrNgKgASABKQMQQgJSBEAgA0EYaiAHEGMgAykDGEIAUg0EIAdCAjcDAAsgASkDAEIAUg0CCyABQgI3AwALIAEpA6gBQgJSDQNCAAwECyABKQMIDAELIAMpAyALIQlCAQwBCyADQQhqIAFBqAFqIAIQzQEgAykDECEJIAMpAwgLIQggACAJNwMIIAAgCDcDACADQUBrJAAL0QICBX8CfiMAQSBrIgMkAAJ+AkACfgJAAkAgASkDACIIQgJSBEAgAUEQaiEHIAEoAigiBCACIAIgBEsbIgQhBQJAIAEvARBBAkcEQCAERQ0BA0ACQCADQRhqIAcQoQMgAy8BGEUNACAFQQFrIgUNAQwDCwsgBUUNASABQQI7ARAgASkDACEICyAFQQAgCFAbIQYLIAEgASgCKCIFIAQgBmsiBmsiBDYCKCACIAZrIgIgBSAGRnJFBEAgASAEQQFrNgIoIAEvARBBAkcEQCADQRBqIAcQoQMgAy8BEA0EIAdBAjsBAAsgASkDAEIAUg0CCyABQgI3AwALIAEpAzBCAlINA0IADAQLIAEpAwgMAQsgAzMBEkL//wODCyEJQgEMAQsgAyABQTBqIAIQzwEgAykDCCEJIAMpAwALIQggACAJNwMIIAAgCDcDACADQSBqJAAL1gICBX8CfiMAQUBqIgMkAAJ+AkACfgJAAkAgASkDACIIQgJSBEAgAUEQaiEHIAEoAqABIgQgAiACIARLGyIEIQUCQCABKQMQQgJSBEAgBEUNAQNAAkAgA0EYaiAHEGQgAykDGFANACAFQQFrIgUNAQwDCwsgBUUNASABQgI3AxAgASkDACEICyAFQQAgCFAbIQYLIAEgASgCoAEiBSAEIAZrIgZrIgQ2AqABIAIgBmsiAiAFIAZGckUEQCABIARBAWs2AqABIAEpAxBCAlIEQCADQRhqIAcQZCADKQMYQgBSDQQgB0ICNwMACyABKQMAQgBSDQILIAFCAjcDAAsgASkDqAFCAlINA0IADAQLIAEpAwgMAQsgAykDIAshCUIBDAELIANBCGogAUGoAWogAhDMASADKQMQIQkgAykDCAshCCAAIAk3AwggACAINwMAIANBQGskAAvlAwEFfyMAQeAAayIBJAAgACgCBCECIABBADYCBAJAIAIEQCABQSRqIABBCGpBOBDnCRogASACNgIgIAFBBGohAyMAQUBqIgIkACACIAFBIGoiBEE8EOcJIQJBgIDAABDHBiIFRQRAQYSAwABBNkGcgcAAEMwGAAsgAiAEIAUQZiADQQA2AgAgA0EUaiACQRBqKQMANwIAIANBDGogAkEIaikDADcCACADIAIpAwA3AgQgAkFAayQAAn8gASgCBEUEQCABQShqIAFBGGopAgA3AwAgASABQRBqKQIANwMgQQEhAiABQQxqKAIADAELQQIhAiABQQxqKAIACyEDIAEoAgghBCAAQUBrEN4GIABByABqIAM2AgAgAEHEAGogBDYCACAAIAI2AkAgAEHMAGogASkDIDcCACAAQdQAaiABQShqIgIpAwA3AgAgAUEgaiAAKAIAEOIFIAEoAiANASACLQAAIQIgASgCJCIAQQE6AAICQCACDQBB7M3DACgCAEH/////B3FFDQAQ7QkNACAAQQE6AAELIABBADoAACABQeAAaiQADwtBlIrAAEErQeyLwAAQzAYACyABIAEoAiQ2AgQgASACLQAAOgAIQb+KwABBKyABQQRqQeyKwABB3IvAABD2BAAL5QMBBX8jAEHgAGsiASQAIAAoAgQhAiAAQQA2AgQCQCACBEAgAUEkaiAAQQhqQTgQ5wkaIAEgAjYCICABQQRqIQMjAEFAaiICJAAgAiABQSBqIgRBPBDnCSECQYCAwAAQxwYiBUUEQEGEgMAAQTZBnIHAABDMBgALIAIgBCAFEGcgA0EANgIAIANB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MCADIAVrIgBrNgIwIAEgAGshAgsgBEEgaiQAIAILmgICBX8BfiMAQUBqIgQkAAJAIAAoAqgBIgUEQCAAQagBaiEDIAFBAWohASAAQawBaigCACEGA0AgAUEBRg0CIARBCGogBSAGKAIMEQAAIAFBAWshASAEKAIIQQFGDQALIAFFDQEgAxC2ByADQQA2AgALIAApAwAiB0ICUQRAIAEhAgwBCyAAKAKgASICIAEgASACSxsiAyECAkAgACkDEEICUgRAQQAhBSADRQ0BIABBEGohBgNAAkAgBEEYaiAGEGQgBCkDGFANACACQQFrIgINAQwDCwsgAkUNASAAQgI3AxAgACkDACEHCyACQQAgB1AbIQULIAAgACgCoAEgAyAFayIAazYCoAEgASAAayECCyAEQUBrJAAgAguVAgIFfwF+IwBBIGsiBCQAAkAgACgCMCIFBEAgAEEwaiEDIAFBAWohASAAQTRqKAIAIQYDQCABQQFGDQIgBEEQaiAFIAYoAgwRAAAgAUEBayEBIAQoAhBBAUYNAAsgAUUNASADELYHIANBADYCAAsgACkDACIHQgJRBEAgASECDAELIAAoAigiAiABIAEgAksbIgMhAgJAIAAvARBBAkcEQEEAIQUgA0UNASAAQRBqIQYDQAJAIARBCGogBhChAyAELwEIRQ0AIAJBAWsiAg0BDAMLCyACRQ0BIABBAjsBECAAKQMAIQcLIAJBACAHUBshBQsgACAAKAIoIAMgBWsiAGs2AiggASAAayECCyAEQSBqJAAgAguaAgIFfwF+IwBBQGoiBCQAAkAgACgCqAEiBQRAIABBqAFqIQMgAUEBaiEBIABBrAFqKAIAIQYDQCABQQFGDQIgBEEIaiAFIAYoAgwRAAAgAUEBayEBIAQoAghBAUYNAAsgAUUNASADELYHIANBADYCAAsgACkDACIHQgJRBEAgASECDAELIAAoAqABIgIgASABIAJLGyIDIQICQCAAKQMQQgJSBEBBACEFIANFDQEgAEEQaiEGA0ACQCAEQRhqIAYQYyAEKQMYUA0AIAJBAWsiAg0BDAMLCyACRQ0BIABCAjcDECAAKQMAIQcLIAJBACAHUBshBQsgACAAKAKgASADIAVrIgBrNgKgASABIABrIQILIARBQGskACACC5UCAgV/AX4jAEEgayIEJAACQCAAKAI4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IANBEGoiACgCFCEHIAAoAhghBiAAKAIAIQUgACgCBCEIIAAoAgghASAAKAIMIQkgAiAAKAIQNgIgIAIgCTYCHCACIAE2AhggAiAINgIUIAIgBTYCECACIAEoAgA2AowBIAJBADYCiAEgAiAGNgKAASACIAJBEGo2AoQBIwBBIGsiACQAIABBCGogAkGAAWoiBkEMaigCACIBIAYoAghrIghBACABIAhPGxDLBSAAQRxqIgxBADYCACAAIAApAwg3AhQjAEEQayIIJAAgBkEMaigCACIBIAYoAghrIgpBACABIApPGyIPIABBFGoiASgCACABKAIIIgprSwRAIAEgCiAPEKwGIAEoAgghCgsgCCABKAIENgIMIAggCjYCCCAIIAFBCGo2AgQjAEEgayIBJAAgBkEMaigCACEPIAYoAgghCiABQRBqIAhBBGoiDUEIaigCADYCACABIA0pAgA3AwggASAGKQIANwIUIAogD0kEQCMAQSBrIgAkACABQRRqIgEoAgAgAEEQaiABKAIEIgFBCGopAgA3AwAgAEEYaiABQRBqKAIANgIAIAAgCjYCHCAAIAEpAgA3AwgjAEEwayICJAAgAkEANgIYIAJBgICAgHg2AiAgAkEYaiILIQMjAEEQayIEJAAoAgAiByAHKAIAIgFBAWo2AgAgAUEASARAAAsgAkEMaiEIIABBCGohBSAEQQRqIQkjAEEwayIAJAAgA0EMaikCACEuIAMoAgghAQJ/IAMoAgBFBEAQ8AcMAQsgAygCBAsaIAAgAUGAgICAeEYEf0EABSAAIC43AgggACABNgIEIABBEGogAEEEahDfAiAAKAIQQYCAgIB4RwRADBILIABBGGooAgAhASAAKAIUCyABEKYDIgY2AgAgBiAGKAIAIgFBAWo2AgACQAJAAkACQCABQQBIDQBBgc3DAC0AABpBGEEEEIQJIgNFDQEgA0EANgIMIAMgBzYCCCADQoKAgIAQNwIAIAAgAzYCEEEAEMAGIgcEQCAHIAcoAgAiAUEBajYCACABQQBIDQELIAAgBxDABiIBNgIgAkAgAUUNACABIAEoAgAiAUEBazYCACABQQFHDQAgAEEgahCZBgsgACgCECIKKAIIIgEEQCABQQhqEOMFC0GBzcMALQAAGkEkQQQQhAkiAUUNAiABIAc2AgggASADNgIEIAEgBjYC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ACgCACEBQdDRwwAgAzYCACAAIAE2AkggAUUNACABIAEoAgAiAUEBazYCACABQQFHDQAgAEHIAGoQhwYLIAApAzAiLkL/AYNCAlENAiAMIC43AgAMAwsgDEGBAjsBAAJAIA0NAEHszcMAKAIAQf////8HcUUNABDtCQ0AIAFBAToAAQsgAUEAOgAADAILIAAgACgCTDYCMCAAIABB0ABqLQAAOgA0QcTOwABBKyAAQTBqQfDOwABBhNDAABD2BAALEJgDGkHwzMAAQStBtNXAABDMBgALIABB4ABqJAALIAstAAghACAVIAsoAgw2AgQgFSAANgIAIAtBEGokACACKAIIDQMgECgCCCIAIAIoAgwiAU0NBCAbIAJBQGsiAyAGIAlBAXMiCRsiAEEIaikDADcDACACIAApAwA3A3ggAiAAKAIQNgKIASACIAApAxg3A3AgECgCBCEIIAYgAyAJGyIAKQMAIS4gACgCECELIAAoAhghAyAAQQhqKQMAIS8gACgCHCIFBEAgA0EAIAVBA3QQ5AkaCyACQZABaiAIIAFBBXRqIgAQ4gUgAigCkAEEQCACIAItAJgBOgC0ASACIAIoApQBNgKwAUG8gcAAQSsgAkGwAWpBiILAAEHIg8AAEPYEAAsgAigClAEiAS0AAkUNBSACLQCYASEIIAJBkAFqIABBBGoQ4AUgAigCkAENBiACLQCYASEMIAIoApQBIQAgAkGgAWogLzcDACACIC43A5gBIAIgCzYCqAEgAiAFNgKUASACIAM2ApABIAIgAEEUaikCADcCwAEgAiAAQQxqKQIANwK4ASACIAApAgQ3ArABIAJB2AFqIApBEGooAgA2AgAgAkHQAWogCkEIaikCADcDACACIAopAgA3A8gBIAJBkAFqIAJBsAFqIAJB8ABqIAJByAFqIAIoAmggAigCbBBRAkAgDA0AQezNwwAoAgBB/////wdxRQ0AEO0JDQAgAEEBOgABCyAAQQA6AAAgAUEAOgACAkAgCA0AQezNwwAoAgBB/////wdxRQ0AEO0JDQAgAUEBOgABCyABQQA6AAAgEkEBayISDQALIAlFDQYMBwsMGQtBvIHAAEErIAJBkAFqQeiBwABBiIPAABD2BAALQbyBwABBKyACQZABakH4gcAAQaiDwAAQ9gQACyABIABBuIPAABDABQALQdiDwABB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gAEgASADRw0AIAAgBjYCBCAAQQE2AgAgAEEIaiAHNgIADAELIAAgAjYCAAsgBEEMahD3BiAEQRBqJAAL+gECA38CfiMAQTBrIgIkACACIAE2AiggAkEYaiACQShqEO4GIAIoAighASAAAn8gAigCGEUEQCAAIAE2AgRBAQwBCyACKQMgIQUgAULAABAAIgMQASEEIANBhAFPBEAgAxACCyABQYQBTwRAIAEQAgsgAiAENgIsIAJBCGogAkEsahDuBgJAIAIoAghFBEAgAigCLCEBDAELIAIpAxAiBhADIQEgAigCLCABEAQgAUGEAU8EQCABEAILIAIoAiwhAUUNACABQYQBTwRAIAEQAgsgACAFNwMIIABBEGogBjcDAEEADAELIAAgATYCBEEBCzYCACACQTBqJAAL+gECA38CfiMAQTBrIgIkACACIAE2AiggAkEYaiACQShqEO4GIAIoAighASAAAn8gAigCGEUEQCAAIAE2AgRBAQwBCyACKQMgIQUgAULAABAAIgMQASEEIANBhAFPBEAgAxACCyABQYQBTwRAIAEQAgsgAiAENgIsIAJBCGogAkEsahDuBgJAIAIoAghFBEAgAigCLCEBDAELIAIpAxAiBhAAIQEgAigCLCABEAQgAUGEAU8EQCABEAILIAIoAiwhAUUNACABQYQBTwRAIAEQAgsgACAFNwMIIABBEGogBjcDAEEADAELIAAgATYCBEEBCzYCACACQTBqJAAL9AYCCn8FfAJAAkAgASgCACIHKAJEIgZBAXQiBQRAIAQgBCAFbiINIAVsayIEQQAgBkH/////B3EiBSAEIAVJIgwbayEGIwBBIGsiBCQAQZzGwwAtAABB/wFGBEAQ2AkLIAQgBygCRCIFNgIAIAQgAzYCBAJAAkACQAJAIAMgBUYEQCADIAZNDQEgB0EMaigCACEIIAcoAgghBSAHKAIEIQogBygCACELIAQgAzYCACADaUEBRw0CIAcoAkAhCSAEIAo2AgQgAyAKRw0DAkACQAJAAkAgCQRAIANBAWshByADIAluQQFrDgIDAgELQdDCwgBBGUH8zcIAEMwGAAsgAyAIIAMgCEkbIgNFDQIDQCALIAUoAgAgBmwgB3FBBHRqIggrAwAhDyACQQhqIAgrAwg5AwAgAiAPOQMAIAVBBGohBSACQRBqIQIgA0EBayID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AAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDPASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvuAQIFfwJ+IwBBMGsiAyQAAkACQCABKAKoASIERQ0AIAFBqAFqIQUgAkEBaiECIAFBrAFqKAIAIQYCQAJAAkACQANAIAJBAUYNASADQSBqIAQgBigCDCIHEQAAIAJBAWshAiADKAIgQQFGDQALIAJFDQEMAgsgBigCDCEHCyADQRBqIAQgBxEAACADKQMQIginDQFBACECCyAFELYHIAVBADYCAAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDNASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvrAQIFfwJ+IwBBMGsiAyQAAkACQCABKAIwIgRFDQAgAUEwaiEFIAJBAWohAiABQTRqKAIAIQYCQAJAAkACQANAIAJBAUYNASADQSBqIAQgBigCDCIHEQAAIAJBAWshAiADKAIgQQFGDQALIAJFDQEMAgsgBigCDCEHCyADQRBqIAQgBxEAACADKQMQIginDQFBACECCyAFELYHIAVBADYCAAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDQASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvrAQIFfwJ+IwBBMGsiAyQAAkACQCABKAI4IgRFDQAgAUE4aiEFIAJBAWohAiABQTxqKAIAIQYCQAJAAkACQANAIAJBAUYNASADQSBqIAQgBigCDCIHEQAAIAJBAWshAiADKAIgQQFGDQALIAJFDQEMAgsgBigCDCEHCyADQRBqIAQgBxEAACADKQMQIginDQFBACECCyAFELYHIAVBADYCAAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDXASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvtAQIFfwJ+IwBBMGsiAyQAAkACQCABKAJIIgRFDQAgAUHIAGohBSACQQFqIQIgAUHMAGooAgAhBgJAAkACQAJAA0AgAkEBRg0BIANBIGogBCAGKAIMIgcRAAAgAkEBayECIAMoAiBBAUYNAAsgAkUNAQwCCyAGKAIMIQcLIANBEGogBCAHEQAAIAMpAxAiCKcNAUEAIQILIAUQtgcgBUEANgIADAELIAMpAxghCQwBCyABKQMAQgJRBEBCACEIDAELIAMgASACENIBIAMpAwghCSADKQMAIQgLIAAgCTcDCCAAIAg3AwAgA0EwaiQAC+4BAgV/An4jAEEwayIDJAACQAJAIAEoAqgBIgRFDQAgAUGoAWohBSACQQFqIQIgAUGsAWooAgAhBgJAAkACQAJAA0AgAkEBRg0BIANBIGogBCAGKAIMIgcRAAAgAkEBayECIAMoAiBBAUYNAAsgAkUNAQwCCyAGKAIMIQcLIANBEGogBCAHEQAAIAMpAxAiCKcNAUEAIQILIAUQtgcgBUEANgIADAELIAMpAxghCQwBCyABKQMAQgJRBEBCACEIDAELIAMgASACEMwBIAMpAwghCSADKQMAIQgLIAAgCTcDCCAAIAg3AwAgA0EwaiQAC+0BAgV/An4jAEEwayIDJAACQAJAIAEoAkgiBEUNACABQcgAaiEFIAJBAWohAiABQcwAaigCACEGAkACQAJAAkADQCACQQFGDQEgA0EgaiAEIAYoAgwiBxEAACACQQFrIQIgAygCIEEBRg0ACyACRQ0BDAILIAYoAgwhBwsgA0EQaiAEIAcRAAAgAykDECIIpw0BQQAhAgsgBRC2ByAFQQA2AgAMAQsgAykDGCEJDAELIAEpAwBCAlEEQEIAIQgMAQsgAyABIAIQ0wEgAykDCCEJIAMpAwAhCAsgACAJNwMIIAAgCDcDACADQTBqJAAL7QECBX8CfiMAQTBrIgMkAAJAAkAgASgCaCIERQ0AIAFB6ABqIQUgAkEBaiECIAFB7ABqKAIAIQYCQAJAAkACQANAIAJBAUYNASADQSBqIAQgBigCDCIHEQAAIAJBAWshAiADKAIgQQFGDQALIAJFDQEMAgsgBigCDCEHCyADQRBqIAQgBxEAACADKQMQIginDQFBACECCyAFELYHIAVBADYCAAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDWASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvrAQIFfwJ+IwBBMGsiAyQAAkACQCABKAIoIgRFDQAgAUEoaiEFIAJBAWohAiABQSxqKAIAIQYCQAJAAkACQANAIAJBAUYNASADQSBqIAQgBigCDCIHEQAAIAJBAWshAiADKAIgQQFGDQALIAJFDQEMAgsgBigCDCEHCyADQRBqIAQgBxEAACADKQMQIginDQFBACECCyAFELYHIAVBADYCAAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDAASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvrAQIFfwJ+IwBBMGsiAyQAAkACQCABKAI4IgRFDQAgAUE4aiEFIAJBAWohAiABQTxqKAIAIQYCQAJAAkACQANAIAJBAUYNASADQSBqIAQgBigCDCIHEQAAIAJBAWshAiADKAIgQQFGDQALIAJFDQEMAgsgBigCDCEHCyADQRBqIAQgBxEAACADKQMQIginDQFBACECCyAFELYHIAVBADYCAAwBCyADKQMYIQkMAQsgASkDAEICUQRAQgAhCAwBCyADIAEgAhDUASADKQMIIQkgAykDACEICyAAIAk3AwggACAINwMAIANBMGokAAvuAQICfwN+IwBBQGoiAiQAAkAgASgCqAEiAwRAIAJBCGogAyABQawBaigCACgCDBEAACACKQMQIQUgAikDCCIEQv////8PgyIGQgFRDQEgAUGoAWoiAxC2ByADQQA2AgAgBkIAUg0BCwJAIAEpAwAiBEICUgRAIAEoAqABIgMNAQtCACEEDAELIAEgA0EBazYCoAECQCABKQMQQgJSBEAgAkEYaiABQRBqEGQgAikDGEIAUg0BIAFCAjcDECABKQMAIQQLIAEpAwghBQwBCyACKQMgIQVCASEECyAAIAU3AwggACAENwMAIAJBQGskAAvuAQICfwN+IwBBQGoiAiQAAkAgASgCqAEiAwRAIAJBCGogAyABQawBaigCACgCDBEAACACKQMQIQUgAikDCCIEQv////8PgyIGQgFRDQEgAUGoAWoiAxC2ByADQQA2AgAgBkIAUg0BCwJAIAEpAwAiBEICUgRAIAEoAqABIgMNAQtCACEEDAELIAEgA0EBazYCoAECQCABKQMQQgJSBEAgAkEYaiABQRBqEGMgAikDGEIAUg0BIAFCAjcDECABKQMAIQQLIAEpAwghBQwBCyACKQMgIQVCASEECyAAIAU3AwggACAENwMAIAJBQGsk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aCADIBE2AmQgAyAQNgJgIAMgDzYCXCADIA42AlggAyANNgJUIAMgCjYCUCADIAk2AkwgAyAINgJIIAMgFDYCOCADIBY5AzAgAyAMNgIcIAMgBzYCGCADIAs2AgQgAyAGNgIAIANBEGogAkEQaikDADcDACADQShqIAJBIGopAwA3AwAMAgsgAigCLCEBIANBAjYCACADIAE2AgQMAQsgAigCLCEBIANBAjYCACADIAE2AgQLIAJBQGskACAAAn4gBSgCCEECRwRAIABBCGogBUEIakH4ABDnCRpCAQwBCyAAIAUoAgw2AghCAgs3AwAMAQsgBSgCDCEBIABCAjcDACAAIAE2AggLIAVBgAFqJAAL5wECAn8DfiMAQSBrIgIkAAJAIAEoAkgiAwRAIAJBEGogAyABQcwAaigCACgCDBEAACACKQMYIQUgAikDECIEQv////8PgyIGQgFRDQEgAUHIAGoiAxC2ByADQQA2AgAgBkIAUg0BCwJAIAEpAwAiBEICUgRAIAEoAkAiAw0BC0IAIQQMAQsgASADQQFrNgJAAkAgASkDEEICUgRAIAIgAUEQahCyAyACKQMApw0BIAFCAjcDECABKQMAIQQLIAEpAwghBQwBCyACKQMIIQVCASEECyAAIAU3AwggACAENwMAIAJBIGokAAvnAQICfwN+IwBBIGsiAiQAAkAgASgCSCIDBEAgAkEQaiADIAFBzABqKAIAKAIMEQAAIAIpAxghBSACKQMQIgRC/////w+DIgZCAVENASABQcgAaiIDELYHIANBADYCACAGQgBSDQELAkAgASkDACIEQgJSBEAgASgCQCIDDQELQgAhBAwBCyABIANBAWs2AkACQCABKQMQQgJSBEAgAiABQRBqELEDIAIpAwCnDQEgAUICNwMQIAEpAwAhBAsgASkDCCEFDAELIAIpAwghBUIBIQQLIAAgBTcDCCAAIAQ3AwAgAkEgaiQAC9ABAQh/IwBBEGsiAyQAAkAgAUEUaigCACIIIAEoAhAiBUYEQEEBIQQMAQsgASAFQQN0aiEGQQEhBANAAkAgASAFQQFqIgU2AhAgBkEEaigCACEJIANBCGogByAEIAYoAgAiAiACIARJGyIEENYHIAMoAghFDQAgAygCDCECIAMgCSAEENYHIAMoAgBFDQAgAiACIAMoAgRqIgJLDQAgBkEI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BiMAQdAAayICJAACQCABKAIIIgUgASgCDEYEQEICIQgMAQsgASAFQQRqNgIIIAJBKGogBSgCABB7An4gAigCKARAIAIoAiwhASACQSUQ8AUgAigCACEHIAIoAgRBr4/BAEElEOcJIQUgAkElNgIQIAIgBTYCDCACIAc2AgggBUElEAUhBSACQQhqEP8HIAFBhAFPBEAgARACCwJAIAYoAgBFDQAgBigCBCIBQYQBSQ0AIAEQAgsgBiAFNgIEIAZBATYCAEIADAELIAJBIGogAkHIAGopAwA3AwAgAkEYaiACQUBrKQMANwMAIAJBEGogAkE4aikDADcDACACIAIpAzA3AwhCAQshCCAEIAIpAwg3AwggBEEgaiACQSBqKQMANwMAIARBGGogAkEYaikDADcDACAEQRBqIAJBEGopAwA3AwALIAQgCDcDACACQdAAaiQAIAACfgJAIAMpAygiCEICUQ0AIANBIGoiASADQcgAaikDADcDACADQRhqIgIgA0FAaykDADcDACADQRBqIgQgA0E4aikDADcDACADIAMpAzA3AwggCFANACAAIAMpAwg3AwggAEEgaiABKQMANwMAIABBGGogAikDADcDACAAQRBqIAQpAwA3AwBCAQwBC0IACzcDACADQdAAaiQAC40EAgZ/AX4jAEHQAGsiAyQAIANBKGohBCABKAIQIQYjAEHQAGsiAiQAAkAgASgCCCIFIAEoAgxGBEBCAiEIDAELIAEgBUEEajYCCCACQShqIAUoAgAQiAICfiACKAIoBEAgAigCLCEBIAJBJRDwBSACKAIAIQcgAigCBEHljsEAQSUQ5wkhBSACQSU2AhAgAiAFNgIMIAIgBzYCCCAFQSUQBSEFIAJBCGoQ/wcgAUGEAU8EQCABEAILAkAgBigCAEUNACAGKAIEIgFBhAFJDQAgARACCyAGIAU2AgQgBkEBNgIAQgAMAQsgAkEgaiACQcgAaikDADcDACACQRhqIAJBQGspAwA3AwAgAkEQaiACQThqKQMANwMAIAIgAikDMDcDCEIBCyEIIAQgAikDCDcDCCAEQSBqIAJBIGopAwA3AwAgBEEYaiACQRhqKQMANwMAIARBEGogAkEQaikDADcDAAsgBCAINwMAIAJB0ABqJAAgAAJ+AkAgAykDKCIIQgJRDQAgA0EgaiIBIANByABqKQMA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CGogASAEIANBFGoQywIgAygCDCEBIAMoAghFBEAgACAENgIAIAAgATYCBAwCCyABQYGAgIB4Rg0BIAFFDQAgASADQRBqKAIAEN8JAAsQ+wYACyADQSBqJAALyQEBA38jAEEgayICJAACQAJAIAFBAWoiAUUNAEEIIAAoAgAiBEEBdCIDIAEgASADSRsiASABQQhNGyIDQX9zQR92IQECQCAERQRAIAJBADYCGAwBCyACIAQ2AhwgAkEBNgIYIAIgACgCBDYCFAsgAkEIaiABIAMgAkEUahDLAiACKAIMIQEgAigCCEUEQCAAIAM2AgAgACABNgIEDAILIAFBgYCAgHhGDQEgAUUNACABIAJBEGooAgAQ3wkACxD7BgALIAJBIGokAAvLAQECfyMAQTBrIgUkACAFIAI2AgACQCACBEAgASgCCCIGIAJwRQ0BIAVBKGpBKTYCACAFQRBqQgI3AgAgBUEDNgIIIAVByLjAADYCBCAFQRY2AiAgBSAGNgIsIAUgBUEcajYCDCAFIAU2AiQgBSAFQSxqNgIcIAVBBGpB4LjAABD8BgALQYCgwABBOUHAt8AAEMwGAAsgACADNwMAIAAgAjYCECAAIAQ3AwggACABKQIANwIUIABBHGogAUEIaigCADYCACAFQTBqJAAL6wEDAX8BfAF+IwBBMGsiAyQAIAEoAgBFBEAgAyAAIAErAwggAUEQaisDABDmAiADKwMAIgQgBBCGCKEgArqiEIYIIgREAAAAAAAA4MNmIQACfiAEmUQAAAAAAADgQ2MEQCAEsAwBC0KAgICAgICAgIB/CyEFIANBMGokACACQv///////////wAgBUKAgICAgICAgIB/IAAbIARE////////30NkG0IAIAQgBGEbIgJCP4eDIAJ8DwsgA0EgakIANwIAIANBATYCGCADQfjGwQA2AhQgAyADQSxqNgIcIANBFGpBsMfBABD8BgALqwEBAX8gAAJ/AkACfwJAAkAgAQRAIAJBAEgNASADKAIEBEAgA0EIaigCACIEBEAgAygCACAEIAEgAhCNCAwFCwsgAkUNAkGBzcMALQAAGiACIAEQhAkMAwsgAEEANgIEIABBCGogAjYCAAwDCyAAQQA2AgQMAgsgAQsiAwRAIAAgAzYCBCAAQQhqIAI2AgBBAAwCCyAAIAE2AgQgAEEIaiACNgIA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MGokACAIKAIIIQECQCAIKAIYIgJBgICAgHhHBEAgACAIKQIMNwIEIABBDGogCEEUaigCADYCACAAQRRqIAhBHGpBJBDnCRogACACNgIQDAELIABBgYCAgHg2AhALIAAgATYCAAsgCEFAayQAC8IEAgl/A34jAEEwayICJAAgAkEANgIEIAJBIGogAUEIaikCADcDACACIAEpAgA3AxggAiACQQRqNgIoIAJBDGohByMAQUBqIgEkACABQRhqIAJBGGoiAxD9AgJAIAEpAxhQBEAgB0EANgIIIAdCgICAgIABNwIAIAMQ5wUMAQsgARDMBSABQShqIgUpAwAhCyABQTBqKQMAIQwgAUE4aikDACENIAEoAgAhBiABKAIEIgQgASkDIDcDACAEQRhqIA03AwAgBEEQaiAMNwMAIARBCGogCzcDACABQRRqIgpBATYCACABIAQ2AhAgASAGNgIMIAUgA0EQaigCADYCACABQSBqIANBCGopAgA3AwAgASADKQIANwMYIwBBMGsiAyQAIANBCGogAUEYaiIJEP0CIAMpAwhQRQRAIAFBDGohBCADQRBqIQUDQCAEKAIIIgYgBCgCAEYEQCAEIAYQqQYLIAQoAgQgBkEFdGoiCCAFKQMANwMAIAhBGGogBUEYaikDADcDACAIQRBqIAVBEGopAwA3AwAgCEEIaiAFQQhqKQMANwMAIAQgBkEBajYCCCADQQhqIAkQ/QIgAykDCFBFDQALCyAJEOcFIANBMGokACAHQQhqIAooAgA2AgAgByABKQIMNwIACyABQUBrJAACQCACKAIERQRAIAAgAikCDDcCACAAQQhqIAJBFGooAgA2AgAMAQsgACACKAIINgIEIABBgICAgHg2AgAgAigCDEUNACACKAIQEGsLIAJBMGokAAvCBAIJfwN+IwBBMGsiAiQAIAJBADYCBCACQSBqIAFBCGopAgA3AwAgAiABKQIANwMYIAIgAkEEajYCKCACQQxqIQcjAEFAaiIBJAAgAUEYaiACQRhqIgMQ/AICQCABKQMYUARAIAdBADYCCCAHQoCAgICAATcCACADEOcFDAELIAEQzAUgAUEoaiIFKQMAIQsgAUEwaikDACEMIAFBOGopAwAhDSABKAIAIQYgASgCBCIEIAEpAyA3AwAgBEEYaiANNwMAIARBEGogDDcDACAEQQhq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CGoiBCgCRCILQf8BTQRAIAJB2ABqIgVB4JnAACkDACIhNwMAIAJB0ABqIgxB2JnAACkDACIiNwMAIAJByABqIhFB0JnAACkDACIjNwMAIAJByJnAACkDACIkNwNAIAJBQGsiDSALEMoCIAJBOGoiCyAFKQMANwMAIAJBMGoiDiAMKQMANwMAIAJBKGoiEiARKQMANwMAIAIgAikDQDcDICAFICE3AwAgDCAiNwMAIBEgIzcDACACICQ3A0AgAkEgaiANEKsBIAJBGGogCykDADcDACACQRBqIA4pAwA3AwAgAkEIaiASKQMANwMAIAIgAikDIDcDACAFIARBGGopAwA3AwAgDCAEQRBqKQMANwMAIBEgBEEIaikDADcDACACIAQpAwA3A0ADQCACQUBrIAhqIgQgBCkDACACIAhqKQMAgzcDACAIQQhqIghBIEcNAAsgByACKQNANwMAIAdBGGogAkHYAGopAwA3AwAgB0EQaiACQdAAaikDADcDACAHQQhqIAJByABqKQMANwMADAELIAcgBCkDADcDACAHQRhqIARBGGopAwA3AwAgB0EQaiAEQRBqKQMANwMAIAdBCGogBEEIaikDADcDAAsgAkHgAGokAAsgA0HwAGokACAGRQ0BIBNBgAFqIQtBACENIwBBgAFrIgQkAAJAIAogBmdBH3NsIhZB/wFNBEAgBEH4AGoiAiALQRhqKQMANwMAIARB8ABqIgMgC0EQaikDADcDACAEQegAaiIHIAtBCGopAwA3AwAgBCALKQMANwNgIARB4ABqIBZBAWtBARDkASAEQdgAaiACKQMANwMAIARB0ABqIAMpAwA3AwAgBEHIAGogBykDADcDACAEIAQpA2A3A0ADQCAEQUBrIA1qIgIgAikDACANQcjKwQBqKQMAgzcDACANQQhqIg1BIEcNAAsgBEEYaiAEQdgAaiIXKQMANwMAIARBEGogBEHQAGoiGCkDADcDACAEQQhqIARByABqIhkpAwA3AwAgBCAEKQNANwMAQQAhDSAEQfgAaiIaQfjLwQApAwA3AwAgBEHwAGoiG0Hwy8EAKQMANwMAIARB6ABqIhxB6MvBACkDADcDACAEQeDLwQApAwA3A2BBACECIwBBgAFrIgMkACAEQZCLwQAQuQNBAWpB/wFxQQJPBEAgA0EYaiAEQRhqIgIpAwA3AwAg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E0EQahD0BSEBQQAMAQtBASElIBMoAhALIQIgACAlNgIIIAAgAjYCBCAAIAE2AgAgE0HQAWokAAvvEgIafwN+IwBBwAJrIg8kAAJAIAEEQCABKAIAIhNBf0YNAUEBIRcgASATQQFqNgIAIA9BCGohFCMAQcACayINJAAgDUEIaiEYIwBBwAJrIgwkACAMQQhqIgcgAUEIaiIFENsFAn9B8ABB9AAgDCkDCFAbIAdqLQAIBEAgDEEIaiMAQcACayIHJAACQAJAQQBBkN7AACgCABEFACIQBEAgECgCAA0BIBBBfzYCACAQQQhqIQ4jAEHAAWsiAyQAAkAgBRDhBSIaRQRAIANBCGogBUGUAmooAgAgBUGYAmooAgAQlAYgAygCDCECIAMoAgghBAJAAkACQEICIAUpAwBCAn0iHCAcQgJaGyIcp0EBaw4CAQIACyADQUBrIAVBCGpBgAEQ5wkaIANBOGogA0HwAGopAwA3AwAgA0EwaiADQegAaikDADcDACADIANB4ABqKQMANwMoDAMLIANBOGogBUEwaikDADcDACADQTBqIAVBKGopAwA3AwAgAyAFQSBqKQMANwMoDAILIANBOGogBUEwaikDADcDACADQTBqIAVBKGopAwA3AwAgAyAFQSBqKQMANwMoDAELIAMgBUGkAmooAgAgBUGoAmooAgAQlAYgAygCBCECIAMoAgAhBAJAAkACQEICIAUpAwBCAn0iHCAcQgJaGyIcp0EBaw4CAQIACyADQUBrIAVBCGpBgAEQ5wkaIANBOGogA0HYAGopAwA3AwAgA0EwaiADQdAAaikDADcDACADIAMpA0g3AygMAgsgA0E4aiAFQRhqKQMANwMAIANBMGogBUEQaikDADcDACADIAUpAwg3AygMAQsgA0E4aiAFQRhqKQMANwMAIANBMGogBUEQaikDADcDACADIAUpAwg3AygLIANBGGogA0EwaikDADcDACADQSBqIANBOGopAwA3AwAgAyAENgJAIAMgAykDKDcDECADIAI2AkQgB0GQAmohESADQUBrIRIgAkEGdEHAAWohAiADQRBqIRsCfwJAAkACQCAcp0EBaw4CAQIACyAFQcgAagwCCyAFQdAAagwBCyAFQUBrCyIEKQMAIRwgBEEIaikDACEdIwBBQGoiCCQAIAhBCGogAiASKAIEQQFqIgZs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IANBQGsgBUEIakGAARDnCRogA0E4aiADQfAAaikDADcDACADQTBqIANB6ABqKQMANwMAIAMgA0HgAGopAwA3AygMAwsgA0E4aiAFQTBqKQMANwMAIANBMGogBUEoaikDADcDACADIAVBIGopAwA3AygMAgsgA0E4aiAFQTBqKQMANwMAIANBMGogBUEoaikDADcDACADIAVBIGopAwA3AygMAQsgAyAFQaQCaigCACAFQagCaigCABCUBiADKAIEIQIgAygCACEIAkACQAJAQgIgBSkDAEICfSIcIBxCAlobIhynQQFrDgIBAgALIANBQGsgBUEIakGAARDnCRogA0E4aiADQdgAaikDADcDACADQTBqIANB0ABqKQMANwMAIAMgAykDSDcDKAwCCyADQThqIAVBGGopAwA3AwAgA0EwaiAFQRBqKQMANwMAIAMgBSkDCDcDKAwBCyADQThqIAVBGGopAwA3AwAgA0EwaiAFQRBqKQMANwMAIAMgBSkDCDcDKAsgA0EYaiADQTBqKQMANwMAIANBIGogA0E4aikDADcDACADIAg2AkAgAyADKQMoNwMQIAMgAjYCRCAKQZACaiEZIANBQGshCCACQQZ0QcABaiEEIANBEGohGgJ/AkACQAJAIBynQQFrDgIBAgALIAVByABqDAILIAVB0ABqDAELIAVBQGsLIgIpAwAhHCACQQhqKQMAIR1BwARqIQxBACECIwBB0ABrIgkkACAIKAIEIAlCADcDGCAJQgA3AxADQCAJQRBqIAJqIAwQ1QY6AAAgAkEBaiICQRBHDQALIAkpAxghHiAJKQMQIR8gCUEIaiAEQQEQzgUgCSAENgJMIAkgCSkDCDcCRCAJQRBqIQcgCUHEAGohBkEBaiELIwBBIGsiAiQAAkACQCAcIB2EUEUgHHsgHXt8QgJacUUEQCAGKAIIRQ0BIwBBIGsiBCQAIBwgHYRQIBx7IB17fEICVHJFBEAgBEEUakIANwIAIARBATYCDCAEQei9wAA2AgggBEH8n8AANgIQIARBCGpB3MXAABD8BgALIAcgHDcDECAHIB83AwAgByALNgIgIAdBGGogHTcDACAHIB43AwggByAGKQIANwIkIAdBLGogBkEIaigCADYCACAEQSBqJAAgAkEgaiQADAILIAJBFGpCADcCACACQQE2AgwgAkHg3MAA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ADcDkARQDQYgHCkDACE+IAMpA6gEIT8gAykDmAQhQCADKALEBCEmIAspAwALIT0gAygCwAQhCSADKAK8BCENIAMoArgEIQogA0HICWogPTcDACADQbgJaiA+NwMAIAMgPzcDwAkgAyBANwOwCSADICY2AtwJIAMgCTYC2AkgAyANNgLUCSADIAo2AtAJIAMgBTYCrAkgAyAINgKoCSADQZgOaiADQagJaiADKALwBBEAACADKAKYDiITRQ0FIANB4AxqIAdBNBDnCRogAygC+AQiHSADKAL8BEYNBSADIB1BCGo2AvgEIANBrAxqIANB4AxqQTQQ5wkaIANBqAlqIBIQigMgAygC4AoiHkUNBSADQZgOaiADQagJaiIKQbgBEOcJGiADKALkCiEFIAogFBCKAyADKALgCiIRRQRAIB4QawwGCyADQbAGaiIIIANBqAlqIh9BuAEQ5wkaIAMoAuQKIQkgA0HgDGoiCiADQZgOaiINQbgBEOcJGiAPIApBuAEQ5wkhCiAHIANBrAxqQTQQ5wkaIAMgEzYCmA4gHSkDACE9IB8gCkG4ARDnCRogAyAFNgLkCiADIB42AuAKIA4gCEG4ARDnCRogAyAJNgKkDCADIBE2AqAMIAQgDSA9ICIgHxBGIAMoAuAKEGsgAygCoAwQayADKALcBCINIAMoAuAEIgVPDQALDAQLIAMgCjYC7AcgBhCDByEAIANBDGpBzgA2AgAgA0G0CWpCAjcCACADQc4ANgIEIAMgADYCkAQgA0EDNgKsCSADQdycwQA2AqgJIAMgA0GQBGo2AgggAyADQewHajYCACADIAM2ArAJIANBqAlqQYigwQAQ/AYACyAEENgHIQAgA0EMakHPADYCACADQbQJakICNwIAIAMgAEEBajYC7AcgA0HPADYCBCADQQM2AqwJIANBvJ7BADYCqAkgAyAGKAIgNgKQBCADIANBkARqNgIIIAMgA0HsB2o2AgAgAyADNgKwCSADQagJakGYoMEAEPwGAAsgA0EMakHNADYCACADQbQJakICNwIAIAMgDTYC7AcgA0EDNgKsCSADQfCfwQA2AqgJIANBzQA2AgQgAyAKNgKQBCADIAM2ArAJIAMgA0GQBGo2AgggAyADQewHajYCACADQagJakGooMEAEPwGAAsgAyADLQCoCToAkARB0JPBAEErIANB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DAELIAgoAgghASAAQgU3AwAgACABNgIICyAIQZACaiQAC48BAgN/AX4jAEEgayICJAAgASgCAEGAgICAeEYEQCABKAIMIQMgAkEcaiIEQQA2AgAgAkKAgICAEDcCFCACQRRqQZztwgAgAxBsGiACQRBqIAQoAgAiAzYCACACIAIpAhQiBTcDCCABQQhqIAM2AgAgASAFNwIACyAAQaj4wgA2AgQgACABNgIAIAJBIGokAAuNAgEDfyMAQTBrIgUkACAFIAE2AgwgAWlBAUcEQCAFQRxqQgE3AgAgBUECNgIUIAVBvJTAADYCECAFQRY2AiwgBSAFQShqNgIYIAUgBUEMajYCKCAFQRBqQcyUwAAQ/AYACyAFQRBqIgYgAUEBdBCeBCMAQTBrIgQkACAGKAIIIgFpQQFHBEAgBEEUakIBNwIAIARBATYCDCAEQZyTwAA2AgggBEEWNgIoIAQgATYCLCAEIARBJGo2AhAgBCAEQSxqNgIkIARBCGpB3JPAABD8BgALIARBEGogBkEIaigCADYCACAEIAYpAgA3AwggACAEQQhqIAFBAXYgAiADEJYCIARBMGokACAFQTBqJAALiwECAn8BfiMAQSBrIgIkACABIABBGGoQpQQiA0UEQCACIAA1AhA3AwggASgCECgCACACQQhqIgNBCBCLCSACIAA1AhQ3AwggASgCECgCACADQQgQiwkgACkDACEEIAIgAEEIaikDADcDECACIAQ3AwggAkHAADYCGCADIAEQkAYhAwsgAkEgaiQAIAMLjgEBBn8jAEEQayIDJAAgASgCACIFRQRAQZSKwABBK0GEisAAEMwGAAsgASgCDCEGIAEoAhAhByABKAIIIQQgASgCBCEIIANBCGogAUEcaigCADYCACADIAEpAhQ3AwAgACAFKAIAIAgoAgBrIAIgBCgCACAEKAIEIAYgByADEHYgAUEgahDMByADQRBqJAALjgEBBn8jAEEQayIDJAAgASgCACIFRQRAQZSKwABBK0GEisAAEMwGAAsgASgCDCEGIAEoAhAhByABKAIIIQQgASgCBCEIIANBCGogAUEcaigCADYCACADIAEpAhQ3AwAgACAFKAIAIAgoAgBrIAIgBCgCACAEKAIEIAYgByADEHcgAUEgahDMByADQRBqJAALfgEBfyMAQUBqIgIkACACQczfwAA2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IQogAygCICEUIAhFDQIgCiAIQQN0IgRqIRUgCiECA0AgAiANENUGrUIBgzcDACACQQhqIQIgBEEIayIEDQALIAMgBSkDACIdNwNIIAMgBUEIaikDACIeNwNQIANB2ABqIAkgHSAeEJwFIANB+ABqIAcpAwAgB0EIaikDABDOAyAdeyAee3whISADQfAAaigCACIQQQN0IhZBCGshFyADQewAaigCACIJIBBBAWsiEUEDdGohGCAHQShqKAIAIQ4gA0HIAmohGUIBISAgCCENIAohBwNAIA1FICCnRXINBSAZIBw3AwAgAyAfNwPAAiADQQE2ArwCIAMgDjYCuAIgA0EIaiADQbgCahCRByADKAIYIhpFDQUgEEUNBCAIQQFrIg8gCEshGyAHKQMAISMgA0H4AGogCSARIB0gHhC1BgJAICFCAVINACADQcgAakGEq8EAEIsDISQgEUUNACAXIQQgCSECA0AgAiACKQMAICR+NwMAIAJBCGohAiAEQQhrIgQNAAsLIAdBCGohB0EAIA8gGxsgIEIAIAhBAUsbISAgDUEBayENIA5BCGohDiAYIBopAwA3AwAgFiEEIAkhAgNAIAIgAikDACAjfjcDACACQQhqIQIgBEEIayIEDQALIAUgA0HYAGoQ4AYhCCAHIBVHDQALDAQLIANB1ABqQSw2AgAgAyAcNwPAAiADIB83A7gCIANCAjcChAEgA0EDNgJ8IANBuKnBADYCeCADQSw2AkwgAyAdNwNgIAMgHjcDWCADIANByABqNgKAASADIANB2ABqNgJQIAMgA0G4Amo2AkggA0EoaiADQThqIANB+ABqQeSqwQAQhQcACyADQeQAakHOADYCACADQYQBakICNwIAIAMgCUEBazYCSCADQQM2AnwgA0G8qsEANgJ4IANBzgA2AlwgAyACQQFrNgK4AiADIANB2ABqNgKAASADIANBuAJqNgJgIAMgA0HIAGo2AlggA0H4AGpB9KrBABD8BgALIANB2ABqIAkgHiAdEJwFIANB+ABqIAcpAwAgB0EIaikDABDOAwwBC0H/oMAAQStB7LbAABDMBgALIAUgIhDhBiADKAKwAhBrIAMoAmgEQCADQewAaigCABBrCyAUBEAgChBrCyADQdACaiQAIAYgEiATbCAMbjYCLCAGIAw2AiggBkEBNgIkIAYgDEEBazYC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aikDADcDACACIAFBIGopAwA3A0gMAgsgAkHYAGogAUEwaikDADcDACACQdAAaiABQShqKQMANwMAIAIgAUEgaikDADcDSAwBCyACIAFBpAJqKAIAIAFBqAJqKAIAEJQGIAIoAgQhAyACKAIAIQUCQAJAAkBCAiABKQMAIhFCAn0iECAQQgJaG6dBAWsOAgECAAsgAkHgAGogAUEIakGAARDnCRogAkHYAGogAkH4AGopAwA3AwAgAkHQAGogAkHwAGopAwA3AwAgAiACKQNoNwNIDAILIAJB2ABqIAFBGGopAwA3AwAgAkHQAGogAUEQaikDADcDACACIAEpAwg3A0gMAQsgAkHYAGogAUEYaikDADcDACACQdAAaiABQRBqKQMANwMAIAIgASkDCDcDSAsgAkEYaiACQdAAaikDADcDACACQSBqIAJB2ABqKQMANwMAIAIgBTYCYCACIAIpA0g3AxAgAiADNgJkIAJBKGohCSACQeAAaiELIAJBEGohDiMAQSBrIgUkAAJAAn8CQAJAAkBCAiABKQMAQgJ9IhAgEEICWhunIgZBAWsOAgECAAsgAUH0AGohAyABQfgAagwCCyABQYwBaiEDIAFBkAFqDAELIAFB7ABqIQMgAUHwAGoLKAIAIAMoAgBsIgMEQCAHBEAgBSALKAIEQQFqAn8CQAJAAkAgBkEBaw4CAQIACyABQcgAagwCCyABQdAAagwBCyABQUBrCyIGKQMAIAZBCGopAwAQnAVCgICAgICAgICAfyADrYAgEiAHrYJ+IRAjAEFAaiIDJAACQAJAIAVBGGooAgAiCkEBayIGIAsoAgQiD0YEQCAKRQ0BIAVBFGooAgAhCiAFKQMAIRIgA0EgaiAFQQhqKQMAIhM3AwAgAyASNwMYIAMgCjYCECADIAY2AhQgAyATNwMwIAMgEjcDKCADIAogBkEDdGo2AjggCyADQRBqIANBKGogECAOIAwQ2wEgA0FAayQADAILIANBHGpBzgA2AgAgA0E0akICNwIAIAMgBjYCCCADQQM2AiwgA0HYpsEANgIoIANBzgA2AhQgAyAPNgIMIAMgA0EQajYCMCADIANBDGo2AhggAyADQQhqNgIQIANBKGpB8KbBABD8BgALQf+gwABBK0HstsAAEMwGAAsgCUEYaiAFQRhqKQMANwMAIAlBEGogBUEQaikDADcDACAJQQhqIAVBCGopAwA3AwAgCSAFKQMANwMAIAVBIGokAAwCC0Hg+MAAQTlBoPrAABDMBgALQdD5wABBGUGQ+sAAEMwGAAsCQCAHBEACfwJAAkACQEICIBFCAn0iESARQgJaG6dBAWsOAgECAAsgAUH0AGohAyABQfgAagwCCyABQYwBaiEDIAFBkAFqDAELIAFB7ABqIQMgAUHwAGoLIQEgBCACKQMoNwMAIAQgDToAMCAEIAc2AiggBEEBNgIkIAQgB0EBazYCICAEQQhqIAJBMGopAwA3AwAgBEEQaiACQThqKQMANwMAIARBGGogAkFAaykDADcDACAEIAMoAgAgASgCAGwgB242AiwgAkHgAWokAAwBC0HQ+cAAQRlBsPrAABDMBgALIAggCCgCAEEBajYCACAEKAIQQYCAgIB4Rw0CC0HChsAAQcYAIARBP2pBiIfAAEHoh8AAEPYEAAsQsgYACyAAIARBOBDnCRogBEFAayQAC34BAn8jAEEQayICJAAgASgCBCEDIAIgACABKAIIIgEQ6QUgAigCBCEAIAIoAgBFBEAgAQRAIAFBA3QhASAAKAIQIQADQCACIAMpAwA3AwggACgCACACQQhqQQgQiwkgA0EIaiEDIAFBCGsiAQ0ACwtBACEACyACQRBqJAAgAAueBQIKfwJ+IwBB0ANrIgUkACAFQQhqIAEQ0gYgBSgCDCEIIAVBEGohByAFKAIIIQEjAEHAA2siBiQAIwBB4ANrIgQkACAEQcgDaiACEJECAn8gBCgCyAMEQCAEKALMAyEBQfSFwABBHBAFIQMgAUGEAU8EQCABEAILIAQgAzYCEEEEIQFBAAwBCyAEQQhqIQkgBCkD0AMhDSAEQdgDaikDACEOIwBB8AlrIgMkAAJAAkACQCABQewAaigCAEECaw4DAAEAAQsgA0EIaiIKIA0gDhDOAyADQcgBaiILIApBmITCABCbAiADQegHaiABQYABEOcJGiADQgI3A+AHIAkgCyADQeAHahCiAiADQYAGaigCABBrIAMoAoADEGsgA0HABGooAgAQayADQcAHaigCABBrIANByAdqEP8HIAMoAtQHBEAgA0HYB2ooAgAQawsgCUGwAmogAUGAAWpBkAEQ5wkaIAMoAsABEGsgA0HwCWokAAwBCyADQdQBakIANwIAIANBATYCzAEgA0GIhcIANgLIASADQbDwwQA2AtABIANByAFqQZCFwgAQ/AYACyAEKAIIIQEgBCgCDAshAyAGQQhqIARBEGpBuAMQ5wkaIAYgAzYCBCAGIAE2AgAgBEHgA2okAAJAIAYpAwBCBVIEQCAHIAZBwAMQ5wkaDAELIAZBDGooAgAhASAGKAIIIQNBpI3CAEEQEAUhBCAHQgQ3AwAgByAENgIIIAMgASgCABEBACABKAIERQ0AIAEoAggaIAMQawsgBkHAA2okACAIIAgoAgBBAWs2AgACfyAFKQMQQgRSBEAgBUEQahDzBSECQQAMAQtBASEMIAUoAhgLIQEgACAMNgIIIAAgATYCBCAAIAI2AgAgBUHQA2okAAuFAQICfwF+IwBBIGsiAiQAIAEgAEEYahD3BCIDRQRAIAIgADUCEDcDCCABKAIAIAJBCGoiA0EIEIsJIAIgADUCFDcDCCABKAIAIANBCBCLCSAAKQMAIQQgAiAAQQhqKQMANwMQIAIgBDcDCCACQcAANgIYIAMgARCfBiEDCyACQSBqJAAgAwuCAQEDfyMAQRBrIgIkACACQgA3AwggAAJ/IAEoAgQiA0EITwRAIAJBCGpBCCABKAIAIgRBCEGw2MAAEN4HIAEgA0EIazYCBCABIARBCGo2AgAgACACKwMIOQMIQQAMAQsgAkKBygA3AwggACACQQhqELsHNgIEQQELNgIAIAJBEGokAAuAAQECfyMAQTBrIgIkACACIAE2AgQgAkEEahDmBSEBIAJBEGpCADcDACACQgA3AwggAiABNgIYIAJBJGogAkEIahDQBSACKAIsIgEgAigCKEkEQCACQSRqIAEQ3QcgAigCLCEBCyACKAIkIQMgACABNgIEIAAgAzYCACACQTBqJAALvwsCEn8CfiMAQSBrIgkkACAJQQhqIAIQ0gYgCSgCDCERIAlBFGohDiAJKAIIIQIjAEEQayILJAAgC0EEaiEPIwBBMGsiBiQAIAZBCGogARCRAgJ/AkAgBigCCARAIAYoAgwhAiAGQSUQ8AUgBigCACEFIAYoAgRB4ITAAEElEOcJIQMgBkElNgIsIAYgAzYCKCAGIAU2AiQgA0ElEAUhAyAGQSRqEP8HIAJBhAFJDQEgAhACDAELIAYpAxAhFSAGQRhqKQMAIRYjAEGAAWsiCCQAIAggAhDbBSAIQewAaigCABCdByEDIwBBgAFrIg0kACANQQhqIgUgFSAWAn8CQAJAAkBCAiACKQMAQgJ9IhUgFUICWhunQQFrDgIBAgALIAJB9ABqDAILIAJBjAFqDAELIAJB7ABqCygCACADEJ8FIA0gAjYCdCANIA1B/wBqNgJwIwBBsAFrIgMkAAJAAkACQAJAAkAgBSgCYCIERQ0AIAUgBEEBazYCYAJ+AkAgBSkDEEICUgRAIANBEGogBUEQaiIEEN4BIAMpAxCnDQEgBEICNwMACyAFKQMAUA0CIAUpAwgMAQsgAykDGAshFSAFQewAaigCACEEIAMgFTcDqAEgA0E4aiAEIANBqAFqEKQEIAMoAkhBgICAgHhHDQELIAhBADYCCCAIQoCAgICAATcCAAwBCyADQQhqQQQgBSgCYCIHBH8gBSkDACEVAkAgBSkDEEICUQRAQX9BACAVQgBSGyEEDAELIBVQBEAgBSgCWCIERQ0EIAQgBSgCXE0hBAwBC0F/IQQgBSgCWEUNAwsgBCAHIAQgB0kbBUEAC0EBaiIEQX8gBBsiBCAEQQRNGxDJBSADKAIIIQcgAygCDCADQThqIgRBOBDjCSEMIANBNGoiE0EBNgIAIAMgDDYCMCADIAc2AiwgBCAFQfAAEOcJGiADQSxqIQwjAEHgAGsiBSQAAkAgBCgCYCIHRQ0AIARBEGohEgNAIAQgB0EBazYCYAJ+AkAgBCkDEEICUgRAIAVBCGogEhDeASAFKQMIpw0BIBJCAjcDAAsgBCkDAFANAyAEKQMIDAELIAUpAxALIRUgBCgCbCEHIAUgFTcDWCAFQSBqIAcgBUHYAGoQpAQgBSgCMEGAgICAeEYNASAEKAJgIQcgDCgCCCIQIAwoAgBGBEAgDCAQIAcEfyAEKQMAIRUCQCAEKQMQQgJRBEBBf0EAIBVCAFIbIQoMAQsgFVAEQCAEKAJYIgpFDQcgCiAEKAJcTSEKDAELQX8hCiAEKAJYRQ0GCyAKIAcgByAKSxsFQQALQQFqIgpBfyAKGxCoBgsgDCgCBCAQQThsaiAFQSBqQTgQ5wkaIAwgEEEBajYCCCAHDQALCyAFQeAAaiQAIAhBCGogEygCADYCACAIIAMpAiw3AgALIANBsAFqJAAMAQtB4I/AAEEZQeyYwAAQzAYACyANQYABaiQAIAZBCGoiA0EANgIAIANBDGogCEEIaigCADYCACADIAgpAwA3AgQgCEGAAWokACAGKAIIRQRAIAZBFGooAgAhAiAGQRBqKAIAIQMgBigCDAwCCyAGKQIMIRUgBiAGQRRqKAIANgIQIAYgFTcDCCAGQQhqEKAFIQMLQYCAgIB4CyEFIA8gAjYCCCAPIAM2AgQgDyAFNgIAIAZBMGokAAJAIAsoAgRBgYCAgHhHBEAgDiALKQIENwIAIA5BCGogC0EMaigCADYCAAwBCyALQQxqKAIAIQIgCygCCCEGQaSNwgBBEBAFIQMgDkGAgICAeDYCACAOIAM2AgQgBiACKAIAEQEAIAIoAgRFDQAgAigCCBogBhBrCyALQRBqJAAgESARKAIAQQFrNgIAAn8gCSgCFEGAgICAeEcEQCAJQRRqENYGIQFBAAwBC0EBIRQgCSgCGAshAiAAIBQ2AgggACACNgIEIAAgATYCACAJQSBqJAALvwsCEn8CfiMAQSBrIgkkACAJQQhqIAIQ0gYgCSgCDCERIAlBFGohDiAJKAIIIQIjAEEQayILJAAgC0EEaiEPIwBBMGsiBiQAIAZBCGogARCRAgJ/AkAgBigCCARAIAYoAgwhAiAGQSUQ8AUgBigCACEFIAYoAgRB4ITAAEElEOcJIQMgBkElNgIsIAYgAzYCKCAGIAU2AiQgA0ElEAUhAyAGQSRqEP8HIAJBhAFJDQEgAhACDAELIAYpAxAhFSAGQRhqKQMAIRYjAEGAAWsiCCQAIAggAhDcBSAIQewAaigCABCdByEDIwBBgAFrIg0kACANQQhqIgUgFSAWAn8CQAJAAkBCAiACKQMAQgJ9IhUgFUICWhunQQFrDgIBAgALIAJB9ABqDAILIAJBjAFqDAELIAJB7ABqCygCACADEJ8FIA0gAjYCdCANIA1B/wBqNgJwIwBBsAFrIgMkAAJAAkACQAJAAkAgBSgCYCIERQ0AIAUgBEEBazYCYAJ+AkAgBSkDEEICUgRAIANBEGogBUEQaiIEEN4BIAMpAxCnDQEgBEICNwMACyAFKQMAUA0CIAUpAwgMAQsgAykDGAshFSAFQewAaigCACEEIAMgFTcDqAEgA0E4aiAEIANBqAFqEKMEIAMoAkhBgICAgHhHDQELIAhBADYCCCAIQoCAgICAATcCAAwBCyADQQhqQQQgBSgCYCIHBH8gBSkDACEVAkAgBSkDEEICUQRAQX9BACAVQgBSGyEEDAELIBVQBEAgBSgCWCIERQ0EIAQgBSgCXE0hBAwBC0F/IQQgBSgCWEUNAwsgBCAHIAQgB0kbBUEAC0EBaiIEQX8gBBsiBCAEQQRNGxDJBSADKAIIIQcgAygCDCADQThqIgRBOBDjCSEMIANBNGoiE0EBNgIAIAMgDDYCMCADIAc2AiwgBCAFQfAAEOcJGiADQSxqIQwjAEHgAGsiBSQAAkAgBCgCYCIHRQ0AIARBEGohEgNAIAQgB0EBazYCYAJ+AkAgBCkDEEICUgRAIAVBCGogEhDeASAFKQMIpw0BIBJCAjcDAAsgBCkDAFANAyAEKQMIDAELIAUpAxALIRUgBCgCbCEHIAUgFTcDWCAFQSBqIAcgBUHYAGoQowQgBSgCMEGAgICAeEYNASAEKAJgIQcgDCgCCCIQIAwoAgBGBEAgDCAQIAcEfyAEKQMAIRUCQCAEKQMQQgJRBEBBf0EAIBVCAFIbIQoMAQsgFVAEQCAEKAJYIgpFDQcgCiAEKAJcTSEKDAELQX8hCiAEKAJYRQ0GCyAKIAcgByAKSxsFQQALQQFqIgpBfyAKGxCoBgsgDCgCBCAQQThsaiAFQSBqQTgQ5wkaIAwgEEEBajYCCCAHDQALCyAFQeAAaiQAIAhBCGogEygCADYCACAIIAMpAiw3AgALIANBsAFqJAAMAQtB4I/AAEEZQeyYwAAQzAYACyANQYABaiQAIAZBCGoiA0EANgIAIANBDGogCEEIaigCADYCACADIAgpAwA3AgQgCEGAAWokACAGKAIIRQRAIAZBFGooAgAhAiAGQRBqKAIAIQMgBigCDAwCCyAGKQIMIRUgBiAGQRRqKAIANgIQIAYgFTcDCCAGQQhqEKAFIQMLQYCAgIB4CyEFIA8gAjYCCCAPIAM2AgQgDyAFNgIAIAZBMGokAAJAIAsoAgRBgYCAgHhHBEAgDiALKQIENwIAIA5BCGogC0EMaigCADYCAAwBCyALQQxqKAIAIQIgCygCCCEGQaSNwgBBEBAFIQMgDkGAgICAeDYCACAOIAM2AgQgBiACKAIAEQEAIAIoAgRFDQAgAigCCBogBhBrCyALQRBqJAAgESARKAIAQQFrNgIAAn8gCSgCFEGAgICAeEcEQCAJQRRqENYGIQFBAAwBC0EBIRQgCSgCGAshAiAAIBQ2AgggACACNgIEIAAgATYCACAJQSBqJAALvwsCEn8CfiMAQSBrIgkkACAJQQhqIAIQ0gYgCSgCDCERIAlBFGohDiAJKAIIIQIjAEEQayILJAAgC0EEaiEPIwBBMGsiBiQAIAZBCGogARCRAgJ/AkAgBigCCARAIAYoAgwhAiAGQSUQ8AUgBigCACEFIAYoAgRB4ITAAEElEOcJIQMgBkElNgIsIAYgAzYCKCAGIAU2AiQgA0ElEAUhAyAGQSRqEP8HIAJBhAFJDQEgAhACDAELIAYpAxAhFSAGQRhqKQMAIRYjAEGAAWsiCCQAIAggAhDeBSAIQewAaigCABCdByEDIwBBgAFrIg0kACANQQhqIgUgFSAWAn8CQAJAAkBCAiACKQMAQgJ9IhUgFUICWhunQQFrDgIBAgALIAJB9ABqDAILIAJBjAFqDAELIAJB7ABqCygCACADEJ8FIA0gAjYCdCANIA1B/wBqNgJwIwBBsAFrIgMkAAJAAkACQAJAAkAgBSgCYCIERQ0AIAUgBEEBazYCYAJ+AkAgBSkDEEICUgRAIANBEGogBUEQaiIEEN4BIAMpAxCnDQEgBEICNwMACyAFKQMAUA0CIAUpAwgMAQsgAykDGAshFSAFQewAaigCACEEIAMgFTcDqAEgA0E4aiAEIANBqAFqEKIEIAMoAkhBgICAgHhHDQELIAhBADYCCCAIQoCAgICAATcCAAwBCyADQQhqQQQgBSgCYCIHBH8gBSkDACEVAkAgBSkDEEICUQRAQX9BACAVQgBSGyEEDAELIBVQBEAgBSgCWCIERQ0EIAQgBSgCXE0hBAwBC0F/IQQgBSgCWEUNAwsgBCAHIAQgB0kbBUEAC0EBaiIEQX8gBBsiBCAEQQRNGxDJBSADKAIIIQcgAygCDCADQThqIgRBOBDjCSEMIANBNGoiE0EBNgIAIAMgDDYCMCADIAc2AiwgBCAFQfAAEOcJGiADQSxqIQwjAEHgAGsiBSQAAkAgBCgCYCIHRQ0AIARBEGohEgNAIAQgB0EBazYCYAJ+AkAgBCkDEEICUgRAIAVBCGogEhDeASAFKQMIpw0BIBJCAjcDAAsgBCkDAFANAyAEKQMIDAELIAUpAxALIRUgBCgCbCEHIAUgFTcDWCAFQSBqIAcgBUHYAGoQogQgBSgCMEGAgICAeEYNASAEKAJgIQcgDCgCCCIQIAwoAgBGBEAgDCAQIAcEfyAEKQMAIRUCQCAEKQMQQgJRBEBBf0EAIBVCAFIbIQoMAQsgFVAEQCAEKAJYIgpFDQcgCiAEKAJcTSEKDAELQX8hCiAEKAJYRQ0GCyAKIAcgByAKSxsFQQALQQFqIgpBfyAKGxCoBgsgDCgCBCAQQThsaiAFQSBqQTgQ5wkaIAwgEEEBajYCCCAHDQALCyAFQeAAaiQAIAhBCGogEygCADYCACAIIAMpAiw3AgALIANBsAFqJAAMAQtB4I/AAEEZQeyYwAAQzAYACyANQYABaiQAIAZBCGoiA0EANgIAIANBDGogCEEIaigCADYCACADIAgpAwA3AgQgCEGAAWokACAGKAIIRQRAIAZBFGooAgAhAiAGQRBqKAIAIQMgBigCDAwCCyAGKQIMIRUgBiAGQRRqKAIANgIQIAYgFTcDCCAGQQhqEKAFIQMLQYCAgIB4CyEFIA8gAjYCCCAPIAM2AgQgDyAFNgIAIAZBMGokAAJAIAsoAgRBgYCAgHhHBEAgDiALKQIENwIAIA5BCGogC0EMaigCADYCAAwBCyALQQxqKAIAIQIgCygCCCEGQaSNwgBBEBAFIQMgDkGAgICAeDYCACAOIAM2AgQgBiACKAIAEQEAIAIoAgRFDQAgAigCCBogBhBrCyALQRBqJAAgESARKAIAQQFrNgIAAn8gCSgCFEGAgICAeEcEQCAJQRRqENYGIQFBAAwBC0EBIRQgCSgCGAshAiAAIBQ2AgggACACNgIEIAAgATYCACAJQSBqJAALyAsCE38DfiMAQSBrIggkACAIQQhqIAIQ0gYgCCgCDCESIAhBFGohDiAIKAIIIQIjAEEQayIKJAAgCkEEaiEPIwBBMGsiBCQAIARBCGogARCRAgJ/AkAgBCgCCARAIAQoAgwhAiAEQSUQ8AUgBCgCACEFIAQoAgRB4ITAAEElEOcJIQYgBEElNgIsIAQgBjYCKCAEIAU2AiQgBkElEAUhBiAEQSRqEP8HIAJBhAFJDQEgAhACDAELIARBCGohECAEKQMQIRYgBEEYaikDACEXIwBBEGsiCyQAAn8CQAJAAkBCAiACKQMAQgJ9IhggGEICWhunQQFrDgIBAgALIAJB9ABqDAILIAJBjAFqDAELIAJB7ABqCygCABCdByEGIwBBgAFrIg0kACANQQhqIgUgFiAXAn8CQAJAAkBCAiACKQMAQgJ9IhYgFkICWhunQQFrDgIBAgALIAJB9ABqDAILIAJBjAFqDAELIAJB7ABqCygCACAGEJ8FIA0gAjYCdCANIA1B/wBqNgJwIwBBoAFrIgYkAAJAAkACQAJAAkAgBSgCYCIDRQ0AIAUgA0EBazYCYAJ+AkAgBSkDEEICUgRAIAZBCGogBUEQaiIDEN4BIAYpAwinDQEgA0ICNwMACyAFKQMAUA0CIAUpAwgMAQsgBikDEAshFiAGQTBqIAVB7ABqKAIAIBYQTCAGKAJAQYCAgIB4Rw0BCyALQQA2AgggC0KAgICAgAE3AgAMAQsgBkEEIAUoAmAiBwR/IAUpAwAhFgJAIAUpAxBCAlEEQEF/QQAgFkIAUhshAwwBCyAWUARAIAUoAlgiA0UNBCADIAUoAlxNIQMMAQtBfyEDIAUoAlhFDQMLIAMgByADIAdJGwVBAAtBAWoiA0F/IAMbIgMgA0EETRsQyQUgBigCACEHIAYoAgQgBkEwaiIDQTgQ4wkhDCAGQSxqIhRBATYCACAGIAw2AiggBiAHNgIkIAMgBUHwABDnCRogBkEkaiEMIwBB0ABrIgUkAAJAIAMoAmAiB0UNACADQRBqIRMDQCADIAdBAWs2AmACfgJAIAMpAxBCAlIEQCAFIBMQ3gEgBSkDAKcNASATQgI3AwALIAMpAwBQDQMgAykDCAwBCyAFKQMICyEWIAVBGGogAygCbCAWEEwgBSgCKEGAgICAeEYNASADKAJgIQcgDCgCCCIRIAwoAgBGBEAgDCARIAcEfyADKQMAIRYCQCADKQMQQgJRBEBBf0EAIBZCAFIbIQkMAQsgFlAEQCADKAJYIglFDQcgCSADKAJcTSEJDAELQX8hCSADKAJYRQ0GCyAJIAcgByAJSxsFQQALQQFqIglBfyAJGxCoBgsgDCgCBCARQThsaiAFQRhqQTgQ5wkaIAwgEUEBajYCCCAHDQALCyAFQdAAaiQAIAtBCGogFCgCADYCACALIAYpAiQ3AgALIAZBoAFqJAAMAQtB4I/AAEEZQeyYwAAQzAYACyANQYABaiQAIBBBADYCACAQQQxqIAtBCGooAgA2AgAgECALKQMANwIEIAtBEGokACAEKAIIRQRAIARBFGooAgAhAiAEQRBqKAIAIQYgBCgCDAwCCyAEKQIMIRYgBCAEQRRqKAIANgIQIAQgFjcDCCAEQQhqEKAFIQYLQYCAgIB4CyEFIA8gAjYCCCAPIAY2AgQgDyAFNgIAIARBMGokAAJAIAooAgRBgYCAgHhHBEAgDiAKKQIENwIAIA5BCGogCkEMaigCADYCAAwBCyAKQQxqKAIAIQIgCigCCCEEQaSNwgBBEBAFIQYgDkGAgICAeDYCACAOIAY2AgQgBCACKAIAEQEAIAIoAgRFDQAgAigCCBogBBBrCyAKQRBqJAAgEiASKAIAQQFrNgIAAn8gCCgCFEGAgICAeEcEQCAIQRRqENYGIQFBAAwBC0EBIRUgCCgCGAshAiAAIBU2AgggACACNgIEIAAgATYCACAIQSBqJAALiwsCEn8DfiMAQSBrIggkACAIQQhqIAIQ0gYgCCgCDCEQIAhBEGohDCAIKAIIIQMjAEEQayICJAAjAEEwayIGJAAgBkEIaiABEJECAkAgBigCCARAIAYoAgwhAyAGQSUQ8AUgBigCACEEIAYoAgRB4ITAAEElEOcJIQUgBkElNgIsIAYgBTYCKCAGIAQ2AiQgBUElEAUhByAGQSRqEP8HIANBhAFPBEAgAxACC0ECIQMMAQsgBikDECEVIAZBGGopAwAhFyMAQYABayIOJAAgDiADENsFIAZBCGoiEkEEaiENIA5B7ABqKAIAEJ0HIQQjAEGAAWsiCiQAIApBCGoiBSAVIBcCfwJAAkACQEICIAMpAwBCAn0iFSAVQgJaG6dBAWsOAgECAAsgA0H0AGoMAgsgA0GMAWoMAQsgA0HsAGoLKAIAIAQQnwUgCiADNgJ0IAogCkH/AGo2AnAjAEGwAWsiAyQAAkACQAJAAkACQCAFKAJgIgRFDQAgBSAEQQFrNgJgAn4CQCAFKQMQQgJSBEAgA0EQaiAFQRBqIgQQ3gEgAykDEKcNASAEQgI3AwALIAUpAwBQDQIgBSkDCAwBCyADKQMYCyEVIAVB7ABqKAIAIQQgAyAVNwOoASADQThqIAQgA0GoAWoQoQQgAy0AeEECRw0BCyANQQA2AgggDUKAgICAgAE3AgAMAQsgA0EIakEEIAUoAmAiBAR/IAUpAwAhFQJAIAUpAxBCAlEEQEF/QQAgFUIAUhshBwwBCyAVUARAIAUoAlgiB0UNBCAHIAUoAlxNIQcMAQtBfyEHIAUoAlhFDQMLIAcgBCAEIAdLGwVBAAtBAWoiBEF/IAQbIgQgBEEETRsQxwUgAygCCCEHIAMoAgwgA0E4aiIEQcgAEOMJIQkgA0E0aiITQQE2AgAgAyAJNgIwIAMgBzYCLCAEIAVB8AAQ5wkaIANBLGohCyMAQfAAayIFJAACQCAEKAJgIglFDQAgBEEQaiERA0AgBCAJQQFrNgJgAn4CQCAEKQMQQgJSBEAgBUEIaiAREN4BIAUpAwinDQEgEUICNwMACyAEKQMAUA0DIAQpAwgMAQsgBSkDEAshFSAEKAJsIQcgBSAVNwNoIAVBIGogByAFQegAahChBCAFLQBgQQJGDQEgBCgCYCEJIAsoAggiDyALKAIARgRAIAsgDyAJBH8gBCkDACEVAkAgBCkDEEICUQRAQX9BACAVQgBSGyEHDAELIBVQBEAgBCgCWCIHRQ0HIAcgBCgCXE0hBwwBC0F/IQcgBCgCWEUNBgsgByAJIAcgCUkbBUEAC0EBaiIHQX8gBxsQqgYLIAsoAgQgD0HIAGxqIAVBIGpByAAQ5wkaIAsgD0EBajYCCCAJDQALCyAFQfAAaiQAIA1BCGogEygCADYCACANIAMpAiw3AgALIANBsAFqJAAMAQtB4I/AAEEZQeyYwAAQzAYACyAKQYABaiQAIBJBADYCACAOQYABaiQAIAYoAggiA0ECRwRAIAYpAhAhFiAGKAIMIQcMAQsgBigCDCEDIAYgBkEQaikCADcCDCAGIAM2AgggBkEIahCgBSEHQQIhAwsgAiAWNwIIIAIgBzYCBCACIAM2AgAgBkEwaiQAAkAgAigCAEEDRwRAIAwgAikCADcCACAMQQhqIAJBCGopAgA3AgAMAQsgAkEIaigCACEDIAIoAgQhBkGkjcIAQRAQBSEFIAxBAjYCACAMIAU2AgQgBiADKAIAEQEAIAMoAgRFDQAgAygCCBogBhBrCyACQRBqJAAgECAQKAIAQQFrNgIAAn8gCCgCEEECRwRAIAhBEGoQ1wYhAUEADAELQQEhFCAIKAIUCyECIAAgFDYCCCAAIAI2AgQgACABNgIAIAhBIGokAAuMBQIJfwF+IwBBIGsiBSQAIAVBCGogAhDSBiAFKAIMIQogBUEUaiEIIAUoAgghBCMAQRBrIgYkACAGQQRqIQkjAEHQAGsiAiQAIAJBCGogARCIAgJ/AkAgAigCCARAIAIoAgwhBCACQSUQ8AUgAigCACEHIAIoAgRBhYXAAEElEOcJIQMgAkElNgI4IAIgAzYCNCACIAc2AjAgA0ElEAUhAyACQTBqEP8HIARBhAFJDQEgBBACDAELIAJByABqIAJBKGopAwA3AwAgAkFAayACQSBqKQMANwMAIAJBOGogAkEYaikDADcDACACIAIpAxA3AzAjAEGAAWsiAyQAIAMgBBDbBSADIAQgAkEwaiADQewAaigCABCgBxD/BCACQQhqIgdBADYCACAHQQxqIANBCGooAgA2AgAgByADKQMANwIEIANBgAFqJAAgAigCCEUEQCACQRRqKAIAIQQgAkEQaigCACEDIAIoAgwMAgsgAikCDCEMIAIgAkEUaigCADYCECACIAw3AwggAkEIahCgBSEDC0GAgICAeAshByAJIAQ2AgggCSADNgIEIAkgBzYCACACQdAAaiQAAkAgBigCBEGBgICAeEcEQCAIIAYpAgQ3AgAgCEEIaiAGQQxqKAIANgIADAELIAZBDGooAgAhAiAGKAIIIQRBpI3CAEEQEAUhAyAIQYCAgIB4NgIAIAggAzYCBCAEIAIoAgARAQAgAigCBEUNACACKAIIGiAEEGsLIAZBEGokACAKIAooAgBBAWs2AgACfyAFKAIUQYCAgIB4RwRAIAVBFGoQ1gYhAUEADAELQQEhCyAFKAIYCyECIAAgCzYCCCAAIAI2AgQgACABNgIAIAVBIGokAAuMBQIJfwF+IwBBIGsiBSQAIAVBCGogAhDSBiAFKAIMIQogBUEUaiEIIAUoAgghBCMAQRBrIgYkACAGQQRqIQkjAEHQAGsiAiQAIAJBCGogARCIAgJ/AkAgAigCCARAIAIoAgwhBCACQSUQ8AUgAigCACEHIAIoAgRBhYXAAEElEOcJIQMgAkElNgI4IAIgAzYCNCACIAc2AjAgA0ElEAUhAyACQTBqEP8HIARBhAFJDQEgBBACDAELIAJByABqIAJBKGopAwA3AwAgAkFAayACQSBqKQMANwMAIAJBOGogAkEYaikDADcDACACIAIpAxA3AzAjAEGAAWsiAyQAIAMgBBDcBSADIAQgAkEwaiADQewAaigCABCgBxCEBSACQQhqIgdBADYCACAHQQxqIANBCGooAgA2AgAgByADKQMANwIEIANBgAFqJAAgAigCCEUEQCACQRRqKAIAIQQg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KAIARQRAIAEEQCABQQN0IQEgACgCACEAA0AgAiADKQMANwMIIAAgAkEIakEIEIsJIANBCGohAyABQQhrIgENAAsLQQAhAAsgAkEQaiQAIAAL1gQBCn8jAEHQA2siBSQAIAVBCGogARDSBiAFKAIMIQggBUEQaiEGIAUoAgghByMAQfAGayICJAAgAkGwA2ohCSMAQSBrIgMkAAJAAkACQCAHQewAaigCAEECaw4DAAEAAQsjAEHQBGsiASQAAkACQEEAQayBwgAoAgARBQAiBARAIAQoAgANASAEQX82AgAgAUHAAmogB0GAARDnCRogAUICNwO4AiABQQhqIARBCGogAUG4AmoQogIgBCAEKAIAQQFqNgIAIAEpAwhCBFINAgtBwobAAEHGACABQc8EakGIh8AAQeiHwAAQ9gQACxCyBgALIAkgAUEIakGwAhDnCRogAUHQBGokACAJQbACaiAHQYABakGQARDnCRogA0EgaiQADAELIANBFGpCADcCACADQQE2AgwgA0GIhcIANgIIIANBsPDBADYCECADQQhqQaCFwgAQ/AYACyACKAK8AyEBIAIoArgDIQMgAigCsAMhBCACKAK0AyEHIAIgAkHAA2pBsAMQ5wkhAgJAIAStIAetQiCGhEIEUgRAIAYgATYCDCAGIAM2AgggBiAHNgIEIAYgBDYCACAGQRBqIAJBsAMQ5wkaDAELQaSNwgBBEBAFIQQgBkIENwMAIAYgBDYCCCADIAEoAgARAQAgASgCBEUNACABKAIIGiADEGsLIAJB8AZqJAAgCCAIKAIAQQFrNgIAAn8gBSkDEEIEUgRAIAVBEGoQ8wUhCkEADAELQQEhCyAFKAIYCyEBIAAgCzYCCCAAIAE2AgQgACAKNgIAIAVB0ANqJAALgQEBBH8jAEEQayICJAAgAkEAOgAHAkAgASgCBCIEBEAgAkEHakEBIAEoAgAiBUEBQbDYwAAQ3gcgASAEQQFrNgIEIAEgBUEBajYCACAAIAItAAc6AAEMAQsgAkKBygA3AwggACACQQhqELsHNgIEQQEhAwsgACADOgAAIAJBEGokAAvbBgIHfwF+IwBBwAFrIggkACAIQQhqIgQgAgJ/AkACQAJAQgIgASkDAEICfSILIAtCAlobp0EBaw4CAQIACyABQfQAagwCCyABQYwBagwBCyABQewAagso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AgJ/AkACQAJAIAQtALACIgZFBEAgE0EBaw4CAwUBCwJAAkACQCATQQFrDgIBAgALIANB0ABqIARBCGpBgAEQ5wkaIANByABqIANB6ABqKQMANwMAIANBQGsgA0HgAGopAwA3AwAgAyADKQNYNwM4DAMLIARBCGoMBAsgBEEIagwFCyADQdAAaiAEQQhqQYABEOcJGiADQcgAaiADQYABaikDADcDACADQUBrIANB+ABqKQMANwMAIAMgA0HwAGopAwA3AzgLIAMgA0E4ajYCXCADIANBBGo2AlggAyADQRBqIgI2AlQgAyAENgJQIANB0ABqEIwCIAQoAnQhBSAKIAJBKBDnCRogBEH4AGoMBAsgBEEgagsiAkEQaikDADcDACADQUBrIAJBCGopAwA3AwAgAyACKQMANwM4IAMgA0E4ajYCXCADIANBBGo2AlggAyADQRBqIgI2AlQgAyAENgJQIANB0ABqEIwCIARBjAFqKAIAIQUgCiACQSgQ5wkaIARBkAFqDAILIARBIGoLIgJBEGopAwA3AwAgA0FAayACQQhqKQMANwMAIAMgAikDADcDOCADIANBOGo2AlwgAyADQQRqNgJYIAMgA0EQaiICNgJUIAMgBDYCUCADQdAAahCMAiAEKAJsIQUgCiACQSgQ5wkaIARB8ABqCyECIAogBjoAOCAKIAU2AiwgCkEBNgI0IAogAigCADYCMCAKIAVBAWs2AiggAygCBARAIAMoAggQawsgA0HQAWokAAwBC0Hgj8AAQRlB7JjAABDMBgALIAogETYCQCAXQdAAaiQADAULIAMpAwAhHSAJQQhqIgMgAQJ/AkACQAJAQgIgBCkDAEICfSIBIAFCAlobpyITQQFrDgIBAgALIARB9ABqDAILIARBjAFqDAELIARB7ABqCygCACIGIBEQtgUgCUGYAWogHSAGIBEQtgUgCUHQAGogA0HIABDnCRpBgc3DAC0AABpBkAFBCBCECSILRQ0BIAsgCUHQAGpBkAEQ5wkhAyASIAJBEGoiD0YEQEGc7cEAIQwMBAsgBEH0AGohBiAEQYwBaiEFIARB7ABqIQhBnO3BACEMA0AgBiECAkACQAJAIBNBAWsOAgABAgsgBSECDAELIAghAgsgCUHQAGogDykDACACKAIAIBEQtgVBgc3DAC0AABpB0ABBCBCECSILRQ0D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Cwt/AQJ/IwBBEGsiAyQAIAAgARCaBCICRQRAIAMgADUCKDcDCCABKAIQKAIAIANBCGoiAkEIEIsJIAMgADUCLDcDCCABKAIQKAIAIAJBCBCLCSADIAA1AjA3AwggASgCECgCACACQQgQiwkgAEE0aiABEJIGIQILIANBEGokACACC3kBAX8gACgCACICIAAoAgRGBEBBAw8LIAAgAkEEajYCAEEBQQIgAigCABAXIgBBAUYbQQAgABsiAEECRgR/QdSPwQBBFhAFIQACQCABKAIARQ0AIAEoAgQiAkGEAUkNACACEAILIAEgADYCBCABQQE2AgBBAgUgAAsLfgEBfyMAQUBqIgAkACAAQQo2AhAgAEGwxMIANgIMIABBAToAFyAAQSRqQgI3AgAgAEE8akGmAzYCACAAQQI2AhwgAEHA4sIANgIYIABBGDYCNCAAIABBMGo2AiAgACAAQRdqNgI4IAAgAEEMajYCMCAAQRhqQbDjwgAQ/AYAC44BAQN/IwBBIGsiACQAAkACQEHE0cMAKAIAIgFFBEAQrwMhAUHE0cMAKAIADQFBxNHDACABNgIACyABIAEoAgAiAkEBajYCACACQQBIDQEgAEEgaiQAIAEPCyAAQRRqQgA3AgAgAEEBNgIMIABBjOvCADYCCCAAQfzqwgA2AhAgAEEIakHk68IAEPwGAAsAC4cBAgN/AX4jAEEgayICJAAgASgCBCIDRQRAIAJBFGpCADcCACACQQE2AgwgAkGktsAANgIIIAJB/J/AADYCECACQQhqQay2wAAQ/AYACyABQRBqKQMAIQUgASgCACEEIAAgASkDCDcDCCAAIAM2AgQgACAENgIAIABBEGogBTcDACACQSBqJAALggEBAX8jAEEwayIEJAAgBEEMaiABEJ4EIAQoAhRFBEAgBEEkakIANwIAIARBATYCHCAEQaS2wAA2AhggBEH8n8AANgIgIARBGGpBrLbAABD8BgALIAAgAjcDACAAIAQpAgw3AhAgACADNwMIIABBGGogBEEUaigCADYCACAEQTBqJAALhwECA38BfiMAQSBrIgIkACABKAIEIgNFBEAgAkEUakIANwIAIAJBATYCDCACQdiuwAA2AgggAkH8n8AANgIQIAJBCGpBkK/AABD8BgALIAFBIGopAwAhBSABKAIAIQQgACABKQMYNwMIIAAg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cUUgAUEFdBD9CCABQYCAgIABSSIEIAFBBHQiARD9CCEDQcAAENEHIgIgA0HAABDRB2oiAyACTyADEP0IIQIgBCABEP0IIQEgACACQcAAENEHIgIgAUHAABDRB2oiASACTyABEP0INgIEIABBwAA2AgALwgQBBn8jAEEQayIGJAACQCABKAIEIgVFBEAgAEGAgICAeDYCAAwBCyABIAVBAWs2AgQgBkEEaiEFIAEoAgAhByMAQRBrIgMkACADQgA3AwgCQAJAAn8gBygCBCIEQQdNBEAgA0KBygA3AwggA0EIahC7BwwBCyADQQhqQQggBygCACIBQQhBsNjAABDeByAHIARBCGs2AgQgByABQQhqNgIAIAMgAykDCBDeAiADKAIARQ0BIAMoAgQLIQEgBUGAgICAeDYCACAFIAE2AgQMAQsgAygCBCEBIwBB4ABrIgIkACACIAc2AhQgAiABNgIYIAJBCGpBpJIBIAEgAUGkkgFPGxDJBSACQQA2AiQgAiACKQMINwIcIAJBKGogAkEUahCmAgJAAkAgAigCQCIEQYGAgIB4RwRAA0AgBEGAgICAeEYNAiACKAIkIgQgAigCHEYEQCACQRxqIAQQpwYgAigCJCEECyACKAIgIARBOGxqIAJBKGoiAUE4EOcJGiACIARBAWo2AiQgASACQRRqEKYCIAIoAkAiBEGBgICAeEcNAAsLIAUgAigCKDYCBCAFQYCAgIB4NgIAIAJBHGoQnQYgAigCHEUNASACKAIgEGsMAQsgBSACKQIcNwIAIAVBCGogAkEkaigCADYCAAsgAkHgAGokAAsgA0EQaiQAIAYoAgQiAUGAgICAeEcEQCAAIAYpAgg3AgQgACABNgIADAELIAYoAgghASAAQYGAgIB4NgIAIAAgATYCBAsgBkEQaiQAC9kEAQZ/IwBBEGsiBiQAAkAgASgCBCIFRQRAIABBgICAgHg2AgAMAQsgASAFQQFrNgIEIAZBBGohBSABKAIAIQcjAEEQayIDJAACQAJAAkAgB0IIEKIGIgENACADQgA3AwggBygCDCICKAIEIgRBB00EQCADQoKAgICAvokINwMIIANBCGoQuwchAQwBCyADQQhqQQggAigCACIBQQhBxMvAABDeByACIARBCGs2AgQgAiABQQhqNgIAIAMgAykDCBDeAiADKAIARQ0BIAMo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AARAIABBA3QhAQNAIANCCBCMBiIADQIgAUEIayIBDQALC0EAIQALIAJBEGokACAAC3MBAn8jAEEQayICJAACQCABKAIEIgNFBEAgAEEANgIADAELIAEgA0EBazYCBCACQQhqIAEoAgAQqQMgAigCCEUEQCAAIAIoAgw2AgQgAEEBNgIADAELIAIoAgwhASAAQQI2AgAgACABNgIECyACQRBqJAALcwECfyMAQRBrIgIkAAJAIAEoAgQiA0UEQCAAQQA2AgAMAQsgASADQQFrNgIEIAJBCGogASgCABCAAyACKAIIRQRAIAAgAigCDDYCBCAAQQE2AgAMAQsgAigCDCEBIABBAjYCACAAIAE2AgQLIAJBEGokAAt2AAJAIAIEQCACZ0EfcyICQRFPDQEgAEEAOwEgIAAgATsBHCAAQRA2AhggACACNgIUIABBADsBECAAIAM2AiggAEIANwMIIABCATcDACAAQX8gAnRBf3M7AR4PC0GYycEAEP0GAAtB8JfAAEEyQcyYwAAQzAYAC3wBAn8jAEEQayICJAACfwJAAkACQEECIAAoAgAiAC0AAEEEa0H/AXEiAyADQQJPG0EBaw4CAQIACyABQcirwgBBHBCFCAwCCyABQeSrwgBBGhCFCAwBCyACIAA2AgwgAUH+q8IAQQcgAkEMakGIrMIAEMwCCyACQRBqJAALbQEBfyMAQTBrIgMkACADIAA2AgAgAyABNgIEIANBFGpCAjcCACADQSxqQRY2AgAgA0ECNgIMIANB1KjDADYCCCADQRY2AiQgAyADQSBqNgIQIAMgA0EEajYCKCADIAM2AiAgA0EIaiACEPwGAAttAQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EUakICNwIAIANBLGpBFjYCACADQQI2AgwgA0H8osMANgIIIANBFjYCJCADIANBIGo2AhAgAyADNgIoIAMgA0EEajYCICADQQhqIAIQ/AYAC20BAX8jAEEwayIDJAAgAyAANgIAIAMgATYCBCADQRRqQgI3AgAgA0EsakEWNgIAIANBAjYCDCADQfSowwA2AgggA0EWNgIkIAMgA0EgajYCECADIANBBGo2AiggAyADNgIgIANBCGogAhD8BgALbQEBfyMAQTBrIgMkACADIAA2AgAgAyABNgIEIANBFGpCAjcCACADQSxqQRY2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AGsiAyQAIAdBBGoiBSgCBCEEIAUoAgAgASACRwRAIAUoAgggBEE4bGohBSAEIAIgAWtByABuIgJqIQQDQCADQUBrIgogAUEwEOcJGiADQQhqIgsgChCfAiADIAFBQGstAAA6ADggAyABQThqKAIANgI0IAMgAUE0aigCADYCMCADIAFBPGooAgA2AiwgAyABQTBqKAIANgIoIAFByABqIQEgBSALQTgQ5wlBOGohBSACQQFrIgINAAsLIAQ2AgAgA0HwAGokACAHQRBqJAAgAEEIaiAIKAIANgIAIAAgBikCFDcCACAGQSBqJAALawECfyMAQSBrIgEkACABIAAoAgAiAEEBcSICNgIEIAJFBEAgAUEgaiQAIABBAXYPCyABQgA3AhQgAUH8n8AANgIQIAFBATYCDCABQeSnwAA2AgggAUEEakGMp8AAIAFBCGpBmKjAABCLBwALVAEDfyAAKAIMIgEgACgCCCICRwRAIAEgAmtBAnYhAQNAIAIoAgAiA0GEAU8EQCADEAILIAJBBGohAiABQQFrIgENAAsLIAAoAgQEQCAAKAIAEGsLC2gAIwBBMGsiACQAQYDNwwAtAAAEQCAAQRhqQgE3AgAgAEECNgIQIABB+PbCADYCDCAAQRY2AiggACABNgIsIAAgAEEkajYCFCAAIABBLGo2AiQgAEEMakGg98IAEPwGAAsgAEEwaiQAC00BAX8jAEEQayIDJAAgA0GHgICAeDYCACADEM0GIAMgAq03AwAgASgCECgCACADQQgQiwlBACECIAAgATYCBCAAIAI2AgAgA0EQaiQAC0IBAn8jAEEQayICJAAgAkGHgICAeDYCBCACQQRqEM0GIAEgASkDAEIIfDcDACAAIAE2AgQgACADNgIAIAJBEGokAAuZAQECfyMAQbABayIBJAAjAEHAAWsiAiQAAkACQCAABEAgACgCAA0BIABBADYCACACQQhqIABBuAEQ5wkaIAEgAkEQakGwARDnCRogABBrIAJBwAFqJAAMAgsQ0gkACxDTCQALIAFBjAFqKAIABEAgAUGQAWooAgAQawsgAUHIAGooAgAEQCABQcwAaigCABBrCyABQbABaiQAC1YBAX4CQCADQcAAcUUEQCADRQ0BIAJBACADa0E/ca2GIAEgA0E/ca0iBIiEIQEgAiAEiCECDAELIAIgA0E/ca2IIQFCACECCyAAIAE3AwAgACACNwMIC1YBAX4CQCADQcAAcUUEQCADRQ0BIAIgA0E/ca0iBIYgAUEAIANrQT9xrYiEIQIgASAEhiEBDAELIAEgA0E/ca2GIQJCACEBCyAAIAE3AwAgACACNwMIC0oBAX8jAEEQayIDJAAgA0GHgICAeDYCACADEM0GIAMgAq03AwAgASgCACADQQgQiwlBACECIAAgATYCBCAAIAI2AgAgA0EQaiQAC4dEAiB/D34jAEHgAGsiESQAIwBBQGoiCSQAIAFB2ABqKQMAISUgASkDUCEjIAlBCGogAUE4aiABQTRqIAEtACgiAxsoAgAiBSABQUBrIAFBPGogAxsoAgBsIgNBARDOBSAJIAM2AjwgCSAJKQMINwI0IAlBEGoiAyAJQTRqIAUgIyAlEJYCAkAgEQJ+QgAhJUIAISMjAEHQAGsiByQAIAcgAygCECILNgIMIAcgAUEoakEPQQsgAS0AKCIFG2ooAgEiBDYCEAJAAkACQAJAAkACQCAEIAtGBEAgC0UNBiAHIANBHGooAgAiBCALbiIGNgIMIAcgAUEXQRMgBRtqQSlqKAIAIgU2AhAgBSAGRw0BIAdBIGogA0EIaikDADcDACAHIAs2AiggByAENgIUIAcgAykDADcDGCAHIANBGGooAgA2AhAgB0EwaiEKAkACQCAHQRBqIgMoAhgiBQRAIAMoAgQiBCAFbkEBayAFbCIGIARLDQEgCiADKAIAIAYgBSADKQMIIANBEGopAwAQnQMMAgsMCAsgBiAEQYyywAAQwQUACyAHKAI0IgMEQCAHKAIwQQAgA0EDdBDkCRoLIAEoAmQgASgCYGwiDEUNAiALIAxuIQRCgICAgICAgICAfyAMrSImgCEkIAdBMGohBSMAQSBrIgMkAAJAAkACQCAHQRBqIgYoAhgiCARAIAYoAgQiCiAKIAhuQQFrIAhsIghJDQEgCCAKRg0CIAZBEGopAwAhJyAGKAIAIQ0gBSAGKQMINwMIIAVBEGogJzcDACAFIAogCGs2AgQgBSANIAhBA3RqNgIAIANBIGokAAwDCwwJCyAIIApB/LHAABC/BQALIANBFGpCADcCACADQQE2AgwgA0HYrsAANgIIIANB/J/AADYCECADQQhqQZCvwAAQ/AYACyAHKAI0IQYgBygCMCEFA0AgBCAlp2wiAyAEaiIKIANJDQUgBiAKSQ0GIAsgDE8EQCAFIANBA3RqIgMgBEEDdGohCiAkICV+IScDQCADICc3AwAgA0EIaiIDIApHDQALCyAjICUgIyAlVhshIyAlQgF8IiUgJlINAAsgBEEBdiILIAZLDQMgBEECTwRAIAUgC0EDdGohBCAFIQMDQCADQgAgAykDAH03AwAgA0EIaiIDIARHDQALCyAFIAYgCxDFByAHQdAAaiQAICMMBwsgB0EANgIwIAdBDGogB0EQaiAHQTBqQbD8wAAQhwcACyAHQQA2AjAgB0EMaiAHQRBqIAdBMGpBwPzAABCEBwALQdD5wABBGUHQ/MAAEMwGAAsgCyAGQeD8wAAQwQUACyADIApB8PzAABDCBQALIAogBkHw/MAAEMEFAAsMAQs+AiAgEUEYaiAJQShqKQMANwMAIBFBEGogCUEgaikDADcDACARQQhqIAlBGGopAwA3AwAgESAJKQMQNwMAIAlBQGskACARQShqIRNCACElIwBB4ABrIgokAAJAAkACQAJAAkAgASIDLQAoRQRAIApBEGohCCMAQUBqIgckACAHIAIoAhBBAWoiBSACKAIUIglsIgFBBnYgAUE/cUEAR2oiCzYCACAHIAJBIGooAgAiATYCBAJAAkAgASALRgRAIAcgCTYCCCAHIAU2AjQgB0EANgIwIAcgAjYCLCAHIAdBCGoiATYCOCAHIAE2AigjAEEgayILJAAgC0EIaiAHQShqIgVBDGooAgAiASAFKAIIayIJQQAgASAJTxtBABDOBSALQRxqIhRBADYCACALIAspAwg3AhQjAEEQayIJJAAgBUEMaigCACIBIAUoAghrIgRBACABIARPGyIGIAtBFGoiASgCACABKAIIIgRrSwRAIAEgBCAGEK4GIAEoAgghBAsgCSABKAIENgIIIAkgBDYCBCAJIAFBCGo2AgAgCSAFKAIQNgIMIwBBIGsiBCQAIAkoAgQhDCAJKAIAIRUCQAJAAkACQCAFKAIIIgEgBUEMaigCACIWSQRAIAkoAgwhFyAFKAIAIRggCSgCCCAMQQN0aiENIAUoAgQhDgNAIAQgGCgCACIPIAFBAWoiBWxBAWtBBnYiBjYCACABIA9sIhJBP3EhECANAn4CQCAGIBJBBnYiAUcEQCAEIAFBAWoiDzYCBCAGIA9GDQEgBEEANgIIIAQgBEEEaiAEQQhqQbCJwQAQiwcACyAOKAIgIgYgAU0NBCAOKAIcIAFBA3RqKQMAIBCtiAwBCyAOKAIgIg8gAU0NBCAGIA9PDQUgDigCHCIPIAZBA3RqKQMAQQAgEmtBP3GthiAPIAFBA3RqKQMAIBCtiIQLQQAgFygCAGtBP3GthjcDACANQQhqIQ0gDEEBaiEMIAUiASAWRw0ACwsgFSAMNgIAIARBIGokAAwDCyABIAZB4InBABDABQALIAEgD0HAicEAEMAFAAsgBiAPQdCJwQAQwAUACyAJQRBqJAAgB0EcaiIBQQhqIBQoAgA2AgAgASALKQIUNwIAIAtBIGokACAHKAIkRQ0BIAJBCGopAwAhIyAIIAIpAwA3AwAgCCAHKQIcNwIQIAggIzcDCCAIQRhqIAdBJGooAgA2AgAgB0FAayQADAILIAdBFGpBFjYCACAHQgI3AjQgB0EDNgIsIAdBzKzAADYCKCAHQRY2AgwgByABNgIYIAcgB0EIajYCMCAHIAc2AhAgByAHQRhqNgIIIAdBBGogByAHQShqQeSswAAQiwcACyAHQTRqQgA3AgAgB0EBNgIsIAdBpLbAADYCKCAHQfyfwAA2AjAgB0EoakGstsAAEPwGAAsgCkEIagJ/IAMtAHBFBEAgAygCGCADKAIUbCIBRQ0EIANBJGooAgAgAW4MAQsgAygCGEEBawtBAWoiAUEBEM4FIAFFDQEgAykDUCEjIAooAgwhBSAKKAIIIQcgCkE4aiIbIANB2ABqKQMANwMAIApByABqIhwgATYCACAKQcQAaiAFNgIAIApBQGsiHSAHNgIAIAogIzcDMCAKIAM2AlAgCiAKQTBqNgJYIAogCkEQajYCVCAKIBE2AlwgCkHQAGohASMAQfAAayIEJAACQAJAQQBBrM3BACgCABEFACIPBEAgDygCAA0BIAEoAgwhAyABKAIIIQwgASgCBCENIAEoAgAhCCAPQX82AgAjAEEgayIHJAAgCCgCGCIJIAhBOGogCEE0aiAILQAoIgEbKAIAIAhBQGsgCEE8aiABGygCAEEBa2xqQQFqIgEgD0EIaiILQZQGaigCACIFSwRAIAtBjAZqIAEgBWsQkQQgCygClAYhAQsgBEEwaiEFAkACQCABIAlPBEAgCUUgASAJRnINASAIQdgAaikDACEjIAtBkAZqKAIAIQYgBSAIKQNQIiY3AyAgBSAmNwMIIAUgCTYCBCAFIAY2AgAgBUEoaiAjNwMAIAVBEGogIzcDACAFIAtBgAZqNgIwIAUgASAJazYCHCAFIAYgCUEDdGo2AhggB0EgaiQADAILQbD4wABBI0Gg/MAAEMwGAAsgB0EUakIANwIAIAdBATYCDCAHQaS2wAA2AgggB0H8n8AANgIQIAdBCGpBrLbAABD8BgALIAhBKGohASAEIAVBMBDnCSIXKAJgIQcCQCAILQBwRQRAIwBBMGsiBiQAIANBGGooAgAhCSAGQQhqIANBHGooAgAiBUEAEM4FIAYoAgghCyAGKAIMIAkgBUEDdBDnCSEJIAZBLGogBTYCACAGQShqIAk2AgAgBiALNgIkIAYgA0EIaikDADcDGCAGIAMpAwA3AxAgBiADKAIQNgIgIAEgDSAGQRBqIgMgBxD7ASMAQZABayIEJAACQAJAAkACQAJAAkAgAygCECIIBEAgBCADQRxqKAIAIAhuQQFrIAhsIgE2AgAgBCAMQRhqKAIAIgVBAWsiBzYCBCABIAdHDQ8gBCADKQMAIiU3AwggBCADQQhqKQMAIiM3AxAgBCAMQQhqKQMAIiY3AyAgBCAMKQMAIiQ3AxggIyAlhCInQgBSICQgJoQiKEIAUnMgJCAlhSAjICaFhFAgJ1AgKFByckVyDQEgBUUNAiAMQRRqKAIAIQUgBEHYAGogAxC7AiAEQfwAaigCACIDRQ0FIAQoAlwhAyAEKAJYIQcgBSABQQN0IglqIAQoAngpAwA3AwAgASADRw0DIAUgByAJEOcJIQMgCCABIAEgCHBrIg1NBEAgCEEBayEMIAhBA3QiDkEIayIBIRIgCEEBdiELIAEgA2ohByAIQQJJIRADQCAQRQRAIAchAyAFIQEgCyEJA0AgASkDACElIAEgAykDADcDACADICU3AwAgA0EIayEDIAFBCGohASAJQQFrIgkNAAsLIAggDEkNBiAMBEBBACEDA0AgAyAFaiIBQgAgASkDAH03AwAgEiADQQhqIgNHDQALCyAFIAggDBDFByAHIA5qIQcgBSAOaiEFIA0gCGsiDSAITw0ACwsgBEGQAWokAAwGCwwRCyAEQTRqQSw2AgAgBCAjNwNAIAQgJTcDOCAEQgI3AmQgBEEDNgJcIARB+PTBADYCWCAEQSw2AiwgBCAmNwNQIAQgJDcDSAwOC0H/oMAAQStB7LbAABDMBgALIAEgA0Gw9cEAEMMFAAsgDCAIQcD1wQAQwQUAC0EAIANBoPXBABDABQALIAYoAiQEQCAGKAIoEGsLIAZBMGokAAwBCyAXQRhqIQ4jAEEwayIGJAAgA0EYaigCACEJIAZBCGogA0EcaigCACIFQQAQzgUgBigCCCELIAYoAgwgCSAFQQN0EOcJIQkgBkEsaiAFNgIAIAZBKGogCTYCACAGIAs2AiQgBiADQQhqKQMANwMYIAYgAykDADcDECAGIAMoAhA2AiAgASANIAZBEGoiBSAHEPsBIwBBkAFrIgQkAAJAAkACQAJAAkACQCAFKAIQIg0EQCAEIAVBHGooAgAgDW5BAWsgDWwiAzYCACAEIA4oAgQiAUEBayIHNgIEIAMgB0cNDiAEIAUpAwAiIzcDCCAEIAVBCGopAwAiJjcDECAEIA5BEGopAwAiJDcDICAEIA4pAwgiJzcDGCAjICaEIihCAFIgJCAnhCIpQgBScyAjICeFICQgJoWEUCAoUCApUHJyRXINASABRQ0CIA4oAgAhASAEQdgAaiAFELsCIARB/ABqKAIAIgVFDQUgBCgCXCEFIAQoAlghByABIANBA3QiCWogBCgCeCkDADcDACADIAVHDQMgASAHIAkQ5wkhBSANIAMgAyANcGsiEk0EQCANQQFrIRAgDUEDdCIUQQhrIgMhFSANQQF2IQsgAyAFaiEDIA1BAkkhFgNAIBZFBEAgAyEHIAEhCSALIQUDQCAJKQMAISMgCSAHKQMANwMAIAcgIzcDACAHQQhrIQcgCUEIaiEJIAVBAWsiBQ0ACwsgDSAQSQ0GIBAEQEEAIQcDQCABIAdqIgVCACAFKQMAfTcDACAVIAdBCGoiB0cNAAsLIAEgDSAQEMUHIAMgFGohAyABIBRqIQEgEiANayISIA1PDQALCyAEQZABaiQADAYLDBALIARBNGpBLDYCACAEICY3A0AgBCAjNwM4IARCAjcCZCAEQQM2AlwgBEH49MEANgJYIARBLDYCLCAEICQ3A1AgBCAnNwNIDA0LQf+gwABBK0HstsAAEMwGAAsgAyAFQbD1wQAQwwUACyAQIA1BwPXBABDBBQALQQAgBUGg9cEAEMAFAAsgBigCJARAIAYoAigQawsgBkEwaiQAIwBBkAJrIgYkAAJAAkACQAJAAkACQAJAIAgoAhgiASAIKAIUIglsIgMEQCAIQSRqKAIAIANuIgcgDigCBCINQQFrIgNHDQEgASAMQRhqKAIAIgNHDQIgBiAMKQMAIiY3A2AgBiAMQQhqKQMAIiQ3A2ggBiAIQQhqKQMAIic3A3ggBiAIKQMAIig3A3AgJCAmhCIpQgBSICcgKIQiI0IAUnMgJiAohSAkICeFhFAgI1AgKVByckVyDQMgKVBFICZ7ICR7fEICWnENBCAOKQMIIicgDkEQaikDACIohCIqUCIDRSAneyAoe3xCAlpxDQUgAQRAIAwoAhRBACABQQN0EOQJGgsgDigCBCIFRQRAQf+gwABBK0HMtsAAEMwGAAsgBkHIAGoiASAOKQMINwMAIAEgDkEQaikDADcDCCABIA4oAgAgBUEDdGpBCGs2AhAgBigCWCkDACEmIAZBMGogDBC0BiAGKAJAICY3AwAgBikDYCIpIAZB6ABqKQMAIiSEIiZCAFIiASAqQgBSc0UEQCAnICmFICQgKIWEUCAmUCADcnINCAwHCyABDQYMBwsMDQsCfyAIKAIYIAgoAhRsIgAEQCAIQSRqKAIAIABuDAELDA0LIQAgBkH8AWpB5AA2AgAgBkGMAWpCAjcCACAGIAA2AnAgBkHkADYC9AEgBkEDNgKEASAGQZTbwQA2AoABIAYgAzYC0AEgBiAGQdABajYC+AEgBiAGQfAAajYC8AEgBiAGQfABajYCiAEgBkGAAWpB3NvBABD8BgALIAZB/AFqQeQANgIAIAZBjAFqQgI3AgAgBiABQQFrNgJwIAZBAzYChAEgBkHY3MEANgKAASAGQeQANgL0ASAGIANBAWs2AtABIAYgBkHwAWo2AogBIAYgBkHQAWo2AvgBIAYgBkHwAGo2AvABIAZBgAFqQfDcwQAQ/AYACyAGQdwBakEsNgIAIAZCAjcCjAEgBkEDNgKEASAGQezdwQA2AoABIAZBLDYC1AEgBiAnNwP4ASAGICg3A/ABIAYgBkHQAWo2AogBIAYgBkHgAGoiADYC2AEgBiAGQfABajYC0AEgBkHwAGogACAGQYABakGE3sEAEIUHAAsgBkGMAWpCADcCACAGQQE2AoQBIAZBzN7BADYCgAEgBkGw0sEANgKIASAGQYABakHU3sEAEPwGAAsgBkGMAWpCADcCACAGQQE2AoQBIAZBzN7BADYCgAEgBkGw0sEANgKIASAGQYABakHk3sEAEPwGAAsgBkEYaiAMELQGIAYoAigpAwAhJyAGIAwQtAYgBigCECAnICR5ICl5QkB9ICRCAFIbIiSIQgF8Qn6DICSGNwMACyAIKAIQIQUgBkGAAWohAQJAIAgoAhgiEiAIKAIUbCIDBEAgCEEgaigCACELIAhBJGooAgAiBCADTwRAIAEgEjYCGCABIAgpAwA3AwggAUEQaiAIQQhqKQMANwMAQgEhJQsgAUEwNgJIIAFBADYCRCABQgA3AjwgASADNgI4IAEgCzYCKCABICU3AwAgASAEIANuIgg2AiAgASADIAhsIgM2AiwgASAEIANrNgI0IAEgCyADQQN0ajYCMAwBC0Hgn8AAQRlB7KjAABDMBgALAkAgDQRAAkAgBigCrAEiGCAGKAK4ASIQSQ0AIA4oAgAiDSAHQQN0aiEeIAZBkAFqKQMAISsgBikDiAEhLCAGKALIASEfIAYoAqgBIRQgBigCoAEhFSAGKAKYASEgIAYpA4ABISUgCUEBaiEHQn8gBUE/ca0iKIZCf4UhLSAFQQFrQT9xrSEuQQAgBSAJbCIBa0E/ca0hL0E/IAFrQT9xrSEpIAwoAhghCSAMKAIUIQsgEEEDdCEhIAZBgAJqIRkDQAJ/IBVBAk8EQCAlUA0DIBVBAWsMAQsgJVANAkIAISVBAAshFSAZICs3AwAgBiAsNwP4ASAGICA2AogCIAYgEDYC9AEgBiAUNgLwASAGQdABaiAGQfABaiAfEQAAIAYoAtABIhZFIA0gHkZyDQECQCAGKALoASIMBEAgBkHgAWopAwAgIyAMIAYoAtQBIgFNIgMbISMgBikD2AEgJiADGyEmIAEgASAMbiIOIAxsIAFraiISIAxJDQEgDEEDdCEiIA0pAwAgKYhCAXxCfoMgKYYgL4ghJCADrSEnIAchAQNAICenRQ0CIBkgIzcDACAGICY3A/gBIAYgDDYC9AEgBiAWNgLwASAGQdABaiAGQfABahCbBSAGKALQASIERQ0CIAFBAWsiAUUNAiAnQgAgDkEBSxshJyAWICJqIRYgCyEDIAYoAtQBIRogJCAtgyIqICogJCAoiCIwICpCAX2EgyAuiCIqICiGfSEkIwBBMGsiCCQAAkAgGiAJIgVGBEBBnMbDAC0AAEH/AUYEQBDYCQsCQAJAICRCEHwiMUIgWARAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgMadBAWsOIAECAwQFBgcICQoLDA0ODyEQERITFBUWFxgZGhscHR4gAAsgBUUNIANAIAMgAykDACAEKQMAQgSGfDcDACADQQhqIQMgBEEIaiEEIAVBAWsiBQ0ACwwgCyAFRQ0fA0AgAyADKQMAIAQpAwBCD358NwMAIANBCGohAyAEQQhqIQQgBUEBayIFDQALDB8LIAVFDR4DQCADIAMpAwAgBCkDAEIOfnw3AwAgA0EIaiEDIARBCGohBCAFQQFrIgUNAAsMHgsgBUUNHQNAIAMgAykDACAEKQMAQg1+fDcDACADQQhqIQMgBEEIaiEEIAVBAWsiBQ0ACwwdCyAFRQ0cA0AgAyADKQMAIAQpAwBCDH58NwMAIANBCGohAyAEQQhqIQQgBUEBayIFDQALDBwLIAVFDRsDQCADIAMpAwAgBCkDAEILfnw3AwAgA0EIaiEDIARBCGohBCAFQQFrIgUNAAsMGwsgBUUNGgNAIAMgAykDACAEKQMAQgp+fDcDACADQQhqIQMgBEEIaiEEIAVBAWsiBQ0ACwwaCyAFRQ0ZA0AgAyADKQMAIAQpAwBCCX58NwMAIANBCGohAyAEQQhqIQQgBUEBayIFDQALDBkLIAVFDRgDQCADIAMpAwAgBCkDAEIDhnw3AwAgA0EIaiEDIARBCGohBCAFQQFrIgUNAAsMGAsgBUUNFwNAIAMgAykDACAEKQMAQgd+fDcDACADQQhqIQMgBEEIaiEEIAVBAWsiBQ0ACwwXCyAFRQ0WA0AgAyADKQMAIAQpAwBCBn58NwMAIANBCGohAyAEQQhqIQQgBUEBayIFDQALDBYLIAVFDRUDQCADIAMpAwAgBCkDAEIFfnw3AwAgA0EIaiEDIARBCGohBCAFQQFrIgUNAAsMFQsgBUUNFANAIAMgAykDACAEKQMAQgKGfDcDACADQQhqIQMgBEEIaiEEIAVBAWsiBQ0ACwwUCyAFRQ0TA0AgAyADKQMAIAQpAwBCA358NwMAIANBCGohAyAEQQhqIQQgBUEBayIFDQALDBMLIAVFDRIDQCADIAMpAwAgBCkDAEIBhnw3AwAgA0EIaiEDIARBCGohBCAFQQFrIgUNAAsMEgsgBUUNEQNAIAMgAykDACAEKQMAfDcDACADQQhqIQMgBEEIaiEEIAVBAWsiBQ0ACwwRCyAFRQ0QA0AgAyADKQMAIAQpAwB9NwMAIANBCGohAyAEQQhqIQQgBUEBayIFDQALDBALIAVFDQ8DQCADIAMpAwAgBCkDAEIBhn03AwAgA0EIaiEDIARBCGohBCAFQQFrIgUNAAsMDwsgBUUNDgNAIAMgAykDACAEKQMAQn1+fDcDACADQQhqIQMgBEEIaiEEIAVBAWsiBQ0ACwwOCyAFRQ0NA0AgAyADKQMAIAQpAwBCAoZ9NwMAIANBCGohAyAEQQhqIQQgBUEBayIFDQALDA0LIAVFDQwDQCADIAMpAwAgBCkDAEJ7fnw3AwAgA0EIaiEDIARBCGohBCAFQQFrIgUNAAsMDAsgBUUNCwNAIAMgAykDACAEKQMAQnp+fDcDACADQQhqIQMgBEEIaiEEIAVBAWsiBQ0ACwwLCyAFRQ0KA0AgAyADKQMAIAQpAwBCeX58NwMAIANBCGohAyAEQQhqIQQgBUEBayIFDQALDAoLIAVFDQkDQCADIAMpAwAgBCkDAEIDhn03AwAgA0EIaiEDIARBCGohBCAFQQFrIgUNAAsMCQsgBUUNCANAIAMgAykDACAEKQMAQnd+fDcDACADQQhqIQMgBEEIaiEEIAVBAWsiBQ0ACwwICyAFRQ0HA0AgAyADKQMAIAQpAwBCdn58NwMAIANBCGohAyAEQQhqIQQgBUEBayIFDQALDAcLIAVFDQYDQCADIAMpAwAgBCkDAEJ1fnw3AwAgA0EIaiEDIARBCGohBCAFQQFrIgUNAAsMBgsgBUUNBQNAIAMgAykDACAEKQMAQnR+fDcDACADQQhqIQMgBEEIaiEEIAVBAWsiBQ0ACwwFCyAFRQ0EA0AgAyADKQMAIAQpAwBCc358NwMAIANBCGohAyAEQQhqIQQgBUEBayIFDQALDAQLIAVFDQMDQCADIAMpAwAgBCkDAEJyfnw3AwAgA0EIaiEDIARBCGohBCAFQQFrIgUNAAsMAwsgBUUNAgNAIAMgAykDACAEKQMAQnF+fDcDACADQQhqIQMgBEEIaiEEIAVBAWsiBQ0ACwwCCyAFRQ0BA0AgAyADKQMAIAQpAwAgJH59NwMAIANBCGohAyAEQQhqIQQgBUEBayIFDQALDAELIAVFDQADQCADIAMpAwAgBCkDAEIEhn03AwAgA0EIaiEDIARBCGohBCAFQQFrIgUNAAsLIAhBMGokAAwBCyAIQSRqQRY2AgAgCEEMakICNwIAIAggBTYCKCAIQQM2AgQgCEGc/MEANgIAIAhBFjYCHCAIIBo2AiwgCCAIQRhqNgIIIAggCEEsajYCICAIIAhBKGo2AhggCEGg/sEAEPwGAAsgKiAwfCEkIA5BAWsiA0EAIAMgDk0bIQ4gEiAMayISIAxPDQALDAELQeCfwABBGUHsqMAAEMwGAAsgFCAhaiEUIA1BCGohDSAYIBBrIhggEE8NAAsLIAZBkAJqJAAMAQsgB0EAQdy2wAAQwQUACwsgDyAPKAIAQQFqNgIAIBdB8ABqJAAMAgtBwobAAEHGACAEQe8AakGIh8AAQeiHwAAQ9gQACxCyBgALIBNBGGogHCkDADcDACATQRBqIB0pAwA3AwAgE0EIaiAbKQMANwMAIBMgCikDMDcDACATQQE2AiQgEyACLQA0OgAwIBMgAikCLDcDKCATIBEoAiA2AiAgCigCIARAIApBJGooAgAQawsgCkHgAGokAAwFCyAKQTxqQgA3AgAgCkEBNgI0IApB/M3BADYCMCAKQYSQwQA2AjggCkEwakHAzsEAEPwGAAsgCkE8akIANwIAIApBATYCNCAKQaS2wAA2AjAgCkH8n8AANgI4IApBMGpBrLbAABD8BgALQeCfwABBGUGEu8AAEMwGAAsgBEHUAGpBxAE2AgAgBEICNwJkIARBAzYCXCAEQdjzwQA2AlggBEHEATYCTCAEIARByABqNgJgIAQgBEEEaiIANgJQIAQgBDYCSCAEIAAgBEHYAGpBrPTBABCGBwALIAQgBEEoajYCYCAEIARByABqNgIwIAQgBEE4ajYCKCAEQQhqIARBGGogBEHYAGpBkPXBABCFBwALIBEgAigCKDYCSCAAIBNBOBDnCRogESgCFARAIBFBGGooAgAQawsgEUHgAGokAA8LQeCfwABBGUHMscAAEMwGAAtQAQF/AkACQAJAIAFFBEBBASECDAELIAFBAEgNAUGBzcMALQAAGiABQQEQhAkiAkUNAgsgACACNgIEIAAgATYCAA8LEPsGAAtBASABEN8JAAtVAQF/IwBBoAJrIgIkAAJAIAEEQCABKAIADQEgAUEANgIAIAJBCGogAUGYAhDnCRogACACQRBqQZACEOcJGiABEGsgAkGgAmokAA8LENIJAAsQ0wkAC1MBAn8CQCAAKAIAIgBBEGooAgAiAUUNACAAQRRqKAIAIAFBADoAAEUNACABEGsLAkAgAEF/Rg0AIAAgACgCBCIBQQFrNgIEIAFBAUcNACAAEGsLC14BAX8jAEHQA2siASQAIAFBEGogAEHAAxDnCRpBgc3DAC0AABpByANBCBCECSIARQRAQQhByAMQ3wkACyAAQQA2AgAgAEEEaiABQQxqQcQDEOcJGiABQdADaiQAIAALXgEBfyMAQcABayIBJAAgAUEQaiAAQbABEOcJGkGBzcMALQAAGkG4AUEIEIQJIgBFBEBBCEG4ARDfCQALIABBADYCACAAQQRqIAFBDGpBtAEQ5wkaIAFBwAFqJAAgAAteAQF/IwBBwAJrIgEkACABQQhqIABBuAIQ5wkaQYHNwwAtAAAaQcACQQgQhAkiAEUEQEEIQcACEN8JAAsgAEEANgIAIABBBGogAUEEakG8AhDnCRogAUHAAmokACAAC14BAX8jAEHQAmsiASQAIAFBCGogAEHIAhDnCRpBgc3DAC0AABpB0AJBCBCECSIARQRAQQhB0AIQ3wkACyAAQQA2AgAgAEEEaiABQQRqQcwCEOcJGiABQdACaiQAIAAL9AQCCn8BfiMAQSBrIgEkACABQgA3AwggAUIANwMAIwBBEGsiCSQAIAlBEDYCDCAJIAE2AgggCUEIaiEDIwBBIGsiBCQAAkACQEEAQayawgAoAgARBQAiBQRAAkACQAJAAkAgBSgCAA4DAgEAAQsgBSgCBCECDAULIAMoAgQiAg0BDAMLIAUoAgQhBSADKAIEIQIgAygCACEGA0AgAkUNAxBBIgcQNyIIIAZB/////wcgAiACQf////8HTxsiChA4IQMgB0GEAU8EQCAHEAILIAhBhAFPBEAgCBACCyAFIAMQLCACIAprIQIgBiAKaiEGIARBEGoQzwcgBCgCEEUNAAtBjYCAgHghAiAEKAIUIgNBhAFJDQMgAxACDAMLIAVBCGohCiAFKAIEIQUgAygCACEGA0ACQCAEIAooAgBBAEGAAiACIAJBgAJPGyIHEDwiAzYCGCAFIAMQLSAEQQhqEM8HIAQoAggNACACIAdrIQIQQSIIEDciAxA5IQsgA0GEAU8EQCADEAILIAsgBEEYaigCACAGEDogC0GEAU8EQCALEAILIAhBhAFPBEAgCBACCyAEKAIYIgNBhAFPBEAgAxACCyAGIAdqIQYgAg0BDAMLCyAEKAIMIgJBhAFPBEAgAhACCyAEKAIYIgJBhAFPBEAgAhACC0GIgICAeCECDAILQdCTwgBBxgAgBEEfakGYlMIAQfiUwgAQ9gQAC0EAIQILIARBIGokACAJQRBqJAAgAgRAIAEgAjYCHEGn8sEAQSsgAUEcakHU8sEAQdiAwgAQ9gQACyABKQMAIQwgACABKQMINwMIIAAgDDcDACABQSBqJAALXgEBfyMAQaACayIBJAAgAUEQaiAAQZACEOcJGkGBzcMALQAAGkGYAkEIEIQJIgBFBEBBCEGYAhDfCQALIABBADYCACAAQQRqIAFBDGpBlAIQ5wkaIAFBoAJqJAAgAAteAQF/IwBB0ABrIgEkACABQQhqIABByAAQ5wkaQYHNwwAtAAAaQdAAQQgQhAkiAEUEQEEIQdAAEN8JAAsgAEEANgIAIABBBGogAUEEakHMABDnCRogAUHQAGokACAAC1oBAX8jAEFAaiIBJAAgAUEIaiAAQTgQ5wkaQYHNwwAtAAAaQcAAQQgQhAkiAEUEQEEIQcAAEN8JAAsgAEEANgIAIABBBGogAUEEakE8EOcJGiABQUBrJAAgAAtOAQN/IAAoAgQhASAAKAIAQX5xIgIgACgCQEF+cSIDRwRAA0AgAkH+AHFB/gBGBEAgASgCACABEGshAQsgAyACQQJqIgJHDQALCyABEGsLUwEBfwJAIAAoAgAiAEEQaigCACIBRQ0AIAFBADoAACAAQRRqKAIARQ0AIAEQawsCQCAAQX9GDQAgACAAKAIEIgFBAWs2AgQgAUEBRw0AIAAQawsLNQAgACgCAARAIAAoAgQQawsgACgCDARAIABBEGooAgAQawsgACgCGARAIABBHGooAgAQawsLWgECfyMAQRBrIgQkACAAIAEgAhDOAyAEQgA3AwggBEIANwMAA0AgBCAFaiADENUGOgAAIAVBAWoiBUEQRw0ACyAAQcABaiAEKQMAIAQpAwgQzgMgBEEQaiQAC6YDAQd/IwBBIGsiASQAIAFBwM3DADYCDCABQcXNwwA2AhBBxM3DAC0AAEEDRwRAIAEgAUEQajYCGCABIAFBDGo2AhQgASABQRRqNgIcIAFBHGohACMAQSBrIgIkAAJAAkACQAJAAkACQAJAQcTNwwAtAABBAWsOAwIEAQALQcTNwwBBAjoAACAAKAIAIgAoAgAhBCAAQQA2AgAgBEUNAiAAKAIEIwBBkAhrIgMkACADQQA2AowIIANBBGoQ1QchBUGBzcMALQAAGkHAAkHAABCECSIARQRAQcAAQcACEN8JAAsgAEEANgKAAiAAQQA2AsABIAAgBTYCgAEgACAFNgJAIABCgYCAgBA3AwAgA0GQCGokACAEKAIAIAA2AgAoAgBBAToAAEHEzcMAQQM6AAALIAJBIGokAAwECyACQRRqQgA3AgAgAkEBNgIMIAJB8LfCADYCCAwCC0G4uMIAQStBsLnCABDMBgALIAJBFGpCADcCACACQQE2AgwgAkGwuMIANgIICyACQfi3wgA2AhAgAkEIakGou8IAEPwGAAsLIAFBIGokAAthAQJ/IwBBIGsiASQAIAEgAEEDcSICNgIEIAIEQCABQgA3AhQgAUG8u8IANgIQIAFBATYCDCABQci9wgA2AgggAUEEakGwvcIAIAFBCGpBtL7CABCLBwALIAFBIGokACAAC1wBAX8jAEEwayICJAAgAiAANgIMIAJBHGpCATcCACACQQE2AhQgAkH06cIANgIQIAJBrQM2AiwgAiACQShqNgIYIAIgAkEMajYCKCABIAJBEGoQ+AggAkEwaiQAC5MBAQJ/IwBBwANrIgEkACMAQdADayICJAACQAJAIAAEQCAAKAIADQEgAEEANgIAIAJBCGogAEHIAxDnCRogASACQRBqQcADEOcJGiAAEGsgAkHQA2okAAwCCxDSCQALENMJAAsgASgCkAIEQCABQZQCaigCABBrCyABKAKgAgRAIAFBpAJqKAIAEGsLIAFBwANqJAALWAICfwF+IwBBEGsiAiQAIAJCADcDCCACQgA3AwADQCACIANqIAEQ1QY6AAAgA0EBaiIDQRBHDQALIAIpAwAhBCAAIAIpAwg3AwggACAENwMAIAJBEGokAAuWAgEHfyMAQRBrIgIkAAJAAkAgACgCCCIDIAAoAgBPDQAgAkEIaiEGIwBBIGsiASQAAkAgAyAAKAIAIgRNBEACf0GBgICAeCAERQ0AGiAEQQJ0IQUgACgCBCEHAkAgA0UEQEEEIQUgBxBrDAELQQQgByAFQQQgA0ECdCIEEI0IIgVFDQEaCyAAIAM2AgAgACAFNgIEQYGAgIB4CyEAIAYgBDYCBCAGIAA2AgAgAUEgaiQADAELIAFBFGpCADcCACABQQE2AgwgAUGcncIANgIIIAFB+JzCADYCECABQQhqQfCdwgAQ/AYACyACKAIIIgBBgYCAgHhGDQAgAEUNASAAIAIoAgwQ3wkACyACQRBqJAAPCxD7BgALXQEBfyMAQTBrIgMkACADIAE2AgwgAyAANgIIIANBHGpCATcCACADQQE2AhQgA0HsocMANgIQIANB1QM2AiwgAyADQShqNgIYIAMgA0EIajYCKCADQRBqIAIQ/AYAC0ABAX8gACgCBCIBIAAoAggQzwYgACgCAARAIAEQawsgAEEQaigCACIBIABBFGooAgAQzwYgACgCDARAIAEQawsLUQEBfyAAKAIAIgAoAggiASABKAIAIgFBAWs2AgAgAUEBRgRAIABBCGoQ/AULAkAgAEF/Rg0AIAAgACgCBCIBQQFrNgIEIAFBAUcNACAAEGsLC1EBAX8jAEHQAGsiAiQAAkAgAQRAIAEoAgANASABQQA2AgAgACACIAFB0AAQ5wkiAEEIakHIABDnCRogARBrIABB0ABqJAAPCxDSCQALENMJAAtbAQF/IwBB0ABrIgEkACABQQRyIABByAAQ5wkaQYHNwwAtAAAaQdAAQQgQhAkiAEUEQEEIQdAAEN8JAAsgAEEANgIAIABBBGogAUHMABDnCRogAUHQAGokACAAC2YBAn8jAEEQayIBJAACQEEAQbynwgAoAgARBQAiAgRAIAIoAgANASACIAAoAgA2AgAgAUEQaiQADwtBvK3CAEHGACABQQ9qQYSuwgBB5K7CABD2BAALQZiwwgBBI0G8sMIAEMwGAAthAQF/AkAgASgCACICQQFHBEACQAJAIAJBAWsOAgADAQsAC0HwiMAAQShB9InAABDMBgALIAAgASkCBDcCACAAQQhqIAFBDGooAgA2AgAPCyABKAIEIAFBCGooAgAQ1QkAC14CAX8BfgJAIAEgACgCCCICKQMIIgNWBEBBgc3DAC0AABpBDEEEEIQJIgANAUEEQQwQ3wkACyACIAMgAX03AwggACAAKQMAIAF8NwMAQQAPCyAAQYaAgIB4NgIAIAALVAEBfwJAIAAoAgAiAUEDRiABQQJGcg0AAkAgAUUEQCAAKAIEIgBBgwFLDQEMAgsgACgCBCIBQYQBTwRAIAEQAgsgACgCCCIAQYQBSQ0BCyAAEAILC4UBAQF+AkACQCAArSABrX4iAkIgiKcNACACpyIAQUBLIABBAEhyDQBBgc3DAC0AABogAEHAABCECSIBDQFBwAAgABDfCQALIwBBIGsiACQAIABBFGpCADcCACAAQQE2AgwgAEGg5sIANgIIIABBjObCADYCECAAQQhqQYTnwgAQ/AYACyABC1sBAX8jAEEgayIDJAAgAkUEQCADQRRqQgA3AgAgA0EBNgIMIANBkLzAADYCCCADQfyfwAA2AhAgA0EIakHEvMAAEPwGAAsgACACNgIEIAAgATYCACADQSBqJAALWgIBfwF+IwBBEGsiAiQAIAApAwAhAyACIABBCGopAwA3AwggAiADNwMAIAEoAhAiASgCACACQRAQiwkgAiAANQIQNwMAIAEoAgAgAkEIEIsJIAJBEGokAEEAC04BAX8CQCACIANNBEAgASgCBCIFIANJDQEgASgCACEBIAAgAyACazYCBCAAIAEgAkEDdGo2AgAPCyACIAMgBBDCBQALIAMgBSAEEMEFAAtWAQF/IwBBEGsiAiQAAkAgAC0AAEUEQCACQQA2AgggASgCECgCACACQQhqQQQQiwkMAQsgAkEBNgIMIAEoAhAoAgAgAkEMakEEEIsJCyACQRBqJABBAAswAQF/IABBBGohAQJAIAAoAgBFBEAMAQsgARCdBgsgASgCAARAIABBCGooAgAQawsLWwEBfyMAQSBrIgMkACACRQRAIANBFGpCADcCACADQQE2AgwgA0Hw/8EANgIIIANBsPDBADYCECADQQhqQaiAwgAQ/AYACyAAIAI2AgQgACABNgIAIANBIGokAAtKAQF/IwBBEGsiAiQAAkAgACgCACIABEAgAiABNgIEIAJBkwI2AgAgACACEJgCDAELIAFBfHEiAEEMahDWAyAAEGsLIAJBEGokAAtQAQF/AkAgACgCACIBRQ0AIAEgASgCACIBQQFrNgIAIAFBAUYEQCAAEPwFCyAAKAIEIgEgASgCACIBQQFrNgIAIAFBAUcNACAAQQRqEMEDCwuMAwIJfwF+IwBBEGsiAiQAIAIgARC+ASACKAIAIQEgAiACKAIEIgMgAigC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DQEgACkDECIDUA0CIAIgA3wiAyACVA0DIAIgBFQNBCADQoCAgICAgICAIFoNBSAaIAAvARgiADsBCCAaIAIgBH0iBDcDACAAIABBIGsgACADQoCAgIAQVCIBGyIYQRBrIBggA0IghiADIAEbIgNCgICAgICAwABUIgEbIhhBCGsgGCADQhCGIAMgARsiA0KAgICAgICAgAFUIgEbIhhBBGsgGCADQgiGIAMgARsiA0KAgICAgICAgBBUIgEbIhhBAmsgGCADQgSGIAMgARsiA0KAgICAgICAgMAAVCIBGyADQgKGIAMgARsiBUIAWSIYayIBa8EiIUEASA0GIBpCfyAhrSIGiCIDIASDNwMQIAMgBFQNCiAaIAA7AQggGiACNwMAIBogAiADgzcDECACIANWDQpBoH8gAWvBQdAAbEGwpwVqQc4QbSIAQdEATw0HIABBBHQiAEGAkMMAaikDACIHQv////8PgyIDIAIgBkI/gyIChiIIQiCIIhF+IglCIIgiFSAHQiCIIgYgEX58IAYgCEL/////D4MiB34iCEIgiCIWfCELIAlC/////w+DIAMgB35CIIh8IAhC/////w+DfEKAgICACHxCIIghEkIBQQAgASAAQYiQwwBqLwEAamtBP3GtIgmGIgdCAX0hDCADIAQgAoYiAkIgiCIEfiIIQv////8PgyADIAJC/////w+DIgJ+QiCIfCACIAZ+IgJC/////w+DfEKAgICACHxCIIghDyAEIAZ+IQQgAkIgiCECIAhCIIghCCAAQYqQwwBqLwEAIQEgBiAFIBithiIFQiCIIhN+IhQgAyATfiIKQiCIIg18IAYgBUL/////D4MiBX4iDkIgiCIQfCAKQv////8PgyADIAV+QiCIfCAOQv////8Pg3xCgICAgAh8QiCIIg58QgF8IgogCYinIgBBkM4ATwRAIABBwIQ9SQ0JIABBgMLXL08EQEEIQQkgAEGAlOvcA0kiGBshIUGAwtcvQYCU69wDIBgbDAsLQQZBByAAQYCt4gRJIhgbISFBwIQ9QYCt4gQgGBsMCgsgAEHkAE8EQEECQQMgAEHoB0kiGBshIUHkAEHoByAYGwwKC0EKQQEgAEEJSyIhGwwJC0HTi8MAQRxB0JrDABDMBgALQYCMwwBBHUHgmsMAEMwGAAtBsIzDAEEcQfCawwAQzAYAC0GU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DCAEIAA2AghBACAEQQhqQYyVwQAgBEEMakGMlcEAIAIgAxCiAQALNgEBfyMAQRBrIgIkACACIAA2AgwgAUG0jcIAQQVBuY3CACACQQxqQcCNwgAQpwMgAkEQaiQACzYBAX8jAEEQayICJAAgAiAANgIMIAFB8KfCAEEUQYSowgAgAkEMakGIqMIAEKcDIAJBEGokAAs5AQF/IwBBEGsiBCQAIAQgATYCDCAEIAA2AghBACAEQQhqQYTAwgAgBEEMakGEwMIAIAIgAxCiAQALOQEBfyMAQRBrIgQkACAEIAE2AgwgBCAANgIIQQAgBEEIakGUwMIAIARBDGpBlMDCACACIAMQogEACzkBAX8jAEEQayIEJAAgBCABNgIMIAQgADYCCEEAIARBCGpBrOLCACAEQQxqQaziwgAgAiADEKIBAAs0AQF/IwBBEGsiAiQAIAIgACgCADYCDCABQdfJwABBCCACQQxqQbTJwAAQzAIgAkEQaiQACzQBAX8jAEEQayICJAAgAiAAKAIANgIMIAFBy8nAAEEMIAJBDGpBtMnAABDMAiACQRBqJAALNAEBfyMAQRBrIgIkACACIAAoAgA2AgwgAUHfycAAQQ4gAkEMakG0ycAAEMwCIAJBEGokAAs5ACABKAIERQRAQQBBAEGUtMAAEMAFAAsgACABKQMINwMAIAAgASgCADYCECAAIAFBEGopAwA3AwgLOQAgASgCBEUEQEEAQQBBhLTAABDABQALIAAgASkDCDcDACAAIAEoAgA2AhAgACABQRBqKQMANwMICzIAAkAgASAAQRhqELoFIgANACABQggQjAYiAA0AIAFCCBCMBiIADQAgARD8ByEACyAACygBAX8gACgCCCIBIAAoAgwgAWtBOG4QuQYgACgCBARAIAAoAgAQawsLKAEBfyAAKAIIIgEgACgCDCABa0EMbhDEBiAAKAIEBEAgACgCABBrCws0AQF/IwBBEGsiAiQAIAIgACgCADYCDCABQeXQwQBBByACQQxqQezQwQAQzAIgAkEQaiQACzIBAX8gASgCHCICQRBxRQRAIAJBIHFFBEAgACABELwJDwsgACABENgDDwsgACABENcDCzIBAX8gASgCHCICQRBxRQRAIAJBIHFFBEAgACABENIHDwsgACABENgDDwsgACABENcDCy4AAkAgA2lBAUdBgICA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DQAgASAAKAIEIgAoAgARAQAgACgCBEUNACAAKAIIGiABEGsLCzEBAX8jAEEQayICJAAgAiAANgIMIAFBhO/BAEEMIAJBDGpBkO/BABDMAiACQRBqJAALMQEBfyMAQRBrIgIkACACIAA2AgwgAUGwicIAQQwgAkEMakG8icIAEMwCIAJBEGokAAssAQF/IwBBEGsiACQAIABBCGoiAiABQdCNwgBBCRDIByACELADIABBEGokAAssAQF/IwBBEGsiACQAIABBCGoiAiABQdmNwgBBCxDIByACELADIABBEGokAAsxAQF/IwBBEGsiASQAIAFBgICAgHg2AgQgASAAKQIANwIIIAFBBGoQ7QYgAUEQaiQACzEBAX8jAEEQayICJAAgAiAANgIMIAFBrKLCAEEIIAJBDGpBtKLCABDMAiACQRBqJAALLAEBfyMAQRBrIgAkACAAQQhqIgIgAUHMtcIAQQsQyAcgAhCwAyAAQRBqJAALLAEBfyMAQRBrIgAkACAAQQhqIgIgAUGU7sIAQQsQyAcgAhC5BSAAQRBqJAALOgEBfyAAKAIAIQECQCAALQAEDQBB7M3DACgCAEH/////B3FFDQAQ7QkNACABQQE6AAELIAFBADoAAAstACABIAJJBEBByNTBAEEhQezUwQAQzAYACyABIAJrIgEgACABQQN0aiACEHALHQAgACgCAEF8cSIAKAIEBEAgACgCABBrCyAAEGsLLwAgAEG078IANgIEIABBAjoAACABIAIoAgARAQAgAigCBARAIAIoAggaIAEQawsLjQICBH4DfwJAIAEoAgAhByABKAIEIQYgASgCKCEIIAEpAwghBCABQRBqKQMAIQUgASkDGCECIAFBIGopAwAhAyMAQSBrIgEkAAJAIAIgA4RQRSACeyADe3xCAlpxRQRAIAZFDQEgACACNwMYIAAgBDcDCCAAIAg2AiggACAGNgIEIAAgBzYCACAAQSBqIAM3AwAgAEEQaiAFNwMAIAFBIGokAAwCCyABQRRqQgA3AgAgAUEBNgIMIAFB6L3AADYCCCABQfyfwAA2AhAgAUEIakH0w8AAEPwGAAsgAUEUakIANwIAIAFBATYCDCABQbzEwAA2AgggAUH8n8AANgIQIAFBCGpBxMTAABD8BgALCzAAIAAgASgCACABKAIEIAEoAiggASkDCCABQRBqKQMAIAEpAxggAUEgaikDABCOBAsrACABIAJJBEBBidLBAEEjQZTUwQAQzAYACyACIAAgAkEDdGogASACaxBwC90CAQN/AkACQAJAIAAoAgBBAWsOAgECAAsjAEEQayICJAAgAEEEaigCACIAIAAoAoACIgFBAWs2AoACAkAgAUEBRw0AIAAgACgCQCIBIAAoAsgBIgNyNgJAIAEgA3FFBEAgAEGgAWoQlwELIAAtAIgCIABBAToAiAJFDQAgAiAANgIMIAJBDGoQ1AYLIAJBEGokAA8LIwBBEGsiAiQAIABBBGooAgAiACAAKALAASIBQQFrNgLAAQJAIAFBAUcNACAAIAAoAkAiAUEBcjYCQCABQQFxRQRAIABBgAFqEJcBCyAALQDIASAAQQE6AMgBRQ0AIAIgADYCDCACQQxqEPYHCyACQRBqJAAPCyMAQRBrIgIkACAAQQRqKAIAIgAgACgCOCIBQQFrNgI4AkAgAUEBRw0AIAAQaiAALQBAIABBAToAQEUNACACIAA2AgwgAkEMahDjBwsgAkEQaiQACzIBAX9Bgc3DAC0AABpBCEEEEIQJIgJFBEBBBEEIEN8JAAsgAiABNgIEIAIgADYCACACCzAAIAEoAhQgAiADIAFBGGooAgAoAgwRBgAhAiAAQQA6AAUgACACOgAEIAAgATYCAAsqAQF/IAAoAgAiASAAKAIEIgAoAgARAQAgACgCBARAIAAoAggaIAEQawsLKAEBfwJAIAAoAgAiAUGAgICAeEYNACAAEJ4GIAFFDQAgACgCBBBrCwspAQF/An9BvKfCABDHBiIABEAgAEGMAWoMAQsQ7AMLKAIAQYQCaigCAAsuAAJAAkACQCAAKAIADgIBAgALIABBBGoQyQcLDwsgACgCBCAAQQxqKAIAELkGCyoBAX8gACgCECIBBEAgAEEcaigCACABbg8LQeCfwABBGUHMscAAEMwGAAuaAQEDfyMAQRBrIgMkACADQQRqIQEjAEEQayICJAACQAJAIAAEQCAAKAIADQEgAEEANgIAIAJBCGogAEEIaikCADcDACACIAApAgA3AwAgASACKQIENwIAIAFBCGogAkEMaigCADYCACAAEGsgAkEQaiQADAILENIJAAsQ0wkACyABEJ4GIAEoAgAEQCABKAIEEGsLIANBEGokAAs6AQJ/QYzNwwAtAAAhAUGMzcMAQQA6AABBkM3DACgCACECQZDNwwBBADYCACAAIAI2AgQgACABNgIACycAIABCADcAACAAQRhqQgA3AAAgAEEQakIANwAAIABBCGpCADcAAAsgAQF/IAAgACABakEBayICSwRAEOwJAAsgAkEAIAFrcQsiACAAKAIAIgCtIABBf3OsQgF8IABBAE4iABsgACABEMkBC5sBAQN/IAAoAggiAiABTwRAIAEgACgCCE0EQCAAIAE2AggLDwsgASACayICIAAoAgAgACgCCCIDa0sEQCAAIAMgAhCtBgsgACgCBCIEIAAoAggiAWohAwJAAkAgAkECTwRAIANBACACQQFrIgIQ5AkaIAQgASACaiIBaiEDDAELIAJFDQELIANBADoAACABQQFqIQELIAAgATYCCAsjABD6BiAAQQhqIAI6AAAgACABNgIEIAAgAS0AAUEARzYCAAsuAQF/QYHNwwAtAAAaQYwIQQQQhAkiAUUEQEEEQYwIEN8JAAsgASAAQYwIEOcJCyMBAX8gACABIAJqQQFrIgNBACACa3E2AgQgACABIANNNgIACyYAIAAgASkDCDcDCCAAIAEpAwA3AwAgAEEQaiABQRBqKQMANwMACycBAX8gACgCDCIBBEAgACgCCCABbg8LQeCfwABBGUHEs8AAEMwGAAsiAQF/IwBBkAJrIgEkACABIAAQ8QUgARD4BSABQZACaiQACyYBAX9Bgc3DAC0AABpB4AJBBBCECSIABEAgAA8LQQRB4AIQ3wkACyoBAX8gACgCECIBRQRAQbDPwgBBGUGcz8IAEMwGAAsgAEEMaigCACABbgsmACAAIAAoAgAgACgCBEEDdEHAACABQQN0EI0INgIAIAAgATYCBAsmACAAIAAoAgAgACgCBEEEdEHAACABQQR0EI0INgIAIAAgATYCBAsfACABIANGBEAgACACIAEQ5wkaDwsgASADIAQQwwUACyUAIABFBEBBgJ7CAEEyENEJAAsgACACIAMgBCAFIAEoAhARDwALKAAgASAAKAIALQAAQQJ0IgBB7OrCAGooAgAgAEHc6sIAaigCABCFCAsgAQJ+IAApAwAiAiACQj+HIgOFIAN9IAJCAFkgARDJAQvlAQIDfwJ+IAEoAgAhBCABKAIEIQMgASgCGCECIAEpAwghBSABQRBqKQMAIQYjAEEwayIBJAAgASACNgIAAkAgAgRAIAMgAnBFDQEgAUEoakEpNgIAIAFBEGpCAjcCACABQQM2AgggAUHIuMAANgIEIAFBFjYCICABIAM2AiwgASABQRxqNgIMIAEgATYCJCABIAFBLGo2AhwgAUEEakHguMAAEPwGAAtBgKDAAEE5QcC3wAAQzAYACyAAIAU3AwggACACNgIYIAAgAzYCBCAAIAQ2AgAgAEEQaiAGNwMAIAFBMGokAAsbACAAKAIAIgBBBGoQhgYgAEEcahCGBiAAEGsLJQAgASAALQAAQQJ0IgBBiNHBAGooAgAgAEH80MEAaigCABCFCAsdACACIAOEUEUEQCAAIAEgAhCHAw8LIAAgARDuAwvKAQECfyMAQRBrIgEkACMAQSBrIgIkAAJAAkAgAARAIAAoAgANASAAQQA2AgAgAkEQaiAAQQhqKQIANwMAIAJBGGogAEEQaigCADYCACACIAApAgA3AwggASACKQIMNwIAIAFBCGogAkEUaikCADcCACAAEGsgAkEgaiQADAILENIJAAsQ0wkACyABQQRqIQACQCABKAIARQRAIAAoAgBFDQEgAUEIaigCABBrDAELIAAQnQYgACgCAARAIAAoAgQQawsLIAFBEGokAAsjACAARQRAQYCewgBBMhDRCQALIAAgAiADIAQgASgCEBEHAAsjACAARQRAQYCewgBBMhDRCQALIAAgAiADIAQgASgCEBEiAAsjACAARQRAQYCewgBBMhDRCQALIAAgAiADIAQgASgCEBFAAAsjACAARQRAQYCewgBBMhDRCQALIAAgAiADIAQgASgCEBEVAAsjACAARQRAQYCewgBBMhDRCQALIAAgAiADIAQgASgCEBFCAAsiACAAIAEoAkAiAUEEdDYCBCAAIAFBgICAgAFJQQZ0NgIACycBAX8gACgCECIBRQRAQbDPwgBBGUHMz8IAEMwGAAsgACgCBCABbgsZAQF/IAEgA0YEfyAAIAIgARDmCUUFIAQLCx8AIAAoAgBBgICAgHhyQYCAgIB4RwRAIAAoAgQQawsLJQEBf0HUzcMAKAIAIgAEQCAAQQFrDwtB1M3DAEGBIDYCAEGAIAslACABIAAtAABBAnQiAEGcg8MAaigCACAAQfiBwwBqKAIAEIUIC7cBAQJ/QaDGwwApAwBQBH8jAEHQDGsiASQAAkAgAARA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gAFqIQIgOkEBaiI6ID1HDQALCyAEQeAAaiQADAQLIARBADYCBCAEQcwAaiAEIARBBGpB1NfCABCMBwALIARBADYCBCAEQcwAaiAEIARBBGpBxNfCABCMBwALIARBADYCBCAEQcwAaiAEIARBBGpBtNfCABCMBwALIARBADYCBCAEQcwAaiAEIARBBGpBpNfCABCMBwALC5gNAjF8CH8CQCMAQeAAayIEJAAgBEEgNgIAIAQgATYCTCABQSBGBEAgBCADNgJMIANBIEYEQCAEIAU2AkwgBUEgRgRAIAQgBzYCTCAHQSBGBEAgAEGAAWohB0GAfyEBA0AgASACaiIDQYgEaiAAIAFqIgVBiAFqKwMAIg8gBUGIA2orAwAiEKEiFyAFQYACaisDACIRIAVBgARqKwMAIhihIhmhOQMAIANBgARqIAVBgAFqKwMAIhIgBUGAA2orAwAiCKEiCiAFQYgCaisDACINIAVBiARqKwMAIgmhIgugOQMAIANBiANqIA8gEKAiDyANIAmgIhChOQMAIANBgANqIBIgCKAiEiARIBigIhGhOQMAIANBiAJqIBcgGaA5AwAgA0GAAmogCiALoTkDACADQYgBaiAPIBCgOQMAIANBgAFqIBIgEaA5AwAgAUEQaiIBDQALIARChICAgBA3AkQgBEEANgI8IAQgADYCQCAEIABBQGsiATYCOCAEQoSAgIAQNwJYIAQgATYCVCAEQQA2AlAgBCAHNgJMIARBBGogBEE4aiAEQcwAahCXAwJAQQQgBCgCMCAEKAIsIgVrIgEgAUEETxsiPUUNACAEKAIMIgdFDQAgBCgCKCIBQQR0IT4gBCgCFCIDQQR0IT8gBCgCICABIAVsQQR0aiE6IAcgAyAFbEEEdGohOyADIAEgASADSxsiQEEARyEDA0AgQARAIAYgOUEHdGoiASsDcCEPIAErA2AhECABKwNQIRcgASsDQCERIAErAzAhGCABKwMgIRkgASsDECESIAFB+ABqKwMAIiOaISQgAUHoAGorAwAiJZohJiABQdgAaisDACInmiEoIAFByABqKwMAIimaISogAUE4aisDACIrmiEsIAFBKGorAwAiLZohLiABQRhqKwMAIi+aITBBACEHIAMhAQNAIAIgB2oiBUHwAGorAwAhCCAFQfgAaisDACEKIBggBUE4aisDACIaICsg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QQR0IRAgCCgCGCABIARsQQR0aiEMIAgoAgQgAyAEbEEEdGohDSADIAEgASADSxsiEUEARyEFIAAhASACIQMDQCARBEAgBiALQQh0aiIEKwPwASEqIAQrA+ABISAgBCsD0AEhKyAEKwPAASEsIAQrA7ABITMgBCsDoAEhISAEKwOQASEtIAQrA4ABITQgBCsDcCE1IAQrA2AhIiAEKwNQITYgBCsDQCE3IAQrAzAhOCAEKwMgIUAgBCsDECFBIARB+AFqKwMAIkuaIUwgBEHoAWorAwAiTZohTiAEQdgBaisDACJPmiFQIARByAFqKwMAIlGaIVIgBEG4AWorAwAiU5ohVCAEQagBaisDACJVmiFWIARBmAFqKwMAIleaIVggBEGIAWorAwAiWZohWiAEQfgAaisDACJbmiFcIARB6ABqKwMAIl2aIV4gBEHYAGorAwAiX5ohYCAEQcgAaisDACJhmiFiIARBOGorAwAiY5ohZCAEQShqKwMAImWaIWYgBEEYaisDACJnmiFoQQAhCiAFIQQDQCAKIA1qIhIrAwAhGCABIApqIglBgAhqKwMAIRkgCUGADGorAwAhGiAJQYAEaisDACEjIAlBgApqKwMAIRYgCUGAAmorAwAhFCAJQYAOaisDACEkIAlBgAZqKwMAISUgCiAMaiITKwMAIRsgCUGACWorAwAhJiAJQYANaisDACEnIAlBgAVqKwMAISggCUGAC2orAwAhFSAJQYADaisDACE5IAlBgA9qKwMAIS4gCUGAB2orAwAhLyADIApqIgdBCGogEkEIaisDACI6IAlBiAhqKwMAIjCgIhwgCUGIBGorAwAiQiAJQYgMaisDACJDoCIdoCIeIAlBiAJqKwMAIjsgCUGICmorAwAiRKAiHyAJQYgGaisDACJFIAlBiA5qKwMAIkagIjGgIhegIikgE0EIaisDACJpIAlBiAlqKwMAImqgIjwgCUGIBWorAwAiayAJQYgNaisDACJsoCI9oCI+IAlBiANqKwMAIm0gCUGIC2orAwAibqAiPyAJQYgHaisDACJvIAlBiA9qKwMAInCgIkegIjKgIkigOQMAIAcgGCAZoCJxICMgGqAicqAiSSAUIBagInMgJSAkoCJ0oCJ1oCJ2IBsgJqAidyAoICegInigIkogOSAVoCJ5IC8gLqAieqAie6AifKA5AwAg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WCAEQYgBaisDACJZmiFaIARB+ABqKwMAIluaIVwgBEHoAGorAwAiXZohXiAEQdgAaisDACJfmiFgIARByABqKwMAImGaIWIgBEE4aisDACJjmiFkIARBKGorAwAiZZohZiAEQRhqKwMAImeaIWhBACEKIAUhBANAIAogDWoiEisDACEcIAEgCmoiCUGAAmorAwAhICAJQYADaisDACEdIAlBgAFqKwMAISEgCUHAAmorAwAhFyAJQUBrKwMAIRQgCUHAA2orAwAhIiAJQcABaisDACEjIAogDGoiEysDACEeIAlBoAJqKwMAISQgCUGgA2orAwAhJSAJQaABaisDACEmIAlB4AJqKwMAIRUgCUHgAGorAwAhLCAJQeADaisDACEnIAlB4AFqKwMAISggAyAKaiIHQQhqIBJBCGorAwAiLSAJQYgCaisDACIpoCIYIAlBiAFqKwMAIjcgCUGIA2orAwAiOKAiGaAiGiAJQcgAaisDACIuIAlByAJqKwMAIjmgIhsgCUHIAWorAwAiOiAJQcgDaisDACI7oCIqoCIWoCIfIBNBCGorAwAiaSAJQagCaisDACJqoCIvIAlBqAFqKwMAImsgCUGoA2orAwAibKAiMKAiMSAJQegAaisDACJtIAlB6AJqKwMAIm6gIjIgCUHoAWorAwAibyAJQegDaisDACJwoCI8oCIroCI9oDkDACAHIBwgIKAicSAhIB2gInKgIj4gFCAXoCJzICMgIqAidKAidaAidiAeICSgIncgJiAloCJ4oCI/ICwgFaAieSAoICegInqgInugInygOQMAIAdByAFqIDYgGiAWoSIaID8ge6EiFqAiPyBRID4gdaEiPiAxICuhIjGhIiuiEOUJOQMAIAdBwAFqIDYgKyA/IFKiEOUJOQMAIAdBiAFqIEMgHyA9oSIfIFkgdiB8oSIrohDlCTkDACAHQYABaiBDICsgHyBaohDlCTkDACAHQcgAaiBHIBogFqEiGiBhID4gMaAiFqIQ5Qk5AwAgB0FAayBHIBYgGiBiohDlCTkDACAHQegBaiA0IBggGaEiGCBzIHShIhmgIhogLyAwoSIWIHkgeqEiH6AiLyB3IHihIjAgMiA8oSIxoSIyoETNO39mnqDmP6IiPKAiKyBNIHEgcqEiPSAbICqhIhuhIiogMiAvoUTNO39mnqDmP6IiL6Ai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KwMAIgwgBUGIDGorAwAiDaAiECAFQYgIaisDACIRIAVBiBBqKwMAIhigIimhIhKhOQMAIANBiApqIBwgFaAiHCAQICmgIhWhOQMAIANBgApqIAggC6AiCCAWICigIhahOQMAIANBiAZqIB4gNaE5AwAgA0GABmogDyASoDkDACADQYgCaiAcIBWgOQMAIANBgAJqIAggFqA5AwAgA0GIEGogGyAUoSIbIBcgCaEiFKAiHCAMIA2hIhUgJiAnoSIeoCIWICQgJaEiJCARIBihIiWhIiagRM07f2aeoOY/oiInoDkDACADQYAQaiA2IAqhIiggHSAjoSIdoSIjICYgFqFEzTt/Zp6g5j+iIhagOQMAIANBiAxqIBsgFKEiGyAVIB6hIhQgJCAloCIVoUTNO39mnqDmP6IiHqE5AwAgA0GADGogKCAdoCIdIBQgFaBEzTt/Zp6g5j+iIhShOQMAIANBiAhqIBwgJ6E5AwAgA0GACGogIyAWoTkDACADQYgEaiAbIB6gOQMAIANBgARqIB0gFKA5AwAgAUEQaiIBDQALIARCiICAgBA3AkQgBEEANgI8IAQgADYCQCAEIABBgAFqIgE2AjggBEKIgICAEDcCWCAEIAE2AlQgBEEANgJQIAQgBzYCTCAEQQRqIARBOGogBEHMAGoQlwNBCCAEKAIwIAQoAiwiBWsiASABQQhPGyJ1BEAgBCgCKCIBQQR0IXYgBCgCFCIDQQR0IXcgBCgCICABIAVsQQR0aiFzIAQoAgwgAyAFbEEEdGohdCADIAEgASADSxsieEEARyEDA0AgeARAIAYgckEIdGoiASsD8AEhGyABKwPgASEUIAErA9ABIRwgASsDwAEhHSABKwOwASEjIAErA6ABIRUgASsDkAEhHiABKwOAASEkIAErA3AhJSABKwNgIRYgASsDUCEmIAErA0AhJyABKwMwISggASsDICE1IAErAxAhNiABQfgBaisDACJFmiFGIAFB6AFqKwMAIkeaIUggAUHYAWorAwAiSZohSiABQcgBaisDACJLmiFMIAFBuAFqKwMAIk2aIU4gAUGoAWorAwAiT5ohUCABQZgBaisDACJRmiFSIAFBiAFqKwMAIlOaIVQgAUH4AGorAwAiVZohViABQegAaisDACJXmiFYIAFB2ABqKwMAIlmaIVogAUHIAGorAwAiW5oh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A0GIAmogJyAooDkDACADQYACaiApICqgOQMAIAFBEGoiAQ0ACyAEQoKAgIAQNwJEIARBADYCPCAEIAA2AkAgBCAAQSBqIgE2AjggBEKCgICAEDcCWCAEIAE2AlQgBEEANgJQIAQgAEFAazYCTCAEQQRqIARBOGogBEHMAGoQlwNBAiAEKAIwIAQoAiwiBWsiASABQQJPGyJ1BEAgBCgCKCIBQQR0IXYgBCgCFCIDQQR0IXcgBCgCICABIAVsQQR0aiFzIAQoAgwgAyAFbEEEdGohdCADIAEgASADSxsieEEARyEDA0AgeARAIAYgckEIdGoiASsD8AEhJyABKwPgASEoIAErA9ABISkgASsDwAEhKiABKwOwASE6IAErA6ABITsgASsDkAEhPCABKwOAASE9IAErA3AhPiABKwNgIT8gASsDUCFAIAErA0AhQSABKwMwIUIgASsDICFDIAErAxAhRCABQfgBaisDACJFmiFGIAFB6AFqKwMAIkeaIUggAUHYAWorAwAiSZohSiABQcgBaisDACJLmiFMIAFBuAFqKwMAIk2aIU4gAUGoAWorAwAiT5ohUCABQZgBaisDACJRmiFSIAFBiAFqKwMAIlOaIVQgAUH4AGorAwAiVZohViABQegAaisDACJXmiFYIAFB2ABqKwMAIlmaIVogAUHIAGorAwAiW5ohXCABQThqKwMAIl2aIV4gAUEoaisDACJfmiFgIAFBGGorAwAiYZohYkEAIQcgAyEBA0AgAiAHaiIFQfABaisDACEKIAVB+AFqKwMAIQggPiAFQfgAaisDACIcIFUgBUHwAGorAwAiIqIQ5QkhFiAnIAggRSAKohDlCSEJIAVBsAFqKwMAIQsgBUG4AWorAwAhECBCIAVBOGorAwAiIyBdIAVBMGorAwAiMaIQ5QkhDSA6IBAgTSALohDlCSEOIAVB0AFqKwMAIREgBUHYAWorAwAhEiBAIAVB2ABqKwMAIiQgWSAFQdAAaisDACIlohDlCSEXICkgEiBJIBGiEOUJISsgBUGQAWorAwAhEyAFQZgBaisDACEPIEQgBUEYaisDACIyIGEgBUEQaisDACImohDlCSEdIDwgDyBRIBOiEOUJIRggBUHgAWorAwAhFCAFQegBaisDACEMID8gBUHoAGorAwAiMyBXIAVB4ABqKwMAIjSiEOUJIR4g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IAVB6ANqIBggHqAiCCAPIBWgIhVERo0yz2uQ7T8gESALoCILRGSprqbifdi/ohDlCSIKoDkDACAFQeADaiAdIA6gIgkgC0RGjTLPa5DtPyAVRGSprqbifdg/ohDlCSILoDkDACAFQegBaiAIIAqhOQMAIAVB4AFqIAkgC6E5AwAgB0EQaiEHIAFBAWsiAQ0ACwsgAEEQaiEAIHMgdmohcyB0IHdqIXQgAkGAAmohAiByQQFqInIgdUcNAAsLIARB4ABqJAAMBAsgBEEANgIEIARBzABqIAQgBEEEakGs2sIAEIwHAAsgBEEANgIEIARBzABqIAQgBEEEakGc2sIAEIwHAAsgBEEANgIEIARBzABqIAQgBEEEakGM2sIAEIwHAAsgBEEANgIEIARBzABqIAQgBEEEakH82cIAEIwHAAsLuCMCanwIfwJAIwBB4ABrIgQkACAEQYACNgIAIAQgATYCTCABQYACRgRAIAQgAzYCTCADQYACRgRAIAQgBTYCTCAFQYACRgRAIAQgBzYCTCAHQYACRgRAIABBgAJqIQcgAEGABGohckGAfiEBA0AgACABaiIDQYASaisDACEbIANBgAJqKwMAIRwgA0GAGmorAwAhHSADQYAKaisDACEsIANBgBZqKwMAIR4gA0GABmorAwAhHyADQYAeaisDACEgIANBgA5qKwMAISEgA0GIFGorAwAhIiADQYgEaisDACEVIANBiBxqKwMAIS0gA0GIDGorAwAhIyADQYgYaisDACEWIANBiAhqKwMAIS4gA0GIIGorAwAhJCADQYgQaisDACEKIAEgAmoiBUGIGmogA0GIAmorAwAiCCADQYgSaisDACIToCIJIANBiApqKwMAIgwgA0GIGmorAwAiF6AiC6AiDiADQYgGaisDACIYIANBiBZqKwMAIhGgIg8gA0GIDmorAwAiMCADQYgeaisDACIZoCINoCIQoSIUIANBgARqKwMAIiUgA0GAFGorAwAiEqAiKCADQYAMaisDACIpIANBgBxqKwMAIiagIiegIhogA0GACGorAwAiMSADQYAYaisDACIvoCIqIANBgBBqKwMAIjQgA0GAIGorAwAiNaAiMqAiK6EiNqE5AwAgBUGAGmogHCAboCIzICwgHaAiPaAiNyAfIB6gIj4gISAgoCI/oCJAoSJBIBUgIqAiQiAjIC2g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QQA2AgQgCEHMAGogCCAIQQRqQazawgAQjAcACyAIQQA2AgQgCEHMAGogCCAIQQRqQZzawgAQjAcACyAIQQA2AgQgCEHMAGogCCAIQQRqQYzawgAQjAcACyAIQQA2AgQgCEHMAGogCCAIQQRqQfzZwgAQjAcACwu4IwJqfAh/AkAjAEHgAGsiBCQAIARBgAI2AgAgBCABNgJMIAFBgAJGBEAgBCADNgJMIANBgAJGBEAgBCAFNgJMIAVBgAJGBEAgBCAHNgJMIAdBgAJGBEAgAEGAAmohByAAQYAEaiFyQYB+IQEDQCAAIAFqIgNBgBJqKwMAIRwgA0GAAmorAwAhHSADQYAaaisDACEeIANBgApqKwMAISsgA0GAFmorAwAhHyADQYAGaisDACEgIANBgB5qKwMAISEgA0GADmorAwAhIiADQYgUaisDACEjIANBiARqKwMAIRUgA0GIHGorAwAhLCADQYgMaisDACEkIANBiBhqKwMAIRYgA0GICGorAwAhLSADQYggaisDACElIANBiBBqKwMAIQogASACaiIFQYgaaiADQYgCaisDACIIIANBiBJqKwMAIhOgIgkgA0GICmorAwAiDSADQYgaaisDACIXoCILoCIMIANBiAZqKwMAIhggA0GIFmorAwAiEaAiDyADQYgOaisDACIwIANBiB5qKwMAIhmgIg6gIhChIhQgA0GABGorAwAiJiADQYAUaisDACISoCInIANBgAxqKwMAIiggA0GAHGorAwAiLqAiGqAiGyADQYAIaisDACIxIANBgBhqKwMAIi+gIikgA0GAEGorAwAiNCADQYAgaisDACI1oCIyoCIqoSI2oDkDACAFQYAaaiAdIBygIjMgKyAeoCI9oCI3ICAgH6AiPiAiICGgIj+gIkChIkEgFSAjoCJCICQgLKAiQ6AiRCAtIBagIkUgCiAloCJGoCJHoSJIoTkDACAFQYgSaiAMIBCgIgwgRCBHoCIQoTkDACAFQYASaiA3IECgIjcgGyAqoCIboTkDACAFQYgKaiAUIDahOQMAIAVBgApqIEEgSKA5AwAgBUGIAmogDCAQoDkDACAFQYACaiA3IBugOQMAIAVBiB5qIAkgC6EiCSA+ID+hIgugIgwgQiBDoSIQICkgMqEiFKAiGyAnIBqhIicgRSBGoSIaoSIpoETNO39mnqDmP6Ii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IAJBBGogAiACQQhqQYzawgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBnNrCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakGs2sIAEIwHAAsLgwMBCHwCQCMAQSBrIgIkACACQQQ2AgAgAiABNgIEAkACQAJAIAFBBEYEQCACIAM2AgQgA0EERw0BIAIgBTYCBCAFQQRHDQIgAiAHNgIEIAdBBEcNAyAAIAArAwAiCiAAKwMgIgugIgggACsDECIMIAArAzAiDaAiCaE5AyAgACAIIAmgOQMAIABBOGoiASsDACEIIAEgACsDCCIJIABBKGoiASsDACIOoSIPIAwgDaEiDKA5AwAgACAKIAuhIgogAEEYaiIDKwMAIgsgCKEiDaE5AzAgASAJIA6gIgkgCyAIoCIIoTkDACADIA8gDKE5AwAgACAKIA2gOQMQIAAgCSAIoDkDCCACQSBqJAAMBAsgAkEANgIIIAJBBGogAiACQQhqQfzZwgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBjNrCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakGc2sIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQazawgAQjAcACwufDQI4fAl/AkAjAEEgayICJAAgAkEQNgIAIAIgATYCBAJAAkACQCABQRBGBEAgAiADNgIEIANBEEcNASACIAU2AgQgBUEQRw0CIAIgBzYCBCAHQRBHDQMgAEGYAWoiASsDACEIIABBGGoiAysDACEJIABB2AFqIgQrAwAhDSAAQdgAaiIFKwMAIQ4gAEG4AWoiBisDACEKIABBOGoiBysDACEPIABB+AFqIkArAwAhECAAQfgAaiJBKwMAIREgAEGIAWoiQisDACESIABByAFqIkMrAwAhGiAAQcgAaiJEKwMAIRsgAEGoAWoiRSsDACETIABBKGoiRisDACEcIABB6AFqIkcrAwAhFCAAQegAaiJIKwMAIR0gACsDCCEeIAAgACsDACIfIAArA4ABIiWgIhUgACsDQCIgIAArA8ABIiGgIhagIgsgACsDICImIAArA6ABIiKgIhcgACsDYCInIAArA+ABIiigIiOgIgygIhggACsDECIwIAArA5ABIjGgIikgACsDUCIyIAArA9ABIjOgIiqgIhkgACsDMCI0IAArA7ABIjWgIisgACsD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nqDmP6IiDaE5A1AgBiAQIBShOQMAIAAgDyALoTkDMCABIAggCqA5AwAgACAMIA2gOQMQIAJBIGokAAwECyACQQA2AgggAkEEaiACIAJBCGpB/NnCABCMBwALIAJBADYCCCACQQRqIAIgAkEIakGM2sIAEIwHAAsgAkEANgIIIAJBBGogAiACQQhqQZzawgAQjAcACyACQQA2AgggAkEEaiACIAJBCGpBrNrCABCMBwALCxMAIABBGTYCBCAAQYjiwgA2AgALEAAgACgCACAAKAIEIAEQUAsRACAAKAIAIAAoAgQgARDiCQsRACABIAAoAgAgACgCBBCFCAsiACAAQpzKtJyT4uSVzwA3AwggAELRxe/NzYLN4f8ANwMACyAAIABC5N7HhZDQhd59NwMIIABCwff56MyTstFBNwMACyIAIABCjYSZ6OiU74GjfzcDCCAAQqSF9JiC9Ziku383AwALIAAgAELrnd3g6M63nQc3AwggAEL9xtfm68XEvTM3AwALEwAgAEG4+MIANgIEIAAgATYCAAsQACABIAAoAgAgACgCBBBOCw0AIAAgASACEIsJQQALCgAgACgCuAEQawsNACAAIAEgAhCJCUEACw0AIAAoAgQgACgCAGsLDgAgACgCABoDQAwACwALDgAgADUCAEEBIAEQyQELDgAgADEAAEEBIAEQyQELDgAgACkDAEEBIAEQyQELvAICAn8BfgJ/IAAoAgApAwAhBCMAQYABayIDJAACQAJAAn8CQCABKAIcIgBBEHFFBEAgAEEgcQ0BIARBASABEMkBDAILQQAhAANAIAAgA2pB/wBqQTBB1wAgBKdBD3EiAkEKSRsgAmo6AAAgAEEBayEAIARCEFQgBEIEiCEERQ0ACyAAQYABaiICQYABSw0CIAFBAUGspcMAQQIgACADakGAAWpBACAAaxBfDAELQQAhAANAIAAgA2pB/wBqQTBBNyAEp0EPcSICQQpJGyACajoAACAAQQFrIQAgBEIQVCAEQgSIIQRFDQALIABBgAFqIgJBgAFLDQIgAUEBQaylwwBBAiAAIANqQYABakEAIABrEF8LIANBgAFqJAAMAgsgAkGAAUGcpcMAEL8FAAsgAkGAAUGcpcMAEL8FAAsLCwAgACMAaiQAIwALDgAgAUGogsAAQQkQhQgLDgAgAUGxgsAAQQwQhQgLBwAg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AAAtAAAAPQEQAEsAAAAEAwAASAAAAEZhaWxlZCB0byBjb252ZXJ0IHRoZSB2YWx1ZSB0byBhIHUxMjhGYWlsZWQgdG8gY29udmVydCB0aGUgdmFsdWUgdG8gYSBVMjU2RmFpbGVkIHRvIGNvbnZlcnQgdGhlIHZhbHVlIHRvIGEgaTEyOEZhaWxlZCB0byBjb252ZXJ0IHRoZSB2YWx1ZSB0byBhIEkyNTZWYWx1ZSBkb2VzIG5vdCBmaXQgaW4gYSB1MTI4UHVibGljS2V5IHVzaW5nIGJpZyBwYXJhbWV0ZXJzIG5vdCBjb21wYXRpYmxlIHdhc21jYW5ub3QgYWNjZXNzIGEgVGhyZWFkIExvY2FsIFN0b3JhZ2UgdmFsdWUgZHVyaW5nIG9yIGFmdGVyIGRlc3RydWN0aW9uDQAAAAAAAAABAAAADgAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbG9jYWwucnMAmAMQAE8AAAD2AAAAGgAAAHRmaGUvc3JjL3Nob3J0aW50L2VuZ2luZS9tb2QucnMA+AMQAB8AAAAvAQAAPwAAAHRmaGUvc3JjL2hpZ2hfbGV2ZWxfYXBpL2dsb2JhbF9zdGF0ZS5ycwAoBBAAJwAAAIUAAAAgAAAAKAQQACcAAACJAAAADgAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGUvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yYXlvbi1jb3JlLTEuMTIuMS9zcmMvam9iLnJzAJgEEABbAAAA5gAAACAAAACYBBAAWwAAAGYAAAAgAAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZWNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAAA8AAAAIAAAABAAAAAgAAAAvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yYXlvbi1jb3JlLTEuMTIuMS9zcmMvbGF0Y2gucnMAAAB8BRAAXQAAAAsBAAAqAAAAmAQQAFsAAAB3AAAALgAAABIAAAATAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY29uc29sZV9lcnJvcl9wYW5pY19ob29rLTAuMS43L3NyYy9saWIucnMEBhAAaAAAAJUAAAAOAAAAZmFpbGVkIHRvIHNwYXduIHRocmVhZAAAGQAAAAgAAAAEAAAAGgAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvc2NvcGVkLnJzpAYQAFAAAADCAAAALgAAAGEgc2NvcGVkIHRocmVhZCBwYW5pY2tlZAQHEAAYAAAAGwAAAAwAAAAEAAAAHAAAAB0AAAAeAAAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseQAfAAAAAAAAAAEAAAAgAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAIQHEABLAAAAMwoAAA4AAABhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZUVycm9yaW52YWxpZCB2YWx1ZTogLCBleHBlY3RlZCAAKQgQAA8AAAA4CBAACwAAAGludmFsaWQgbGVuZ3RoIABUCBAADwAAADgIEAALAAAASW8AACEAAAAEAAAABAAAACIAAABJbnZhbGlkVXRmOEVuY29kaW5nACEAAAAEAAAABAAAACMAAABJbnZhbGlkQm9vbEVuY29kaW5nACEAAAAEAAAABAAAACQAAABJbnZhbGlkQ2hhckVuY29kaW5nSW52YWxpZFRhZ0VuY29kaW5nAAAAIQAAAAQAAAAEAAAAJQAAAERlc2VyaWFsaXplQW55Tm90U3VwcG9ydGVkU2l6ZUxpbWl0U2VxdWVuY2VNdXN0SGF2ZUxlbmd0aEN1c3RvbQAhAAAABAAAAAQAAAAmAAAATHdlQ29tcGFjdFB1YmxpY0tleSBjb250YWluZXIgbGVuIG11c3QgYmUgYSBwb3dlciBvZiAyLCBnb3QgbGVuID0gAABYCRAAQgAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2VudGl0aWVzL2x3ZV9jb21wYWN0X3B1YmxpY19rZXkucnMApAkQADcAAABLAAAACQAAAEx3ZUNvbXBhY3RQdWJsaWNLZXkgb25seSBzdXBwb3J0cyBwb3dlciBvZiAyIEx3ZURpbWVuc2lvbi4gR290IGx3ZV9kaW1lbnNpb24gPSAu7AkQAE8AAAA7ChAAAQAAAKQJEAA3AAAArgAAAAkAAABTZWVkZWQgZW50aXRpZXMgYXJlIG5vdCB5ZXQgY29tcGF0aWJsZSB3aXRoIG5vbiBwb3dlciBvZiAyIG1vZHVsaS4AAFwKEABCAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZW50aXRpZXMvc2VlZGVkX2x3ZV9jb21wYWN0X3B1YmxpY19rZXkucnMAAKgKEAA+AAAAaAAAAAkAAABTZWVkZWRMd2VDb21wYWN0UHVibGljS2V5IGNvbnRhaW5lciBsZW4gbXVzdCBiZSBhIHBvd2VyIG9mIDIsIGdvdCBsZW4gPSD4ChAASAAAAKgKEAA+AAAAbQAAAAkAAABTZWVkZWRMd2VDb21wYWN0UHVibGljS2V5IG9ubHkgc3VwcG9ydHMgcG93ZXIgb2YgMiBMd2VEaW1lbnNpb24uIEdvdCBsd2VfZGltZW5zaW9uID0gAAAAWAsQAFUAAAA7ChAAAQAAAKgKEAA+AAAA2AAAAAkAQfCXwAAL2QFhc3NlcnRpb24gZmFpbGVkOiBiaXRzX3Blcl9ibG9jayA8PSBUOjpCSVRTIGFzIHUzMnRmaGUvc3JjL2ludGVnZXIvYmxvY2tfZGVjb21wb3NpdGlvbi5ycwAAACIMEAAnAAAAdAAAAAkAAAAiDBAAJwAAAHgAAAA6AAAAIgwQACcAAACwAAAAIgAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYubnVtX2JpdHNfaW5fbWFzayA8PSBWOjpCSVRTIGFzIHUzMgAAACIMEAAnAAAAvwAAAAkAAAABAEHomcAAC74FdGZoZS9zcmMvaGlnaF9sZXZlbF9hcGkvaW50ZWdlcnMvbW9kLnJzAOgMEAAnAAAAIQAAAC4AAADoDBAAJwAAACEAAAAJAAAAMC4zaGlnaF9sZXZlbF9hcGk6OkNvbXByZXNzZWRGaGVVaW50aGlnaF9sZXZlbF9hcGk6OkNvbXBhY3RGaGVJbnRoaWdoX2xldmVsX2FwaTo6RmhlSW50aGlnaF9sZXZlbF9hcGk6OkNvbXByZXNzZWRGaGVJbnRoaWdoX2xldmVsX2FwaTo6Q29tcGFjdEZoZUJvb2xoaWdoX2xldmVsX2FwaTo6RmhlVWludGhpZ2hfbGV2ZWxfYXBpOjpDb21wYWN0RmhlVWludGhpZ2hfbGV2ZWxfYXBpOjpDb21wcmVzc2VkRmhlQm9vbGhpZ2hfbGV2ZWxfYXBpOjpGaGVCb29sAAAwDRAAAwAAANwNEAAeAAAAT24gZGVzZXJpYWxpemF0aW9uLCBleHBlY3RlZCB0eXBlICwgZ290IHR5cGUgAAAARA4QACIAAABmDhAACwAAAE9uIGRlc2VyaWFsaXphdGlvbiwgZXhwZWN0ZWQgc2VyaWFsaXphdGlvbiB2ZXJzaW9uICwgZ290IHZlcnNpb24gAAAAhA4QADMAAAC3DhAADgAAAMUNEAAXAAAAVA0QAB0AAACnDRAAHgAAAHENEAAWAAAAMw0QACEAAAD6DRAAIQAAAIcNEAAgAAAAGw4QABcAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9jb21tb25zL251bWVyaWMvdW5zaWduZWQucnMYDxAAMAAAAAcBAAABAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9pdGVyLnJzAEGwn8AAC7srYXR0ZW1wdCB0byBkaXZpZGUgYnkgemVybwAAAFgPEABOAAAAWwcAABEAAAAAAAAAYXR0ZW1wdCB0byBkaXZpZGUgYnkgemVybwAAAAAAAABhdHRlbXB0IHRvIGNhbGN1bGF0ZSB0aGUgcmVtYWluZGVyIHdpdGggYSBkaXZpc29yIG9mIHplcm9jaHVuayBzaXplIG11c3QgYmUgbm9uLXplcm85EBAAGwAAAGFzc2VydGlvbiBmYWlsZWQ6IG1pZCA8PSBzZWxmLmxlbigpY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZS9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JheW9uLTEuMTAuMC9zcmMvc2xpY2UvbW9kLnJzAACqEBAAXAAAAEsDAAAoAAAATWlzbWF0Y2hlZCBDaXBoZXJ0ZXh0TW9kdWx1cyBiZXR3ZWVuIGlucHV0IFNlZWRlZEdsd2VDaXBoZXJ0ZXh0ICgpIGFuZCBvdXRwdXQgR2x3ZUNpcGhlcnRleHQgKCkAGBEQAEEAAABZERAAHQAAAHYREAABAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vYWxnb3JpdGhtcy9zZWVkZWRfZ2x3ZV9jaXBoZXJ0ZXh0X2RlY29tcHJlc3Npb24ucnMAkBEQAEcAAAAZAAAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IGNpcGhlcnRleHRfbW9kdWx1cy5pc19jb21wYXRpYmxlX3dpdGhfbmF0aXZlX21vZHVsdXMoKZAREABHAAAAJQAAAAUAAACQERAARwAAAC0AAAAgAAAAkBEQAEcAAAAyAAAACgAAAEV4cGVjdGVkIGFuIHVuc2lnbmVkIGludGVnZXIgd2l0aCAgYml0cywgZm91bmQgIGJpdHMgZHVyaW5nIGRlc2VyaWFsaXphdGlvbiBvZiBDaXBoZXJ0ZXh0TW9kdWx1cywgaGF2ZSB5b3UgbWl4ZWQgdHlwZXMgZHVyaW5nIGRlc2VyaWFsaXphdGlvbj8AAGASEAAiAAAAghIQAA0AAACPEhAAXwAAAEAAAABDYW5ub3QgZ2V0IHNjYWxpbmcgZm9yIG5vbiBwb3dlciBvZiB0d28gbW9kdWx1cyAMExAAMAAAAENpcGhlcnRleHRNb2R1bHVzKDJeRBMQABQAAAB2ERAAAQAAAENpcGhlcnRleHRNb2R1bHVzKAAAaBMQABIAAAB2ERAAAQAAAAAAAABDYW5ub3QgY29udmVydCBhIFBvbHlub21pYWxTaXplIHRoYXQgaXMgbm90IGEgbXVsdGlwbGUgb2YgMiB0byBGb3VyaWVyUG9seW5vbWlhbFNpemWQExAAVAAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2NvbW1vbnMvcGFyYW1ldGVycy5ycwAA7BMQACoAAAB1AAAACQAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2NvbW1vbnMvdHJhaXRzL2NvbnRpZ3VvdXNfZW50aXR5X2NvbnRhaW5lci5ycwAAKBQQAEIAAAB5AAAAHAAAACgUEABCAAAAowAAADsAAAAoFBAAQgAAANMAAAAOAAAAVGhlIGN1cnJlbnQgY29udGFpbmVyIGhhcyAgZW50aXRpZXMsIHdoaWNoIGlzIG5vdCBkaXZpZGFibGUgYnkgdGhlIHJlcXVlc3RlZCBjaHVua19zaXplOiAAAAAoFBAAQgAAAE0BAAAOAAAAKBQQAEIAAACZAQAADgAAACgUEABCAAAApAEAAA0AAAAoFBAAQgAAAK8BAAAOAAAALCBwcmV2ZW50aW5nIGNodW5rc19leGFjdF9tdXQgZnJvbSByZXR1cm5pbmcgYW4gaXRlcmF0b3IuAAAAnBQQABoAAAC2FBAAPwAAADgVEAA5AAAAKBQQAEIAAACjAQAACQAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2VudGl0aWVzL2NvbXByZXNzZWRfbW9kdWx1c19zd2l0Y2hlZF9sd2VfY2lwaGVydGV4dC5yc01pc21hdGNoIGJldHdlZW4gYWN0dWFsKD0pIGFuZCBleHBlY3RlZCg9KSBDb21wcmVzc2VkTW9kdWx1c1N3aXRjaGVkTHdlQ2lwaGVydGV4dCBwYWNrZWRfY29lZmZzIHNpemUA5xUQABkAAAAAFhAAEAAAABAWEAA7AAAAnBUQAEsAAACxAAAACQAAAC4gR290IGNvbnRhaW5lciBsZW5ndGg6ICBhbmQgZ2x3ZV9zaXplOiAsIHBvbHlub21pYWxfc2l6ZTogLlRoZSBwcm92aWRlZCBjb250YWluZXIgbGVuZ3RoIGlzIG5vdCB2YWxpZC4gRXhwZWN0ZWQgbGVuZ3RoIG9mIC5Hb3QgY29udGFpbmVyIGxlbmd0aDogIGFuZCBkZWNvbXBfbGV2ZWxfY291bnQ6ICwgIGdsd2Vfc2l6ZTogR290IGFuIGVtcHR5IGNvbnRhaW5lciB0byBjcmVhdGUgYSBHbHdlQm9keS0XEAArAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZW50aXRpZXMvZ2x3ZV9jaXBoZXJ0ZXh0LnJzYBcQ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cmVhdGUgYSBTZWVkZWRHbHdlQ2lwaGVydGV4dAAEIhAANwAAALwhEAA3AAAAggAAAAkAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9lbnRpdGllcy9zZWVkZWRfZ2x3ZV9jaXBoZXJ0ZXh0X2xpc3QucnNUIhAAPAAAAHQAAAAJAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZW50aXRpZXMvc2VlZGVkX2x3ZV9jaXBoZXJ0ZXh0X2xpc3QucnMAoCIQADsAAABnAAAACQAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2VudGl0aWVzL3NlZWRlZF9sd2Vfa2V5c3dpdGNoX2tleS5ycwAAAOwiEAA5AAAAigAAAAkAAABHb3QgYW4gZW1wdHkgY29udGFpbmVyIHRvIGNyZWF0ZSBhbiBTZWVkZWRMd2VLZXlzd2l0Y2hLZXkAAAA4IxAAOQAAAOwiEAA5AAAAjwAAAAkAAADsIhAAOQAAAJQAAAANAAAAVGhlIHByb3ZpZGVkIGNvbnRhaW5lciBsZW5ndGggaXMgbm90IHZhbGlkLiBJdCBuZWVkcyB0byBiZSBkaXZpZGFibGUgYnkgZGVjb21wX2xldmVsX2NvdW50OiCcIxAAXAAAAHQWEAAYAAAABhcQABkAAACvFhAAAQAAAOwiEAA5AAAAkwAAAAkAAADsIhAAOQAAALgAAAAWAAAAdGZoZS9zcmMvaW50ZWdlci9jaXBoZXJ0ZXh0L2NvbXBhY3RfbGlzdC5ycwA4JBAAKwAAAEIAAAAJAAAAdGZoZS9zcmMvc2hvcnRpbnQvY2lwaGVydGV4dC9jb21wYWN0X2xpc3QucnN0JBAALAAAADsAAAAOAAAAOAAAADkAAAAEAAAABAAAACUAAABMd2VTaXplTHdlRGltZW5zaW9uR2x3ZVNpemVQb2x5bm9taWFsU2l6ZURlY29tcG9zaXRpb25MZXZlbENvdW50dmFyaWFudCBpbmRleCAwIDw9IGkgPCAyBCUQABgAAAA5AAAACAAAAAQAAAA6AAAAPAAAAAAAAAABAAAAPQAAADwAAAAAAAAAAQAAAD4AAAA/AAAAQAAAAEEAAAD//////////2AlEABB+MrAAAvbLS9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy9pby9pbXBscy5ycwB4JRAASwAAACkBAAARAAAAZmFpbGVkIHRvIGZpbGwgd2hvbGUgYnVmZmVyANQlEAAbAAAAJQAAAE9uY2UgaW5zdGFuY2UgaGFzIHByZXZpb3VzbHkgYmVlbiBwb2lzb25lZAAA/CUQACoAAABvbmUtdGltZSBpbml0aWFsaXphdGlvbiBtYXkgbm90IGJlIHBlcmZvcm1lZCByZWN1cnNpdmVseTAmEAA4AAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZS9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy9zeW5jL21wbWMvbGlzdC5yc5smEABRAAAA7wAAAEMAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlmyYQAFEAAAC/AQAAKgAAAJsmEABRAAAAwQEAADkAAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlAEIAAAAIAAAABAAAAAoAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L3N0ZC9zcmMvc3luYy9tcG1jL3plcm8ucnMAAACAJxAAUQAAAB4BAAArAAAAgCcQAFEAAACEAAAANgAAAIAnEABRAAAAfQAAADYAAACAJxAAUQAAAOkAAAArAAAAgCcQAFEAAAAIAQAAJgAAAIAnEABRAAAACgEAAEsAAACAJxAAUQAAAAoBAAAnAAAAgCcQAFEAAAAOAQAASwAAAIAnEABRAAAADgEAACcAAACAJxAAUQAAABQBAABAAAAAgCcQAFEAAACsAAAALQAAAIAnEABRAAAApQAAACsAAACAJxAAUQAAAMEAAAAmAAAAgCcQAFEAAADDAAAASQAAAIAnEABRAAAAxAAAAEcAAACAJxAAUQAAAMMAAAAnAAAAgCcQAFEAAADIAAAASQAAAIAnEABRAAAAyQAAAEcAAACAJxAAUQAAAMgAAAAnAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3N5bmMvbXBtYy9hcnJheS5ycwAABCkQAFIAAACQAQAAKgAAAAQpEABSAAAAkgEAADkAAAAEKRAAUgAAAF0BAAAqAAAABCkQAFIAAABfAQAANwAAAEMAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L3N0ZC9zcmMvc3luYy9tcG1jL3dha2VyLnJzAACcKRAAUgAAAF0AAAArAAAAnCkQAFIAAAA7AAAAKAAAAEIAAAAIAAAABAAAAAoAAACcKRAAUgAAAL0AAAArAAAAnCkQAFIAAACjAAAAKwAAAJwpEABSAAAArgAAAC8AAACcKRAAUgAAAJoAAAArAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3N5bmMvbXBtYy9jb250ZXh0LnJzYCoQAFQAAAAxAAAAHgAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy9zeW5jL29uY2UucnPEKhAATAAAANAAAAAxAAAAxCoQAEwAAACVAAAAMgAAAABjYW5ub3QgcmVjdXJzaXZlbHkgYWNxdWlyZSBtdXRleAAAADErEAAgAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3N5cy93YXNtLy4uL3Vuc3VwcG9ydGVkL2xvY2tzL211dGV4LnJzAABcKxAAZgAAABQAAAAJAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYmluY29kZS0xLjMuMy9zcmMvZGUvcmVhZC5ycwDUKxAAWwAAAE4AAAANAAAA/////y9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy9zeXMvd2FzbS8uLi91bnN1cHBvcnRlZC9sb2Nrcy9yd2xvY2sucnMARCwQAGcAAAA/AAAACQAAAE1pc21hdGNoZWQgTHdlRGltZW5zaW9uIGJldHdlZW4gaW5wdXQgTHdlU2VjcmV0S2V5ICBhbmQgb3V0cHV0IEx3ZVB1YmxpY0tleSC8LBAAMwAAAO8sEAAZAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vYWxnb3JpdGhtcy9sd2VfcHVibGljX2tleV9nZW5lcmF0aW9uLnJzGC0QADwAAAAcAAAABQAAACBhbmQgb3V0cHV0IFNlZWRlZEx3ZVB1YmxpY0tleSAAvCwQADMAAABkLRAAHwAAABgtEAA8AAAApAAAAAUAAABHb3QgYW4gZW1wdHkgY29udGFpbmVyIHRvIGNyZWF0ZSBhbiBMd2VQdWJsaWNLZXmkLRAAMAAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2VudGl0aWVzL2x3ZV9wdWJsaWNfa2V5LnJzANwtEAAvAAAAZAAAAAkAAABTZWVkZWQgZW50aXRpZXMgYXJlIG5vdCB5ZXQgY29tcGF0aWJsZSB3aXRoIG5vbiBwb3dlciBvZiAyIG1vZHVsaS4AABwuEABCAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZW50aXRpZXMvc2VlZGVkX2x3ZV9wdWJsaWNfa2V5LnJzAABoLhAANgAAAIoAAAAJAAAAR290IGFuIGVtcHR5IGNvbnRhaW5lciB0byBjcmVhdGUgYSBTZWVkZWRMd2VQdWJsaWNLZXkAAACwLhAANQAAAGguEAA2AAAAjwAAAAkAAAA8AAAAAAAAAAEAAABEAAAARQAAAHRmaGUvc3JjL3Nob3J0aW50L3BhcmFtZXRlcnMvbW9kLnJzV29wYnNPbmx5IHBhcmFtZXRlcnMgZG8gbm90IGhhdmUgYSBNYXhOb2lzZUxldmVsIGluZm9ybWF0aW9uADcvEAA8AAAAFC8QACMAAAABAgAAEQAAAHN0cnVjdCBTZXJpYWxpYXphYmxlTHdlQ2lwaGVydGV4dE1vZHVsdXMgd2l0aCAyIGVsZW1lbnRzjC8QADgAAABGAAAACAAAAAQAAAA6AAAAc3RydWN0IEdhdXNzaWFuIHdpdGggMiBlbGVtZW50cwDcLxAAHwAAAHN0cnVjdCBUVW5pZm9ybSB3aXRoIDIgZWxlbWVudHMABDAQAB8AAABMd2VEaW1lbnNpb25GAAAABAAAAAQAAAAlAAAAc3RydWN0IENvbXByZXNzZWRNb2R1bHVzU3dpdGNoZWRMd2VDaXBoZXJ0ZXh0IHdpdGggNCBlbGVtZW50cwAAAEgwEAA9AAAAc3RydWN0IEdsd2VDaXBoZXJ0ZXh0IHdpdGggMyBlbGVtZW50cwAAAJAwEAAlAAAAc3RydWN0IEdsd2VTZWNyZXRLZXkgd2l0aCAyIGVsZW1lbnRzwDAQACQAAABzdHJ1Y3QgTHdlQ2lwaGVydGV4dCB3aXRoIDIgZWxlbWVudHPsMBAAJAAAAHN0cnVjdCBMd2VDaXBoZXJ0ZXh0TGlzdCB3aXRoIDMgZWxlbWVudHMYMRAAKAAAAHN0cnVjdCBMd2VDb21wYWN0Q2lwaGVydGV4dExpc3Qgd2l0aCA0IGVsZW1lbnRzAEgxEAAvAAAAc3RydWN0IEx3ZUNvbXBhY3RQdWJsaWNLZXkgd2l0aCAxIGVsZW1lbnQAAACAMRAAKQAAAHN0cnVjdCBMd2VQdWJsaWNLZXkgd2l0aCAxIGVsZW1lbnQAALQxEAAiAAAAc3RydWN0IEx3ZVNlY3JldEtleSB3aXRoIDEgZWxlbWVudAAA4DEQACIAAABzdHJ1Y3QgU2VlZGVkR2dzd0NpcGhlcnRleHRMaXN0IHdpdGggNyBlbGVtZW50cwAMMhAALwAAAHN0cnVjdCBTZWVkZWRHbHdlQ2lwaGVydGV4dCB3aXRoIDQgZWxlbWVudHMARDIQACsAAABzdHJ1Y3QgU2VlZGVkTHdlQm9vdHN0cmFwS2V5IHdpdGggMSBlbGVtZW50AHgyEAArAAAAc3RydWN0IFNlZWRlZEx3ZUNpcGhlcnRleHQgd2l0aCA0IGVsZW1lbnRzAACsMhAAKgAAAHN0cnVjdCBTZWVkZWRMd2VDaXBoZXJ0ZXh0TGlzdCB3aXRoIDQgZWxlbWVudHMAAOAyEAAuAAAAc3RydWN0IFNlZWRlZEx3ZUNvbXBhY3RQdWJsaWNLZXkgd2l0aCAxIGVsZW1lbnQAGDMQAC8AAABzdHJ1Y3QgU2VlZGVkTHdlS2V5c3dpdGNoS2V5IHdpdGggNiBlbGVtZW50c1AzEAAsAAAAc3RydWN0IFNlZWRlZEx3ZU11bHRpQml0Qm9vdHN0cmFwS2V5IHdpdGggMiBlbGVtZW50c4QzEAA0AAAAc3RydWN0IFNlZWRlZEx3ZVB1YmxpY0tleSB3aXRoIDEgZWxlbWVudMAzEAAoAAAAc3RydWN0IEJhc2VSYWRpeENpcGhlcnRleHQgd2l0aCAxIGVsZW1lbnQAAADwMxAAKQAAAHN0cnVjdCBCYXNlU2lnbmVkUmFkaXhDaXBoZXJ0ZXh0IHdpdGggMSBlbGVtZW50ACQ0EAAvAAAAc3RydWN0IENvbXBhY3RDaXBoZXJ0ZXh0TGlzdCB3aXRoIDIgZWxlbWVudHNcNBAALAAAAHN0cnVjdCBDbGllbnRLZXkgd2l0aCAxIGVsZW1lbnQAkDQQAB8AAABzdHJ1Y3QgQ29tcGFjdFB1YmxpY0tleSB3aXRoIDEgZWxlbWVudAAAuDQQACYAAABzdHJ1Y3QgQ29tcHJlc3NlZENvbXBhY3RQdWJsaWNLZXkgd2l0aCAxIGVsZW1lbnToNBAAMAAAAHN0cnVjdCBDb21wcmVzc2VkUHVibGljS2V5IHdpdGggMSBlbGVtZW50AAAAIDUQACkAAABzdHJ1Y3QgUHVibGljS2V5IHdpdGggMSBlbGVtZW50AFQ1EAAfAAAAc3RydWN0IENvbXByZXNzZWRTZXJ2ZXJLZXkgd2l0aCAxIGVsZW1lbnQAAAB8NRAAKQAAAHN0cnVjdCBDb21wYWN0Q2lwaGVydGV4dExpc3Qgd2l0aCA2IGVsZW1lbnRzsDUQACwAAABzdHJ1Y3QgQ29tcHJlc3NlZENpcGhlcnRleHQgd2l0aCA2IGVsZW1lbnRzAOQ1EAArAAAAc3RydWN0IENvbXByZXNzZWRNb2R1bHVzU3dpdGNoZWRDaXBoZXJ0ZXh0IHdpdGggNSBlbGVtZW50cwAAGDYQADoAAABzdHJ1Y3QgQ2lwaGVydGV4dCB3aXRoIDYgZWxlbWVudHMAAABcNhAAIQAAAHN0cnVjdCBDbGllbnRLZXkgd2l0aCAzIGVsZW1lbnRziDYQACAAAABzdHJ1Y3QgTXVsdGlCaXRQQlNQYXJhbWV0ZXJzIHdpdGggMTcgZWxlbWVudHMAAACwNhAALQAAAHN0cnVjdCBXb3Bic1BhcmFtZXRlcnMgd2l0aCAxOCBlbGVtZW50cwDoNhAAJwAAAHN0cnVjdCBDbGFzc2ljUEJTUGFyYW1ldGVycyB3aXRoIDE1IGVsZW1lbnRzGDcQACwAAAB2YXJpYW50IGluZGV4IDAgPD0gaSA8IDJMNxAAGAAAAHZhcmlhbnQgaW5kZXggMCA8PSBpIDwgM2w3EAAYAAAAdHVwbGUgdmFyaWFudCBTaG9ydGludFBhcmFtZXRlclNldElubmVyOjpQQlNBbmRXb3BicyB3aXRoIDIgZWxlbWVudHOMNxAARAAAAHN0cnVjdCBTaG9ydGludFBhcmFtZXRlclNldCB3aXRoIDEgZWxlbWVudAAA2DcQACoAAABzdHJ1Y3QgQ29tcGFjdFB1YmxpY0tleSB3aXRoIDMgZWxlbWVudHMADDgQACcAAABzdHJ1Y3QgQ29tcHJlc3NlZENvbXBhY3RQdWJsaWNLZXkgd2l0aCAzIGVsZW1lbnRzAAAAPDgQADEAAABzdHJ1Y3QgQ29tcHJlc3NlZFB1YmxpY0tleSB3aXRoIDMgZWxlbWVudHMAAHg4EAAqAAAAc3RydWN0IFB1YmxpY0tleSB3aXRoIDMgZWxlbWVudHOsOBAAIAAAAHN0cnVjdCB2YXJpYW50IFNob3J0aW50Q29tcHJlc3NlZEJvb3RzdHJhcHBpbmdLZXk6Ok11bHRpQml0IHdpdGggMiBlbGVtZW50cwDUOBAASwAAAHN0cnVjdCBDb21wcmVzc2VkU2VydmVyS2V5IHdpdGggOCBlbGVtZW50cwAAKDkQACoAAABzdHJ1Y3QgSW50ZWdlckNsaWVudEtleSB3aXRoIDIgZWxlbWVudHMAXDkQACcAAABzdHJ1Y3QgSW50ZWdlckNvbXByZXNzZWRTZXJ2ZXJLZXkgd2l0aCAxIGVsZW1lbnSMORAAMAAAAHN0cnVjdCBJbnRlZ2VyQ29tcGFjdFB1YmxpY0tleSB3aXRoIDEgZWxlbWVudAAAAMQ5EAAtAAAAc3RydWN0IEludGVnZXJDb21wcmVzc2VkQ29tcGFjdFB1YmxpY0tleSB3aXRoIDEgZWxlbWVudAD8ORAANwAAAHN0cnVjdCBGaGVCb29sIHdpdGggMSBlbGVtZW50AAAAPDoQAB0AAABzdHJ1Y3QgQ29tcGFjdEZoZUJvb2wgd2l0aCAxIGVsZW1lbnRkOhAAJAAAAHN0cnVjdCBDb21wYWN0RmhlQm9vbExpc3Qgd2l0aCAxIGVsZW1lbnSQOhAAKAAAAHN0cnVjdCBGaGVJbnQgd2l0aCAyIGVsZW1lbnRzAAAAwDoQAB0AAABzdHJ1Y3QgQ29tcGFjdEZoZUludCB3aXRoIDIgZWxlbWVudHPoOhAAJAAAAHN0cnVjdCBDb21wYWN0RmhlSW50TGlzdCB3aXRoIDIgZWxlbWVudHMUOxAAKAAAAHN0cnVjdCBDb21wcmVzc2VkRmhlSW50IHdpdGggMiBlbGVtZW50cwBEOxAAJwAAAHN0cnVjdCBGaGVVaW50IHdpdGggMiBlbGVtZW50cwAAdDsQAB4AAABzdHJ1Y3QgQ29tcGFjdEZoZVVpbnQgd2l0aCAyIGVsZW1lbnRzAAAAnDsQACUAAABzdHJ1Y3QgQ29tcGFjdEZoZVVpbnRMaXN0IHdpdGggMiBlbGVtZW50cwAAAMw7EAApAAAAc3RydWN0IENvbXByZXNzZWRGaGVVaW50IHdpdGggMiBlbGVtZW50cwA8EAAoAAAAYXNzZXJ0aW9uIGZhaWxlZDogbWlkIDw9IHNlbGYubGVuKCkAQeD4wAALZ2F0dGVtcHQgdG8gY2FsY3VsYXRlIHRoZSByZW1haW5kZXIgd2l0aCBhIGRpdmlzb3Igb2YgemVyb2NhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUwPBAAQdD5wAALggVhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvdGZoZS9zcmMvc2hvcnRpbnQvZW5naW5lL2NsaWVudF9zaWRlLnJz6TwQACcAAABFAAAAFQAAAOk8EAAnAAAASgAAABEAAADpPBAAJwAAAHYAAAAdAAAA6TwQACcAAAC6AAAAHQAAAOk8EAAnAAAAvwAAABUAAAB0ZmhlL3NyYy9zaG9ydGludC9lbmdpbmUvcHVibGljX3NpZGUucnMAYD0QACcAAACRAAAAHQAAAGA9EAAnAAAAlgAAABUAAABgPRAAJwAAAMEAAAAdAAAAYD0QACcAAADGAAAAFQAAAHRmaGUvc3JjL3Nob3J0aW50L2VuZ2luZS9zZXJ2ZXJfc2lkZS5ycwDIPRAAJwAAALwAAABHAAAAdGZoZS9zcmMvc2hvcnRpbnQvZW5naW5lL21vZC5ycwAAPhAAHwAAAD0AAAAaAAAAAD4QAB8AAABUAAAABQAAAAA+EAAfAAAAWAAAAAUAAAAAPhAAHwAAAGUAAAAUAAAAAD4QAB8AAAB6AAAAHwAAAAA+EAAfAAAAdAAAABgAAABUaGUgc2VydmVyIGtleSB3YXMgbm90IHByb3Blcmx5IGluaXRpYWxpemVkLgpEaWQgeW91IGZvcmdldCB0byBjYWxsIGBzZXRfc2VydmVyX2tleWAgaW4gdGhlIGN1cnJlbnQgdGhyZWFkID8KICAgICAgICAgICAgAAAAgD4QAHkAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL2l0ZXIucnMAQeD+wAALqQxhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvdG9vIG1hbnkgdmFsdWVzIHB1c2hlZCB0byBjb25zdW1lcgB5PxAAIgAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JheW9uLTEuMTAuMC9zcmMvaXRlci9jb2xsZWN0L2NvbnN1bWVyLnJzpD8QAGgAAAB+AAAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IGluZGV4IDw9IGxlbgAApD8QAGgAAABhAAAADQAAAGFsaWduX29mZnNldDogYWxpZ24gaXMgbm90IGEgcG93ZXItb2YtdHdvAAAATEAQACkAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL3B0ci9tdXRfcHRyLnJzAIBAEABPAAAAYwYAAA0AAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAASAAAAAQAAAAEAAAASQAAAGV4cGVjdGVkICB0b3RhbCB3cml0ZXMsIGJ1dCBnb3QgSEEQAAkAAABRQRAAFwAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JheW9uLTEuMTAuMC9zcmMvaXRlci9jb2xsZWN0L21vZC5ycwB4QRAAYwAAAGQAAAAFAAAAYXNzZXJ0aW9uIGZhaWxlZDogdmVjLmNhcGFjaXR5KCkgLSBzdGFydCA+PSBsZW4ApD8QAGgAAAASAAAACQAAAAQ/EABOAAAAWwcAABEAAAAKcmVxdWVzdGVkIGFsaWdubWVudCBpcyBsZXNzIHRoYW4gdGhlIG1pbmltdW0gdmFsaWQgYWxpZ25tZW50IGZvciBgYDoKIC0gcmVxdWVzdGVkIGFsaWdubWVudDogCiAtIG1pbmltdW0gYWxpZ25tZW50OiAKAAA8QhAAQwAAAH9CEAAbAAAAmkIQABcAAACxQhAAAQAAAApidWZmZXIgaXMgbm90IGxhcmdlIGVub3VnaCB0byBhbGxvY2F0ZSBhbiBhcnJheSBvZiB0eXBlIGBgIG9mIHRoZSByZXF1ZXN0ZWQgbGVuZ3RoOgogLSByZW1haW5pbmcgYnVmZmVyIGxlbmd0aCAoYWZ0ZXIgYWRqdXN0aW5nIGZvciBhbGlnbm1lbnQpOiAsCiAtIHJlcXVlc3RlZCBhcnJheSBsZW5ndGg6ICAoIGJ5dGVzKSwKAAAA1EIQADoAAAAOQxAAVwAAAGVDEAAdAAAAgkMQAAIAAACEQxAACQAAAApidWZmZXIgaXMgbm90IGxhcmdlIGVub3VnaCB0byBhY2NvbW9kYXRlIHRoZSByZXF1ZXN0ZWQgYWxpZ25tZW50CiAtIGJ1ZmZlciBsZW5ndGg6IAogLSByZXF1ZXN0ZWQgYWxpZ25tZW50OiAKIC0gYnl0ZSBvZmZzZXQgZm9yIGFsaWdubWVudDoguEMQAFQAAAAMRBAAGQAAACVEEAAfAAAAsUIQAAEAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9lbnRpdGllcy9jb21wcmVzc2VkX21vZHVsdXNfc3dpdGNoZWRfbHdlX2NpcGhlcnRleHQucnMAZEQQAEsAAAD5AAAAFQAAAGREEABLAAAA+wAAADgAAABkRBAASwAAAP4AAAArAAAAZEQQAEsAAADcAAAAJwAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2ZmdF9pbXBsL2ZmdDY0L2NyeXB0by9ib290c3RyYXAucnMA8EQQADcAAAAFAQAAFgAAAPBEEAA3AAAACAEAACMAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9mZnRfaW1wbC9mZnQ2NC9jcnlwdG8vZ2dzdy5ycwAASEUQADIAAAAqAgAAFgBBsIvBAAsBAQBB0IvBAAvVPmFyZ3VtZW50IG9mIGludGVnZXIgbG9nYXJpdGhtIG11c3QgYmUgcG9zaXRpdmUAANBFEAAuAAAAdGZoZS9zcmMvaW50ZWdlci9iaWdpbnQvc3RhdGljX3NpZ25lZC5ycwhGEAAoAAAATwAAAAkAAAAzNDAyODIzNjY5MjA5Mzg0NjM0NjMzNzQ2MDc0MzE3NjgyMTE0NTUxMjh0ZmhlL3NyYy9qc19vbl93YXNtX2FwaS9qc19oaWdoX2xldmVsX2FwaS9pbnRlZ2Vycy5ycwBqRhAANQAAABoAAAAtAAAAdmFsdWUgaXMgb3V0IG9mIHJhbmdlIGZvciB1MjU2AABqRhAANQAAAEsAAAAtAAAAakYQADUAAABNAAAALwAAAAEAAAB0ZmhlL3NyYy9oaWdoX2xldmVsX2FwaS9ib29sZWFucy9jb21wYWN0LnJzAPRGEAArAAAAiAAAABEAAAD0RhAAKwAAAIkAAABaAAAARmFpbGVkIHRvIGNvbnZlcnQgdGhlIHZhbHVlIHRvIGEgdTEyOEZhaWxlZCB0byBjb252ZXJ0IHRoZSB2YWx1ZSB0byBhIFUyNTZGYWlsZWQgdG8gY29udmVydCB0aGUgdmFsdWUgdG8gYSBpMTI4RmFpbGVkIHRvIGNvbnZlcnQgdGhlIHZhbHVlIHRvIGEgSTI1NlZhbHVlIGlzIG5vdCBhIGJvb2xlYW5Ob25lU29tZQAASgAAAAQAAAAEAAAAJAAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvY29yZS9zcmMvbnVtL21vZC5ycwAESBAASwAAAJEEAAAFAAAAYXR0ZW1wdCB0byBkaXZpZGUgYnkgemVybwAAAARIEABLAAAAqQQAAAUAAAAAAAAAYXR0ZW1wdCB0byBjYWxjdWxhdGUgdGhlIHJlbWFpbmRlciB3aXRoIGEgZGl2aXNvciBvZiB6ZXJvYXNzZXJ0aW9uIGZhaWxlZDogbWlkIDw9IHNlbGYubGVuKClhc3NlcnRpb24gZmFpbGVkOiBzdGVwICE9IDAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL2l0ZXIvYWRhcHRlcnMvc3RlcF9ieS5ycwdJEABZAAAAIQAAAAkAAABjaHVuayBzaXplIG11c3QgYmUgbm9uLXplcm8AcEkQABsAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlAFYAAAABAAAAAQAAAFcAAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlAFgAAAAEAAAABAAAAFkAAABaAAAAAAAAAAEAAABbAAAAXAAAAAgAAAAEAAAACAAAAF0AAAAIAAAABAAAAAoAAABdAAAACAAAAAQAAAAKAAAAWAAAAAQAAAAEAAAAXgAAAFgAAAAEAAAABAAAAF8AAABYAAAABAAAAAQAAABgAAAAWAAAAAQAAAAEAAAAYQAAAFgAAAAEAAAABAAAAGIAAABTaXplT3ZlcmZsb3dGb3JrVG9vTGFyZ2VaZXJvQ2hpbGRyZW5Db3VudFplcm9CeXRlc1BlckNoaWxkIGluIG91dHB1dCwgYW5kICBpbiBzZWNyZXQga2V5LnRmaGUvc3JjL2NvcmVfY3J5cHRvL2FsZ29yaXRobXMvZ2dzd19lbmNyeXB0aW9uLnJzRmFpbGVkIHRvIHNwbGl0IGdlbmVyYXRvciBpbnRvIGdnc3cgbGV2ZWxzYXNzZXJ0aW9uIGZhaWxlZDogY2lwaGVydGV4dF9tb2R1bHVzLmlzX2NvbXBhdGlibGVfd2l0aF9uYXRpdmVfbW9kdWx1cygpRmFpbGVkIHRvIHNwbGl0IGdlbmVyYXRvciBpbnRvIGdsd2X1ShAAMgAAAHIBAAAKAAAA9UoQADIAAAB5AQAABQAAAPVKEAAyAAAAhQEAAC4AAAD1ShAAMgAAAIoBAAAOAAAA9UoQADIAAADxAgAACQAAAPVKEAAyAAAA6QIAABcAAABNaXNtYXRjaGVkIG1vZHVsaSBiZXR3ZWVuIG91dHB1dF9tYXNrICgpIGFuZCBvdXRwdXRfYm9keSAoKQAcTBAAJwAAAENMEAATAAAAVkwQAAEAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL2dsd2VfZW5jcnlwdGlvbi5ycwAAcEwQADIAAAAlAAAABQAAAHBMEAAyAAAALwAAAAUAAABwTBAAMgAAADoAAAAwAAAATWlzbWF0Y2ggYmV0d2VlbiBHbHdlRGltZW5zaW9uIG9mIG91dHB1dCBjaXBoZXJ0ZXh0IGFuZCBpbnB1dCBzZWNyZXQga2V5LiBHb3QgAADUTBAATgAAANZKEAAQAAAA5koQAA8AAABNaXNtYXRjaCBiZXR3ZWVuIFBvbHlub21pYWxTaXplIG9mIG91dHB1dCBjaXBoZXJ0ZXh0IGFuZCBpbnB1dCBzZWNyZXQga2V5LiBHb3QgADxNEABPAAAA1koQABAAAADmShAADwAAAHBMEAAyAAAAzgAAAAUAAABwTBAAMgAAANUAAAAFAAAATWlzbWF0Y2hlZCBMd2VEaW1lbnNpb24gYmV0d2VlbiBpbnB1dCBMV0Ugc2VjcmV0IGtleSBhbmQgTFdFIGJvb3RzdHJhcCBrZXkuIElucHV0IExXRSBzZWNyZXQga2V5IEx3ZURpbWVuc2lvbjogLCBMV0UgYm9vdHN0cmFwIGtleSBpbnB1dCBMd2VEaW1lbnNpb24gLgDETRAAbwAAADNOEAAnAAAAWk4QAAEAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL2x3ZV9ib290c3RyYXBfa2V5X2dlbmVyYXRpb24ucnNNaXNtYXRjaGVkIEdsd2VTaXplIGJldHdlZW4gb3V0cHV0IEdMV0Ugc2VjcmV0IGtleSBhbmQgTFdFIGJvb3RzdHJhcCBrZXkuIE91dHB1dCBHTFdFIHNlY3JldCBrZXkgR2x3ZVNpemU6ICwgTFdFIGJvb3RzdHJhcCBrZXkgR2x3ZVNpemUgALNOEABrAAAAHk8QAB0AAABaThAAAQAAAE1pc21hdGNoZWQgUG9seW5vbWlhbFNpemUgYmV0d2VlbiBvdXRwdXQgR0xXRSBzZWNyZXQga2V5IGFuZCBMV0UgYm9vdHN0cmFwIGtleS4gT3V0cHV0IEdMV0Ugc2VjcmV0IGtleSBQb2x5bm9taWFsU2l6ZTogLCBMV0UgYm9vdHN0cmFwIGtleSBQb2x5bm9taWFsU2l6ZSAAAFRPEAB3AAAAy08QACMAAABaThAAAQAAAHROEAA/AAAAjgEAAAUAAAB0ThAAPwAAAJYBAAAFAAAAdE4QAD8AAACeAQAABQAAAHROEAA/AAAAsgEAAAoAAABhc3NlcnRpb24gZmFpbGVkOiBvdXRwdXRfbHdlX2NpcGhlcnRleHRfbGlzdC5lbnRpdHlfY291bnQoKSA9PQogICAgaW5wdXRfbHdlX2NvbXBhY3RfY2lwaGVydGV4dF9saXN0Lmx3ZV9jaXBoZXJ0ZXh0X2NvdW50KCkuMHRmaGUvc3JjL2NvcmVfY3J5cHRvL2FsZ29yaXRobXMvbHdlX2NvbXBhY3RfY2lwaGVydGV4dF9saXN0X2V4cGFuc2lvbi5ycwAAAMVQEABIAAAAFAAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiBvdXRwdXRfbHdlX2NpcGhlcnRleHRfbGlzdC5sd2Vfc2l6ZSgpID09CiAgICBpbnB1dF9sd2VfY29tcGFjdF9jaXBoZXJ0ZXh0X2xpc3QubHdlX3NpemUoKQDFUBAASAAAABkAAAAFAAAAxVAQAEgAAAAsAAAAHwAAAE1pc21hdGNoZWQgbW9kdWxpIGJldHdlZW4gbWFzayAoKSBhbmQgYm9keSAorFEQACAAAADMURAADAAAAFZMEAABAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vYWxnb3JpdGhtcy9sd2VfZW5jcnlwdGlvbi5ycwAAAPBREAAxAAAAJQAAAAUAAADwURAAMQAAAFgAAAAFAAAA8FEQADEAAABiAAAABQAAAPBREAAxAAAAeAAAADQAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2Rl8FEQADEAAAB8AAAAKQAAAPBREAAxAAAAlAAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiAhY2lwaGVydGV4dF9tb2R1bHVzLmlzX2NvbXBhdGlibGVfd2l0aF9uYXRpdmVfbW9kdWx1cygpAAAA8FEQADEAAACeAAAABQAAAE1pc21hdGNoIGJldHdlZW4gTHdlRGltZW5zaW9uIG9mIG91dHB1dCBjaXBoZXJ0ZXh0IGFuZCBpbnB1dCBzZWNyZXQga2V5LiBHb3QgAAAACFMQAE0AAADWShAAEAAAAOZKEAAPAAAA8FEQADEAAAD/AAAABQAAAPBREAAxAAAAJwIAAAUAAADwURAAMQAAADEC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Q2lwaGVydGV4dCBpbnB1dCBMd2VEaW1lbnNpb24gLiBGb3VyaWVyTHdlTXVsdGlCaXRCb290c3RyYXBLZXkgaW5wdXQgTHdlRGltZW5zaW9uIIBaEABAAAAAwFoQADQAAABaThAAAQAAABRaEABLAAAAMAEAAAUAAABNaXNtYXRjaGVkIEdsd2VTaXplLiBBY2N1bXVsYXRvciBHbHdlU2l6ZSAuIEZvdXJpZXJMd2VNdWx0aUJpdEJvb3RzdHJhcEtleSBHbHdlU2l6ZSAcWxAAKgAAAEZbEAAqAAAAWk4QAAEAAAAUWhAASwAAADkBAAAFAAAATWlzbWF0Y2hlZCBQb2x5bm9taWFsU2l6ZS4gQWNjdW11bGF0b3IgUG9seW5vbWlhbFNpemUgLiBGb3VyaWVyTHdlTXVsdGlCaXRCb290c3RyYXBLZXkgUG9seW5vbWlhbFNpemUgAACYWxAANgAAAM5bEAAwAAAAWk4QAAEAAAAUWhAASwAAAEIBAAAFAAAATWlzbWF0Y2hlZCBDaXBoZXJ0ZXh0TW9kdWx1cyBiZXR3ZWVuIGlucHV0ICgpIGFuZCBhY2N1bXVsYXRvciAoAChcEAAsAAAAVFwQABMAAABWTBAAAQAAABRaEABLAAAASwEAAAUAAABHb3QgdGhyZWFkX2NvdW50ID09IDAsIHRoaXMgaXMgbm90IHN1cHBvcnRlZJBcEAAsAAAAFFoQAEsAAABTAQAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IGFjY3VtdWxhdG9yLmNpcGhlcnRleHRfbW9kdWx1cygpLmlzX2NvbXBhdGlibGVfd2l0aF9uYXRpdmVfbW9kdWx1cygpAAAUWhAASwAAAFgBAAAFAAAAYXNzZXJ0aW9uIGZhaWxlZDogd29ya19xdWV1ZS5sZW4oKSA9PSBsd2VfbWFzay5sd2VfZGltZW5zaW9uKCkuMCAvIGdyb3VwaW5nX2ZhY3Rvci4wFFoQAEsAAABtAQAABQAAABRaEABLAAAAkgEAAAUAAAAUWhAASwAAAJoBAAAwAAAAFFoQAEsAAACeAQAAPAAAABRaEABLAAAApQEAAE0AAAAUWhAASwAAAK0BAABKAAAAFFoQAEsAAAC7AQAAIwAAABRaEABLAAAAqgEAAEsAAAAUWhAASwAAACgCAAAFAAAAFFoQAEsAAAAxAgAABQAAABRaEABLAAAAOgIAAAUAAAAUWhAASwAAAEMCAAAFAAAAFFoQAEsAAABLAgAABQAAABRaEABLAAAAYQIAAAUAAAAUWhAASwAAAIICAAAFAAAAFFoQAEsAAACOAgAANAAAABRaEABLAAAAkAIAAE0AAAAUWhAASwAAAJgCAABKAAAAFFoQAEsAAACeAgAANQAAABRaEABLAAAAowIAABYAAAAUWhAASwAAAJUCAABLAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vYWxnb3JpdGhtcy9wb2x5bm9taWFsX2FsZ29yaXRobXMucnPgXhAAOAAAACEAAAAFAAAA4F4QADgAAACBAAAAMwAAAE91dHB1dCBwb2x5bm9taWFsIHNpemUgIGlzIG5vdCB0aGUgc2FtZSBhcyBpbnB1dCBsaHMgcG9seW5vbWlhbCA4XxAAFwAAAE9fEAApAAAAWk4QAAEAAADgXhAAOAAAAK8AAAAFAAAAIGlzIG5vdCB0aGUgc2FtZSBhcyBpbnB1dCByaHMgcG9seW5vbWlhbCAAAAA4XxAAFwAAAKBfEAApAAAAWk4QAAEAAADgXhAAOAAAALUAAAAFAAAA4F4QADgAAADhAAAAHQAAAOBeEAA4AAAACwEAAB0AAAAgaXMgbm90IHRoZSBzYW1lIGFzIGlucHV0IHBvbHlub21pYWwgc2l6ZSAAADhfEAAXAAAAFGAQACoAAABaThAAAQAAAOBeEAA4AAAAQwEAAAUAAADgXhAAOAAAAEsBAAAcAAAA4F4QADgAAADHAQAABQAAAOBeEAA4AAAAzwEAABwAAADgXhAAOAAAALUCAAAFAAAA4F4QADgAAAC7AgAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IHBvbHlfc2l6ZS5pc19wb3dlcl9vZl90d28oKQAAAOBeEAA4AAAAxQIAAAUAAADgXhAAOAAAANMCAAAkAAAA4F4QADgAAADTAgAAOAAAAOBeEAA4AAAA1AIAACQAAADgXhAAOAAAANQCAAA1AAAA4F4QADgAAADVAgAAKwAAAOBeEAA4AAAA1QIAAD8AAADgXhAAOAAAANYCAAArAAAA4F4QADgAAADWAgAAPwAAAOBeEAA4AAAAAgMAACgAAADgXhAAOAAAAAIDAAA8AAAA4F4QADgAAAADAwAAKAAAAOBeEAA4AAAAAwMAADkAAADgXhAAOAAAAAkDAAAkAAAA4F4QADgAAADuAgAAHwAAAE1pc21hdGNoZWQgQ2lwaGVydGV4dE1vZHVsdXMgYmV0d2VlbiBpbnB1dCBTZWVkZWRMd2VDaXBoZXJ0ZXh0TGlzdCAoKSBhbmQgb3V0cHV0IEx3ZUNpcGhlcnRleHRMaXN0ICjYYRAARAAAABxiEAAgAAAAVkwQAAEAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL3NlZWRlZF9sd2VfY2lwaGVydGV4dF9saXN0X2RlY29tcHJlc3Npb24ucnMAVGIQAEsAAAAbAAAABQAAAEVycm9yIHdoaWxlIGZvcmtpbmcgZ2VuZXJhdG9yIGZvciBTZWVkZWRMd2VDaXBoZXJ0ZXh0TGlzdCBkZWNvbXByZXNzaW9uLlRiEABLAAAALQAAAAoAAABUYhAASwAAAEAAAAAoAAAAbm90IHlldCBpbXBsZW1lbnRlZDogVGhpcyBkaXN0cmlidXRpb24gZG9lcyBub3Qgc3VwcG9ydCBjdXN0b20gbW9kdWx1cyBnZW5lcmF0aW9uIGF0IHRoaXMgdGltZS4AGGMQAF8AAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9jb21tb25zL21hdGgvcmFuZG9tL21vZC5ycwCAYxAALwAAAD8AAAAJAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZW50aXRpZXMvc2VlZGVkX2x3ZV9tdWx0aV9iaXRfYm9vdHN0cmFwX2tleS5ycwDAYxAAQwAAAG4BAAANAAAATXVsdGkgQml0IEJTSyByZXF1aXJlcyBpbnB1dCBMV0UgZGltZW5zaW9uICgpIHRvIGJlIGEgbXVsdGlwbGUgb2YgAAAUZBAALAAAAEBkEAAWAAAAwGMQAEMAAABtAQAACQAAAHRmaGUvc3JjL2ludGVnZXIvZW5jcnlwdGlvbi5ycwAAeGQQAB4AAABNAAAAKwAAAHRmaGUvc3JjL2ludGVnZXIvYmlnaW50L2FsZ29yaXRobXMucnMAAACoZBAAJQAAAHQAAAAqAAAAYXNzZXJ0aW9uIGZhaWxlZDogbGhzLmxlbigpID49IHJocy5sZW4oKahkEAAlAAAAqQAAAAUAAACoZBAAJQAAAL0AAAAiAEHIysEACwEBAEHoysEAC/oGqGQQACUAAAA0AQAAEQAAAKhkEAAlAAAAOgEAABgAAACoZBAAJQAAAEIBAAAcAAAAqGQQACUAAABeAQAAEQAAAKhkEAAlAAAAYwEAABwAAAB0ZmhlL3NyYy9pbnRlZ2VyL2NsaWVudF9rZXkvbW9kLnJzAAAAAAAA/////////////////////////////////////////3+4ZRAAIgAAALMAAAAuAAAAuGUQACIAAABjAQAARQAAAGFzc2VydGlvbiBmYWlsZWQ6IG1lc3NhZ2VfbW9kdWx1cy5pc19wb3dlcl9vZl90d28oKQC4ZRAAIgAAALsBAAAJAAAAuGUQACIAAADDAQAAMwAAAHRmaGUvc3JjL2ludGVnZXIvcHVibGljX2tleS9zdGFuZGFyZC5ycwB0ZhAAJwAAAEEAAAAuAAAAYwAAAE1vZHVsdXMgc3dpdGNoIGNvbXByZXNzaW9uIGFuZCBtdWx0aSBiaXQgUEJTIGFyZSBjdXJyZW50bHkgbm90IGNvbXBhdGlibGUAAACwZhAASQAAAHRmaGUvc3JjL3Nob3J0aW50L3NlcnZlcl9rZXkvbW9kdWx1c19zd2l0Y2hlZF9jb21wcmVzc2lvbi5ycwRnEAA8AAAAawAAAA0AAAB0ZmhlL3NyYy9zaG9ydGludC9zZXJ2ZXJfa2V5L21vZC5ycwBQZxAAIwAAAJcFAAASAAAAMTI4NjQwdGZoZS9zcmMvaGlnaF9sZXZlbF9hcGkvaW50ZWdlcnMvbW9kLnJzAAAAimcQACcAAAAhAAAALgAAAIpnEAAnAAAAIQAAAAkAAAB2YXJpYW50IGluZGV4IDAgPD0gaSA8IDLUZxAAGAAAAFgAAAAIAAAABAAAADoAAABQbGFpbnRleHRDb3VudAAAWAAAAAQAAAAEAAAAJQAAAEx3ZUNpcGhlcnRleHRDb3VudEx3ZURpbWVuc2lvbkdsd2VTaXplR2x3ZURpbWVuc2lvblBvbHlub21pYWxTaXplTWVzc2FnZVgAAAAEAAAABAAAACYAAAAMAAAAEQAAABEAAACoShAAtEoQAMVKEAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL2l0ZXIucnMAQfDRwQALiTBhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvYXNzZXJ0aW9uIGZhaWxlZDogbWlkIDw9IHNlbGYubGVuKCl1NjQAYWxpZ25fb2Zmc2V0OiBhbGlnbiBpcyBub3QgYSBwb3dlci1vZi10d28AAAAwaRAAKQAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvY29yZS9zcmMvcHRyL211dF9wdHIucnMAZGkQAE8AAABjBgAADQAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvbW9kLnJzAAAAxGkQAE0AAABoDQAACQAAAGNodW5rIHNpemUgbXVzdCBiZSBub24temVybwAkahAAGwAAAGFzc2VydGlvbiBmYWlsZWQ6IGsgPD0gc2VsZi5sZW4oKQAAAMRpEABNAAAAkw0AAAkAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAAZQAAAAgAAAAEAAAACgAAAGYAAAAIAAAABAAAAAoAAACUaBAATgAAAFsHAAARAAAACnJlcXVlc3RlZCBhbGlnbm1lbnQgaXMgbGVzcyB0aGFuIHRoZSBtaW5pbXVtIHZhbGlkIGFsaWdubWVudCBmb3IgYGA6CiAtIHJlcXVlc3RlZCBhbGlnbm1lbnQ6IAogLSBtaW5pbXVtIGFsaWdubWVudDogCgAABGsQAEMAAABHaxAAGwAAAGJrEAAXAAAAeWsQAAEAAAAKYnVmZmVyIGlzIG5vdCBsYXJnZSBlbm91Z2ggdG8gYWxsb2NhdGUgYW4gYXJyYXkgb2YgdHlwZSBgYCBvZiB0aGUgcmVxdWVzdGVkIGxlbmd0aDoKIC0gcmVtYWluaW5nIGJ1ZmZlciBsZW5ndGggKGFmdGVyIGFkanVzdGluZyBmb3IgYWxpZ25tZW50KTogLAogLSByZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoOiAgKCBieXRlcyksCgAAAJxrEAA6AAAA1msQAFcAAAAtbBAAHQAAAEpsEAACAAAATGwQAAkAAAAKYnVmZmVyIGlzIG5vdCBsYXJnZSBlbm91Z2ggdG8gYWNjb21vZGF0ZSB0aGUgcmVxdWVzdGVkIGFsaWdubWVudAogLSBidWZmZXIgbGVuZ3RoOiAKIC0gcmVxdWVzdGVkIGFsaWdubWVudDogCiAtIGJ5dGUgb2Zmc2V0IGZvciBhbGlnbm1lbnQ6IIBsEABUAAAA1GwQABkAAADtbBAAHwAAAHlrEAABAAAATWlzbWF0Y2hlZCBpbnB1dCBMd2VEaW1lbnNpb24uIEx3ZUtleXN3aXRjaEtleSBpbnB1dCBMd2VEaW1lbnNpb246ICwgaW5wdXQgTHdlQ2lwaGVydGV4dCBMd2VEaW1lbnNpb24gLgAsbRAAQwAAAG9tEAAjAAAAkm0QAAEAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL2x3ZV9rZXlzd2l0Y2gucnOsbRAAMAAAAGsAAAAFAAAATWlzbWF0Y2hlZCBvdXRwdXQgTHdlRGltZW5zaW9uLiBMd2VLZXlzd2l0Y2hLZXkgb3V0cHV0IEx3ZURpbWVuc2lvbjogLCBvdXRwdXQgTHdlQ2lwaGVydGV4dCBMd2VEaW1lbnNpb24gAAAA7G0QAEUAAAAxbhAAJAAAAJJtEAABAAAArG0QADAAAABzAAAABQAAAE1pc21hdGNoZWQgQ2lwaGVydGV4dE1vZHVsdXMuIEx3ZUtleXN3aXRjaEtleSBDaXBoZXJ0ZXh0TW9kdWx1czogLCBvdXRwdXQgTHdlQ2lwaGVydGV4dCBDaXBoZXJ0ZXh0TW9kdWx1cyAAAIBuEABBAAAAwW4QACkAAACSbRAAAQAAAKxtEAAwAAAAfgAAAAUAAABUaGlzIG9wZXJhdGlvbiBjdXJyZW50bHkgb25seSBzdXBwb3J0cyBwb3dlciBvZiAyIG1vZHVsaRRvEAA4AAAArG0QADAAAACGAAAABQAAAKxtEAAwAAAAjQAAAAUAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL2x3ZV9wcm9ncmFtbWFibGVfYm9vdHN0cmFwcGluZy5ycwAAAHRvEABBAAAAFwEAAAUAAAApTWlzbWF0Y2hlZCBDaXBoZXJ0ZXh0TW9kdWx1cyBiZXR3ZWVuIGlucHV0IFNlZWRlZEx3ZUNpcGhlcnRleHQgKCkgYW5kIG91dHB1dCBMd2VDaXBoZXJ0ZXh0ICgAAADJbxAAQAAAAAlwEAAcAAAAyG8QAAEAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL3NlZWRlZF9sd2VfY2lwaGVydGV4dF9kZWNvbXByZXNzaW9uLnJzAABAcBAARgAAABQAAAAFAAAAQHAQAEYAAAAoAAAAJAAAAEBwEABGAAAAOwAAAAUAAABNaXNtYXRjaGVkIENpcGhlcnRleHRNb2R1bHVzIGJldHdlZW4gaW5wdXQgU2VlZGVkTHdlUHVibGljS2V5ICgpIGFuZCBvdXRwdXQgTHdlUHVibGljS2V5ICgAALhwEAA/AAAA93AQABsAAADIbxAAAQAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2FsZ29yaXRobXMvc2VlZGVkX2x3ZV9wdWJsaWNfa2V5X2RlY29tcHJlc3Npb24ucnMAACxxEABGAAAAEwAAAAUAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9jb21tb25zL3RyYWl0cy9jb250YWluZXIucnOEcRAAMAAAAFgAAAASAAAAhHEQADAAAABnAAAADgAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2VudGl0aWVzL2x3ZV9tdWx0aV9iaXRfYm9vdHN0cmFwX2tleS5yc9RxEAA8AAAAeAEAAA4AAADUcRAAPAAAAI0BAAAWAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZmZ0X2ltcGwvZmZ0NjQvY3J5cHRvL2Jvb3RzdHJhcC5ycwAwchAANwAAAPkAAAA1AAAAYXNzZXJ0aW9uIGZhaWxlZDogY2lwaGVydGV4dF9tb2R1bHVzLmlzX2NvbXBhdGlibGVfd2l0aF9uYXRpdmVfbW9kdWx1cygpMHIQADcAAAD9AAAACQAAADByEAA3AAAADgEAACoAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9mZnRfaW1wbC9mZnQ2NC9jcnlwdG8vZ2dzdy5ycwAA4HIQADIAAAA+AAAACQAAAOByEAAyAAAAjAAAAAkAAADgchAAMgAAAPcBAAAPAAAA4HIQADIAAABiAgAARwAAAOByEAAyAAAAYwIAADwAAAB0ZmhlL3NyYy9jb3JlX2NyeXB0by9mZnRfaW1wbC9mZnQ2NC9tYXRoL2RlY29tcG9zaXRpb24ucnMAAABkcxAAOQAAACMAAAATAAAAdGZoZS9zcmMvY29yZV9jcnlwdG8vZmZ0X2ltcGwvZmZ0NjQvbWF0aC9mZnQvbW9kLnJzALBzEAAzAAAAtwAAAC4AAACwcxAAMwAAAL8AAAAeAAAAsHMQADMAAACXAAAALQAAALBzEAAzAAAAoAEAABYAAACwcxAAMwAAALQBAAARAAAAsHMQADMAAAC1AQAAEQAAAEF0IGxlYXN0IG9uZSBtZXNzYWdlIGlzIHJlcXVpcmVkRHQQACAAAAB0ZmhlL3NyYy9pbnRlZ2VyL3B1YmxpY19rZXkvY29tcGFjdC5ycwAAbHQQACYAAABfAAAAHQAAAGcAAABgAAAACAAAAGgAAABpAAAAagAAAGsAAABsAAAAOAAAAAgAAABtAAAAbgAAAG8AAABwAAAAZwAAAHAAAAAIAAAAcQAAAHIAAABzAAAAdAAAAHUAAABAAAAACAAAAHYAAAB3AAAAeAAAAHkAAABnAAAAUAEAAAgAAAB6AAAAewAAAHwAAAB9AAAAfgAAALAAAAAIAAAAfwAAAIAAAACBAAAAggAAAGcAAADQAAAACAAAAIMAAACEAAAAhQAAAIYAAACHAAAAcAAAAAgAAACIAAAAiQAAAIoAAACLAAAAZwAAAFABAAAIAAAAjAAAAHsAAACNAAAAjgAAAH4AAACwAAAACAAAAI8AAACAAAAAkAAAAJEAAABnAAAA0AAAAAgAAACSAAAAhAAAAJMAAACUAAAAhwAAAHAAAAAIAAAAlQAAAIkAAACWAAAAlwAAAGcAAACQAAAACAAAAJgAAACZAAAAmgAAAJsAAACcAAAAUAAAAAgAAACdAAAAngAAAJ8AAACgAAAAZwAAAGAAAAAIAAAAoQAAAGkAAACiAAAAowAAAGwAAAA4AAAACAAAAKQAAABuAAAApQAAAKYAAABnAAAAUAAAAAgAAACnAAAAqAAAAKkAAACqAAAAqwAAADAAAAAIAAAArAAAAK0AAACuAAAArwAAAGcAAACQAAAACAAAALAAAACZAAAAsQAAALIAAACcAAAAUAAAAAgAAACzAAAAngAAALQAAAC1AAAAZwAAAFAAAAAIAAAAtgAAAKgAAAC3AAAAuAAAAKsAAAAwAAAACAAAALkAAACtAAAAugAAALsAAABnAAAAcAAAAAgAAAC8AAAAcgAAAL0AAAC+AAAAdQAAAEAAAAAIAAAAvwAAAHcAAADAAAAAwQAAAHRmaGUvc3JjL2ludGVnZXIvcHVibGljX2tleS9jb21wcmVzc2VkLnJzAAAARHcQACkAAAA+AAAALgAAAMIAAABMd2VEaW1lbnNpb27DAAAABAAAAAQAAAAlAAAAdmFyaWFudCBpbmRleCAwIDw9IGkgPCAyoHcQABgAAADDAAAACAAAAAQAAAA6AAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3N5bmMvb25jZS5yc9B3EABMAAAA0AAAABQAAAAAAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9jb3JlL3NyYy9udW0vbW9kLnJzAAAAAABhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvAAAAAAAAAGF0dGVtcHQgdG8gY2FsY3VsYXRlIHRoZSByZW1haW5kZXIgd2l0aCBhIGRpdmlzb3Igb2YgemVybwAAADB4EABLAAAAkQQAAAUAAAAweBAASwAAAKkEAAAFAAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZWNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAAMUAAAAEAAAABAAAAMYAAABNaXNtYXRjaCBiZXR3ZWVuIGVxdWl2YWxlbnQgTHdlRGltZW5zaW9uIG9mIGlucHV0IGNpcGhlcnRleHQgYW5kIG91dHB1dCBjaXBoZXJ0ZXh0LiBHb3QgIGZvciBpbnB1dCBhbmQgIGZvciBvdXRwdXQuAGR5EABYAAAAvHkQAA8AAADLeRAADAAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2FsZ29yaXRobXMvZ2x3ZV9zYW1wbGVfZXh0cmFjdGlvbi5ycwAAAPB5EAA5AAAAagAAAAUAAABNaXNtYXRjaGVkIG1vZHVsaSBiZXR3ZWVuIGlucHV0X2dsd2UgKCkgYW5kIG91dHB1dF9sd2UgKCkAAAA8ehAAJgAAAGJ6EAASAAAAdHoQAAEAAADweRAAOQAAAHAAAAAFAAAA8HkQADkAAAB9AAAAFgAAAPB5EAA5AAAAgAAAABcAAADweRAAOQAAAI4AAAA6AAAAVGhpcyBvcGVyYXRpb24gb25seSBzdXBwb3J0cyBuYXRpdmUgbW9kdWxpAADQehAAKgAAAHRmaGUvc3JjL2NvcmVfY3J5cHRvL2FsZ29yaXRobXMvbHdlX2NvbXBhY3RfcHVibGljX2tleV9nZW5lcmF0aW9uLnJzBHsQAEQAAAAhAAAABQAAAE1pc21hdGNoZWQgTHdlRGltZW5zaW9uIGJldHdlZW4gaW5wdXQgTHdlU2VjcmV0S2V5ICBhbmQgb3V0cHV0IEx3ZUNvbXBhY3RQdWJsaWNLZXkgAFh7EAAzAAAAi3sQACAAAAAEexAARAAAACYAAAAFAAAABHsQAEQAAAByAAAABQAAAAR7EABEAAAAdwAAAAUAAAAsIGlucHV0OiB0ZmhlL3NyYy9jb3JlX2NyeXB0by9hbGdvcml0aG1zL2x3ZV9rZXlzd2l0Y2hfa2V5X2dlbmVyYXRpb24ucnMsIG91dHB1dDogYXNzZXJ0aW9uIGZhaWxlZDogY2lwaGVydGV4dF9tb2R1bHVzLmlzX2NvbXBhdGlibGVfd2l0aF9uYXRpdmVfbW9kdWx1cygpVGhlIGRlc3RpbmF0aW9uIFNlZWRlZEx3ZUtleXN3aXRjaEtleSBpbnB1dCBMd2VEaW1lbnNpb24gaXMgbm90IGVxdWFsIHRvIHRoZSBpbnB1dCBMd2VTZWNyZXRLZXkgTHdlRGltZW5zaW9uLiBEZXN0aW5hdGlvbjogAAAAhnwQAHsAAADsexAACQAAAPV7EAA/AAAAAwEAAAUAAABUaGUgZGVzdGluYXRpb24gU2VlZGVkTHdlS2V5c3dpdGNoS2V5IG91dHB1dCBMd2VEaW1lbnNpb24gaXMgbm90IGVxdWFsIHRvIHRoZSBvdXRwdXQgTHdlU2VjcmV0S2V5IEx3ZURpbWVuc2lvbi4gRGVzdGluYXRpb246IAAAACR9EAB9AAAANHwQAAoAAAD1exAAPwAAAAoBAAAFAAAA9XsQAD8AAAAVAQAABQAAAPV7EAA/AAAAMQEAADIAAABsaHMgKGxlbjogKSBhbmQgcmhzIChsZW46ICkg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M2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3N5bmMvbXBtYy9tb2QucnMkhRAAUAAAAIUAAAAtAAAAdGhyZWFkIG5hbWUgbWF5IG5vdCBjb250YWluIGludGVyaW9yIG51bGwgYnl0ZXMAzgAAABAAAAAEAAAAzwAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbW9kLnJzAAAAxIUQAE0AAADcAQAAIAAAANAAAAAkAAAABAAAANEAAADSAAAAKAAAAAQAAADTAAAATnVsRXJyb3LUAAAABAAAAAQAAADVAAAA1AAAAAQAAAAEAAAA1gAAAFV0ZjhFcnJvcnZhbGlkX3VwX3RvZXJyb3JfbGVuAAAA1AAAAAQAAAAEAAAA1wAAAESGEAAAAAAAT3BlcmF0aW9uIEZhaWxlZEVycm9ya2luZAAAANQAAAAEAAAABAAAANgAAABTZW5kRXJyb3JQb2lzb25FcnJvctkAAAAMAAAABAAAANoAAADbAAAAHgAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkA3AAAAAAAAAABAAAA3QAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwBEhxAASwAAADMKAAAOAAAARXJyb3IKClN0YWNrOgoKCgoAAABJbnZhbGlkIHNpemUgOiBzaXplcyBtdXN0IGZpdCBpbiBhIHVzaXplICgwIHRvICm0hxAADQAAAMGHEAAiAAAA44cQAAEAAAD/////c3RyaW5nIGlzIG5vdCB2YWxpZCB1dGY4aW52YWxpZCB1OCB3aGlsZSBkZWNvZGluZyBib29sY2hhciBpcyBub3QgdmFsaWR0YWcgZm9yIGVudW0gaXMgbm90IHZhbGlkQmluY29kZSBkb2Vzbid0IHN1cHBvcnQgc2VyZGU6OkRlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemVfYW55dGhlIHNpemUgbGltaXQgaGFzIGJlZW4gcmVhY2hlZEJpbmNvZGUgY2FuIG9ubHkgZW5jb2RlIHNlcXVlbmNlcyBhbmQgbWFwcyB0aGF0IGhhdmUgYSBrbm93YWJsZSBzaXplIGFoZWFkIG9mIHRpbWVpbyBlcnJvcjogAA2JEAAKAAAAOiAAALSHEAAAAAAAIIkQAAIAAAAsIGV4cGVjdGVkIDAgb3IgMSwgZm91bmQgAAAAtIcQAAAAAAA0iRAAGQAAALSHEAAAAAAALCBmb3VuZCC0hxAAAAAAAGiJEAAIAAAAQmluY29kZSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBzZXJkZTo6RGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZV9hbnkgbWV0aG9kgIkQAEgAAABjYW5ub3QgYWNjZXNzIGEgVGhyZWFkIExvY2FsIFN0b3JhZ2UgdmFsdWUgZHVyaW5nIG9yIGFmdGVyIGRlc3RydWN0aW9uAADiAAAAAAAAAAEAAAAOAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwAoihAATwAAAPYAAAAaAAAARXJyb3Jvc19lcnJvcgAAAOMAAAAEAAAABAAAAOQAAABkZXNjcmlwdGlvbgDjAAAACAAAAAQAAADlAAAAaW50ZXJuYWxfY29kZQAAAOMAAAAEAAAABAAAAOYAAAB1bmtub3duX2NvZGVnZXRyYW5kb206IHRoaXMgdGFyZ2V0IGlzIG5vdCBzdXBwb3J0ZWRlcnJubzogZGlkIG5vdCByZXR1cm4gYSBwb3NpdGl2ZSB2YWx1ZVNlY1JhbmRvbUNvcHlCeXRlczogaU9TIFNlY3VyaXR5IGZyYW1ld29yayBmYWlsdXJlUnRsR2VuUmFuZG9tOiBXaW5kb3dzIHN5c3RlbSBmdW5jdGlvbiBmYWlsdXJlUkRSQU5EOiBmYWlsZWQgbXVsdGlwbGUgdGltZXM6IENQVSBpc3N1ZSBsaWtlbHlSRFJBTkQ6IGluc3RydWN0aW9uIG5vdCBzdXBwb3J0ZWRXZWIgQ3J5cHRvIEFQSSBpcyB1bmF2YWlsYWJsZUNhbGxpbmcgV2ViIEFQSSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzIGZhaWxlZHJhbmRTZWN1cmU6IFZ4V29ya3MgUk5HIG1vZHVsZSBpcyBub3QgaW5pdGlhbGl6ZWROb2RlLmpzIGNyeXB0byBDb21tb25KUyBtb2R1bGUgaXMgdW5hdmFpbGFibGVDYWxsaW5nIE5vZGUuanMgQVBJIGNyeXB0by5yYW5kb21GaWxsU3luYyBmYWlsZWROb2RlLmpzIEVTIG1vZHVsZXMgYXJlIG5vdCBkaXJlY3RseSBzdXBwb3J0ZWQsIHNlZSBodHRwczovL2RvY3MucnMvZ2V0cmFuZG9tI25vZGVqcy1lcy1tb2R1bGUtc3VwcG9ydAAAAOcAAABjcnlwdG8AACcAAAAmAAAAAAAAADIAAAAtAAAALwAAACEAAAAdAAAALQBB5JrCAAszMQAAAC0AAAAwAAAAZQAAAPCKEAAXixAAAAAAAD2LEABvixAAnIsQAMuLEADsixAACYwQAEGgm8IAC8UFNowQAGeMEACUjBAAxIwQAOgAAAByZXR1cm4gdGhpc2Nhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24AAADpAAAAAAAAAAEAAAAOAAAAL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwAYjhAATwAAAPYAAAAaAAAAVHJpZWQgdG8gc2hyaW5rIHRvIGEgbGFyZ2VyIGNhcGFjaXR5eI4QACQAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjLnJzpI4QAEwAAADPAQAACQAAAGNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkSnNWYWx1ZSgpADKPEAAIAAAAOo8QAAEAAABudWxsIHBvaW50ZXIgcGFzc2VkIHRvIHJ1c3RyZWN1cnNpdmUgdXNlIG9mIGFuIG9iamVjdCBkZXRlY3RlZCB3aGljaCB3b3VsZCBsZWFkIHRvIHVuc2FmZSBhbGlhc2luZyBpbiBydXN0AABUcmllZCB0byBzaHJpbmsgdG8gYSBsYXJnZXIgY2FwYWNpdHm4jxAAJAAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMucnPkjxAATAAAAM8BAAAJAAAA9wAAAAwAAAAEAAAA+AAAAPkAAAAeAAAA+wAAAAQAAAAEAAAA/ABBgKHCAAvWHmNvbmNyZXRlLWNzcHJuZy9zcmMvZ2VuZXJhdG9ycy9hZXNfY3RyL3N0YXRlcy5yc4CQEAAwAAAAJgAAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBzdGFydF9pbmRleCA8IGJvdW5kX2luZGV4Y29uY3JldGUtY3Nwcm5nL3NyYy9nZW5lcmF0b3JzL2Flc19jdHIvZ2VuZXJpYy5yc+uQEAAxAAAASQAAAAkAAABBZXNJbmRlePsAAAAEAAAABAAAAP0AAABCeXRlSW5kZXgAAAD7AAAABAAAAAQAAAAlAAAAVGFibGVJbmRleGFlc19pbmRleAD+AAAAEAAAAAgAAAD/AAAAYnl0ZV9pbmRleAAA+wAAAAQAAAAEAAAAAAEAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Flcy0wLjguMi9zcmMvc29mdC9maXhzbGljZTMyLnJzAKCREABfAAAAiQQAABIAAACgkRAAXwAAAIkEAAA9AAAAoJEQAF8AAAAUBQAAIgAAAKCREABfAAAAFAUAAAkAAAABAQAACAAAAAQAAAACAQAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQADAQAACAAAAAQAAAAIAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmF5b24tY29yZS0xLjEyLjEvc3JjL2xhdGNoLnJzAAAAjJIQAF0AAAALAQAAKgAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JheW9uLWNvcmUtMS4xMi4xL3NyYy9yZWdpc3RyeS5yc1RoZSBnbG9iYWwgdGhyZWFkIHBvb2wgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkLvySEABgAAAAqAAAAAoAAAD8khAAYAAAAMAAAAAWAAAA/JIQAGAAAAArAQAANgAAAAQBAAD8khAAYAAAADIDAAAvAAAA/JIQAGAAAAA4AwAAKgAAAPySEABgAAAAjwMAACYAAABUaHJlYWRQb29sQnVpbGRFcnJvcmtpbmQFAQAABAAAAAQAAAAGAQAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY3Jvc3NiZWFtLWVwb2NoLTAuOS4xNC9zcmMvaW50ZXJuYWwucnMAAAAYlBAAZQAAAIIBAAA5AAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZXRocmVhZCBuYW1lIG1heSBub3QgY29udGFpbiBpbnRlcmlvciBudWxsIGJ5dGVzAAAHAQAAQAAAAAQAAAAIAQAACQEAABAAAAAEAAAACgEAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbW9kLnJzAAAADJUQAE0AAADcAQAAIAAAAE51bEVycm9yCwEAAAQAAAAEAAAADAEAAAsBAAAEAAAABAAAANYAAABvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtlJUQACgAAAAkAAAAR2xvYmFsUG9vbEFscmVhZHlJbml0aWFsaXplZEN1cnJlbnRUaHJlYWRBbHJlYWR5SW5Qb29sSU9FcnJvcgAAAA0BAAAEAAAABAAAACIAAAAAY2Fubm90IHJlY3Vyc2l2ZWx5IGFjcXVpcmUgbXV0ZXgAAAAZlhAAIAAAAC9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvc3RkL3NyYy9zeXMvd2FzbS8uLi91bnN1cHBvcnRlZC9sb2Nrcy9tdXRleC5ycwAARJYQAGYAAAAUAAAACQAAAGNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24AAA4BAAAAAAAAAQAAAA4AAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzABSXEABPAAAA9gAAABoAAABhc3NlcnRpb24gZmFpbGVkOiB0LmdldCgpLmVxKCYoc2VsZiBhcyAqY29uc3QgXykpL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmF5b24tY29yZS0xLjEyLjEvc3JjL3JlZ2lzdHJ5LnJzAAAApZcQAGAAAACtAgAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IHQuZ2V0KCkuaXNfbnVsbCgpAKWXEABgAAAAwAIAAA0AAACllxAAYAAAAHUDAAAjAAAADwEAAAQAAAAEAAAAJAAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAEAEAAAgAAAAEAAAACAAAAGFzc2VydGlvbiBmYWlsZWQ6IG5fdGhyZWFkcyA8PSBUSFJFQURTX01BWC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JheW9uLWNvcmUtMS4xMi4xL3NyYy9zbGVlcC9tb2QucnMA0pgQAGEAAAA+AAAACQAAANKYEABhAAAAgwAAADQAAADSmBAAYQAAAIQAAAA8AAAA0pgQAGEAAAC8AAAAQwAAANKYEABhAAAAIgEAADQAAADSmBAAYQAAACQBAAA8AAAAT25jZSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAACUmRAAKgAAAG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1heSBub3QgYmUgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5yJkQADgAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9zdGQvc3JjL3N5bmMvb25jZS5ycwAzmhAATAAAAJUAAAAyAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQASAQAACAAAAAQAAAAIAAAAUG9pc29uRXJyb3IvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yYXlvbi1jb3JlLTEuMTIuMS9zcmMvbGF0Y2gucnPXmhAAXQAAAPgAAAAnAAAA15oQAF0AAAD6AAAAKAAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JheW9uLWNvcmUtMS4xMi4xL3NyYy9yZWdpc3RyeS5yc1SbEABgAAAAdQMAACMAAABPbmNlIGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAAMSbEAAqAAAAb25lLXRpbWUgaW5pdGlhbGl6YXRpb24gbWF5IG5vdCBiZSBwZXJmb3JtZWQgcmVjdXJzaXZlbHn4mxAAOAAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L3N0ZC9zcmMvc3luYy9vbmNlLnJzAGOcEABMAAAAlQAAADIAAAABAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY3Jvc3NiZWFtLWVwb2NoLTAuOS4xNC9zcmMvc3luYy9saXN0LnJzAADEnBAAZgAAAOIAAAARAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY3Jvc3NiZWFtLWVwb2NoLTAuOS4xNC9zcmMvc3luYy9vbmNlX2xvY2sucnMAPJ0QAGsAAABOAAAAEwAAAAAAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL3N5bmMvYXRvbWljLnJzdGhlcmUgaXMgbm8gc3VjaCB0aGluZyBhcyBhIHJlbGVhc2UgZmFpbHVyZSBvcmRlcmluZwALnhAANAAAALydEABPAAAAMA0AAB0AAAB0aGVyZSBpcyBubyBzdWNoIHRoaW5nIGFzIGFuIGFjcXVpcmUtcmVsZWFzZSBmYWlsdXJlIG9yZGVyaW5nAAAAWJ4QAD0AAAC8nRAATwAAAC8NAAAcAAAAAAAAAHVuYWxpZ25lZCBwb2ludGVyAAAAtJ4QABEAAAAvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9jcm9zc2JlYW0tZXBvY2gtMC45LjE0L3NyYy9hdG9taWMucnMA0J4QAGMAAABxAAAABQAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9jcm9zc2JlYW0tZXBvY2gtMC45LjE0L3NyYy9pbnRlcm5hbC5ycxUBAEHkv8IAC+MCb58QAGUAAAB5AAAALAAAAG+fEABlAAAAggEAADkAAAAWAQAABAAAAAQAAAAXAQAAFgEAAAQAAAAEAAAAJQAAAGNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24AABgBAAAAAAAAAQAAAA4AAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAHygEABPAAAA9gAAABoAAABhc3NlcnRpb24gZmFpbGVkOiBtaWQgPD0gc2VsZi5sZW4oKS9ydXN0Yy8wN2RjYTQ4OWFjMmQ5MzNjNzhkM2M1MTU4ZTNmNDNiZWVmZWIwMmNlL2xpYnJhcnkvY29yZS9zcmMvdGltZS5ycwBB0MLCAAvhIWF0dGVtcHQgdG8gZGl2aWRlIGJ5IHplcm9vdmVyZmxvdyBp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AFwAAADIAAAAEQAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2NvbmNyZXRlLWZmdC0wLjQuMS9zcmMvbGliLnJziKgQAFwAAACKAAAACgAAAIioEABcAAAAxQAAABEAAACIqBAAXAAAAMYAAAARAAAAiKgQAFwAAADHAAAAEQAAAIioEABcAAAAyAAAABEAAAAvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9jb25jcmV0ZS1mZnQtMC40LjEvc3JjL2xpYi5yczSpEABcAAAAigAAAAoAAAA0qRAAXAAAAMUAAAARAAAANKkQAFwAAADGAAAAEQAAADSpEABcAAAAxwAAABEAAAA0qRAAXAAAAMgAAAARAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY29uY3JldGUtZmZ0LTAuNC4xL3NyYy9saWIucnPgqRAAXAAAAIoAAAAKAAAA4KkQAFwAAADFAAAAEQAAAOCpEABcAAAAxgAAABEAAADgqRAAXAAAAMcAAAARAAAA4KkQAFwAAADIAAAAEQAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2NvbmNyZXRlLWZmdC0wLjQuMS9zcmMvbGliLnJzjKoQAFwAAACKAAAACgAAAIyqEABcAAAAxQAAABEAAACMqhAAXAAAAMYAAAARAAAAjKoQAFwAAADHAAAAEQAAAIyqEABcAAAAyAAAABEAAAAvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9jb25jcmV0ZS1mZnQtMC40LjEvc3JjL2xpYi5yczirEABcAAAAigAAAAoAAAA4qxAAXAAAAMUAAAARAAAAOKsQAFwAAADGAAAAEQAAADirEABcAAAAxwAAABEAAAA4qxAAXAAAAMgAAAARAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY29uY3JldGUtZmZ0LTAuNC4xL3NyYy9saWIucnPkqxAAXAAAAIoAAAAKAAAA5KsQAFwAAADFAAAAEQAAAOSrEABcAAAAxgAAABEAAADkqxAAXAAAAMcAAAARAAAA5KsQAFwAAADIAAAAEQAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2NvbmNyZXRlLWZmdC0wLjQuMS9zcmMvbGliLnJzkKwQAFwAAACKAAAACgAAAJCsEABcAAAAxQAAABEAAACQrBAAXAAAAMYAAAARAAAAkKwQAFwAAADHAAAAEQAAAJCsEABcAAAAyAAAABEAAABjYW4gbm90IGNvbnZlcnQgZmxvYXQgc2Vjb25kcyB0byBEdXJhdGlvbjogdmFsdWUgaXMgbmVnYXRpdmVjYW4gbm90IGNvbnZlcnQgZmxvYXQgc2Vjb25kcyB0byBEdXJhdGlvbjogdmFsdWUgaXMgZWl0aGVyIHRvbyBiaWcgb3IgTmFOL3J1c3RjLzA3ZGNhNDg5YWMyZDkzM2M3OGQzYzUxNThlM2Y0M2JlZWZlYjAyY2UvbGlicmFyeS9jb3JlL3NyYy90aW1lLnJzAAAAwa0QAEgAAAD6AgAAFwAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUKCmJ1ZmZlciBpcyBub3QgbGFyZ2UgZW5vdWdoIHRvIGFsbG9jYXRlIGFuIGFycmF5IG9mIHR5cGUgYGAgb2YgdGhlIHJlcXVlc3RlZCBsZW5ndGg6CiAtIHJlbWFpbmluZyBidWZmZXIgbGVuZ3RoIChhZnRlciBhZGp1c3RpbmcgZm9yIGFsaWdubWVudCk6ICwKIC0gcmVxdWVzdGVkIGFycmF5IGxlbmd0aDogICggYnl0ZXMpLAoAAABIrhAAOgAAAIKuEABXAAAA2a4QAB0AAAD2rhAAAgAAAPiuEAAJAAAACmJ1ZmZlciBpcyBub3QgbGFyZ2UgZW5vdWdoIHRvIGFjY29tb2RhdGUgdGhlIHJlcXVlc3RlZCBhbGlnbm1lbnQKIC0gYnVmZmVyIGxlbmd0aDogCiAtIHJlcXVlc3RlZCBhbGlnbm1lbnQ6IAogLSBieXRlIG9mZnNldCBmb3IgYWxpZ25tZW50OiAsrxAAVAAAAICvEAAZAAAAma8QAB8AAABHrhAAAQAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2NvbmNyZXRlLWZmdC0wLjQuMS9zcmMvb3JkZXJlZC5yc9ivEABgAAAARwAAACIAAABhc3NlcnRpb24gZmFpbGVkOiBuLmlzX3Bvd2VyX29mX3R3bygpAAAA2K8QAGAAAABqAAAABQAAANivEABgAAAAcAAAACMAAADYrxAAYAAAAHEAAAAiAAAA2K8QAGAAAABzAAAAJgAAANivEABgAAAAdwAAAB0AAADYrxAAYAAAALcAAAAKAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZdivEABgAAAAhgAAABIAAABudW1fY29tcGxleDo6Q29tcGxleDxmNjQ+AAAAJLEQAAAAAACnAQAABAAAAAQAAACoAQAAPgAAACSxEAAAAAAAPLEQAAEAAAAvaG9tZS9ib2IvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9ieXRlbXVjay0xLjE2LjAvc3JjL2ludGVybmFsLnJzAABQsRAAXgAAACAAAAADAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY29uY3JldGUtZmZ0LTAuNC4xL3NyYy9mZnRfc2ltZC5ycwAAAMCxEABhAAAALwEAAA4AQcDkwgALoiVhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvAAAAwLEQAGEAAAA7AQAADQAAAMCxEABhAAAAPAEAAA0AAADAsRAAYQAAAD0BAAANAAAAwLEQAGEAAAA+AQAADQAAAC9ob21lL2JvYi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2R5bi1zdGFjay0wLjkuMC9zcmMvc3RhY2tfcmVxLnJzAJyyEABfAAAAFAAAABEAAABjYXBhY2l0eSBvdmVyZmxvdwAAAAyzEAARAAAAL2hvbWUvYm9iLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYWxpZ25lZC12ZWMtMC41LjAvc3JjL3Jhdy5ycwAosxAAWwAAACUAAAAFAAAAYnl0ZSBhcnJheWJvb2xlYW4gYGCesxAACQAAAKezEAABAAAAaW50ZWdlciBgAAAAuLMQAAkAAACnsxAAAQAAAGZsb2F0aW5nIHBvaW50IGDUsxAAEAAAAKezEAABAAAAY2hhcmFjdGVyIGAA9LMQAAsAAACnsxAAAQAAAHN0cmluZyAAELQQAAcAAACUsxAACgAAAHVuaXQgdmFsdWUAACi0EAAKAAAAT3B0aW9uIHZhbHVlPLQQAAwAAABuZXd0eXBlIHN0cnVjdAAAULQQAA4AAABzZXF1ZW5jZWi0EAAIAAAAbWFwAHi0EAADAAAAZW51bYS0EAAEAAAAdW5pdCB2YXJpYW50kLQQAAwAAABuZXd0eXBlIHZhcmlhbnQApLQQAA8AAAB0dXBsZSB2YXJpYW50AAAAvLQQAA0AAABzdHJ1Y3QgdmFyaWFudAAA1LQQAA4AAAB1c2l6ZQAAAPS0EAAAAAAAVGFyZ2V0QWxpZ25tZW50R3JlYXRlckFuZElucHV0Tm90QWxpZ25lZE91dHB1dFNsaWNlV291bGRIYXZlU2xvcFNpemVNaXNtYXRjaEFsaWdubWVudE1pc21hdGNoAAAAKAAAABgAAAAMAAAAEQAAAPy0EAAktRAAPLUQAEi1EAByZWVudHJhbnQgaW5pdAAAfLUQAA4AAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL2NlbGwvb25jZS5ycwAAAJS1EABNAAAA2QAAAEIAAABvdmVyZmxvdyBpbiBEdXJhdGlvbjo6bmV3AAAA9LUQABkAAAAvcnVzdGMvMDdkY2E0ODlhYzJkOTMzYzc4ZDNjNTE1OGUzZjQzYmVlZmViMDJjZS9saWJyYXJ5L2NvcmUvc3JjL3RpbWUucnMYthAASAAAAMoAAAAVAAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZQCyAQAADAAAAAQAAACzAQAAtAEAALUBAAB0b28gbWFueSBydW5uaW5nIHRocmVhZHMgaW4gdGhyZWFkIHNjb3BltLYQACgAAABsaWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL3Njb3BlZC5yc+S2EAAgAAAAMwAAAA0AAABBY2Nlc3NFcnJvcmxpYnJhcnkvc3RkL3NyYy90aHJlYWQvbW9kLnJzZmFpbGVkIHRvIGdlbmVyYXRlIHVuaXF1ZSB0aHJlYWQgSUQ6IGJpdHNwYWNlIGV4aGF1c3RlZAA8txAANwAAAB+3EAAdAAAAmAQAAA0AAABvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtjLcQACgAAAAkAAAAfLUQAAAAAABlbnRpdHkgbm90IGZvdW5kcGVybWlzc2lvbiBkZW5pZWRjb25uZWN0aW9uIHJlZnVzZWRjb25uZWN0aW9uIHJlc2V0aG9zdCB1bnJlYWNoYWJsZW5ldHdvcmsgdW5yZWFjaGFibGVjb25uZWN0aW9uIGFib3J0ZWRub3QgY29ubmVjdGVkYWRkcmVzcyBpbiB1c2VhZGRyZXNzIG5vdCBhdmFpbGFibGVuZXR3b3JrIGRvd25icm9rZW4gcGlwZWVudGl0eSBhbHJlYWR5IGV4aXN0c29wZXJhdGlvbiB3b3VsZCBibG9ja25vdCBhIGRpcmVjdG9yeWlzIGEgZGlyZWN0b3J5ZGlyZWN0b3J5IG5vdCBlbXB0eXJlYWQtb25seSBmaWxlc3lzdGVtIG9yIHN0b3JhZ2UgbWVkaXVtZmlsZXN5c3RlbSBsb29wIG9yIGluZGlyZWN0aW9uIGxpbWl0IChlLmcuIHN5bWxpbmsgbG9vcClzdGFsZSBuZXR3b3JrIGZpbGUgaGFuZGxlaW52YWxpZCBpbnB1dCBwYXJhbWV0ZXJpbnZhbGlkIGRhdGF0aW1lZCBvdXR3cml0ZSB6ZXJvbm8gc3RvcmFnZSBzcGFjZXNlZWsgb24gdW5zZWVrYWJsZSBmaWxlZmlsZXN5c3RlbSBxdW90YSBleGNlZWRlZGZpbGUgdG9vIGxhcmdlcmVzb3VyY2UgYnVzeWV4ZWN1dGFibGUgZmlsZSBidXN5ZGVhZGxvY2tjcm9zcy1kZXZpY2UgbGluayBvciByZW5hbWV0b28gbWFueSBsaW5rc2ludmFsaWQgZmlsZW5hbWVhcmd1bWVudCBsaXN0IHRvbyBsb25nb3BlcmF0aW9uIGludGVycnVwdGVkdW5zdXBwb3J0ZWR1bmV4cGVjdGVkIGVuZCBvZiBmaWxlb3V0IG9mIG1lbW9yeW90aGVyIGVycm9ydW5jYXRlZ29yaXplZCBlcnJvck9zY29kZQC2AQAABAAAAAQAAAC3AQAAa2luZLgBAAABAAAAAQAAALkBAABtZXNzYWdlALIBAAAMAAAABAAAALoBAABLaW5kRXJyb3IAAAC2AQAACAAAAAQAAAC7AQAAQ3VzdG9tZXJyb3IAtgEAAAQAAAAEAAAAvAEAACAob3MgZXJyb3IgKXy1EAAAAAAAMLsQAAsAAAA7uxAAAQAAAG1lbW9yeSBhbGxvY2F0aW9uIG9mICBieXRlcyBmYWlsZWQAAFS7EAAVAAAAabsQAA0AAABsaWJyYXJ5L3N0ZC9zcmMvYWxsb2MucnOIuxAAGAAAAGIBAAAJAAAAY2Fubm90IG1vZGlmeSB0aGUgcGFuaWMgaG9vayBmcm9tIGEgcGFuaWNraW5nIHRocmVhZLC7EAA0AAAAbGlicmFyeS9zdGQvc3JjL3Bhbmlja2luZy5yc+y7EAAcAAAAhwAAAAkAAADsuxAAHAAAAIQCAAAeAAAAsgEAAAwAAAAEAAAAvQEAALYBAAAIAAAABAAAAL4BAAC2AQAACAAAAAQAAAC/AQAAwAEAAMEBAAAQAAAABAAAAMIBAADDAQAAxAEAAAAAAAABAAAAxQEAAMYBAAAIAAAABAAAAMcBAADIAQAAxAEAAAAAAAABAAAAyQEAAE5vdEZvdW5kUGVybWlzc2lvbkRlbmllZENvbm5lY3Rpb25SZWZ1c2VkQ29ubmVjdGlvblJlc2V0SG9zdFVucmVhY2hhYmxlTmV0d29ya1VucmVhY2hhYmxlQ29ubmVjdGlvbkFib3J0ZWROb3RDb25uZWN0ZWRBZGRySW5Vc2VBZGRyTm90QXZhaWxhYmxlTmV0d29ya0Rvd25Ccm9rZW5QaXBlQWxyZWFkeUV4aXN0c1dvdWxkQmxvY2tOb3RBRGlyZWN0b3J5SXNBRGlyZWN0b3J5RGlyZWN0b3J5Tm90RW1wdHlSZWFkT25seUZpbGVzeXN0ZW1GaWxlc3lzdGVtTG9vcFN0YWxlTmV0d29ya0ZpbGVIYW5kbGVJbnZhbGlkSW5wdXRJbnZhbGlkRGF0YVRpbWVkT3V0V3JpdGVaZXJvU3RvcmFnZUZ1bGxOb3RTZWVrYWJsZUZpbGVzeXN0ZW1RdW90YUV4Y2VlZGVkRmlsZVRvb0xhcmdlUmVzb3VyY2VCdXN5RXhlY3V0YWJsZUZpbGVCdXN5RGVhZGxvY2tDcm9zc2VzRGV2aWNlc1Rvb01hbnlMaW5rc0ludmFsaWRGaWxlbmFtZUFyZ3VtZW50TGlzdFRvb0xvbmdJbnRlcnJ1cHRlZFVuc3VwcG9ydGVkVW5leHBlY3RlZEVvZk91dE9mTWVtb3J5T3RoZXJVbmNhdGVnb3JpemVkb3BlcmF0aW9uIHN1Y2Nlc3NmdWx0aW1lIG5vdCBpbXBsZW1lbnRlZCBvbiB0aGlzIHBsYXRmb3JtANa+EAAlAAAAbGlicmFyeS9zdGQvc3JjL3N5cy93YXNtLy4uL3Vuc3VwcG9ydGVkL3RpbWUucnMABL8QAC8AAAANAAAACQAAAGNvbmR2YXIgd2FpdCBub3Qgc3VwcG9ydGVkAABEvxAAGgAAAGxpYnJhcnkvc3RkL3NyYy9zeXMvd2FzbS8uLi91bnN1cHBvcnRlZC9sb2Nrcy9jb25kdmFyLnJzaL8QADgAAAAUAAAACQAAABAAAAARAAAAEgAAABAAAAAQAAAAEwAAABIAAAANAAAADgAAABUAAAAMAAAACwAAABUAAAAVAAAADwAAAA4AAAATAAAAJgAAADgAAAAZAAAAFwAAAAwAAAAJAAAACgAAABAAAAAXAAAAGQAAAA4AAAANAAAAFAAAAAgAAAAbAAAADgAAABAAAAAWAAAAFQAAAAsAAAAWAAAADQAAAAsAAAATAAAAyLcQANi3EADptxAA+7cQAAu4EAAbuBAALrgQAEC4EABNuBAAW7gQAHC4EAB8uBAAh7gQAJy4EACxuBAAwLgQAM64EADhuBAAB7kQAD+5EABYuRAAb7kQAHu5EACEuRAAjrkQAJ65EAC1uRAAzrkQANy5EADpuRAA/bkQAAW6EAAguhAALroQAD66EABUuhAAaboQAHS6EACKuhAAl7oQAKK6EAAIAAAAEAAAABEAAAAPAAAADwAAABIAAAARAAAADAAAAAkAAAAQ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', imports)} - -let wasm; -const heap = new Array(128).fill(undefined); -heap.push(undefined, null, true, false); -let heap_next = heap.length; -function addHeapObject(obj) { - if (heap_next === heap.length) - heap.push(heap.length + 1); - const idx = heap_next; - heap_next = heap[idx]; - heap[idx] = obj; - return idx; -} -function getObject(idx) { - return heap[idx]; -} -function dropObject(idx) { - if (idx < 132) - return; - heap[idx] = heap_next; - heap_next = idx; -} -function takeObject(idx) { - const ret = getObject(idx); - dropObject(idx); - return ret; -} -const cachedTextDecoder = typeof TextDecoder !== "undefined" - ? new TextDecoder("utf-8", { ignoreBOM: true, fatal: true }) - : { - decode: () => { - throw Error("TextDecoder not available"); - }, - }; -if (typeof TextDecoder !== "undefined") { - cachedTextDecoder.decode(); -} -let cachedUint8Memory0 = null; -function getUint8Memory0() { - if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) { - cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); - } - return cachedUint8Memory0; -} -function getStringFromWasm0(ptr, len) { - ptr = ptr >>> 0; - return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); -} -function isLikeNone(x) { - return x === undefined || x === null; -} -let cachedBigInt64Memory0 = null; -function getBigInt64Memory0() { - if (cachedBigInt64Memory0 === null || - cachedBigInt64Memory0.byteLength === 0) { - cachedBigInt64Memory0 = new BigInt64Array(wasm.memory.buffer); - } - return cachedBigInt64Memory0; -} -let cachedInt32Memory0 = null; -function getInt32Memory0() { - if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) { - cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); - } - return cachedInt32Memory0; -} -function debugString(val) { - // primitive types - const type = typeof val; - if (type == "number" || type == "boolean" || val == null) { - return `${val}`; - } - if (type == "string") { - return `"${val}"`; - } - if (type == "symbol") { - const description = val.description; - if (description == null) { - return "Symbol"; - } - else { - return `Symbol(${description})`; - } - } - if (type == "function") { - const name = val.name; - if (typeof name == "string" && name.length > 0) { - return `Function(${name})`; - } - else { - return "Function"; - } - } - // objects - if (Array.isArray(val)) { - const length = val.length; - let debug = "["; - if (length > 0) { - debug += debugString(val[0]); - } - for (let i = 1; i < length; i++) { - debug += ", " + debugString(val[i]); - } - debug += "]"; - return debug; - } - // Test for built-in - const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); - let className; - if (builtInMatches.length > 1) { - className = builtInMatches[1]; - } - else { - // Failed to match the standard '[object ClassName]' - return toString.call(val); - } - if (className == "Object") { - // we're a user defined class or Object - // JSON.stringify avoids problems with cycles, and is generally much - // easier than looping through ownProperties of `val`. - try { - return "Object(" + JSON.stringify(val) + ")"; - } - catch (_) { - return "Object"; - } - } - // errors - if (val instanceof Error) { - return `${val.name}: ${val.message}\n${val.stack}`; - } - // TODO we could test for more things here, like `Set`s and `Map`s. - return className; -} -let WASM_VECTOR_LEN = 0; -const cachedTextEncoder = typeof TextEncoder !== "undefined" - ? new TextEncoder("utf-8") - : { - encode: () => { - throw Error("TextEncoder not available"); - }, - }; -const encodeString = typeof cachedTextEncoder.encodeInto === "function" - ? function (arg, view) { - return cachedTextEncoder.encodeInto(arg, view); - } - : function (arg, view) { - const buf = cachedTextEncoder.encode(arg); - view.set(buf); - return { - read: arg.length, - written: buf.length, - }; - }; -function passStringToWasm0(arg, malloc, realloc) { - if (realloc === undefined) { - const buf = cachedTextEncoder.encode(arg); - const ptr = malloc(buf.length, 1) >>> 0; - getUint8Memory0() - .subarray(ptr, ptr + buf.length) - .set(buf); - WASM_VECTOR_LEN = buf.length; - return ptr; - } - let len = arg.length; - let ptr = malloc(len, 1) >>> 0; - const mem = getUint8Memory0(); - let offset = 0; - for (; offset < len; offset++) { - const code = arg.charCodeAt(offset); - if (code > 0x7f) - break; - mem[ptr + offset] = code; - } - if (offset !== len) { - if (offset !== 0) { - arg = arg.slice(offset); - } - ptr = realloc(ptr, len, (len = offset + arg.length * 3), 1) >>> 0; - const view = getUint8Memory0().subarray(ptr + offset, ptr + len); - const ret = encodeString(arg, view); - offset += ret.written; - } - WASM_VECTOR_LEN = offset; - return ptr; -} -function _assertClass(instance, klass) { - if (!(instance instanceof klass)) { - throw new Error(`expected instance of ${klass.name}`); - } - return instance.ptr; -} -function getArrayU8FromWasm0(ptr, len) { - ptr = ptr >>> 0; - return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len); -} -function passArray8ToWasm0(arg, malloc) { - const ptr = malloc(arg.length * 1, 1) >>> 0; - getUint8Memory0().set(arg, ptr / 1); - WASM_VECTOR_LEN = arg.length; - return ptr; -} -function handleError(f, args) { - try { - return f.apply(this, args); - } - catch (e) { - wasm.__wbindgen_exn_store(addHeapObject(e)); - } -} -/** - */ -class CompactFheBool { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheBool.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfhebool_free(ptr); - } - /** - * @param {boolean} value - * @param {TfheCompactPublicKey} client_key - * @returns {CompactFheBool} - */ - static encrypt_with_compact_public_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheCompactPublicKey); - wasm.compactfhebool_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheBool.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheBool} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfhebool_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheBool.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfhebool_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheBool} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfhebool_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheBool.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfhebool_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompactFheBool} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfhebool_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheBool.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -/** - */ -class CompactFheUint128 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheUint128.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfheuint128_free(ptr); - } - /** - * @param {any} value - * @param {TfheCompactPublicKey} client_key - * @returns {CompactFheUint128} - */ - static encrypt_with_compact_public_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheCompactPublicKey); - wasm.compactfheuint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheUint128} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheint128_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint128_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheUint128} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint128_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompactFheUint128} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -/** - */ -class CompactFheUint16 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheUint16.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfheuint16_free(ptr); - } - /** - * @param {number} value - * @param {TfheCompactPublicKey} client_key - * @returns {CompactFheUint16} - */ - static encrypt_with_compact_public_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheCompactPublicKey); - wasm.compactfheuint16_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheUint16} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheint128_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint16_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheUint16} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint16_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompactFheUint16} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -/** - */ -class CompactFheUint160 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheUint160.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfheuint160_free(ptr); - } - /** - * @param {any} value - * @param {TfheCompactPublicKey} client_key - * @returns {CompactFheUint160} - */ - static encrypt_with_compact_public_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheCompactPublicKey); - wasm.compactfheuint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheUint160} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheint128_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint160_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheUint160} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint160_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompactFheUint160} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -/** - */ -class CompactFheUint256 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheUint256.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfheuint256_free(ptr); - } - /** - * @param {any} value - * @param {TfheCompactPublicKey} client_key - * @returns {CompactFheUint256} - */ - static encrypt_with_compact_public_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheCompactPublicKey); - wasm.compactfheuint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheUint256} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheint128_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint256_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheUint256} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint256_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompactFheUint256} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -/** - */ -class CompactFheUint32 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheUint32.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfheuint32_free(ptr); - } - /** - * @param {number} value - * @param {TfheCompactPublicKey} client_key - * @returns {CompactFheUint32} - */ - static encrypt_with_compact_public_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheCompactPublicKey); - wasm.compactfheuint32_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheUint32} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheint128_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint32_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheUint32} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint32_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompactFheUint32} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -/** - */ -class CompactFheUint64 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheUint64.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfheuint64_free(ptr); - } - /** - * @param {bigint} value - * @param {TfheCompactPublicKey} client_key - * @returns {CompactFheUint64} - */ - static encrypt_with_compact_public_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheCompactPublicKey); - wasm.compactfheuint64_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheUint64} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheint128_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint64_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheUint64} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint64_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompactFheUint64} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -/** - */ -class CompactFheUint8 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheUint8.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfheuint8_free(ptr); - } - /** - * @param {number} value - * @param {TfheCompactPublicKey} client_key - * @returns {CompactFheUint8} - */ - static encrypt_with_compact_public_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheCompactPublicKey); - wasm.compactfheuint8_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheUint8} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheint128_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint8_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheUint8} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint8_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompactFheUint8} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -/** - */ -class FheBool { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheBool.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fhebool_free(ptr); - } - /** - * @param {boolean} value - * @param {TfheClientKey} client_key - * @returns {FheBool} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fhebool_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheBool.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {boolean} value - * @param {TfhePublicKey} public_key - * @returns {FheBool} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fhebool_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheBool.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {boolean} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheBool} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fhebool_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheBool.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {boolean} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheBool} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fhebool_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheBool.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {boolean} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fhebool_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return r0 !== 0; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fhebool_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheBool} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fhebool_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheBool.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fhebool_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheBool} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fhebool_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheBool.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -/** - */ -class FheInt128 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheInt128.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheint128_free(ptr); - } - /** - * @param {any} value - * @param {TfheClientKey} client_key - * @returns {FheInt128} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint128_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfhePublicKey} public_key - * @returns {FheInt128} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheint128_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheInt128} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheint128_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheInt128} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {any} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint128_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint128_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheInt128} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint128_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheInt128} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -/** - */ -class FheInt16 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheInt16.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheint16_free(ptr); - } - /** - * @param {number} value - * @param {TfheClientKey} client_key - * @returns {FheInt16} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint16_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfhePublicKey} public_key - * @returns {FheInt16} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheint16_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheInt16} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheint16_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheInt16} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheint16_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {number} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint16_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return r0; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint16_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheInt16} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint16_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheInt16} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -/** - */ -class FheInt160 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheInt160.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheint160_free(ptr); - } - /** - * @param {any} value - * @param {TfheClientKey} client_key - * @returns {FheInt160} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint160_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfhePublicKey} public_key - * @returns {FheInt160} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheint160_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheInt160} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheint160_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheInt160} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {any} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint160_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint160_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheInt160} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint160_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheInt160} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -/** - */ -class FheInt256 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheInt256.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheint256_free(ptr); - } - /** - * @param {any} value - * @param {TfheClientKey} client_key - * @returns {FheInt256} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint256_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfhePublicKey} public_key - * @returns {FheInt256} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheint256_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheInt256} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheint256_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheInt256} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {any} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint256_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint256_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheInt256} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint256_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheInt256} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -/** - */ -class FheInt32 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheInt32.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheint32_free(ptr); - } - /** - * @param {number} value - * @param {TfheClientKey} client_key - * @returns {FheInt32} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint32_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfhePublicKey} public_key - * @returns {FheInt32} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheint32_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheInt32} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheint32_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheInt32} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheint32_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {number} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint32_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return r0; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint32_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheInt32} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint32_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheInt32} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -/** - */ -class FheInt64 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheInt64.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheint64_free(ptr); - } - /** - * @param {bigint} value - * @param {TfheClientKey} client_key - * @returns {FheInt64} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint64_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} value - * @param {TfhePublicKey} public_key - * @returns {FheInt64} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheint64_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheInt64} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheint64_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheInt64} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheint64_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {bigint} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint64_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getBigInt64Memory0()[retptr / 8 + 0]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - return r0; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint64_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheInt64} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint64_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheInt64} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -/** - */ -class FheInt8 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheInt8.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheint8_free(ptr); - } - /** - * @param {number} value - * @param {TfheClientKey} client_key - * @returns {FheInt8} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint8_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfhePublicKey} public_key - * @returns {FheInt8} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheint8_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheInt8} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheint8_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheInt8} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheint8_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {number} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheint8_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return r0; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint8_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheInt8} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint8_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheInt8} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheInt8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -/** - */ -class FheUint128 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheUint128.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheuint128_free(ptr); - } - /** - * @param {any} value - * @param {TfheClientKey} client_key - * @returns {FheUint128} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint128_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfhePublicKey} public_key - * @returns {FheUint128} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheuint128_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheUint128} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheuint128_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheUint128} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheuint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {any} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint128_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint128_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheUint128} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint128_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheUint128} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint128.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -/** - */ -class FheUint16 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheUint16.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheuint16_free(ptr); - } - /** - * @param {number} value - * @param {TfheClientKey} client_key - * @returns {FheUint16} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint16_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfhePublicKey} public_key - * @returns {FheUint16} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheuint16_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheUint16} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheuint16_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheUint16} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheuint16_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {number} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint16_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return r0; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint16_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheUint16} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint16_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheUint16} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint16.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -/** - */ -class FheUint160 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheUint160.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheuint160_free(ptr); - } - /** - * @param {any} value - * @param {TfheClientKey} client_key - * @returns {FheUint160} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint160_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfhePublicKey} public_key - * @returns {FheUint160} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheuint160_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheUint160} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheuint160_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheUint160} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheuint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {any} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint160_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint160_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheUint160} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint160_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheUint160} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint160.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -/** - */ -class FheUint256 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheUint256.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheuint256_free(ptr); - } - /** - * @param {any} value - * @param {TfheClientKey} client_key - * @returns {FheUint256} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint256_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfhePublicKey} public_key - * @returns {FheUint256} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheuint256_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheUint256} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheuint256_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {any} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheUint256} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheuint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {any} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint256_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint256_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheUint256} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint256_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheUint256} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint256.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -/** - */ -class FheUint32 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheUint32.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheuint32_free(ptr); - } - /** - * @param {number} value - * @param {TfheClientKey} client_key - * @returns {FheUint32} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint32_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfhePublicKey} public_key - * @returns {FheUint32} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheuint32_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheUint32} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheuint32_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheUint32} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheuint32_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {number} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint32_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return r0 >>> 0; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint32_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheUint32} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint32_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheUint32} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint32.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -/** - */ -class FheUint64 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheUint64.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheuint64_free(ptr); - } - /** - * @param {bigint} value - * @param {TfheClientKey} client_key - * @returns {FheUint64} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint64_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} value - * @param {TfhePublicKey} public_key - * @returns {FheUint64} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheuint64_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheUint64} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheuint64_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheUint64} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheuint64_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {bigint} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint64_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getBigInt64Memory0()[retptr / 8 + 0]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - return BigInt.asUintN(64, r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint64_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheUint64} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint64_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheUint64} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint64.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -/** - */ -class FheUint8 { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheUint8.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheuint8_free(ptr); - } - /** - * @param {number} value - * @param {TfheClientKey} client_key - * @returns {FheUint8} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint8_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfhePublicKey} public_key - * @returns {FheUint8} - */ - static encrypt_with_public_key(value, public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, TfhePublicKey); - wasm.fheuint8_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfheCompressedPublicKey} compressed_public_key - * @returns {FheUint8} - */ - static encrypt_with_compressed_public_key(value, compressed_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compressed_public_key, TfheCompressedPublicKey); - wasm.fheuint8_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheUint8} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheuint8_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheClientKey} client_key - * @returns {number} - */ - decrypt(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.fheuint8_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return r0; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint8_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {FheUint8} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint8_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {FheUint8} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.fheuint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint8.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -/** - */ -class TfheClientKey { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(TfheClientKey.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_tfheclientkey_free(ptr); - } - /** - * @param {TfheConfig} config - * @returns {TfheClientKey} - */ - static generate(config) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(config, TfheConfig); - wasm.tfheclientkey_generate(retptr, config.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfheClientKey.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheConfig} config - * @param {any} seed - * @returns {TfheClientKey} - */ - static generate_with_seed(config, seed) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(config, TfheConfig); - wasm.tfheclientkey_generate_with_seed(retptr, config.__wbg_ptr, addHeapObject(seed)); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfheClientKey.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.tfheclientkey_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {TfheClientKey} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.tfheclientkey_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfheClientKey.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -/** - */ -class TfheCompactPublicKey { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(TfheCompactPublicKey.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_tfhecompactpublickey_free(ptr); - } - /** - * @param {TfheClientKey} client_key - * @returns {TfheCompactPublicKey} - */ - static new(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.tfhecompactpublickey_new(retptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfheCompactPublicKey.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.tfhecompactpublickey_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {TfheCompactPublicKey} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.tfhecompactpublickey_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfheCompactPublicKey.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -/** - */ -class TfheCompressedPublicKey { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(TfheCompressedPublicKey.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_tfhecompressedpublickey_free(ptr); - } - /** - * @param {TfheClientKey} client_key - * @returns {TfheCompressedPublicKey} - */ - static new(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.tfhecompressedpublickey_new(retptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfheCompressedPublicKey.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {TfhePublicKey} - */ - decompress() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.tfhecompressedpublickey_decompress(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfhePublicKey.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.tfhecompressedpublickey_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {TfheCompressedPublicKey} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.tfhecompressedpublickey_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfheCompressedPublicKey.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -/** - */ -class TfheConfig { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(TfheConfig.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_tfheconfig_free(ptr); - } -} -/** - */ -class TfheConfigBuilder { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(TfheConfigBuilder.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_tfheconfigbuilder_free(ptr); - } - /** - * @returns {TfheConfigBuilder} - */ - static default() { - const ret = wasm.tfheconfigbuilder_default(); - return TfheConfigBuilder.__wrap(ret); - } - /** - * @returns {TfheConfigBuilder} - */ - static default_with_small_encryption() { - const ret = wasm.tfheconfigbuilder_default_with_small_encryption(); - return TfheConfigBuilder.__wrap(ret); - } - /** - * @returns {TfheConfigBuilder} - */ - static default_with_big_encryption() { - const ret = wasm.tfheconfigbuilder_default(); - return TfheConfigBuilder.__wrap(ret); - } - /** - * @returns {TfheConfig} - */ - build() { - const ptr = this.__destroy_into_raw(); - const ret = wasm.tfheconfigbuilder_build(ptr); - return TfheConfig.__wrap(ret); - } -} -/** - */ -class TfhePublicKey { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(TfhePublicKey.prototype); - obj.__wbg_ptr = ptr; - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_tfhepublickey_free(ptr); - } - /** - * @param {TfheClientKey} client_key - * @returns {TfhePublicKey} - */ - static new(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.tfhepublickey_new(retptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfhePublicKey.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.tfhepublickey_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {TfhePublicKey} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.tfhepublickey_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfhePublicKey.__wrap(r0); - } - finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -async function __wbg_load(module, imports) { - if (typeof Response === "function" && module instanceof Response) { - if (typeof WebAssembly.instantiateStreaming === "function") { - try { - return await WebAssembly.instantiateStreaming(module, imports); - } - catch (e) { - if (module.headers.get("Content-Type") != "application/wasm") { - console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); - } - else { - throw e; - } - } - } - const bytes = await module.arrayBuffer(); - return await WebAssembly.instantiate(bytes, imports); - } - else { - const instance = await WebAssembly.instantiate(module, imports); - if (instance instanceof WebAssembly.Instance) { - return { instance, module }; - } - else { - return instance; - } - } -} -function __wbg_get_imports() { - const imports = {}; - imports.wbg = {}; - imports.wbg.__wbindgen_bigint_from_u64 = function (arg0) { - const ret = BigInt.asUintN(64, arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_shr = function (arg0, arg1) { - const ret = getObject(arg0) >> getObject(arg1); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_object_drop_ref = function (arg0) { - takeObject(arg0); - }; - imports.wbg.__wbindgen_bigint_from_i64 = function (arg0) { - const ret = arg0; - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_jsval_eq = function (arg0, arg1) { - const ret = getObject(arg0) === getObject(arg1); - return ret; - }; - imports.wbg.__wbindgen_error_new = function (arg0, arg1) { - const ret = new Error(getStringFromWasm0(arg0, arg1)); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_bigint_from_i128 = function (arg0, arg1) { - const ret = (arg0 << BigInt(64)) | BigInt.asUintN(64, arg1); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_bigint_from_u128 = function (arg0, arg1) { - const ret = (BigInt.asUintN(64, arg0) << BigInt(64)) | BigInt.asUintN(64, arg1); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheuint16_new = function (arg0) { - const ret = FheUint16.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheuint160_new = function (arg0) { - const ret = FheUint160.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheuint256_new = function (arg0) { - const ret = FheUint256.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheuint32_new = function (arg0) { - const ret = FheUint32.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheuint128_new = function (arg0) { - const ret = FheUint128.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheuint8_new = function (arg0) { - const ret = FheUint8.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheuint64_new = function (arg0) { - const ret = FheUint64.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheint32_new = function (arg0) { - const ret = FheInt32.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheint64_new = function (arg0) { - const ret = FheInt64.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fhebool_new = function (arg0) { - const ret = FheBool.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheint256_new = function (arg0) { - const ret = FheInt256.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheint160_new = function (arg0) { - const ret = FheInt160.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheint16_new = function (arg0) { - const ret = FheInt16.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheint8_new = function (arg0) { - const ret = FheInt8.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_fheint128_new = function (arg0) { - const ret = FheInt128.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_boolean_get = function (arg0) { - const v = getObject(arg0); - const ret = typeof v === "boolean" ? (v ? 1 : 0) : 2; - return ret; - }; - imports.wbg.__wbindgen_bigint_from_str = function (arg0, arg1) { - const ret = BigInt(getStringFromWasm0(arg0, arg1)); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_bit_and = function (arg0, arg1) { - const ret = getObject(arg0) & getObject(arg1); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_number_new = function (arg0) { - const ret = arg0; - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_lt = function (arg0, arg1) { - const ret = getObject(arg0) < getObject(arg1); - return ret; - }; - imports.wbg.__wbindgen_neg = function (arg0) { - const ret = -getObject(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_shl = function (arg0, arg1) { - const ret = getObject(arg0) << getObject(arg1); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_add = function (arg0, arg1) { - const ret = getObject(arg0) + getObject(arg1); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_bit_or = function (arg0, arg1) { - const ret = getObject(arg0) | getObject(arg1); - return addHeapObject(ret); - }; - imports.wbg.__wbg_new_abda76e883ba8a5f = function () { - const ret = new Error(); - return addHeapObject(ret); - }; - imports.wbg.__wbg_stack_658279fe44541cf6 = function (arg0, arg1) { - const ret = getObject(arg1).stack; - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }; - imports.wbg.__wbg_error_f851667af71bcfc6 = function (arg0, arg1) { - let deferred0_0; - let deferred0_1; - try { - deferred0_0 = arg0; - deferred0_1 = arg1; - console.error(getStringFromWasm0(arg0, arg1)); - } - finally { - wasm.__wbindgen_free(deferred0_0, deferred0_1, 1); - } - }; - imports.wbg.__wbg_crypto_70a96de3b6b73dac = function (arg0) { - const ret = getObject(arg0).crypto; - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_is_object = function (arg0) { - const val = getObject(arg0); - const ret = typeof val === "object" && val !== null; - return ret; - }; - imports.wbg.__wbg_process_dd1577445152112e = function (arg0) { - const ret = getObject(arg0).process; - return addHeapObject(ret); - }; - imports.wbg.__wbg_versions_58036bec3add9e6f = function (arg0) { - const ret = getObject(arg0).versions; - return addHeapObject(ret); - }; - imports.wbg.__wbg_node_6a9d28205ed5b0d8 = function (arg0) { - const ret = getObject(arg0).node; - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_is_string = function (arg0) { - const ret = typeof getObject(arg0) === "string"; - return ret; - }; - imports.wbg.__wbg_require_f05d779769764e82 = function () { - return handleError(function () { - const ret = module.require; - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbindgen_string_new = function (arg0, arg1) { - const ret = getStringFromWasm0(arg0, arg1); - return addHeapObject(ret); - }; - imports.wbg.__wbg_msCrypto_adbc770ec9eca9c7 = function (arg0) { - const ret = getObject(arg0).msCrypto; - return addHeapObject(ret); - }; - imports.wbg.__wbg_randomFillSync_e950366c42764a07 = function () { - return handleError(function (arg0, arg1) { - getObject(arg0).randomFillSync(takeObject(arg1)); - }, arguments); - }; - imports.wbg.__wbg_getRandomValues_3774744e221a22ad = function () { - return handleError(function (arg0, arg1) { - getObject(arg0).getRandomValues(getObject(arg1)); - }, arguments); - }; - imports.wbg.__wbindgen_is_function = function (arg0) { - const ret = typeof getObject(arg0) === "function"; - return ret; - }; - imports.wbg.__wbg_newnoargs_e643855c6572a4a8 = function (arg0, arg1) { - const ret = new Function(getStringFromWasm0(arg0, arg1)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_call_f96b398515635514 = function () { - return handleError(function (arg0, arg1) { - const ret = getObject(arg0).call(getObject(arg1)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_self_b9aad7f1c618bfaf = function () { - return handleError(function () { - const ret = self.self; - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_window_55e469842c98b086 = function () { - return handleError(function () { - const ret = window.window; - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_globalThis_d0957e302752547e = function () { - return handleError(function () { - const ret = globalThis.globalThis; - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_global_ae2f87312b8987fb = function () { - return handleError(function () { - const ret = global.global; - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbindgen_is_undefined = function (arg0) { - const ret = getObject(arg0) === undefined; - return ret; - }; - imports.wbg.__wbg_call_35782e9a1aa5e091 = function () { - return handleError(function (arg0, arg1, arg2) { - const ret = getObject(arg0).call(getObject(arg1), getObject(arg2)); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_buffer_fcbfb6d88b2732e9 = function (arg0) { - const ret = getObject(arg0).buffer; - return addHeapObject(ret); - }; - imports.wbg.__wbg_newwithbyteoffsetandlength_92c251989c485785 = function (arg0, arg1, arg2) { - const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_new_bc5d9aad3f9ac80e = function (arg0) { - const ret = new Uint8Array(getObject(arg0)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_set_4b3aa8445ac1e91c = function (arg0, arg1, arg2) { - getObject(arg0).set(getObject(arg1), arg2 >>> 0); - }; - imports.wbg.__wbg_newwithlength_89eca18f2603a999 = function (arg0) { - const ret = new Uint8Array(arg0 >>> 0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_subarray_7649d027b2b141b3 = function (arg0, arg1, arg2) { - const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_object_clone_ref = function (arg0) { - const ret = getObject(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_bigint_get_as_i64 = function (arg0, arg1) { - const v = getObject(arg1); - const ret = typeof v === "bigint" ? v : undefined; - getBigInt64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? BigInt(0) : ret; - getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret); - }; - imports.wbg.__wbindgen_debug_string = function (arg0, arg1) { - const ret = debugString(getObject(arg1)); - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }; - imports.wbg.__wbindgen_throw = function (arg0, arg1) { - throw new Error(getStringFromWasm0(arg0, arg1)); - }; - imports.wbg.__wbindgen_memory = function () { - const ret = wasm.memory; - return addHeapObject(ret); - }; - return imports; -} -function __wbg_finalize_init(instance, module) { - wasm = instance.exports; - __wbg_init.__wbindgen_wasm_module = module; - cachedBigInt64Memory0 = null; - cachedInt32Memory0 = null; - cachedUint8Memory0 = null; - return wasm; -} -async function __wbg_init(input) { - if (wasm !== undefined) - return wasm; - // FHENIX: disabling this because it fucks with frameworks that try to resolve it - // if (typeof input === 'undefined') { - // input = new URL('tfhe_bg.wasm', import.meta.url); - // } - const imports = __wbg_get_imports(); - if (typeof input === "string" || - (typeof Request === "function" && input instanceof Request) || - (typeof URL === "function" && input instanceof URL)) { - input = fetch(input); - } - const { instance, module } = await __wbg_load(await input, imports); - return __wbg_finalize_init(instance, module); -} - -let initialized; -const initFhevm = async () => { - if (!initialized) { - try { - initialized = await __wbg_init(wasm$1); - } - catch (_) { - initialized = await __wbg_init(wasm$1()); - } - } - return initialized; -}; -const asyncInitFhevm = async () => { - try { - await initFhevm(); - } - catch (err) { - throw new Error(`Error initializing FhenixClient ${err}`); - } -}; - -function assertIs(is, expected, value) { - if (!is) { - throw new Error(`Expected value which is \`${expected}\`, received value of type \`${typeof value}\`.`); - } -} -function isString(value) { - const is = typeof value === "string"; - assertIs(is, "string", value); -} -function isPlainObject$1(value) { - // From: https://github.com/sindresorhus/is-plain-obj/blob/main/index.js - if (typeof value !== "object" || value === null) { - return false; - } - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - const prototype = Object.getPrototypeOf(value); - const is = (prototype === null || - prototype === Object.prototype || - Object.getPrototypeOf(prototype) === null) && - !(Symbol.toStringTag in value) && - !(Symbol.iterator in value); - assertIs(is, "plain object", value); - return true; -} -function isBigIntOrHexString(value) { - const is = typeof value === "bigint" || typeof value === "string"; - assertIs(is, "bigint or hex string", value); -} -function isNumber(value) { - const is = typeof value === "number" && !Number.isNaN(value); - assertIs(is, "number", value); -} -function isBigIntOrNumber(value) { - const is = typeof value === "bigint"; - if (!is) { - try { - isNumber(value); - } - catch (e) { - throw new Error(`Value ${value} is not a number or bigint: ${typeof value}`); - } - } -} - -const ValidateUintInRange = (value, max, min) => { - isNumber(value); - if (value > max || value < min) { - throw new Error(`Value out of range: ${max} - ${min}, try a different uint type`); - } -}; -const fromHexString = (hexString) => { - const cleanString = hexString.length % 2 === 1 ? `0${hexString}` : hexString; - const arr = cleanString.replace(/^0x/, "").match(/.{1,2}/g); - if (!arr) - return new Uint8Array(); - return new Uint8Array(arr.map((byte) => parseInt(byte, 16))); -}; -const toHexString$1 = (bytes) => bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, "0"), ""); -function toBigInt(value) { - return ethersToBigInt(value); -} -function toBeArray(value) { - return ethersToBeArray(value); -} -function isAddress$1(address) { - if (!_isAddress(address)) { - throw new Error(`Address ${address} is not valid EVM address`); - } -} -function _isAddress(value) { - try { - if (!value.startsWith("0x")) { - return false; - } - else if (value.length !== 42) { - return false; - } - return true; - } - catch (error) { - return false; - } -} -const Nibbles = "0123456789abcdef"; -// IEEE 754 support 53-bits of mantissa -const maxValue = 0x1fffffffffffff; -const BN_0$1 = BigInt(0); -/* - * Converts %%value%% to a BigInt. If %%value%% is a Uint8Array, it - * is treated as Big Endian data. - */ -function ethersToBigInt(value) { - if (value instanceof Uint8Array) { - let result = "0x0"; - for (const v of value) { - result += Nibbles[v >> 4]; - result += Nibbles[v & 0x0f]; - } - return BigInt(result); - } - return getBigInt(value); -} -function ethersToBeArray(_value) { - const value = getUint(_value); - if (value === BN_0$1) { - return new Uint8Array([]); - } - let hex = value.toString(16); - if (hex.length % 2) { - hex = "0" + hex; - } - const result = new Uint8Array(hex.length / 2); - for (let i = 0; i < result.length; i++) { - const offset = i * 2; - result[i] = parseInt(hex.substring(offset, offset + 2), 16); - } - return result; -} -/** - * Returns %%value%% as a bigint, validating it is valid as a bigint - * value and that it is positive. - */ -function getUint(value) { - const result = getBigInt(value); - assertArgument$1(result >= BN_0$1, "unsigned value cannot be negative"); - return result; -} -/** - * Gets a BigInt from %%value%%. If it is an invalid value for - * a BigInt, then an ArgumentError will be thrown for %%name%%. - */ -function getBigInt(value) { - switch (typeof value) { - case "bigint": - return value; - case "number": - assertArgument$1(Number.isInteger(value), "underflow"); - assertArgument$1(value >= -maxValue && value <= maxValue, "overflow"); - return BigInt(value); - case "string": - try { - if (value === "") { - throw new Error("empty string"); - } - if (value[0] === "-" && value[1] !== "-") { - return -BigInt(value.substring(1)); - } - return BigInt(value); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - } - catch (e) { - assertArgument$1(false, `invalid BigNumberish string: ${e.message}`); - } - } - assertArgument$1(false, "invalid BigNumberish value"); -} -function assertArgument$1(check, message) { - if (!check) { - throw new Error(message); - } -} -function toABIEncodedUint32(value) { - // Ensure the number is a valid unsigned 32-bit integer - if (value < 0 || value > 0xffffffff) { - throw new RangeError("Number must be between 0 and 2^32 - 1."); - } - // Convert the number to a hexadecimal string and pad it to 64 characters (32 bytes) - return value.toString(16).padStart(64, "0"); -} -// Uint8Array conversions -const stringToUint8Array = (value) => { - return new Uint8Array(value.split("").map((c) => c.charCodeAt(0))); -}; -function bigintToUint8Array(bigNum) { - const byteLength = 32; - const byteArray = new Uint8Array(byteLength); - // Create a BigInt mask for each byte - const mask = BigInt(0xff); - // Initialize an index to start from the end of the array - for (let i = 0; i < byteLength; i++) { - // Extract the last byte and assign it to the corresponding position in the array - byteArray[byteLength - 1 - i] = Number(bigNum & mask); - // Shift bigint right by 8 bits to process the next byte in the next iteration - bigNum >>= BigInt(8); - } - return byteArray; -} -// HARDHAT MOCKS -// Mock FHE operations are automatically injected on the hardhat network -// The utility functions allow the client / sdk to interact with the mocked FHE ops -const chainIsHardhat = (chainId) => { - if (chainId == null) - return false; - return parseInt(chainId) === 31337; -}; -const hardhatMockUnseal = (value) => { - let result = BigInt(0); - for (const byteArrayItem of stringToUint8Array(value)) { - result = (result << BigInt(8)) + BigInt(byteArrayItem); - } - return result; -}; -const hardhatMockEncrypt = (value, securityZone = 0) => ({ - data: bigintToUint8Array(BigInt(value)), - securityZone: securityZone || 0, -}); - -/** - * An enumeration of supported encryption types. - * uint8, uint16, and uint32 represent the different sizes of integers that can be encrypted. - */ -var EncryptionTypes; -(function (EncryptionTypes) { - EncryptionTypes["bool"] = "bool"; - EncryptionTypes["uint8"] = "uint8"; - EncryptionTypes["uint16"] = "uint16"; - EncryptionTypes["uint32"] = "uint32"; - EncryptionTypes["uint64"] = "uint64"; - EncryptionTypes["uint128"] = "uint128"; - EncryptionTypes["uint256"] = "uint256"; - EncryptionTypes["address"] = "address"; -})(EncryptionTypes || (EncryptionTypes = {})); -/** - * Determines the request method for a given provider. - * Checks if the provider has a 'request' method typical for Eip1193Providers, or a 'send' method for others. - * Throws an error if neither method is found. - * @param {SupportedProvider} provider - The provider to determine the request method for. - * @returns {Function} - The determined request function. - */ -// eslint-disable-next-line @typescript-eslint/ban-types -function determineRequestMethod(provider) { - if ("request" in provider && typeof provider.request === "function") { - return (p, method, params) => p.request({ method, params }); - } - else if ("send" in provider && typeof provider.send === "function") { - return (p, method, params) => p.send(method, params); - } - else { - throw new Error("Received unsupported provider. 'send' or 'request' method not found"); - } -} -/** - * Determines the request signer function for a given provider. - * Checks if the provider has a 'getSigner' method and returns it if available. - * Throws an error if no 'getSigner' method is found. - * @param {SupportedProvider} provider - The provider to determine the request signer for. - * @returns {Function} - The determined request signer function. - */ -// eslint-disable-next-line @typescript-eslint/ban-types -function determineRequestSigner(provider) { - if ("getSigner" in provider && typeof provider.getSigner === "function") { - return (p) => p.getSigner(); - } - else { - throw new Error("The supplied provider cannot get a signer"); - } -} - -var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - -function getAugmentedNamespace(n) { - if (n.__esModule) return n; - var f = n.default; - if (typeof f == "function") { - var a = function a () { - if (this instanceof a) { - return Reflect.construct(f, arguments, this.constructor); - } - return f.apply(this, arguments); - }; - a.prototype = f.prototype; - } else a = {}; - Object.defineProperty(a, '__esModule', {value: true}); - Object.keys(n).forEach(function (k) { - var d = Object.getOwnPropertyDescriptor(n, k); - Object.defineProperty(a, k, d.get ? d : { - enumerable: true, - get: function () { - return n[k]; - } - }); - }); - return a; -} - -function commonjsRequire(path) { - throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.'); -} - -var naclFast = {exports: {}}; - -var _nodeResolve_empty = {}; - -var _nodeResolve_empty$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - default: _nodeResolve_empty -}); - -var require$$0 = /*@__PURE__*/getAugmentedNamespace(_nodeResolve_empty$1); - -(function (module) { - (function(nacl) { - - // Ported in 2014 by Dmitry Chestnykh and Devi Mandiri. - // Public domain. - // - // Implementation derived from TweetNaCl version 20140427. - // See for details: http://tweetnacl.cr.yp.to/ - - var gf = function(init) { - var i, r = new Float64Array(16); - if (init) for (i = 0; i < init.length; i++) r[i] = init[i]; - return r; - }; - - // Pluggable, initialized in high-level API below. - var randombytes = function(/* x, n */) { throw new Error('no PRNG'); }; - - var _0 = new Uint8Array(16); - var _9 = new Uint8Array(32); _9[0] = 9; - - var gf0 = gf(), - gf1 = gf([1]), - _121665 = gf([0xdb41, 1]), - D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]), - D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]), - X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]), - Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]), - I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]); - - function ts64(x, i, h, l) { - x[i] = (h >> 24) & 0xff; - x[i+1] = (h >> 16) & 0xff; - x[i+2] = (h >> 8) & 0xff; - x[i+3] = h & 0xff; - x[i+4] = (l >> 24) & 0xff; - x[i+5] = (l >> 16) & 0xff; - x[i+6] = (l >> 8) & 0xff; - x[i+7] = l & 0xff; - } - - function vn(x, xi, y, yi, n) { - var i,d = 0; - for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i]; - return (1 & ((d - 1) >>> 8)) - 1; - } - - function crypto_verify_16(x, xi, y, yi) { - return vn(x,xi,y,yi,16); - } - - function crypto_verify_32(x, xi, y, yi) { - return vn(x,xi,y,yi,32); - } - - function core_salsa20(o, p, k, c) { - var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, - j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, - j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, - j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, - j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, - j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, - j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, - j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, - j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, - j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, - j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, - j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, - j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, - j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, - j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, - j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; - - var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, - x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, - x15 = j15, u; - - for (var i = 0; i < 20; i += 2) { - u = x0 + x12 | 0; - x4 ^= u<<7 | u>>>(32-7); - u = x4 + x0 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x4 | 0; - x12 ^= u<<13 | u>>>(32-13); - u = x12 + x8 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x1 | 0; - x9 ^= u<<7 | u>>>(32-7); - u = x9 + x5 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x9 | 0; - x1 ^= u<<13 | u>>>(32-13); - u = x1 + x13 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x6 | 0; - x14 ^= u<<7 | u>>>(32-7); - u = x14 + x10 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x14 | 0; - x6 ^= u<<13 | u>>>(32-13); - u = x6 + x2 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x11 | 0; - x3 ^= u<<7 | u>>>(32-7); - u = x3 + x15 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x3 | 0; - x11 ^= u<<13 | u>>>(32-13); - u = x11 + x7 | 0; - x15 ^= u<<18 | u>>>(32-18); - - u = x0 + x3 | 0; - x1 ^= u<<7 | u>>>(32-7); - u = x1 + x0 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x1 | 0; - x3 ^= u<<13 | u>>>(32-13); - u = x3 + x2 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x4 | 0; - x6 ^= u<<7 | u>>>(32-7); - u = x6 + x5 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x6 | 0; - x4 ^= u<<13 | u>>>(32-13); - u = x4 + x7 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x9 | 0; - x11 ^= u<<7 | u>>>(32-7); - u = x11 + x10 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x11 | 0; - x9 ^= u<<13 | u>>>(32-13); - u = x9 + x8 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x14 | 0; - x12 ^= u<<7 | u>>>(32-7); - u = x12 + x15 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x12 | 0; - x14 ^= u<<13 | u>>>(32-13); - u = x14 + x13 | 0; - x15 ^= u<<18 | u>>>(32-18); - } - x0 = x0 + j0 | 0; - x1 = x1 + j1 | 0; - x2 = x2 + j2 | 0; - x3 = x3 + j3 | 0; - x4 = x4 + j4 | 0; - x5 = x5 + j5 | 0; - x6 = x6 + j6 | 0; - x7 = x7 + j7 | 0; - x8 = x8 + j8 | 0; - x9 = x9 + j9 | 0; - x10 = x10 + j10 | 0; - x11 = x11 + j11 | 0; - x12 = x12 + j12 | 0; - x13 = x13 + j13 | 0; - x14 = x14 + j14 | 0; - x15 = x15 + j15 | 0; - - o[ 0] = x0 >>> 0 & 0xff; - o[ 1] = x0 >>> 8 & 0xff; - o[ 2] = x0 >>> 16 & 0xff; - o[ 3] = x0 >>> 24 & 0xff; - - o[ 4] = x1 >>> 0 & 0xff; - o[ 5] = x1 >>> 8 & 0xff; - o[ 6] = x1 >>> 16 & 0xff; - o[ 7] = x1 >>> 24 & 0xff; - - o[ 8] = x2 >>> 0 & 0xff; - o[ 9] = x2 >>> 8 & 0xff; - o[10] = x2 >>> 16 & 0xff; - o[11] = x2 >>> 24 & 0xff; - - o[12] = x3 >>> 0 & 0xff; - o[13] = x3 >>> 8 & 0xff; - o[14] = x3 >>> 16 & 0xff; - o[15] = x3 >>> 24 & 0xff; - - o[16] = x4 >>> 0 & 0xff; - o[17] = x4 >>> 8 & 0xff; - o[18] = x4 >>> 16 & 0xff; - o[19] = x4 >>> 24 & 0xff; - - o[20] = x5 >>> 0 & 0xff; - o[21] = x5 >>> 8 & 0xff; - o[22] = x5 >>> 16 & 0xff; - o[23] = x5 >>> 24 & 0xff; - - o[24] = x6 >>> 0 & 0xff; - o[25] = x6 >>> 8 & 0xff; - o[26] = x6 >>> 16 & 0xff; - o[27] = x6 >>> 24 & 0xff; - - o[28] = x7 >>> 0 & 0xff; - o[29] = x7 >>> 8 & 0xff; - o[30] = x7 >>> 16 & 0xff; - o[31] = x7 >>> 24 & 0xff; - - o[32] = x8 >>> 0 & 0xff; - o[33] = x8 >>> 8 & 0xff; - o[34] = x8 >>> 16 & 0xff; - o[35] = x8 >>> 24 & 0xff; - - o[36] = x9 >>> 0 & 0xff; - o[37] = x9 >>> 8 & 0xff; - o[38] = x9 >>> 16 & 0xff; - o[39] = x9 >>> 24 & 0xff; - - o[40] = x10 >>> 0 & 0xff; - o[41] = x10 >>> 8 & 0xff; - o[42] = x10 >>> 16 & 0xff; - o[43] = x10 >>> 24 & 0xff; - - o[44] = x11 >>> 0 & 0xff; - o[45] = x11 >>> 8 & 0xff; - o[46] = x11 >>> 16 & 0xff; - o[47] = x11 >>> 24 & 0xff; - - o[48] = x12 >>> 0 & 0xff; - o[49] = x12 >>> 8 & 0xff; - o[50] = x12 >>> 16 & 0xff; - o[51] = x12 >>> 24 & 0xff; - - o[52] = x13 >>> 0 & 0xff; - o[53] = x13 >>> 8 & 0xff; - o[54] = x13 >>> 16 & 0xff; - o[55] = x13 >>> 24 & 0xff; - - o[56] = x14 >>> 0 & 0xff; - o[57] = x14 >>> 8 & 0xff; - o[58] = x14 >>> 16 & 0xff; - o[59] = x14 >>> 24 & 0xff; - - o[60] = x15 >>> 0 & 0xff; - o[61] = x15 >>> 8 & 0xff; - o[62] = x15 >>> 16 & 0xff; - o[63] = x15 >>> 24 & 0xff; - } - - function core_hsalsa20(o,p,k,c) { - var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, - j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, - j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, - j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, - j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, - j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, - j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, - j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, - j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, - j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, - j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, - j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, - j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, - j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, - j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, - j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; - - var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, - x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, - x15 = j15, u; - - for (var i = 0; i < 20; i += 2) { - u = x0 + x12 | 0; - x4 ^= u<<7 | u>>>(32-7); - u = x4 + x0 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x4 | 0; - x12 ^= u<<13 | u>>>(32-13); - u = x12 + x8 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x1 | 0; - x9 ^= u<<7 | u>>>(32-7); - u = x9 + x5 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x9 | 0; - x1 ^= u<<13 | u>>>(32-13); - u = x1 + x13 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x6 | 0; - x14 ^= u<<7 | u>>>(32-7); - u = x14 + x10 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x14 | 0; - x6 ^= u<<13 | u>>>(32-13); - u = x6 + x2 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x11 | 0; - x3 ^= u<<7 | u>>>(32-7); - u = x3 + x15 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x3 | 0; - x11 ^= u<<13 | u>>>(32-13); - u = x11 + x7 | 0; - x15 ^= u<<18 | u>>>(32-18); - - u = x0 + x3 | 0; - x1 ^= u<<7 | u>>>(32-7); - u = x1 + x0 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x1 | 0; - x3 ^= u<<13 | u>>>(32-13); - u = x3 + x2 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x4 | 0; - x6 ^= u<<7 | u>>>(32-7); - u = x6 + x5 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x6 | 0; - x4 ^= u<<13 | u>>>(32-13); - u = x4 + x7 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x9 | 0; - x11 ^= u<<7 | u>>>(32-7); - u = x11 + x10 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x11 | 0; - x9 ^= u<<13 | u>>>(32-13); - u = x9 + x8 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x14 | 0; - x12 ^= u<<7 | u>>>(32-7); - u = x12 + x15 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x12 | 0; - x14 ^= u<<13 | u>>>(32-13); - u = x14 + x13 | 0; - x15 ^= u<<18 | u>>>(32-18); - } - - o[ 0] = x0 >>> 0 & 0xff; - o[ 1] = x0 >>> 8 & 0xff; - o[ 2] = x0 >>> 16 & 0xff; - o[ 3] = x0 >>> 24 & 0xff; - - o[ 4] = x5 >>> 0 & 0xff; - o[ 5] = x5 >>> 8 & 0xff; - o[ 6] = x5 >>> 16 & 0xff; - o[ 7] = x5 >>> 24 & 0xff; - - o[ 8] = x10 >>> 0 & 0xff; - o[ 9] = x10 >>> 8 & 0xff; - o[10] = x10 >>> 16 & 0xff; - o[11] = x10 >>> 24 & 0xff; - - o[12] = x15 >>> 0 & 0xff; - o[13] = x15 >>> 8 & 0xff; - o[14] = x15 >>> 16 & 0xff; - o[15] = x15 >>> 24 & 0xff; - - o[16] = x6 >>> 0 & 0xff; - o[17] = x6 >>> 8 & 0xff; - o[18] = x6 >>> 16 & 0xff; - o[19] = x6 >>> 24 & 0xff; - - o[20] = x7 >>> 0 & 0xff; - o[21] = x7 >>> 8 & 0xff; - o[22] = x7 >>> 16 & 0xff; - o[23] = x7 >>> 24 & 0xff; - - o[24] = x8 >>> 0 & 0xff; - o[25] = x8 >>> 8 & 0xff; - o[26] = x8 >>> 16 & 0xff; - o[27] = x8 >>> 24 & 0xff; - - o[28] = x9 >>> 0 & 0xff; - o[29] = x9 >>> 8 & 0xff; - o[30] = x9 >>> 16 & 0xff; - o[31] = x9 >>> 24 & 0xff; - } - - function crypto_core_salsa20(out,inp,k,c) { - core_salsa20(out,inp,k,c); - } - - function crypto_core_hsalsa20(out,inp,k,c) { - core_hsalsa20(out,inp,k,c); - } - - var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]); - // "expand 32-byte k" - - function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) { - var z = new Uint8Array(16), x = new Uint8Array(64); - var u, i; - for (i = 0; i < 16; i++) z[i] = 0; - for (i = 0; i < 8; i++) z[i] = n[i]; - while (b >= 64) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i]; - u = 1; - for (i = 8; i < 16; i++) { - u = u + (z[i] & 0xff) | 0; - z[i] = u & 0xff; - u >>>= 8; - } - b -= 64; - cpos += 64; - mpos += 64; - } - if (b > 0) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i]; - } - return 0; - } - - function crypto_stream_salsa20(c,cpos,b,n,k) { - var z = new Uint8Array(16), x = new Uint8Array(64); - var u, i; - for (i = 0; i < 16; i++) z[i] = 0; - for (i = 0; i < 8; i++) z[i] = n[i]; - while (b >= 64) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < 64; i++) c[cpos+i] = x[i]; - u = 1; - for (i = 8; i < 16; i++) { - u = u + (z[i] & 0xff) | 0; - z[i] = u & 0xff; - u >>>= 8; - } - b -= 64; - cpos += 64; - } - if (b > 0) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < b; i++) c[cpos+i] = x[i]; - } - return 0; - } - - function crypto_stream(c,cpos,d,n,k) { - var s = new Uint8Array(32); - crypto_core_hsalsa20(s,n,k,sigma); - var sn = new Uint8Array(8); - for (var i = 0; i < 8; i++) sn[i] = n[i+16]; - return crypto_stream_salsa20(c,cpos,d,sn,s); - } - - function crypto_stream_xor(c,cpos,m,mpos,d,n,k) { - var s = new Uint8Array(32); - crypto_core_hsalsa20(s,n,k,sigma); - var sn = new Uint8Array(8); - for (var i = 0; i < 8; i++) sn[i] = n[i+16]; - return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s); - } - - /* - * Port of Andrew Moon's Poly1305-donna-16. Public domain. - * https://github.com/floodyberry/poly1305-donna - */ - - var poly1305 = function(key) { - this.buffer = new Uint8Array(16); - this.r = new Uint16Array(10); - this.h = new Uint16Array(10); - this.pad = new Uint16Array(8); - this.leftover = 0; - this.fin = 0; - - var t0, t1, t2, t3, t4, t5, t6, t7; - - t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff; - t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff; - t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03; - t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff; - t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff; - this.r[5] = ((t4 >>> 1)) & 0x1ffe; - t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff; - t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81; - t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff; - this.r[9] = ((t7 >>> 5)) & 0x007f; - - this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8; - this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8; - this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8; - this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8; - this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8; - this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8; - this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8; - this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8; - }; - - poly1305.prototype.blocks = function(m, mpos, bytes) { - var hibit = this.fin ? 0 : (1 << 11); - var t0, t1, t2, t3, t4, t5, t6, t7, c; - var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9; - - var h0 = this.h[0], - h1 = this.h[1], - h2 = this.h[2], - h3 = this.h[3], - h4 = this.h[4], - h5 = this.h[5], - h6 = this.h[6], - h7 = this.h[7], - h8 = this.h[8], - h9 = this.h[9]; - - var r0 = this.r[0], - r1 = this.r[1], - r2 = this.r[2], - r3 = this.r[3], - r4 = this.r[4], - r5 = this.r[5], - r6 = this.r[6], - r7 = this.r[7], - r8 = this.r[8], - r9 = this.r[9]; - - while (bytes >= 16) { - t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff; - t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff; - t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff; - t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff; - t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff; - h5 += ((t4 >>> 1)) & 0x1fff; - t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff; - t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff; - t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff; - h9 += ((t7 >>> 5)) | hibit; - - c = 0; - - d0 = c; - d0 += h0 * r0; - d0 += h1 * (5 * r9); - d0 += h2 * (5 * r8); - d0 += h3 * (5 * r7); - d0 += h4 * (5 * r6); - c = (d0 >>> 13); d0 &= 0x1fff; - d0 += h5 * (5 * r5); - d0 += h6 * (5 * r4); - d0 += h7 * (5 * r3); - d0 += h8 * (5 * r2); - d0 += h9 * (5 * r1); - c += (d0 >>> 13); d0 &= 0x1fff; - - d1 = c; - d1 += h0 * r1; - d1 += h1 * r0; - d1 += h2 * (5 * r9); - d1 += h3 * (5 * r8); - d1 += h4 * (5 * r7); - c = (d1 >>> 13); d1 &= 0x1fff; - d1 += h5 * (5 * r6); - d1 += h6 * (5 * r5); - d1 += h7 * (5 * r4); - d1 += h8 * (5 * r3); - d1 += h9 * (5 * r2); - c += (d1 >>> 13); d1 &= 0x1fff; - - d2 = c; - d2 += h0 * r2; - d2 += h1 * r1; - d2 += h2 * r0; - d2 += h3 * (5 * r9); - d2 += h4 * (5 * r8); - c = (d2 >>> 13); d2 &= 0x1fff; - d2 += h5 * (5 * r7); - d2 += h6 * (5 * r6); - d2 += h7 * (5 * r5); - d2 += h8 * (5 * r4); - d2 += h9 * (5 * r3); - c += (d2 >>> 13); d2 &= 0x1fff; - - d3 = c; - d3 += h0 * r3; - d3 += h1 * r2; - d3 += h2 * r1; - d3 += h3 * r0; - d3 += h4 * (5 * r9); - c = (d3 >>> 13); d3 &= 0x1fff; - d3 += h5 * (5 * r8); - d3 += h6 * (5 * r7); - d3 += h7 * (5 * r6); - d3 += h8 * (5 * r5); - d3 += h9 * (5 * r4); - c += (d3 >>> 13); d3 &= 0x1fff; - - d4 = c; - d4 += h0 * r4; - d4 += h1 * r3; - d4 += h2 * r2; - d4 += h3 * r1; - d4 += h4 * r0; - c = (d4 >>> 13); d4 &= 0x1fff; - d4 += h5 * (5 * r9); - d4 += h6 * (5 * r8); - d4 += h7 * (5 * r7); - d4 += h8 * (5 * r6); - d4 += h9 * (5 * r5); - c += (d4 >>> 13); d4 &= 0x1fff; - - d5 = c; - d5 += h0 * r5; - d5 += h1 * r4; - d5 += h2 * r3; - d5 += h3 * r2; - d5 += h4 * r1; - c = (d5 >>> 13); d5 &= 0x1fff; - d5 += h5 * r0; - d5 += h6 * (5 * r9); - d5 += h7 * (5 * r8); - d5 += h8 * (5 * r7); - d5 += h9 * (5 * r6); - c += (d5 >>> 13); d5 &= 0x1fff; - - d6 = c; - d6 += h0 * r6; - d6 += h1 * r5; - d6 += h2 * r4; - d6 += h3 * r3; - d6 += h4 * r2; - c = (d6 >>> 13); d6 &= 0x1fff; - d6 += h5 * r1; - d6 += h6 * r0; - d6 += h7 * (5 * r9); - d6 += h8 * (5 * r8); - d6 += h9 * (5 * r7); - c += (d6 >>> 13); d6 &= 0x1fff; - - d7 = c; - d7 += h0 * r7; - d7 += h1 * r6; - d7 += h2 * r5; - d7 += h3 * r4; - d7 += h4 * r3; - c = (d7 >>> 13); d7 &= 0x1fff; - d7 += h5 * r2; - d7 += h6 * r1; - d7 += h7 * r0; - d7 += h8 * (5 * r9); - d7 += h9 * (5 * r8); - c += (d7 >>> 13); d7 &= 0x1fff; - - d8 = c; - d8 += h0 * r8; - d8 += h1 * r7; - d8 += h2 * r6; - d8 += h3 * r5; - d8 += h4 * r4; - c = (d8 >>> 13); d8 &= 0x1fff; - d8 += h5 * r3; - d8 += h6 * r2; - d8 += h7 * r1; - d8 += h8 * r0; - d8 += h9 * (5 * r9); - c += (d8 >>> 13); d8 &= 0x1fff; - - d9 = c; - d9 += h0 * r9; - d9 += h1 * r8; - d9 += h2 * r7; - d9 += h3 * r6; - d9 += h4 * r5; - c = (d9 >>> 13); d9 &= 0x1fff; - d9 += h5 * r4; - d9 += h6 * r3; - d9 += h7 * r2; - d9 += h8 * r1; - d9 += h9 * r0; - c += (d9 >>> 13); d9 &= 0x1fff; - - c = (((c << 2) + c)) | 0; - c = (c + d0) | 0; - d0 = c & 0x1fff; - c = (c >>> 13); - d1 += c; - - h0 = d0; - h1 = d1; - h2 = d2; - h3 = d3; - h4 = d4; - h5 = d5; - h6 = d6; - h7 = d7; - h8 = d8; - h9 = d9; - - mpos += 16; - bytes -= 16; - } - this.h[0] = h0; - this.h[1] = h1; - this.h[2] = h2; - this.h[3] = h3; - this.h[4] = h4; - this.h[5] = h5; - this.h[6] = h6; - this.h[7] = h7; - this.h[8] = h8; - this.h[9] = h9; - }; - - poly1305.prototype.finish = function(mac, macpos) { - var g = new Uint16Array(10); - var c, mask, f, i; - - if (this.leftover) { - i = this.leftover; - this.buffer[i++] = 1; - for (; i < 16; i++) this.buffer[i] = 0; - this.fin = 1; - this.blocks(this.buffer, 0, 16); - } - - c = this.h[1] >>> 13; - this.h[1] &= 0x1fff; - for (i = 2; i < 10; i++) { - this.h[i] += c; - c = this.h[i] >>> 13; - this.h[i] &= 0x1fff; - } - this.h[0] += (c * 5); - c = this.h[0] >>> 13; - this.h[0] &= 0x1fff; - this.h[1] += c; - c = this.h[1] >>> 13; - this.h[1] &= 0x1fff; - this.h[2] += c; - - g[0] = this.h[0] + 5; - c = g[0] >>> 13; - g[0] &= 0x1fff; - for (i = 1; i < 10; i++) { - g[i] = this.h[i] + c; - c = g[i] >>> 13; - g[i] &= 0x1fff; - } - g[9] -= (1 << 13); - - mask = (c ^ 1) - 1; - for (i = 0; i < 10; i++) g[i] &= mask; - mask = ~mask; - for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i]; - - this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff; - this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff; - this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff; - this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff; - this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff; - this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff; - this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff; - this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff; - - f = this.h[0] + this.pad[0]; - this.h[0] = f & 0xffff; - for (i = 1; i < 8; i++) { - f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0; - this.h[i] = f & 0xffff; - } - - mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff; - mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff; - mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff; - mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff; - mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff; - mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff; - mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff; - mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff; - mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff; - mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff; - mac[macpos+10] = (this.h[5] >>> 0) & 0xff; - mac[macpos+11] = (this.h[5] >>> 8) & 0xff; - mac[macpos+12] = (this.h[6] >>> 0) & 0xff; - mac[macpos+13] = (this.h[6] >>> 8) & 0xff; - mac[macpos+14] = (this.h[7] >>> 0) & 0xff; - mac[macpos+15] = (this.h[7] >>> 8) & 0xff; - }; - - poly1305.prototype.update = function(m, mpos, bytes) { - var i, want; - - if (this.leftover) { - want = (16 - this.leftover); - if (want > bytes) - want = bytes; - for (i = 0; i < want; i++) - this.buffer[this.leftover + i] = m[mpos+i]; - bytes -= want; - mpos += want; - this.leftover += want; - if (this.leftover < 16) - return; - this.blocks(this.buffer, 0, 16); - this.leftover = 0; - } - - if (bytes >= 16) { - want = bytes - (bytes % 16); - this.blocks(m, mpos, want); - mpos += want; - bytes -= want; - } - - if (bytes) { - for (i = 0; i < bytes; i++) - this.buffer[this.leftover + i] = m[mpos+i]; - this.leftover += bytes; - } - }; - - function crypto_onetimeauth(out, outpos, m, mpos, n, k) { - var s = new poly1305(k); - s.update(m, mpos, n); - s.finish(out, outpos); - return 0; - } - - function crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) { - var x = new Uint8Array(16); - crypto_onetimeauth(x,0,m,mpos,n,k); - return crypto_verify_16(h,hpos,x,0); - } - - function crypto_secretbox(c,m,d,n,k) { - var i; - if (d < 32) return -1; - crypto_stream_xor(c,0,m,0,d,n,k); - crypto_onetimeauth(c, 16, c, 32, d - 32, c); - for (i = 0; i < 16; i++) c[i] = 0; - return 0; - } - - function crypto_secretbox_open(m,c,d,n,k) { - var i; - var x = new Uint8Array(32); - if (d < 32) return -1; - crypto_stream(x,0,32,n,k); - if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1; - crypto_stream_xor(m,0,c,0,d,n,k); - for (i = 0; i < 32; i++) m[i] = 0; - return 0; - } - - function set25519(r, a) { - var i; - for (i = 0; i < 16; i++) r[i] = a[i]|0; - } - - function car25519(o) { - var i, v, c = 1; - for (i = 0; i < 16; i++) { - v = o[i] + c + 65535; - c = Math.floor(v / 65536); - o[i] = v - c * 65536; - } - o[0] += c-1 + 37 * (c-1); - } - - function sel25519(p, q, b) { - var t, c = ~(b-1); - for (var i = 0; i < 16; i++) { - t = c & (p[i] ^ q[i]); - p[i] ^= t; - q[i] ^= t; - } - } - - function pack25519(o, n) { - var i, j, b; - var m = gf(), t = gf(); - for (i = 0; i < 16; i++) t[i] = n[i]; - car25519(t); - car25519(t); - car25519(t); - for (j = 0; j < 2; j++) { - m[0] = t[0] - 0xffed; - for (i = 1; i < 15; i++) { - m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1); - m[i-1] &= 0xffff; - } - m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1); - b = (m[15]>>16) & 1; - m[14] &= 0xffff; - sel25519(t, m, 1-b); - } - for (i = 0; i < 16; i++) { - o[2*i] = t[i] & 0xff; - o[2*i+1] = t[i]>>8; - } - } - - function neq25519(a, b) { - var c = new Uint8Array(32), d = new Uint8Array(32); - pack25519(c, a); - pack25519(d, b); - return crypto_verify_32(c, 0, d, 0); - } - - function par25519(a) { - var d = new Uint8Array(32); - pack25519(d, a); - return d[0] & 1; - } - - function unpack25519(o, n) { - var i; - for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8); - o[15] &= 0x7fff; - } - - function A(o, a, b) { - for (var i = 0; i < 16; i++) o[i] = a[i] + b[i]; - } - - function Z(o, a, b) { - for (var i = 0; i < 16; i++) o[i] = a[i] - b[i]; - } - - function M(o, a, b) { - var v, c, - t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, - t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, - t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, - t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, - b0 = b[0], - b1 = b[1], - b2 = b[2], - b3 = b[3], - b4 = b[4], - b5 = b[5], - b6 = b[6], - b7 = b[7], - b8 = b[8], - b9 = b[9], - b10 = b[10], - b11 = b[11], - b12 = b[12], - b13 = b[13], - b14 = b[14], - b15 = b[15]; - - v = a[0]; - t0 += v * b0; - t1 += v * b1; - t2 += v * b2; - t3 += v * b3; - t4 += v * b4; - t5 += v * b5; - t6 += v * b6; - t7 += v * b7; - t8 += v * b8; - t9 += v * b9; - t10 += v * b10; - t11 += v * b11; - t12 += v * b12; - t13 += v * b13; - t14 += v * b14; - t15 += v * b15; - v = a[1]; - t1 += v * b0; - t2 += v * b1; - t3 += v * b2; - t4 += v * b3; - t5 += v * b4; - t6 += v * b5; - t7 += v * b6; - t8 += v * b7; - t9 += v * b8; - t10 += v * b9; - t11 += v * b10; - t12 += v * b11; - t13 += v * b12; - t14 += v * b13; - t15 += v * b14; - t16 += v * b15; - v = a[2]; - t2 += v * b0; - t3 += v * b1; - t4 += v * b2; - t5 += v * b3; - t6 += v * b4; - t7 += v * b5; - t8 += v * b6; - t9 += v * b7; - t10 += v * b8; - t11 += v * b9; - t12 += v * b10; - t13 += v * b11; - t14 += v * b12; - t15 += v * b13; - t16 += v * b14; - t17 += v * b15; - v = a[3]; - t3 += v * b0; - t4 += v * b1; - t5 += v * b2; - t6 += v * b3; - t7 += v * b4; - t8 += v * b5; - t9 += v * b6; - t10 += v * b7; - t11 += v * b8; - t12 += v * b9; - t13 += v * b10; - t14 += v * b11; - t15 += v * b12; - t16 += v * b13; - t17 += v * b14; - t18 += v * b15; - v = a[4]; - t4 += v * b0; - t5 += v * b1; - t6 += v * b2; - t7 += v * b3; - t8 += v * b4; - t9 += v * b5; - t10 += v * b6; - t11 += v * b7; - t12 += v * b8; - t13 += v * b9; - t14 += v * b10; - t15 += v * b11; - t16 += v * b12; - t17 += v * b13; - t18 += v * b14; - t19 += v * b15; - v = a[5]; - t5 += v * b0; - t6 += v * b1; - t7 += v * b2; - t8 += v * b3; - t9 += v * b4; - t10 += v * b5; - t11 += v * b6; - t12 += v * b7; - t13 += v * b8; - t14 += v * b9; - t15 += v * b10; - t16 += v * b11; - t17 += v * b12; - t18 += v * b13; - t19 += v * b14; - t20 += v * b15; - v = a[6]; - t6 += v * b0; - t7 += v * b1; - t8 += v * b2; - t9 += v * b3; - t10 += v * b4; - t11 += v * b5; - t12 += v * b6; - t13 += v * b7; - t14 += v * b8; - t15 += v * b9; - t16 += v * b10; - t17 += v * b11; - t18 += v * b12; - t19 += v * b13; - t20 += v * b14; - t21 += v * b15; - v = a[7]; - t7 += v * b0; - t8 += v * b1; - t9 += v * b2; - t10 += v * b3; - t11 += v * b4; - t12 += v * b5; - t13 += v * b6; - t14 += v * b7; - t15 += v * b8; - t16 += v * b9; - t17 += v * b10; - t18 += v * b11; - t19 += v * b12; - t20 += v * b13; - t21 += v * b14; - t22 += v * b15; - v = a[8]; - t8 += v * b0; - t9 += v * b1; - t10 += v * b2; - t11 += v * b3; - t12 += v * b4; - t13 += v * b5; - t14 += v * b6; - t15 += v * b7; - t16 += v * b8; - t17 += v * b9; - t18 += v * b10; - t19 += v * b11; - t20 += v * b12; - t21 += v * b13; - t22 += v * b14; - t23 += v * b15; - v = a[9]; - t9 += v * b0; - t10 += v * b1; - t11 += v * b2; - t12 += v * b3; - t13 += v * b4; - t14 += v * b5; - t15 += v * b6; - t16 += v * b7; - t17 += v * b8; - t18 += v * b9; - t19 += v * b10; - t20 += v * b11; - t21 += v * b12; - t22 += v * b13; - t23 += v * b14; - t24 += v * b15; - v = a[10]; - t10 += v * b0; - t11 += v * b1; - t12 += v * b2; - t13 += v * b3; - t14 += v * b4; - t15 += v * b5; - t16 += v * b6; - t17 += v * b7; - t18 += v * b8; - t19 += v * b9; - t20 += v * b10; - t21 += v * b11; - t22 += v * b12; - t23 += v * b13; - t24 += v * b14; - t25 += v * b15; - v = a[11]; - t11 += v * b0; - t12 += v * b1; - t13 += v * b2; - t14 += v * b3; - t15 += v * b4; - t16 += v * b5; - t17 += v * b6; - t18 += v * b7; - t19 += v * b8; - t20 += v * b9; - t21 += v * b10; - t22 += v * b11; - t23 += v * b12; - t24 += v * b13; - t25 += v * b14; - t26 += v * b15; - v = a[12]; - t12 += v * b0; - t13 += v * b1; - t14 += v * b2; - t15 += v * b3; - t16 += v * b4; - t17 += v * b5; - t18 += v * b6; - t19 += v * b7; - t20 += v * b8; - t21 += v * b9; - t22 += v * b10; - t23 += v * b11; - t24 += v * b12; - t25 += v * b13; - t26 += v * b14; - t27 += v * b15; - v = a[13]; - t13 += v * b0; - t14 += v * b1; - t15 += v * b2; - t16 += v * b3; - t17 += v * b4; - t18 += v * b5; - t19 += v * b6; - t20 += v * b7; - t21 += v * b8; - t22 += v * b9; - t23 += v * b10; - t24 += v * b11; - t25 += v * b12; - t26 += v * b13; - t27 += v * b14; - t28 += v * b15; - v = a[14]; - t14 += v * b0; - t15 += v * b1; - t16 += v * b2; - t17 += v * b3; - t18 += v * b4; - t19 += v * b5; - t20 += v * b6; - t21 += v * b7; - t22 += v * b8; - t23 += v * b9; - t24 += v * b10; - t25 += v * b11; - t26 += v * b12; - t27 += v * b13; - t28 += v * b14; - t29 += v * b15; - v = a[15]; - t15 += v * b0; - t16 += v * b1; - t17 += v * b2; - t18 += v * b3; - t19 += v * b4; - t20 += v * b5; - t21 += v * b6; - t22 += v * b7; - t23 += v * b8; - t24 += v * b9; - t25 += v * b10; - t26 += v * b11; - t27 += v * b12; - t28 += v * b13; - t29 += v * b14; - t30 += v * b15; - - t0 += 38 * t16; - t1 += 38 * t17; - t2 += 38 * t18; - t3 += 38 * t19; - t4 += 38 * t20; - t5 += 38 * t21; - t6 += 38 * t22; - t7 += 38 * t23; - t8 += 38 * t24; - t9 += 38 * t25; - t10 += 38 * t26; - t11 += 38 * t27; - t12 += 38 * t28; - t13 += 38 * t29; - t14 += 38 * t30; - // t15 left as is - - // first car - c = 1; - v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; - v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; - v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; - v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; - v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; - v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; - v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; - v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; - v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; - v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; - v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; - v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; - v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; - v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; - v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; - v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; - t0 += c-1 + 37 * (c-1); - - // second car - c = 1; - v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; - v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; - v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; - v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; - v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; - v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; - v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; - v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; - v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; - v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; - v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; - v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; - v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; - v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; - v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; - v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; - t0 += c-1 + 37 * (c-1); - - o[ 0] = t0; - o[ 1] = t1; - o[ 2] = t2; - o[ 3] = t3; - o[ 4] = t4; - o[ 5] = t5; - o[ 6] = t6; - o[ 7] = t7; - o[ 8] = t8; - o[ 9] = t9; - o[10] = t10; - o[11] = t11; - o[12] = t12; - o[13] = t13; - o[14] = t14; - o[15] = t15; - } - - function S(o, a) { - M(o, a, a); - } - - function inv25519(o, i) { - var c = gf(); - var a; - for (a = 0; a < 16; a++) c[a] = i[a]; - for (a = 253; a >= 0; a--) { - S(c, c); - if(a !== 2 && a !== 4) M(c, c, i); - } - for (a = 0; a < 16; a++) o[a] = c[a]; - } - - function pow2523(o, i) { - var c = gf(); - var a; - for (a = 0; a < 16; a++) c[a] = i[a]; - for (a = 250; a >= 0; a--) { - S(c, c); - if(a !== 1) M(c, c, i); - } - for (a = 0; a < 16; a++) o[a] = c[a]; - } - - function crypto_scalarmult(q, n, p) { - var z = new Uint8Array(32); - var x = new Float64Array(80), r, i; - var a = gf(), b = gf(), c = gf(), - d = gf(), e = gf(), f = gf(); - for (i = 0; i < 31; i++) z[i] = n[i]; - z[31]=(n[31]&127)|64; - z[0]&=248; - unpack25519(x,p); - for (i = 0; i < 16; i++) { - b[i]=x[i]; - d[i]=a[i]=c[i]=0; - } - a[0]=d[0]=1; - for (i=254; i>=0; --i) { - r=(z[i>>>3]>>>(i&7))&1; - sel25519(a,b,r); - sel25519(c,d,r); - A(e,a,c); - Z(a,a,c); - A(c,b,d); - Z(b,b,d); - S(d,e); - S(f,a); - M(a,c,a); - M(c,b,e); - A(e,a,c); - Z(a,a,c); - S(b,a); - Z(c,d,f); - M(a,c,_121665); - A(a,a,d); - M(c,c,a); - M(a,d,f); - M(d,b,x); - S(b,e); - sel25519(a,b,r); - sel25519(c,d,r); - } - for (i = 0; i < 16; i++) { - x[i+16]=a[i]; - x[i+32]=c[i]; - x[i+48]=b[i]; - x[i+64]=d[i]; - } - var x32 = x.subarray(32); - var x16 = x.subarray(16); - inv25519(x32,x32); - M(x16,x16,x32); - pack25519(q,x16); - return 0; - } - - function crypto_scalarmult_base(q, n) { - return crypto_scalarmult(q, n, _9); - } - - function crypto_box_keypair(y, x) { - randombytes(x, 32); - return crypto_scalarmult_base(y, x); - } - - function crypto_box_beforenm(k, y, x) { - var s = new Uint8Array(32); - crypto_scalarmult(s, x, y); - return crypto_core_hsalsa20(k, _0, s, sigma); - } - - var crypto_box_afternm = crypto_secretbox; - var crypto_box_open_afternm = crypto_secretbox_open; - - function crypto_box(c, m, d, n, y, x) { - var k = new Uint8Array(32); - crypto_box_beforenm(k, y, x); - return crypto_box_afternm(c, m, d, n, k); - } - - function crypto_box_open(m, c, d, n, y, x) { - var k = new Uint8Array(32); - crypto_box_beforenm(k, y, x); - return crypto_box_open_afternm(m, c, d, n, k); - } - - var K = [ - 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, - 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, - 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, - 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, - 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, - 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, - 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, - 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, - 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, - 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, - 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, - 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, - 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, - 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, - 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, - 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, - 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, - 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, - 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, - 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, - 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, - 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, - 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, - 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, - 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, - 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, - 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, - 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, - 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, - 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, - 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, - 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, - 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, - 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, - 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, - 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, - 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, - 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, - 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, - 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 - ]; - - function crypto_hashblocks_hl(hh, hl, m, n) { - var wh = new Int32Array(16), wl = new Int32Array(16), - bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, - bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, - th, tl, i, j, h, l, a, b, c, d; - - var ah0 = hh[0], - ah1 = hh[1], - ah2 = hh[2], - ah3 = hh[3], - ah4 = hh[4], - ah5 = hh[5], - ah6 = hh[6], - ah7 = hh[7], - - al0 = hl[0], - al1 = hl[1], - al2 = hl[2], - al3 = hl[3], - al4 = hl[4], - al5 = hl[5], - al6 = hl[6], - al7 = hl[7]; - - var pos = 0; - while (n >= 128) { - for (i = 0; i < 16; i++) { - j = 8 * i + pos; - wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3]; - wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7]; - } - for (i = 0; i < 80; i++) { - bh0 = ah0; - bh1 = ah1; - bh2 = ah2; - bh3 = ah3; - bh4 = ah4; - bh5 = ah5; - bh6 = ah6; - bh7 = ah7; - - bl0 = al0; - bl1 = al1; - bl2 = al2; - bl3 = al3; - bl4 = al4; - bl5 = al5; - bl6 = al6; - bl7 = al7; - - // add - h = ah7; - l = al7; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - // Sigma1 - h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32)))); - l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32)))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // Ch - h = (ah4 & ah5) ^ (~ah4 & ah6); - l = (al4 & al5) ^ (~al4 & al6); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // K - h = K[i*2]; - l = K[i*2+1]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // w - h = wh[i%16]; - l = wl[i%16]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - th = c & 0xffff | d << 16; - tl = a & 0xffff | b << 16; - - // add - h = th; - l = tl; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - // Sigma0 - h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32)))); - l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32)))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // Maj - h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2); - l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - bh7 = (c & 0xffff) | (d << 16); - bl7 = (a & 0xffff) | (b << 16); - - // add - h = bh3; - l = bl3; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = th; - l = tl; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - bh3 = (c & 0xffff) | (d << 16); - bl3 = (a & 0xffff) | (b << 16); - - ah1 = bh0; - ah2 = bh1; - ah3 = bh2; - ah4 = bh3; - ah5 = bh4; - ah6 = bh5; - ah7 = bh6; - ah0 = bh7; - - al1 = bl0; - al2 = bl1; - al3 = bl2; - al4 = bl3; - al5 = bl4; - al6 = bl5; - al7 = bl6; - al0 = bl7; - - if (i%16 === 15) { - for (j = 0; j < 16; j++) { - // add - h = wh[j]; - l = wl[j]; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = wh[(j+9)%16]; - l = wl[(j+9)%16]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // sigma0 - th = wh[(j+1)%16]; - tl = wl[(j+1)%16]; - h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7); - l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // sigma1 - th = wh[(j+14)%16]; - tl = wl[(j+14)%16]; - h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6); - l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - wh[j] = (c & 0xffff) | (d << 16); - wl[j] = (a & 0xffff) | (b << 16); - } - } - } - - // add - h = ah0; - l = al0; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[0]; - l = hl[0]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[0] = ah0 = (c & 0xffff) | (d << 16); - hl[0] = al0 = (a & 0xffff) | (b << 16); - - h = ah1; - l = al1; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[1]; - l = hl[1]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[1] = ah1 = (c & 0xffff) | (d << 16); - hl[1] = al1 = (a & 0xffff) | (b << 16); - - h = ah2; - l = al2; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[2]; - l = hl[2]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[2] = ah2 = (c & 0xffff) | (d << 16); - hl[2] = al2 = (a & 0xffff) | (b << 16); - - h = ah3; - l = al3; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[3]; - l = hl[3]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[3] = ah3 = (c & 0xffff) | (d << 16); - hl[3] = al3 = (a & 0xffff) | (b << 16); - - h = ah4; - l = al4; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[4]; - l = hl[4]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[4] = ah4 = (c & 0xffff) | (d << 16); - hl[4] = al4 = (a & 0xffff) | (b << 16); - - h = ah5; - l = al5; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[5]; - l = hl[5]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[5] = ah5 = (c & 0xffff) | (d << 16); - hl[5] = al5 = (a & 0xffff) | (b << 16); - - h = ah6; - l = al6; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[6]; - l = hl[6]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[6] = ah6 = (c & 0xffff) | (d << 16); - hl[6] = al6 = (a & 0xffff) | (b << 16); - - h = ah7; - l = al7; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[7]; - l = hl[7]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[7] = ah7 = (c & 0xffff) | (d << 16); - hl[7] = al7 = (a & 0xffff) | (b << 16); - - pos += 128; - n -= 128; - } - - return n; - } - - function crypto_hash(out, m, n) { - var hh = new Int32Array(8), - hl = new Int32Array(8), - x = new Uint8Array(256), - i, b = n; - - hh[0] = 0x6a09e667; - hh[1] = 0xbb67ae85; - hh[2] = 0x3c6ef372; - hh[3] = 0xa54ff53a; - hh[4] = 0x510e527f; - hh[5] = 0x9b05688c; - hh[6] = 0x1f83d9ab; - hh[7] = 0x5be0cd19; - - hl[0] = 0xf3bcc908; - hl[1] = 0x84caa73b; - hl[2] = 0xfe94f82b; - hl[3] = 0x5f1d36f1; - hl[4] = 0xade682d1; - hl[5] = 0x2b3e6c1f; - hl[6] = 0xfb41bd6b; - hl[7] = 0x137e2179; - - crypto_hashblocks_hl(hh, hl, m, n); - n %= 128; - - for (i = 0; i < n; i++) x[i] = m[b-n+i]; - x[n] = 128; - - n = 256-128*(n<112?1:0); - x[n-9] = 0; - ts64(x, n-8, (b / 0x20000000) | 0, b << 3); - crypto_hashblocks_hl(hh, hl, x, n); - - for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]); - - return 0; - } - - function add(p, q) { - var a = gf(), b = gf(), c = gf(), - d = gf(), e = gf(), f = gf(), - g = gf(), h = gf(), t = gf(); - - Z(a, p[1], p[0]); - Z(t, q[1], q[0]); - M(a, a, t); - A(b, p[0], p[1]); - A(t, q[0], q[1]); - M(b, b, t); - M(c, p[3], q[3]); - M(c, c, D2); - M(d, p[2], q[2]); - A(d, d, d); - Z(e, b, a); - Z(f, d, c); - A(g, d, c); - A(h, b, a); - - M(p[0], e, f); - M(p[1], h, g); - M(p[2], g, f); - M(p[3], e, h); - } - - function cswap(p, q, b) { - var i; - for (i = 0; i < 4; i++) { - sel25519(p[i], q[i], b); - } - } - - function pack(r, p) { - var tx = gf(), ty = gf(), zi = gf(); - inv25519(zi, p[2]); - M(tx, p[0], zi); - M(ty, p[1], zi); - pack25519(r, ty); - r[31] ^= par25519(tx) << 7; - } - - function scalarmult(p, q, s) { - var b, i; - set25519(p[0], gf0); - set25519(p[1], gf1); - set25519(p[2], gf1); - set25519(p[3], gf0); - for (i = 255; i >= 0; --i) { - b = (s[(i/8)|0] >> (i&7)) & 1; - cswap(p, q, b); - add(q, p); - add(p, p); - cswap(p, q, b); - } - } - - function scalarbase(p, s) { - var q = [gf(), gf(), gf(), gf()]; - set25519(q[0], X); - set25519(q[1], Y); - set25519(q[2], gf1); - M(q[3], X, Y); - scalarmult(p, q, s); - } - - function crypto_sign_keypair(pk, sk, seeded) { - var d = new Uint8Array(64); - var p = [gf(), gf(), gf(), gf()]; - var i; - - if (!seeded) randombytes(sk, 32); - crypto_hash(d, sk, 32); - d[0] &= 248; - d[31] &= 127; - d[31] |= 64; - - scalarbase(p, d); - pack(pk, p); - - for (i = 0; i < 32; i++) sk[i+32] = pk[i]; - return 0; - } - - var L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]); - - function modL(r, x) { - var carry, i, j, k; - for (i = 63; i >= 32; --i) { - carry = 0; - for (j = i - 32, k = i - 12; j < k; ++j) { - x[j] += carry - 16 * x[i] * L[j - (i - 32)]; - carry = Math.floor((x[j] + 128) / 256); - x[j] -= carry * 256; - } - x[j] += carry; - x[i] = 0; - } - carry = 0; - for (j = 0; j < 32; j++) { - x[j] += carry - (x[31] >> 4) * L[j]; - carry = x[j] >> 8; - x[j] &= 255; - } - for (j = 0; j < 32; j++) x[j] -= carry * L[j]; - for (i = 0; i < 32; i++) { - x[i+1] += x[i] >> 8; - r[i] = x[i] & 255; - } - } - - function reduce(r) { - var x = new Float64Array(64), i; - for (i = 0; i < 64; i++) x[i] = r[i]; - for (i = 0; i < 64; i++) r[i] = 0; - modL(r, x); - } - - // Note: difference from C - smlen returned, not passed as argument. - function crypto_sign(sm, m, n, sk) { - var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64); - var i, j, x = new Float64Array(64); - var p = [gf(), gf(), gf(), gf()]; - - crypto_hash(d, sk, 32); - d[0] &= 248; - d[31] &= 127; - d[31] |= 64; - - var smlen = n + 64; - for (i = 0; i < n; i++) sm[64 + i] = m[i]; - for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i]; - - crypto_hash(r, sm.subarray(32), n+32); - reduce(r); - scalarbase(p, r); - pack(sm, p); - - for (i = 32; i < 64; i++) sm[i] = sk[i]; - crypto_hash(h, sm, n + 64); - reduce(h); - - for (i = 0; i < 64; i++) x[i] = 0; - for (i = 0; i < 32; i++) x[i] = r[i]; - for (i = 0; i < 32; i++) { - for (j = 0; j < 32; j++) { - x[i+j] += h[i] * d[j]; - } - } - - modL(sm.subarray(32), x); - return smlen; - } - - function unpackneg(r, p) { - var t = gf(), chk = gf(), num = gf(), - den = gf(), den2 = gf(), den4 = gf(), - den6 = gf(); - - set25519(r[2], gf1); - unpack25519(r[1], p); - S(num, r[1]); - M(den, num, D); - Z(num, num, r[2]); - A(den, r[2], den); - - S(den2, den); - S(den4, den2); - M(den6, den4, den2); - M(t, den6, num); - M(t, t, den); - - pow2523(t, t); - M(t, t, num); - M(t, t, den); - M(t, t, den); - M(r[0], t, den); - - S(chk, r[0]); - M(chk, chk, den); - if (neq25519(chk, num)) M(r[0], r[0], I); - - S(chk, r[0]); - M(chk, chk, den); - if (neq25519(chk, num)) return -1; - - if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]); - - M(r[3], r[0], r[1]); - return 0; - } - - function crypto_sign_open(m, sm, n, pk) { - var i; - var t = new Uint8Array(32), h = new Uint8Array(64); - var p = [gf(), gf(), gf(), gf()], - q = [gf(), gf(), gf(), gf()]; - - if (n < 64) return -1; - - if (unpackneg(q, pk)) return -1; - - for (i = 0; i < n; i++) m[i] = sm[i]; - for (i = 0; i < 32; i++) m[i+32] = pk[i]; - crypto_hash(h, m, n); - reduce(h); - scalarmult(p, q, h); - - scalarbase(q, sm.subarray(32)); - add(p, q); - pack(t, p); - - n -= 64; - if (crypto_verify_32(sm, 0, t, 0)) { - for (i = 0; i < n; i++) m[i] = 0; - return -1; - } - - for (i = 0; i < n; i++) m[i] = sm[i + 64]; - return n; - } - - var crypto_secretbox_KEYBYTES = 32, - crypto_secretbox_NONCEBYTES = 24, - crypto_secretbox_ZEROBYTES = 32, - crypto_secretbox_BOXZEROBYTES = 16, - crypto_scalarmult_BYTES = 32, - crypto_scalarmult_SCALARBYTES = 32, - crypto_box_PUBLICKEYBYTES = 32, - crypto_box_SECRETKEYBYTES = 32, - crypto_box_BEFORENMBYTES = 32, - crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES, - crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES, - crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES, - crypto_sign_BYTES = 64, - crypto_sign_PUBLICKEYBYTES = 32, - crypto_sign_SECRETKEYBYTES = 64, - crypto_sign_SEEDBYTES = 32, - crypto_hash_BYTES = 64; - - nacl.lowlevel = { - crypto_core_hsalsa20: crypto_core_hsalsa20, - crypto_stream_xor: crypto_stream_xor, - crypto_stream: crypto_stream, - crypto_stream_salsa20_xor: crypto_stream_salsa20_xor, - crypto_stream_salsa20: crypto_stream_salsa20, - crypto_onetimeauth: crypto_onetimeauth, - crypto_onetimeauth_verify: crypto_onetimeauth_verify, - crypto_verify_16: crypto_verify_16, - crypto_verify_32: crypto_verify_32, - crypto_secretbox: crypto_secretbox, - crypto_secretbox_open: crypto_secretbox_open, - crypto_scalarmult: crypto_scalarmult, - crypto_scalarmult_base: crypto_scalarmult_base, - crypto_box_beforenm: crypto_box_beforenm, - crypto_box_afternm: crypto_box_afternm, - crypto_box: crypto_box, - crypto_box_open: crypto_box_open, - crypto_box_keypair: crypto_box_keypair, - crypto_hash: crypto_hash, - crypto_sign: crypto_sign, - crypto_sign_keypair: crypto_sign_keypair, - crypto_sign_open: crypto_sign_open, - - crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES, - crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES, - crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES, - crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES, - crypto_scalarmult_BYTES: crypto_scalarmult_BYTES, - crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES, - crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES, - crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES, - crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES, - crypto_box_NONCEBYTES: crypto_box_NONCEBYTES, - crypto_box_ZEROBYTES: crypto_box_ZEROBYTES, - crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES, - crypto_sign_BYTES: crypto_sign_BYTES, - crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES, - crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES, - crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES, - crypto_hash_BYTES: crypto_hash_BYTES, - - gf: gf, - D: D, - L: L, - pack25519: pack25519, - unpack25519: unpack25519, - M: M, - A: A, - S: S, - Z: Z, - pow2523: pow2523, - add: add, - set25519: set25519, - modL: modL, - scalarmult: scalarmult, - scalarbase: scalarbase, - }; - - /* High-level API */ - - function checkLengths(k, n) { - if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size'); - if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size'); - } - - function checkBoxLengths(pk, sk) { - if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size'); - if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size'); - } - - function checkArrayTypes() { - for (var i = 0; i < arguments.length; i++) { - if (!(arguments[i] instanceof Uint8Array)) - throw new TypeError('unexpected type, use Uint8Array'); - } - } - - function cleanup(arr) { - for (var i = 0; i < arr.length; i++) arr[i] = 0; - } - - nacl.randomBytes = function(n) { - var b = new Uint8Array(n); - randombytes(b, n); - return b; - }; - - nacl.secretbox = function(msg, nonce, key) { - checkArrayTypes(msg, nonce, key); - checkLengths(key, nonce); - var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length); - var c = new Uint8Array(m.length); - for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i]; - crypto_secretbox(c, m, m.length, nonce, key); - return c.subarray(crypto_secretbox_BOXZEROBYTES); - }; - - nacl.secretbox.open = function(box, nonce, key) { - checkArrayTypes(box, nonce, key); - checkLengths(key, nonce); - var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length); - var m = new Uint8Array(c.length); - for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i]; - if (c.length < 32) return null; - if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null; - return m.subarray(crypto_secretbox_ZEROBYTES); - }; - - nacl.secretbox.keyLength = crypto_secretbox_KEYBYTES; - nacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES; - nacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES; - - nacl.scalarMult = function(n, p) { - checkArrayTypes(n, p); - if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); - if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size'); - var q = new Uint8Array(crypto_scalarmult_BYTES); - crypto_scalarmult(q, n, p); - return q; - }; - - nacl.scalarMult.base = function(n) { - checkArrayTypes(n); - if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); - var q = new Uint8Array(crypto_scalarmult_BYTES); - crypto_scalarmult_base(q, n); - return q; - }; - - nacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES; - nacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES; - - nacl.box = function(msg, nonce, publicKey, secretKey) { - var k = nacl.box.before(publicKey, secretKey); - return nacl.secretbox(msg, nonce, k); - }; - - nacl.box.before = function(publicKey, secretKey) { - checkArrayTypes(publicKey, secretKey); - checkBoxLengths(publicKey, secretKey); - var k = new Uint8Array(crypto_box_BEFORENMBYTES); - crypto_box_beforenm(k, publicKey, secretKey); - return k; - }; - - nacl.box.after = nacl.secretbox; - - nacl.box.open = function(msg, nonce, publicKey, secretKey) { - var k = nacl.box.before(publicKey, secretKey); - return nacl.secretbox.open(msg, nonce, k); - }; - - nacl.box.open.after = nacl.secretbox.open; - - nacl.box.keyPair = function() { - var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_box_SECRETKEYBYTES); - crypto_box_keypair(pk, sk); - return {publicKey: pk, secretKey: sk}; - }; - - nacl.box.keyPair.fromSecretKey = function(secretKey) { - checkArrayTypes(secretKey); - if (secretKey.length !== crypto_box_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); - crypto_scalarmult_base(pk, secretKey); - return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; - }; - - nacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES; - nacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES; - nacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES; - nacl.box.nonceLength = crypto_box_NONCEBYTES; - nacl.box.overheadLength = nacl.secretbox.overheadLength; - - nacl.sign = function(msg, secretKey) { - checkArrayTypes(msg, secretKey); - if (secretKey.length !== crypto_sign_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length); - crypto_sign(signedMsg, msg, msg.length, secretKey); - return signedMsg; - }; - - nacl.sign.open = function(signedMsg, publicKey) { - checkArrayTypes(signedMsg, publicKey); - if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) - throw new Error('bad public key size'); - var tmp = new Uint8Array(signedMsg.length); - var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey); - if (mlen < 0) return null; - var m = new Uint8Array(mlen); - for (var i = 0; i < m.length; i++) m[i] = tmp[i]; - return m; - }; - - nacl.sign.detached = function(msg, secretKey) { - var signedMsg = nacl.sign(msg, secretKey); - var sig = new Uint8Array(crypto_sign_BYTES); - for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i]; - return sig; - }; - - nacl.sign.detached.verify = function(msg, sig, publicKey) { - checkArrayTypes(msg, sig, publicKey); - if (sig.length !== crypto_sign_BYTES) - throw new Error('bad signature size'); - if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) - throw new Error('bad public key size'); - var sm = new Uint8Array(crypto_sign_BYTES + msg.length); - var m = new Uint8Array(crypto_sign_BYTES + msg.length); - var i; - for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i]; - for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i]; - return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0); - }; - - nacl.sign.keyPair = function() { - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); - crypto_sign_keypair(pk, sk); - return {publicKey: pk, secretKey: sk}; - }; - - nacl.sign.keyPair.fromSecretKey = function(secretKey) { - checkArrayTypes(secretKey); - if (secretKey.length !== crypto_sign_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i]; - return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; - }; - - nacl.sign.keyPair.fromSeed = function(seed) { - checkArrayTypes(seed); - if (seed.length !== crypto_sign_SEEDBYTES) - throw new Error('bad seed size'); - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); - for (var i = 0; i < 32; i++) sk[i] = seed[i]; - crypto_sign_keypair(pk, sk, true); - return {publicKey: pk, secretKey: sk}; - }; - - nacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES; - nacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES; - nacl.sign.seedLength = crypto_sign_SEEDBYTES; - nacl.sign.signatureLength = crypto_sign_BYTES; - - nacl.hash = function(msg) { - checkArrayTypes(msg); - var h = new Uint8Array(crypto_hash_BYTES); - crypto_hash(h, msg, msg.length); - return h; - }; - - nacl.hash.hashLength = crypto_hash_BYTES; - - nacl.verify = function(x, y) { - checkArrayTypes(x, y); - // Zero length arguments are considered not equal. - if (x.length === 0 || y.length === 0) return false; - if (x.length !== y.length) return false; - return (vn(x, 0, y, 0, x.length) === 0) ? true : false; - }; - - nacl.setPRNG = function(fn) { - randombytes = fn; - }; - - (function() { - // Initialize PRNG if environment provides CSPRNG. - // If not, methods calling randombytes will throw. - var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null; - if (crypto && crypto.getRandomValues) { - // Browsers. - var QUOTA = 65536; - nacl.setPRNG(function(x, n) { - var i, v = new Uint8Array(n); - for (i = 0; i < n; i += QUOTA) { - crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA))); - } - for (i = 0; i < n; i++) x[i] = v[i]; - cleanup(v); - }); - } else if (typeof commonjsRequire !== 'undefined') { - // Node.js. - crypto = require$$0; - if (crypto && crypto.randomBytes) { - nacl.setPRNG(function(x, n) { - var i, v = crypto.randomBytes(n); - for (i = 0; i < n; i++) x[i] = v[i]; - cleanup(v); - }); - } - } - })(); - - })(module.exports ? module.exports : (self.nacl = self.nacl || {})); -} (naclFast)); - -var naclFastExports = naclFast.exports; - -var naclUtil = {exports: {}}; - -(function (module) { - // Written in 2014-2016 by Dmitry Chestnykh and Devi Mandiri. - // Public domain. - (function(root, f) { - if (module.exports) module.exports = f(); - else if (root.nacl) root.nacl.util = f(); - else { - root.nacl = {}; - root.nacl.util = f(); - } - }(commonjsGlobal, function() { - - var util = {}; - - function validateBase64(s) { - if (!(/^(?:[A-Za-z0-9+\/]{2}[A-Za-z0-9+\/]{2})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/.test(s))) { - throw new TypeError('invalid encoding'); - } - } - - util.decodeUTF8 = function(s) { - if (typeof s !== 'string') throw new TypeError('expected string'); - var i, d = unescape(encodeURIComponent(s)), b = new Uint8Array(d.length); - for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i); - return b; - }; - - util.encodeUTF8 = function(arr) { - var i, s = []; - for (i = 0; i < arr.length; i++) s.push(String.fromCharCode(arr[i])); - return decodeURIComponent(escape(s.join(''))); - }; - - if (typeof atob === 'undefined') { - // Node.js - - if (typeof Buffer.from !== 'undefined') { - // Node v6 and later - util.encodeBase64 = function (arr) { // v6 and later - return Buffer.from(arr).toString('base64'); - }; - - util.decodeBase64 = function (s) { - validateBase64(s); - return new Uint8Array(Array.prototype.slice.call(Buffer.from(s, 'base64'), 0)); - }; - - } else { - // Node earlier than v6 - util.encodeBase64 = function (arr) { // v6 and later - return (new Buffer(arr)).toString('base64'); - }; - - util.decodeBase64 = function(s) { - validateBase64(s); - return new Uint8Array(Array.prototype.slice.call(new Buffer(s, 'base64'), 0)); - }; - } - - } else { - // Browsers - - util.encodeBase64 = function(arr) { - var i, s = [], len = arr.length; - for (i = 0; i < len; i++) s.push(String.fromCharCode(arr[i])); - return btoa(s.join('')); - }; - - util.decodeBase64 = function(s) { - validateBase64(s); - var i, d = atob(s), b = new Uint8Array(d.length); - for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i); - return b; - }; - - } - - return util; - - })); -} (naclUtil)); - -var naclUtilExports = naclUtil.exports; - -const PRIVATE_KEY_LENGTH = 64; -const PUBLIC_KEY_LENGTH = 64; -/** - * A class representing a SealingKey which provides cryptographic sealing (encryption) - * and unsealing (decryption) capabilities. - */ -class SealingKey { - /** - * Constructs a SealingKey instance with the given private and public keys. - * - * @param {string} privateKey - The private key used for decryption. - * @param {string} publicKey - The public key used for encryption. - * @throws Will throw an error if the provided keys lengths do not match - * the required lengths for private and public keys. - */ - constructor(privateKey, publicKey) { - /** - * Unseals (decrypts) the provided ciphertext using the instance's private key. - * - * @param {string | Uint8Array} ciphertext - The encrypted data to be decrypted. - * @returns BigInt - The decrypted message as a bigint. - * @throws Will throw an error if the decryption process fails. - */ - this.unseal = (ciphertext) => { - let parsedData = undefined; - try { - if (typeof ciphertext === "string") { - parsedData = JSON.parse(ciphertext); - } - } - catch { - // ignore errors - } - if (!parsedData) { - const toDecrypt = typeof ciphertext === "string" ? fromHexString(ciphertext) : ciphertext; - // decode json structure that gets returned from the chain - const jsonString = Buffer.from(toDecrypt).toString("utf8"); - parsedData = JSON.parse(jsonString); - } - if (!parsedData) { - throw new Error("Failed to parse sealed data"); - } - // assemble decryption parameters - const nonce = naclUtilExports.decodeBase64(parsedData.nonce); - const ephemPublicKey = naclUtilExports.decodeBase64(parsedData.ephemPublicKey); - const dataToDecrypt = naclUtilExports.decodeBase64(parsedData.ciphertext); - // call the nacl box function to decrypt the data - const decryptedMessage = naclFastExports.box.open(dataToDecrypt, nonce, ephemPublicKey, fromHexString(this.privateKey)); - if (!decryptedMessage) { - throw new Error("Failed to decrypt message"); - } - return toBigInt(decryptedMessage); - }; - if (privateKey.length !== PRIVATE_KEY_LENGTH) { - throw new Error(`Private key must be of length ${PRIVATE_KEY_LENGTH}`); - } - if (publicKey.length !== PUBLIC_KEY_LENGTH) { - throw new Error(`Private key must be of length ${PUBLIC_KEY_LENGTH}`); - } - this.privateKey = privateKey; - this.publicKey = publicKey; - } -} -/** - * Seals (encrypts) the provided message for a receiver with the specified public key. - * - * @param {bigint | number} value - The message to be encrypted. - * @param {string} publicKey - The public key of the intended recipient. - * @returns string - The encrypted message in hexadecimal format. - * @static - * @throws Will throw if the provided publicKey or value do not meet defined preconditions. - */ -SealingKey.seal = (value, publicKey) => { - isString(publicKey); - isBigIntOrNumber(value); - // generate ephemeral keypair - const ephemeralKeyPair = naclFastExports.box.keyPair(); - const nonce = naclFastExports.randomBytes(naclFastExports.box.nonceLength); - const encryptedMessage = naclFastExports.box(toBeArray(value), nonce, fromHexString(publicKey), ephemeralKeyPair.secretKey); - // handle encrypted data - const output = { - version: "x25519-xsalsa20-poly1305", - nonce: naclUtilExports.encodeBase64(nonce), - ephemPublicKey: naclUtilExports.encodeBase64(ephemeralKeyPair.publicKey), - ciphertext: naclUtilExports.encodeBase64(encryptedMessage), - }; - // mimicking encoding from the chain - return toHexString$1(Buffer.from(JSON.stringify(output))); -}; -/** - * Asynchronously generates a new SealingKey. - * This function uses the 'nacl' library to create a new public/private key pair for sealing purposes. - * A sealing key is used to encrypt data such that it can only be unsealed (decrypted) by the owner of the corresponding private key. - * @returns {Promise} - A promise that resolves to a new SealingKey object containing the hexadecimal strings of the public and private keys. - */ -const GenerateSealingKey = async () => { - const sodiumKeypair = naclFastExports.box.keyPair(); - return new SealingKey(toHexString$1(sodiumKeypair.secretKey), toHexString$1(sodiumKeypair.publicKey)); -}; - -const PERMIT_PREFIX = "Fhenix_saved_permit_"; -const parsePermit = (savedPermit) => { - const o = JSON.parse(savedPermit); - if (o) { - return { - contractAddress: o.contractAddress, - sealingKey: new SealingKey(o.sealingKey.privateKey, o.sealingKey.publicKey), - signature: o.signature, - publicKey: `0x${o.sealingKey.publicKey}`, - }; - } - throw new Error(`Cannot parse permit`); -}; -const getPermit$2 = async (contract, provider, autoGenerate = true) => { - isAddress$1(contract); - if (!provider) { - throw new Error(`Missing provider`); - } - const getSigner = determineRequestSigner(provider); - const signer = await getSigner(provider); - const savedPermit = getPermitFromLocalstorage(contract, await signer.getAddress()); - if (savedPermit != null) - return savedPermit; - return autoGenerate ? generatePermit(contract, provider) : null; -}; -const getAllExistingPermits = (account) => { - const permits = {}; - const search = new RegExp(`${PERMIT_PREFIX}(.*?)_${account}`); - Object.keys(window.localStorage).forEach((key) => { - const matchArray = key.match(search); - if (matchArray == null) - return; - const contract = matchArray[1]; - const permitRaw = window.localStorage.getItem(key); - if (permitRaw == null) - return; - try { - const permit = parsePermit(permitRaw); - permits[contract] = permit; - } - catch (err) { - console.warn(err); - } - }); - return permits; -}; -const getAllPermits$1 = () => { - const permits = new Map(); - for (let i = 0; i < window.localStorage.length; i++) { - const key = window.localStorage.key(i); - if (key && key.includes(PERMIT_PREFIX)) { - const contract = key.replace(PERMIT_PREFIX, ""); - // Not sure if needed, code placeholder: - // const noPrefixPermit = key.replace(PERMIT_PREFIX, ""); - // let contract = ""; - // if (noPrefixPermit.includes("_")) { - // const tmp = noPrefixPermit.split("_"); - // contract = tmp[0]; - // } else { - // contract = noPrefixPermit; - // } - try { - const permit = parsePermit(window.localStorage.getItem(key)); - permits.set(contract, permit); - } - catch (err) { - console.warn(err); - } - } - } - return permits; -}; -const sign = async (signer, domain, types, value) => { - if ("_signTypedData" in signer && - typeof signer._signTypedData == "function") { - return await signer._signTypedData(domain, types, value); - } - else if ("signTypedData" in signer && - typeof signer.signTypedData == "function") { - return await signer.signTypedData(domain, types, value); - } - throw new Error("Unsupported signer"); -}; -const generatePermit = async (contract, provider, customSigner) => { - if (!provider) { - throw new Error("Provider is undefined"); - } - const requestMethod = determineRequestMethod(provider); - let signer; - if (!customSigner) { - const getSigner = determineRequestSigner(provider); - signer = await getSigner(provider); - } - else { - signer = customSigner; - } - const chainId = await requestMethod(provider, "eth_chainId", []); - const keypair = await GenerateSealingKey(); - const msgParams = { - types: { - // This refers to the domain the contract is hosted on. - EIP712Domain: [ - { name: "name", type: "string" }, - { name: "version", type: "string" }, - { name: "chainId", type: "uint256" }, - { name: "verifyingContract", type: "address" }, - ], - // Refer to primaryType. - Permissioned: [{ name: "publicKey", type: "bytes32" }], - }, - // This defines the message you're proposing the user to sign, is dapp-specific, and contains - // anything you want. There are no required fields. Be as explicit as possible when building out - // the message schema. - // This refers to the keys of the following types object. - primaryType: "Permissioned", - domain: { - // Give a user-friendly name to the specific contract you're signing for. - name: "Fhenix Permission", // params.name - // This identifies the latest version. - version: "1.0", //params.version || - // This defines the network, in this case, Mainnet. - chainId: chainId, - // // Add a verifying contract to make sure you're establishing contracts with the proper entity. - verifyingContract: contract, //params.verifyingContract, - }, - message: { - publicKey: `0x${keypair.publicKey}`, - }, - }; - const msgSig = await sign(signer, msgParams.domain, { Permissioned: msgParams.types.Permissioned }, msgParams.message); - const permit = { - contractAddress: contract, - sealingKey: keypair, - signature: msgSig, - publicKey: `0x${keypair.publicKey}`, - //permit: msgParams, - //msgSig - }; - storePermitInLocalStorage(permit, await signer.getAddress()); - return permit; -}; -const removePermit$1 = (contract, account) => { - if (!account) { - // Backward compatibility - window.localStorage.removeItem(`${PERMIT_PREFIX}${contract}`); - } - else { - window.localStorage.removeItem(`${PERMIT_PREFIX}${contract}_${account}`); - } -}; -const getPermitFromLocalstorage = (contract, account) => { - let savedPermit = null; - if (typeof window !== "undefined" && window.localStorage) { - savedPermit = window.localStorage.getItem(`${PERMIT_PREFIX}${contract}_${account}`); - if (!account) { - // Backward compatibility - savedPermit = window.localStorage.getItem(`${PERMIT_PREFIX}${contract}`); - } - else { - savedPermit = window.localStorage.getItem(`${PERMIT_PREFIX}${contract}_${account}`); - } - } - if (!savedPermit) { - return undefined; - } - return parsePermit(savedPermit); -}; -const storePermitInLocalStorage = (permit, account) => { - if (typeof window !== "undefined" && window.localStorage) { - // Sealing key is a class, and will include methods in the JSON - const serialized = { - contractAddress: permit.contractAddress, - sealingKey: { - publicKey: permit.sealingKey.publicKey, - privateKey: permit.sealingKey.privateKey, - }, - signature: permit.signature, - }; - window.localStorage.setItem(`${PERMIT_PREFIX}${permit.contractAddress}_${account}`, JSON.stringify(serialized)); - } -}; -const removePermitFromLocalstorage = (contract, account) => { - if (typeof window !== "undefined" && window.localStorage) { - window.localStorage.removeItem(`${PERMIT_PREFIX}${contract}_${account}`); - } -}; - -const MAX_UINT8 = 255; -const MAX_UINT16 = 65535; -const MAX_UINT32 = 4294967295; -const FheOpsAddress = "0x0000000000000000000000000000000000000080"; -const PUBLIC_KEY_LENGTH_MIN = 15000; - -/** - * Encrypts a Uint8 value using TFHE (Fast Fully Homomorphic Encryption over the Torus). - * @param {boolean} value - The Boolean value to encrypt. - * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. - * @param securityZone - The security zone to encrypt the value on. - * @returns {EncryptedBool} - The encrypted value serialized as Uint8Array. - */ -const encrypt_bool = (value, publicKey, securityZone = 0) => { - const encrypted = CompactFheBool.encrypt_with_compact_public_key(value, publicKey); - return { - data: encrypted.serialize(), - securityZone, - }; -}; -/** - * Encrypts a Uint8 value using TFHE (Fast Fully Homomorphic Encryption over the Torus). - * @param {number} value - The Uint8 value to encrypt. - * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. - * @param securityZone - The security zone to encrypt the value on. - * @returns {EncryptedUint8} - The encrypted value serialized as Uint8Array. - */ -const encrypt_uint8 = (value, publicKey, securityZone = 0) => { - const encrypted = CompactFheUint8.encrypt_with_compact_public_key(value, publicKey); - return { - data: encrypted.serialize(), - securityZone, - }; -}; -/** - * Encrypts a Uint16 value using TFHE. - * @param {number} value - The Uint16 value to encrypt. - * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. - * @param securityZone - The security zone to encrypt the value on. - * @returns {EncryptedUint16} - The encrypted value serialized as Uint8Array. - */ -const encrypt_uint16 = (value, publicKey, securityZone = 0) => { - const encrypted = CompactFheUint16.encrypt_with_compact_public_key(value, publicKey); - return { - data: encrypted.serialize(), - securityZone, - }; -}; -/** - * Encrypts a Uint32 value using TFHE. - * @param {number} value - The Uint32 value to encrypt. - * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. - * @param securityZone - The security zone to encrypt the value on. - * @returns {EncryptedUint32} - The encrypted value serialized as Uint8Array. - */ -const encrypt_uint32 = (value, publicKey, securityZone = 0) => { - const encrypted = CompactFheUint32.encrypt_with_compact_public_key(value, publicKey); - return { - data: encrypted.serialize(), - securityZone, - }; -}; -/** - * Encrypts a Uint64 value using TFHE. - * @param {number} value - The Uint64 value to encrypt. - * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. - * @param securityZone - The security zone to encrypt the value on. - * @returns {EncryptedUint64} - The encrypted value serialized as Uint8Array. - */ -const encrypt_uint64 = (value, publicKey, securityZone = 0) => { - if (typeof value === "string") { - value = toBigInt(fromHexString(value)); - } - else { - value = value; - } - const encrypted = CompactFheUint64.encrypt_with_compact_public_key(value, publicKey); - return { - data: encrypted.serialize(), - securityZone, - }; -}; -/** - * Encrypts a Uint128 value using TFHE. - * @param {bigint} value - The Uint128 value to encrypt. - * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. - * @param securityZone - The security zone to encrypt the value on. - * @returns {EncryptedUint128} - The encrypted value serialized as Uint8Array. - */ -const encrypt_uint128 = (value, publicKey, securityZone = 0) => { - if (typeof value === "string") { - value = toBigInt(fromHexString(value)); - } - else { - value = value; - } - const encrypted = CompactFheUint128.encrypt_with_compact_public_key(value, publicKey); - return { - data: encrypted.serialize(), - securityZone, - }; -}; -/** - * Encrypts a Uint256 value using TFHE. - * @param {bigint} value - The Uint256 value to encrypt. - * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. - * @param securityZone - The security zone to encrypt the value on. - * @returns {EncryptedUint256} - The encrypted value serialized as Uint8Array. - */ -const encrypt_uint256 = (value, publicKey, securityZone = 0) => { - if (typeof value === "string") { - value = toBigInt(fromHexString(value)); - } - else { - value = value; - } - const encrypted = CompactFheUint256.encrypt_with_compact_public_key(value, publicKey); - return { - data: encrypted.serialize(), - securityZone, - }; -}; -/** - * Encrypts a Address value using TFHE. - * @param {bigint} value - The Address (Uint160) value to encrypt. - * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. - * @param securityZone - The security zone to encrypt the address on. - * @returns {EncryptedAddress} - The encrypted value serialized as Uint8Array. - */ -const encrypt_address = (value, publicKey, securityZone = 0) => { - if (typeof value === "string") { - value = toBigInt(fromHexString(value)); - } - else { - value = value; - } - const encrypted = CompactFheUint160.encrypt_with_compact_public_key(value, publicKey); - return { - data: encrypted.serialize(), - securityZone, - }; -}; -/** - * Encrypts a numeric value using TFHE according to the specified encryption type. - * @param {number} value - The numeric value to encrypt. - * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. - * @param {EncryptionTypes} type - The encryption type (uint8, uint16, uint32). - * @param securityZone - The security zone to encrypt the value on. - * @returns {Uint8Array} - The encrypted value serialized as Uint8Array. - * @throws {Error} - Throws an error if an invalid type is specified. - */ -const encrypt$1 = (value, publicKey, type = EncryptionTypes.uint8, securityZone = 0) => { - switch (type) { - case EncryptionTypes.bool: - return encrypt_bool(!!value, publicKey, securityZone); - case EncryptionTypes.uint8: - return encrypt_uint8(value, publicKey, securityZone); - case EncryptionTypes.uint16: - return encrypt_uint16(value, publicKey, securityZone); - case EncryptionTypes.uint32: - return encrypt_uint32(value, publicKey, securityZone); - case EncryptionTypes.uint64: - return encrypt_uint64(value.toString(16), publicKey, securityZone); - case EncryptionTypes.uint128: - return encrypt_uint128(value.toString(16), publicKey, securityZone); - case EncryptionTypes.uint256: - return encrypt_uint256(value.toString(16), publicKey, securityZone); - case EncryptionTypes.address: - return encrypt_address(value.toString(16), publicKey, securityZone); - default: - throw new Error("Invalid type"); - } -}; - -// INFO: The existing `GetFhePublicKey` function has been replaced with `InitFhevm` -// `GetFhePublicKey` didn't allow security zones to be set, and was overloaded with initializing the Fhevm -// Public key fetching has been moved to the Async and Sync FhenixClient constructors (they handle it slightly differently) -// - arch 2024-08-28 -const InitFhevm = async () => { - // `asyncInitFhevm` in `/sdk/fhe/fhe.ts` in node env (noop) - // `asyncInitFhevm` in `/sdk/fhe/fhe-browser.ts` in browser env (init wasm) - await asyncInitFhevm(); -}; - -class FhenixClientBase { - /** - * Creates an instance of FhenixClient. - * Initializes the fhevm library if needed and retrieves the public key for encryption from the provider. - * @param {InstanceParams} params - Parameters to initialize the client. - */ - constructor(params) { - this.permits = {}; - isPlainObject$1(params); - const { provider } = params; - this.provider = provider; - if (!this.provider) { - throw new Error("Failed to initialize Fhenix Client - must include a web3 provider"); - } - } - // Unsealing Method - /** - * Unseals an encrypted message using the stored permit for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} ciphertext - The encrypted message to unseal. - * @param {string} account - The account attached to existing permits. - * @returns bigint - The unsealed message. - */ - unseal(contractAddress, ciphertext, account) { - isAddress$1(contractAddress); - isString(ciphertext); - const permit = this.getPermit(contractAddress, account); - if (permit == null) { - throw new Error(`Missing keypair for ${contractAddress}`); - } - return this.permits[contractAddress].sealingKey.unseal(ciphertext); - } - // Permit Management Methods - /** - * Creates a new permit for a specific contract address. Also saves the permit to localstorage (if available) - * @param {string} contractAddress - The address of the contract. - * @param {SupportedProvider} provider - The provider from which to sign the permit - must container a signer. - * @param signer - the signer to use to sign the permit if provider does not support signing (e.g. hardhat) - * @returns Permit - The permit associated with the contract address. - * - * @throws {Error} - If the provider does not contain a signer, or if a provider is not set - */ - async generatePermit(contractAddress, provider, signer) { - if (!provider && this.provider === undefined) { - throw new Error("error getting provider"); - } - const permit = await generatePermit(contractAddress, provider || this.provider, signer); - // Permit has already been put into local storage, it can be inserted directly into `this.permits` - this.permits[contractAddress] = permit; - return permit; - } - /** - * Reusable permit loading and storing from local storage - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The address of the user account. - * @returns {Permit | undefined} - The permit loaded from local storage - */ - _loadPermitFromLocalStorage(contractAddress, account) { - const fromLs = getPermitFromLocalstorage(contractAddress, account); - if (fromLs == null) - return undefined; - this.permits[contractAddress] = fromLs; - return fromLs; - } - /** - * Retrieves the stored permit for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The address of the user account. - * @returns {Permit} - The permit associated with the contract address. - */ - getPermit(contractAddress, account) { - const permitFromLs = this._loadPermitFromLocalStorage(contractAddress, account); - if (permitFromLs != null) - return permitFromLs; - return this.permits[contractAddress]; - } - /** - * Retrieves all stored permits for a specific account. - * @param {string} account - The address of the user account. - * @returns {Record} - The permits associated with each contract address. - */ - loadAllPermitsFromLocalStorage(account) { - const existingPermits = getAllExistingPermits(account); - Object.keys(existingPermits).forEach((contractAddress) => { - this.permits[contractAddress] = existingPermits[contractAddress]; - }); - return this.permits; - } - /** - * Stores a permit for a specific contract address. Will overwrite any existing permit for the same contract address. - * Does not store the permit in localstorage (should it?) - * @param {Permit} permit - The permit to store. - */ - storePermit(permit, account) { - storePermitInLocalStorage(permit, account); - this.permits[permit.contractAddress] = permit; - } - /** - * Removes a stored permit for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The account address of the permit. - */ - removePermit(contractAddress, account) { - if (this.hasPermit(contractAddress, account)) { - removePermitFromLocalstorage(contractAddress, account); - delete this.permits[contractAddress]; - } - } - /** - * Checks if a permit exists for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The account address attached to the stored permits - * @returns {boolean} - True if a permit exists, false otherwise. - */ - hasPermit(contractAddress, account) { - const permitFromLs = this._loadPermitFromLocalStorage(contractAddress, account); - if (permitFromLs != null) - return true; - return this.permits[contractAddress] != null; - } - /** - * Exports all stored permits. - * @returns {ContractPermits} - All stored permits. - */ - exportPermits() { - return this.permits; - } - extractPermitPermission(permit) { - return { - signature: permit.signature, - publicKey: permit.publicKey, - }; - } - // Private helper methods - /** - * Retrieves the FHE public key from the provider. - * @param {SupportedProvider} provider - The provider from which to retrieve the key. - * @param securityZone - The security zone for which to retrieve the key (default 0). - * @returns {Promise} - The retrieved public key. - */ - static async getFheKeyFromProvider(provider, securityZone = 0) { - const requestMethod = determineRequestMethod(provider); - const funcSig = "0x1b1b484e"; // cast sig "getNetworkPublicKey(int32)" - const callData = funcSig + toABIEncodedUint32(securityZone); - const callParams = [{ to: FheOpsAddress, data: callData }, "latest"]; - const publicKeyP = requestMethod(provider, "eth_call", callParams).catch((err) => { - throw Error(`Error while requesting network public key from provider for security zone ${securityZone}: ${JSON.stringify(err)}`); - }); - const publicKey = await publicKeyP; - if (typeof publicKey !== "string") { - throw new Error("Error using publicKey from provider: expected string"); - } - if (publicKey.length < PUBLIC_KEY_LENGTH_MIN) { - throw new Error(`Error initializing fhenixjs; got shorter than expected public key: ${publicKey.length}`); - } - // magically know how to decode rlp or w/e returns from the evm json-rpc - const buff = fromHexString(publicKey.slice(130)); - try { - return TfheCompactPublicKey.deserialize(buff); - } - catch (err) { - throw new Error(`Error deserializing public key ${err}`); - } - } -} -/** - * The FhenixClient class provides functionalities to interact with a FHE (Fully Homomorphic Encryption) system. - * It includes methods for encryption, unsealing, and managing permits. - */ -class FhenixClient extends FhenixClientBase { - /** - * Creates an instance of FhenixClient. - * Initializes the fhevm library if needed and retrieves the public key for encryption from the provider. - * @param {InstanceParams} params - Parameters to initialize the client. - */ - constructor(params) { - super(params); - this.defaultSecurityZone = 0; - this.fhePublicKeys = []; - InitFhevm().catch((err) => { - if (params.ignoreErrors) { - return undefined; - } - else { - throw new Error(`Failed to initialize fhenixjs - is the network FHE-enabled? ${err}`); - } - }); - // In the future the default array can be updated to include additional security zones - // This is not strictly necessary, as the pubKey for additional zones can also be fetched during an encryption. - // By default, doesn't skip fetching the public key - if (params.skipPubKeyFetch !== true) { - this.fhePublicKeys = [this.defaultSecurityZone].map((securityZone) => FhenixClientBase.getFheKeyFromProvider(params.provider, securityZone)); - } - } - async _getPublicKey(securityZone) { - let fhePublicKey = await this.fhePublicKeys[securityZone]; - if (!fhePublicKey) { - this.fhePublicKeys[securityZone] = FhenixClientBase.getFheKeyFromProvider(this.provider, securityZone); - fhePublicKey = await this.fhePublicKeys[securityZone]; - if (!fhePublicKey) { - throw new Error(`Public key for security zone ${securityZone} somehow not initialized`); - } - } - return fhePublicKey; - } - async encrypt_bool(value, securityZone = 0) { - const fhePublicKey = await this._getPublicKey(securityZone); - return encrypt_bool(value, fhePublicKey, securityZone); - } - async encrypt_uint8(value, securityZone = 0) { - isNumber(value); - const fhePublicKey = await this._getPublicKey(securityZone); - ValidateUintInRange(value, MAX_UINT8, 0); - return encrypt_uint8(value, fhePublicKey, securityZone); - } - async encrypt_uint16(value, securityZone = 0) { - isNumber(value); - const fhePublicKey = await this._getPublicKey(securityZone); - ValidateUintInRange(value, MAX_UINT16, 0); - return encrypt_uint16(value, fhePublicKey, securityZone); - } - async encrypt_uint32(value, securityZone = 0) { - isNumber(value); - const fhePublicKey = await this._getPublicKey(securityZone); - ValidateUintInRange(value, MAX_UINT32, 0); - return encrypt_uint32(value, fhePublicKey, securityZone); - } - async encrypt_uint64(value, securityZone = 0) { - isBigIntOrHexString(value); - const fhePublicKey = await this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return encrypt_uint64(value, fhePublicKey, securityZone); - } - async encrypt_uint128(value, securityZone = 0) { - isBigIntOrHexString(value); - const fhePublicKey = await this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return encrypt_uint128(value, fhePublicKey, securityZone); - } - async encrypt_uint256(value, securityZone = 0) { - isBigIntOrHexString(value); - const fhePublicKey = await this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return encrypt_uint256(value, fhePublicKey, securityZone); - } - async encrypt_address(value, securityZone = 0) { - isBigIntOrHexString(value); - const fhePublicKey = await this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return encrypt_address(value, fhePublicKey, securityZone); - } - async encrypt(value, type, securityZone = 0) { - isNumber(value); - let outputSize = type; - const fhePublicKey = await this._getPublicKey(securityZone); - // choose the most efficient ciphertext size if not selected - if (!outputSize) { - if (value < MAX_UINT8) { - outputSize = EncryptionTypes.uint8; - } - else if (value < MAX_UINT16) { - outputSize = EncryptionTypes.uint16; - } - else if (value < MAX_UINT32) { - outputSize = EncryptionTypes.uint32; - } - else { - throw new Error(`Encryption input must be smaller than ${MAX_UINT32}`); - } - } - switch (outputSize) { - case EncryptionTypes.uint8: - ValidateUintInRange(value, MAX_UINT8, 0); - break; - case EncryptionTypes.uint16: - ValidateUintInRange(value, MAX_UINT16, 0); - break; - case EncryptionTypes.uint32: - ValidateUintInRange(value, MAX_UINT32, 0); - break; - } - return encrypt$1(value, fhePublicKey, type, securityZone); - } -} -/** - * The FhenixClientSync class provides functionalities to interact with a FHE (Fully Homomorphic Encryption) system. - * It includes methods for encryption, unsealing, and managing permits. - * - * The Sync FhenixClient allows the `client.encrypt_()` functions to be performed synchronously - * - * @Note The Sync FhenixClient must be created using `await FhenixClientSync.create({provider})` instead of `new FhenixClient({provider})` - */ -class FhenixClientSync extends FhenixClientBase { - constructor(params) { - super(params); - this.fhePublicKeys = []; - this.fhePublicKeys = params.fhePublicKeys; - } - static async create(params) { - isPlainObject$1(params); - if (params.skipPubKeyFetch === true) { - console.warn("warning: FhenixClientSync doesn't support skipping public key fetching on creation"); - } - const { provider, ignoreErrors, securityZones = [0] } = params; - if (!provider) { - throw new Error("Failed to initialize Fhenix Client - must include a web3 provider"); - } - await InitFhevm().catch((err) => { - if (ignoreErrors) { - return undefined; - } - else { - throw new Error(`Failed to initialize fhenixjs - is the network FHE-enabled? ${err}`); - } - }); - const fhePublicKeys = await Promise.all(securityZones.map((securityZone) => FhenixClientBase.getFheKeyFromProvider(params.provider, securityZone))); - return new FhenixClientSync({ ...params, fhePublicKeys }); - } - // Encryption Methods - _getPublicKey(securityZone) { - const fhePublicKey = this.fhePublicKeys[securityZone]; - if (!fhePublicKey) { - throw new Error(`Public key for security zone ${securityZone} not initialized`); - } - return fhePublicKey; - } - encrypt_bool(value, securityZone = 0) { - const fhePublicKey = this._getPublicKey(securityZone); - return encrypt_bool(value, fhePublicKey, securityZone); - } - encrypt_uint8(value, securityZone = 0) { - isNumber(value); - const fhePublicKey = this._getPublicKey(securityZone); - ValidateUintInRange(value, MAX_UINT8, 0); - return encrypt_uint8(value, fhePublicKey, securityZone); - } - encrypt_uint16(value, securityZone = 0) { - isNumber(value); - const fhePublicKey = this._getPublicKey(securityZone); - ValidateUintInRange(value, MAX_UINT16, 0); - return encrypt_uint16(value, fhePublicKey, securityZone); - } - encrypt_uint32(value, securityZone = 0) { - isNumber(value); - const fhePublicKey = this._getPublicKey(securityZone); - ValidateUintInRange(value, MAX_UINT32, 0); - return encrypt_uint32(value, fhePublicKey, securityZone); - } - encrypt_uint64(value, securityZone = 0) { - isBigIntOrHexString(value); - const fhePublicKey = this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return encrypt_uint64(value, fhePublicKey, securityZone); - } - encrypt_uint128(value, securityZone = 0) { - isBigIntOrHexString(value); - const fhePublicKey = this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return encrypt_uint128(value, fhePublicKey, securityZone); - } - encrypt_uint256(value, securityZone = 0) { - isBigIntOrHexString(value); - const fhePublicKey = this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return encrypt_uint256(value, fhePublicKey, securityZone); - } - encrypt_address(value, securityZone = 0) { - isBigIntOrHexString(value); - const fhePublicKey = this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return encrypt_address(value, fhePublicKey, securityZone); - } - encrypt(value, type, securityZone = 0) { - isNumber(value); - let outputSize = type; - const fhePublicKey = this._getPublicKey(securityZone); - // choose the most efficient ciphertext size if not selected - if (!outputSize) { - if (value < MAX_UINT8) { - outputSize = EncryptionTypes.uint8; - } - else if (value < MAX_UINT16) { - outputSize = EncryptionTypes.uint16; - } - else if (value < MAX_UINT32) { - outputSize = EncryptionTypes.uint32; - } - else { - throw new Error(`Encryption input must be smaller than ${MAX_UINT32}`); - } - } - switch (outputSize) { - case EncryptionTypes.uint8: - ValidateUintInRange(value, MAX_UINT8, 0); - break; - case EncryptionTypes.uint16: - ValidateUintInRange(value, MAX_UINT16, 0); - break; - case EncryptionTypes.uint32: - ValidateUintInRange(value, MAX_UINT32, 0); - break; - } - return encrypt$1(value, fhePublicKey, type, securityZone); - } -} - -const createTfheKeypair = () => { - // const block_params = new ShortintParameters( - // ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS, - // ); - const config = TfheConfigBuilder.default() - //..(block_params) - .build(); - const clientKey = TfheClientKey.generate(config); - let publicKey = TfheCompactPublicKey.new(clientKey); - publicKey = TfheCompactPublicKey.deserialize(publicKey.serialize()); - return { clientKey, publicKey }; -}; -const createTfhePublicKey = () => { - const { publicKey } = createTfheKeypair(); - return toHexString(publicKey.serialize()); -}; -const toHexString = (bytes) => bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, "0"), ""); - -/* Do NOT modify this file; see /src.ts/_admin/update-version.ts */ -/** - * The current version of Ethers. - */ -const version = "6.13.1"; - -/** - * Property helper functions. - * - * @_subsection api/utils:Properties [about-properties] - */ -/** - * Assigns the %%values%% to %%target%% as read-only values. - * - * It %%types%% is specified, the values are checked. - */ -function defineProperties(target, values, types) { - for (let key in values) { - let value = values[key]; - Object.defineProperty(target, key, { enumerable: true, value, writable: false }); - } -} - -/** - * All errors in ethers include properties to ensure they are both - * human-readable (i.e. ``.message``) and machine-readable (i.e. ``.code``). - * - * The [[isError]] function can be used to check the error ``code`` and - * provide a type guard for the properties present on that error interface. - * - * @_section: api/utils/errors:Errors [about-errors] - */ -function stringify(value) { - if (value == null) { - return "null"; - } - if (Array.isArray(value)) { - return "[ " + (value.map(stringify)).join(", ") + " ]"; - } - if (value instanceof Uint8Array) { - const HEX = "0123456789abcdef"; - let result = "0x"; - for (let i = 0; i < value.length; i++) { - result += HEX[value[i] >> 4]; - result += HEX[value[i] & 0xf]; - } - return result; - } - if (typeof (value) === "object" && typeof (value.toJSON) === "function") { - return stringify(value.toJSON()); - } - switch (typeof (value)) { - case "boolean": - case "symbol": - return value.toString(); - case "bigint": - return BigInt(value).toString(); - case "number": - return (value).toString(); - case "string": - return JSON.stringify(value); - case "object": { - const keys = Object.keys(value); - keys.sort(); - return "{ " + keys.map((k) => `${stringify(k)}: ${stringify(value[k])}`).join(", ") + " }"; - } - } - return `[ COULD NOT SERIALIZE ]`; -} -/** - * Returns a new Error configured to the format ethers emits errors, with - * the %%message%%, [[api:ErrorCode]] %%code%% and additional properties - * for the corresponding EthersError. - * - * Each error in ethers includes the version of ethers, a - * machine-readable [[ErrorCode]], and depending on %%code%%, additional - * required properties. The error message will also include the %%message%%, - * ethers version, %%code%% and all additional properties, serialized. - */ -function makeError(message, code, info) { - let shortMessage = message; - { - const details = []; - if (info) { - if ("message" in info || "code" in info || "name" in info) { - throw new Error(`value will overwrite populated values: ${stringify(info)}`); - } - for (const key in info) { - if (key === "shortMessage") { - continue; - } - const value = (info[key]); - // try { - details.push(key + "=" + stringify(value)); - // } catch (error: any) { - // console.log("MMM", error.message); - // details.push(key + "=[could not serialize object]"); - // } - } - } - details.push(`code=${code}`); - details.push(`version=${version}`); - if (details.length) { - message += " (" + details.join(", ") + ")"; - } - } - let error; - switch (code) { - case "INVALID_ARGUMENT": - error = new TypeError(message); - break; - case "NUMERIC_FAULT": - case "BUFFER_OVERRUN": - error = new RangeError(message); - break; - default: - error = new Error(message); - } - defineProperties(error, { code }); - if (info) { - Object.assign(error, info); - } - if (error.shortMessage == null) { - defineProperties(error, { shortMessage }); - } - return error; -} -/** - * Throws an EthersError with %%message%%, %%code%% and additional error - * %%info%% when %%check%% is falsish.. - * - * @see [[api:makeError]] - */ -function assert(check, message, code, info) { - if (!check) { - throw makeError(message, code, info); - } -} -/** - * A simple helper to simply ensuring provided arguments match expected - * constraints, throwing if not. - * - * In TypeScript environments, the %%check%% has been asserted true, so - * any further code does not need additional compile-time checks. - */ -function assertArgument(check, message, name, value) { - assert(check, message, "INVALID_ARGUMENT", { argument: name, value: value }); -} -["NFD", "NFC", "NFKD", "NFKC"].reduce((accum, form) => { - try { - // General test for normalize - /* c8 ignore start */ - if ("test".normalize(form) !== "test") { - throw new Error("bad"); - } - ; - /* c8 ignore stop */ - if (form === "NFD") { - const check = String.fromCharCode(0xe9).normalize("NFD"); - const expected = String.fromCharCode(0x65, 0x0301); - /* c8 ignore start */ - if (check !== expected) { - throw new Error("broken"); - } - /* c8 ignore stop */ - } - accum.push(form); - } - catch (error) { } - return accum; -}, []); - -/** - * Some data helpers. - * - * - * @_subsection api/utils:Data Helpers [about-data] - */ -function _getBytes(value, name, copy) { - if (value instanceof Uint8Array) { - return value; - } - if (typeof (value) === "string" && value.match(/^0x(?:[0-9a-f][0-9a-f])*$/i)) { - const result = new Uint8Array((value.length - 2) / 2); - let offset = 2; - for (let i = 0; i < result.length; i++) { - result[i] = parseInt(value.substring(offset, offset + 2), 16); - offset += 2; - } - return result; - } - assertArgument(false, "invalid BytesLike value", name || "value", value); -} -/** - * Get a typed Uint8Array for %%value%%. If already a Uint8Array - * the original %%value%% is returned; if a copy is required use - * [[getBytesCopy]]. - * - * @see: getBytesCopy - */ -function getBytes(value, name) { - return _getBytes(value, name); -} -const HexCharacters = "0123456789abcdef"; -/** - * Returns a [[DataHexString]] representation of %%data%%. - */ -function hexlify(data) { - const bytes = getBytes(data); - let result = "0x"; - for (let i = 0; i < bytes.length; i++) { - const v = bytes[i]; - result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f]; - } - return result; -} - -/** - * Using strings in Ethereum (or any security-basd system) requires - * additional care. These utilities attempt to mitigate some of the - * safety issues as well as provide the ability to recover and analyse - * strings. - * - * @_subsection api/utils:Strings and UTF-8 [about-strings] - */ -// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array -/** - * Returns the UTF-8 byte representation of %%str%%. - * - * If %%form%% is specified, the string is normalized. - */ -function toUtf8Bytes(str, form) { - assertArgument(typeof (str) === "string", "invalid string value", "str", str); - let result = []; - for (let i = 0; i < str.length; i++) { - const c = str.charCodeAt(i); - if (c < 0x80) { - result.push(c); - } - else if (c < 0x800) { - result.push((c >> 6) | 0xc0); - result.push((c & 0x3f) | 0x80); - } - else if ((c & 0xfc00) == 0xd800) { - i++; - const c2 = str.charCodeAt(i); - assertArgument(i < str.length && ((c2 & 0xfc00) === 0xdc00), "invalid surrogate pair", "str", str); - // Surrogate Pair - const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff); - result.push((pair >> 18) | 0xf0); - result.push(((pair >> 12) & 0x3f) | 0x80); - result.push(((pair >> 6) & 0x3f) | 0x80); - result.push((pair & 0x3f) | 0x80); - } - else { - result.push((c >> 12) | 0xe0); - result.push(((c >> 6) & 0x3f) | 0x80); - result.push((c & 0x3f) | 0x80); - } - } - return new Uint8Array(result); -} - -function number(n) { - if (!Number.isSafeInteger(n) || n < 0) - throw new Error(`Wrong positive integer: ${n}`); -} -function bytes(b, ...lengths) { - if (!(b instanceof Uint8Array)) - throw new Error('Expected Uint8Array'); - if (lengths.length > 0 && !lengths.includes(b.length)) - throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`); -} -function exists(instance, checkFinished = true) { - if (instance.destroyed) - throw new Error('Hash instance has been destroyed'); - if (checkFinished && instance.finished) - throw new Error('Hash#digest() has already been called'); -} -function output(out, instance) { - bytes(out); - const min = instance.outputLen; - if (out.length < min) { - throw new Error(`digestInto() expects output buffer of length at least ${min}`); - } -} - -/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */ -// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+. -// node.js versions earlier than v19 don't declare it in global scope. -// For node.js, package.json#exports field mapping rewrites import -// from `crypto` to `cryptoNode`, which imports native module. -// Makes the utils un-importable in browsers without a bundler. -// Once node.js 18 is deprecated, we can just drop the import. -const u8a = (a) => a instanceof Uint8Array; -const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4)); -// big-endian hardware is rare. Just in case someone still decides to run hashes: -// early-throw an error because we don't support BE yet. -const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44; -if (!isLE) - throw new Error('Non little-endian hardware is not supported'); -/** - * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99]) - */ -function utf8ToBytes(str) { - if (typeof str !== 'string') - throw new Error(`utf8ToBytes expected string, got ${typeof str}`); - return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809 -} -/** - * Normalizes (non-hex) string or Uint8Array to Uint8Array. - * Warning: when Uint8Array is passed, it would NOT get copied. - * Keep in mind for future mutable operations. - */ -function toBytes(data) { - if (typeof data === 'string') - data = utf8ToBytes(data); - if (!u8a(data)) - throw new Error(`expected Uint8Array, got ${typeof data}`); - return data; -} -// For runtime check if class implements interface -class Hash { - // Safe version that clones internal state - clone() { - return this._cloneInto(); - } -} -function wrapConstructor(hashCons) { - const hashC = (msg) => hashCons().update(toBytes(msg)).digest(); - const tmp = hashCons(); - hashC.outputLen = tmp.outputLen; - hashC.blockLen = tmp.blockLen; - hashC.create = () => hashCons(); - return hashC; -} - -const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1); -const _32n = /* @__PURE__ */ BigInt(32); -// We are not using BigUint64Array, because they are extremely slow as per 2022 -function fromBig(n, le = false) { - if (le) - return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) }; - return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 }; -} -function split(lst, le = false) { - let Ah = new Uint32Array(lst.length); - let Al = new Uint32Array(lst.length); - for (let i = 0; i < lst.length; i++) { - const { h, l } = fromBig(lst[i], le); - [Ah[i], Al[i]] = [h, l]; - } - return [Ah, Al]; -} -// Left rotate for Shift in [1, 32) -const rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s)); -const rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s)); -// Left rotate for Shift in (32, 64), NOTE: 32 is special case. -const rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s)); -const rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s)); - -// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size. -// It's called a sponge function. -// Various per round constants calculations -const [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []]; -const _0n = /* @__PURE__ */ BigInt(0); -const _1n = /* @__PURE__ */ BigInt(1); -const _2n = /* @__PURE__ */ BigInt(2); -const _7n = /* @__PURE__ */ BigInt(7); -const _256n = /* @__PURE__ */ BigInt(256); -const _0x71n = /* @__PURE__ */ BigInt(0x71); -for (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) { - // Pi - [x, y] = [y, (2 * x + 3 * y) % 5]; - SHA3_PI.push(2 * (5 * y + x)); - // Rotational - SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64); - // Iota - let t = _0n; - for (let j = 0; j < 7; j++) { - R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n; - if (R & _2n) - t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n); - } - _SHA3_IOTA.push(t); -} -const [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true); -// Left rotation (without 0, 32, 64) -const rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s)); -const rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s)); -// Same as keccakf1600, but allows to skip some rounds -function keccakP(s, rounds = 24) { - const B = new Uint32Array(5 * 2); - // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js) - for (let round = 24 - rounds; round < 24; round++) { - // Theta θ - for (let x = 0; x < 10; x++) - B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40]; - for (let x = 0; x < 10; x += 2) { - const idx1 = (x + 8) % 10; - const idx0 = (x + 2) % 10; - const B0 = B[idx0]; - const B1 = B[idx0 + 1]; - const Th = rotlH(B0, B1, 1) ^ B[idx1]; - const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1]; - for (let y = 0; y < 50; y += 10) { - s[x + y] ^= Th; - s[x + y + 1] ^= Tl; - } - } - // Rho (ρ) and Pi (π) - let curH = s[2]; - let curL = s[3]; - for (let t = 0; t < 24; t++) { - const shift = SHA3_ROTL[t]; - const Th = rotlH(curH, curL, shift); - const Tl = rotlL(curH, curL, shift); - const PI = SHA3_PI[t]; - curH = s[PI]; - curL = s[PI + 1]; - s[PI] = Th; - s[PI + 1] = Tl; - } - // Chi (χ) - for (let y = 0; y < 50; y += 10) { - for (let x = 0; x < 10; x++) - B[x] = s[y + x]; - for (let x = 0; x < 10; x++) - s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10]; - } - // Iota (ι) - s[0] ^= SHA3_IOTA_H[round]; - s[1] ^= SHA3_IOTA_L[round]; - } - B.fill(0); -} -class Keccak extends Hash { - // NOTE: we accept arguments in bytes instead of bits here. - constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) { - super(); - this.blockLen = blockLen; - this.suffix = suffix; - this.outputLen = outputLen; - this.enableXOF = enableXOF; - this.rounds = rounds; - this.pos = 0; - this.posOut = 0; - this.finished = false; - this.destroyed = false; - // Can be passed from user as dkLen - number(outputLen); - // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes - if (0 >= this.blockLen || this.blockLen >= 200) - throw new Error('Sha3 supports only keccak-f1600 function'); - this.state = new Uint8Array(200); - this.state32 = u32(this.state); - } - keccak() { - keccakP(this.state32, this.rounds); - this.posOut = 0; - this.pos = 0; - } - update(data) { - exists(this); - const { blockLen, state } = this; - data = toBytes(data); - const len = data.length; - for (let pos = 0; pos < len;) { - const take = Math.min(blockLen - this.pos, len - pos); - for (let i = 0; i < take; i++) - state[this.pos++] ^= data[pos++]; - if (this.pos === blockLen) - this.keccak(); - } - return this; - } - finish() { - if (this.finished) - return; - this.finished = true; - const { state, suffix, pos, blockLen } = this; - // Do the padding - state[pos] ^= suffix; - if ((suffix & 0x80) !== 0 && pos === blockLen - 1) - this.keccak(); - state[blockLen - 1] ^= 0x80; - this.keccak(); - } - writeInto(out) { - exists(this, false); - bytes(out); - this.finish(); - const bufferOut = this.state; - const { blockLen } = this; - for (let pos = 0, len = out.length; pos < len;) { - if (this.posOut >= blockLen) - this.keccak(); - const take = Math.min(blockLen - this.posOut, len - pos); - out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos); - this.posOut += take; - pos += take; - } - return out; - } - xofInto(out) { - // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF - if (!this.enableXOF) - throw new Error('XOF is not possible for this instance'); - return this.writeInto(out); - } - xof(bytes) { - number(bytes); - return this.xofInto(new Uint8Array(bytes)); - } - digestInto(out) { - output(out, this); - if (this.finished) - throw new Error('digest() was already called'); - this.writeInto(out); - this.destroy(); - return out; - } - digest() { - return this.digestInto(new Uint8Array(this.outputLen)); - } - destroy() { - this.destroyed = true; - this.state.fill(0); - } - _cloneInto(to) { - const { blockLen, suffix, outputLen, rounds, enableXOF } = this; - to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds)); - to.state32.set(this.state32); - to.pos = this.pos; - to.posOut = this.posOut; - to.finished = this.finished; - to.rounds = rounds; - // Suffix can change in cSHAKE - to.suffix = suffix; - to.outputLen = outputLen; - to.enableXOF = enableXOF; - to.destroyed = this.destroyed; - return to; - } -} -const gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen)); -/** - * keccak-256 hash function. Different from SHA3-256. - * @param message - that would be hashed - */ -const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8); - -/** - * Cryptographic hashing functions - * - * @_subsection: api/crypto:Hash Functions [about-crypto-hashing] - */ -let locked = false; -const _keccak256 = function (data) { - return keccak_256(data); -}; -let __keccak256 = _keccak256; -/** - * Compute the cryptographic KECCAK256 hash of %%data%%. - * - * The %%data%% **must** be a data representation, to compute the - * hash of UTF-8 data use the [[id]] function. - * - * @returns DataHexstring - * @example: - * keccak256("0x") - * //_result: - * - * keccak256("0x1337") - * //_result: - * - * keccak256(new Uint8Array([ 0x13, 0x37 ])) - * //_result: - * - * // Strings are assumed to be DataHexString, otherwise it will - * // throw. To hash UTF-8 data, see the note above. - * keccak256("Hello World") - * //_error: - */ -function keccak256(_data) { - const data = getBytes(_data, "data"); - return hexlify(__keccak256(data)); -} -keccak256._ = _keccak256; -keccak256.lock = function () { locked = true; }; -keccak256.register = function (func) { - if (locked) { - throw new TypeError("keccak256 is locked"); - } - __keccak256 = func; -}; -Object.freeze(keccak256); - -/** - * A constant for the zero address. - * - * (**i.e.** ``"0x0000000000000000000000000000000000000000"``) - */ -const ZeroAddress = "0x0000000000000000000000000000000000000000"; - -const BN_0 = BigInt(0); -const BN_36 = BigInt(36); -function getChecksumAddress(address) { - // if (!isHexString(address, 20)) { - // logger.throwArgumentError("invalid address", "address", address); - // } - address = address.toLowerCase(); - const chars = address.substring(2).split(""); - const expanded = new Uint8Array(40); - for (let i = 0; i < 40; i++) { - expanded[i] = chars[i].charCodeAt(0); - } - const hashed = getBytes(keccak256(expanded)); - for (let i = 0; i < 40; i += 2) { - if ((hashed[i >> 1] >> 4) >= 8) { - chars[i] = chars[i].toUpperCase(); - } - if ((hashed[i >> 1] & 0x0f) >= 8) { - chars[i + 1] = chars[i + 1].toUpperCase(); - } - } - return "0x" + chars.join(""); -} -// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number -// Create lookup table -const ibanLookup = {}; -for (let i = 0; i < 10; i++) { - ibanLookup[String(i)] = String(i); -} -for (let i = 0; i < 26; i++) { - ibanLookup[String.fromCharCode(65 + i)] = String(10 + i); -} -// How many decimal digits can we process? (for 64-bit float, this is 15) -// i.e. Math.floor(Math.log10(Number.MAX_SAFE_INTEGER)); -const safeDigits = 15; -function ibanChecksum(address) { - address = address.toUpperCase(); - address = address.substring(4) + address.substring(0, 2) + "00"; - let expanded = address.split("").map((c) => { return ibanLookup[c]; }).join(""); - // Javascript can handle integers safely up to 15 (decimal) digits - while (expanded.length >= safeDigits) { - let block = expanded.substring(0, safeDigits); - expanded = parseInt(block, 10) % 97 + expanded.substring(block.length); - } - let checksum = String(98 - (parseInt(expanded, 10) % 97)); - while (checksum.length < 2) { - checksum = "0" + checksum; - } - return checksum; -} -const Base36 = (function () { - const result = {}; - for (let i = 0; i < 36; i++) { - const key = "0123456789abcdefghijklmnopqrstuvwxyz"[i]; - result[key] = BigInt(i); - } - return result; -})(); -function fromBase36(value) { - value = value.toLowerCase(); - let result = BN_0; - for (let i = 0; i < value.length; i++) { - result = result * BN_36 + Base36[value[i]]; - } - return result; -} -/** - * Returns a normalized and checksumed address for %%address%%. - * This accepts non-checksum addresses, checksum addresses and - * [[getIcapAddress]] formats. - * - * The checksum in Ethereum uses the capitalization (upper-case - * vs lower-case) of the characters within an address to encode - * its checksum, which offers, on average, a checksum of 15-bits. - * - * If %%address%% contains both upper-case and lower-case, it is - * assumed to already be a checksum address and its checksum is - * validated, and if the address fails its expected checksum an - * error is thrown. - * - * If you wish the checksum of %%address%% to be ignore, it should - * be converted to lower-case (i.e. ``.toLowercase()``) before - * being passed in. This should be a very rare situation though, - * that you wish to bypass the safegaurds in place to protect - * against an address that has been incorrectly copied from another - * source. - * - * @example: - * // Adds the checksum (via upper-casing specific letters) - * getAddress("0x8ba1f109551bd432803012645ac136ddd64dba72") - * //_result: - * - * // Converts ICAP address and adds checksum - * getAddress("XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36"); - * //_result: - * - * // Throws an error if an address contains mixed case, - * // but the checksum fails - * getAddress("0x8Ba1f109551bD432803012645Ac136ddd64DBA72") - * //_error: - */ -function getAddress(address) { - assertArgument(typeof (address) === "string", "invalid address", "address", address); - if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) { - // Missing the 0x prefix - if (!address.startsWith("0x")) { - address = "0x" + address; - } - const result = getChecksumAddress(address); - // It is a checksummed address with a bad checksum - assertArgument(!address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) || result === address, "bad address checksum", "address", address); - return result; - } - // Maybe ICAP? (we only support direct mode) - if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) { - // It is an ICAP address with a bad checksum - assertArgument(address.substring(2, 4) === ibanChecksum(address), "bad icap checksum", "address", address); - let result = fromBase36(address.substring(4)).toString(16); - while (result.length < 40) { - result = "0" + result; - } - return getChecksumAddress("0x" + result); - } - assertArgument(false, "invalid address", "address", address); -} - -/** - * Returns true if %%value%% is a valid address. - * - * @example: - * // Valid address - * isAddress("0x8ba1f109551bD432803012645Ac136ddd64DBA72") - * //_result: - * - * // Valid ICAP address - * isAddress("XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36") - * //_result: - * - * // Invalid checksum - * isAddress("0x8Ba1f109551bD432803012645Ac136ddd64DBa72") - * //_result: - * - * // Invalid ICAP checksum - * isAddress("0x8Ba1f109551bD432803012645Ac136ddd64DBA72") - * //_result: - * - * // Not an address (an ENS name requires a provided and an - * // asynchronous API to access) - * isAddress("ricmoo.eth") - * //_result: - */ -function isAddress(value) { - try { - getAddress(value); - return true; - } - catch (error) { } - return false; -} - -/** - * A simple hashing function which operates on UTF-8 strings to - * compute an 32-byte identifier. - * - * This simply computes the [UTF-8 bytes](toUtf8Bytes) and computes - * the [[keccak256]]. - * - * @example: - * id("hello world") - * //_result: - */ -function id(value) { - return keccak256(toUtf8Bytes(value)); -} - -var FheUType; -(function (FheUType) { - FheUType[FheUType["bool"] = 13] = "bool"; - FheUType[FheUType["uint8"] = 0] = "uint8"; - FheUType[FheUType["uint16"] = 1] = "uint16"; - FheUType[FheUType["uint32"] = 2] = "uint32"; - FheUType[FheUType["uint64"] = 3] = "uint64"; - FheUType[FheUType["uint128"] = 4] = "uint128"; - FheUType[FheUType["uint256"] = 5] = "uint256"; - FheUType[FheUType["address"] = 12] = "address"; -})(FheUType || (FheUType = {})); -const FheUintUTypes = [ - FheUType.uint8, - FheUType.uint16, - FheUType.uint32, - FheUType.uint64, - FheUType.uint128, - FheUType.uint256, -]; -const FheAllUTypes = [ - FheUType.bool, - FheUType.uint8, - FheUType.uint16, - FheUType.uint32, - FheUType.uint64, - FheUType.uint128, - FheUType.uint256, - FheUType.address, -]; -const Encryptable = { - bool: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.bool }), - uint8: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint8 }), - uint16: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint16 }), - uint32: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint32 }), - uint64: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint64 }), - uint128: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint128 }), - uint256: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint256 }), - address: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.address }), -}; -// eslint-disable-next-line @typescript-eslint/no-explicit-any -function isEncryptableItem(value) { - return (typeof value === "object" && - value !== null && - ["string", "number", "bigint", "boolean"].includes(typeof value.data) && - typeof value.securityZone === "number" && - FheAllUTypes.includes(value.utype)); -} -// Determine if `value` is an instance of a `sealedItem` { data: string, utype: 0-5 | 12 | 13 } -// eslint-disable-next-line @typescript-eslint/no-explicit-any -function getAsSealedItem(value) { - if (Array.isArray(value) && - value.length === 2 && - typeof value[0] === "string" && - FheAllUTypes.includes(parseInt(`${value[1]}`))) - return { - data: value[0], - utype: value[1], - }; - if (typeof value === "object" && - value !== null && - typeof value.data === "string" && - FheAllUTypes.includes(value.utype)) - return value; - return undefined; -} -function isSealedBool(value) { - return parseInt(`${value.utype}`) === FheUType.bool; -} -function isSealedUint(value) { - return FheUintUTypes.includes(parseInt(`${value.utype}`)); -} -function isSealedAddress(value) { - return parseInt(`${value.utype}`) === FheUType.address; -} -const ResultErr = (error) => ({ - success: false, - data: null, - error, -}); -const ResultOk = (data) => ({ - success: true, - data, - error: null, -}); - -const PermitV2SignatureAllFields = [ - { name: "issuer", type: "address" }, - { name: "expiration", type: "uint64" }, - { name: "contracts", type: "address[]" }, - { name: "projects", type: "string[]" }, - { name: "recipient", type: "address" }, - { name: "validatorId", type: "uint256" }, - { name: "validatorContract", type: "address" }, - { name: "sealingKey", type: "bytes32" }, - { name: "issuerSignature", type: "bytes" }, -]; -const SignatureTypes = { - PermissionedV2IssuerSelf: [ - "issuer", - "expiration", - "contracts", - "projects", - "recipient", - "validatorId", - "validatorContract", - "sealingKey", - ], - PermissionedV2IssuerShared: [ - "issuer", - "expiration", - "contracts", - "projects", - "recipient", - "validatorId", - "validatorContract", - ], - PermissionedV2Recipient: [ - "sealingKey", - "issuerSignature", - ], -}; -const getSignatureTypesAndMessage = (primaryType, fields, values) => { - const types = { - [primaryType]: PermitV2SignatureAllFields.filter((fieldType) => fields.includes(fieldType.name)), - }; - const message = {}; - fields.forEach((field) => { - if (field in values) { - message[field] = values[field]; - } - }); - return { types, primaryType, message: message }; -}; -const getSignatureDomain = (chainId) => ({ - name: "Fhenix Permission v2.0.0", - version: "v2.0.0", - chainId: parseInt(chainId), - verifyingContract: ZeroAddress, -}); - -var util; -(function (util) { - util.assertEqual = (val) => val; - function assertIs(_arg) { } - util.assertIs = assertIs; - function assertNever(_x) { - throw new Error(); - } - util.assertNever = assertNever; - util.arrayToEnum = (items) => { - const obj = {}; - for (const item of items) { - obj[item] = item; - } - return obj; - }; - util.getValidEnumValues = (obj) => { - const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== "number"); - const filtered = {}; - for (const k of validKeys) { - filtered[k] = obj[k]; - } - return util.objectValues(filtered); - }; - util.objectValues = (obj) => { - return util.objectKeys(obj).map(function (e) { - return obj[e]; - }); - }; - util.objectKeys = typeof Object.keys === "function" // eslint-disable-line ban/ban - ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban - : (object) => { - const keys = []; - for (const key in object) { - if (Object.prototype.hasOwnProperty.call(object, key)) { - keys.push(key); - } - } - return keys; - }; - util.find = (arr, checker) => { - for (const item of arr) { - if (checker(item)) - return item; - } - return undefined; - }; - util.isInteger = typeof Number.isInteger === "function" - ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban - : (val) => typeof val === "number" && isFinite(val) && Math.floor(val) === val; - function joinValues(array, separator = " | ") { - return array - .map((val) => (typeof val === "string" ? `'${val}'` : val)) - .join(separator); - } - util.joinValues = joinValues; - util.jsonStringifyReplacer = (_, value) => { - if (typeof value === "bigint") { - return value.toString(); - } - return value; - }; -})(util || (util = {})); -var objectUtil; -(function (objectUtil) { - objectUtil.mergeShapes = (first, second) => { - return { - ...first, - ...second, // second overwrites first - }; - }; -})(objectUtil || (objectUtil = {})); -const ZodParsedType = util.arrayToEnum([ - "string", - "nan", - "number", - "integer", - "float", - "boolean", - "date", - "bigint", - "symbol", - "function", - "undefined", - "null", - "array", - "object", - "unknown", - "promise", - "void", - "never", - "map", - "set", -]); -const getParsedType = (data) => { - const t = typeof data; - switch (t) { - case "undefined": - return ZodParsedType.undefined; - case "string": - return ZodParsedType.string; - case "number": - return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number; - case "boolean": - return ZodParsedType.boolean; - case "function": - return ZodParsedType.function; - case "bigint": - return ZodParsedType.bigint; - case "symbol": - return ZodParsedType.symbol; - case "object": - if (Array.isArray(data)) { - return ZodParsedType.array; - } - if (data === null) { - return ZodParsedType.null; - } - if (data.then && - typeof data.then === "function" && - data.catch && - typeof data.catch === "function") { - return ZodParsedType.promise; - } - if (typeof Map !== "undefined" && data instanceof Map) { - return ZodParsedType.map; - } - if (typeof Set !== "undefined" && data instanceof Set) { - return ZodParsedType.set; - } - if (typeof Date !== "undefined" && data instanceof Date) { - return ZodParsedType.date; - } - return ZodParsedType.object; - default: - return ZodParsedType.unknown; - } -}; - -const ZodIssueCode = util.arrayToEnum([ - "invalid_type", - "invalid_literal", - "custom", - "invalid_union", - "invalid_union_discriminator", - "invalid_enum_value", - "unrecognized_keys", - "invalid_arguments", - "invalid_return_type", - "invalid_date", - "invalid_string", - "too_small", - "too_big", - "invalid_intersection_types", - "not_multiple_of", - "not_finite", -]); -const quotelessJson = (obj) => { - const json = JSON.stringify(obj, null, 2); - return json.replace(/"([^"]+)":/g, "$1:"); -}; -class ZodError extends Error { - constructor(issues) { - super(); - this.issues = []; - this.addIssue = (sub) => { - this.issues = [...this.issues, sub]; - }; - this.addIssues = (subs = []) => { - this.issues = [...this.issues, ...subs]; - }; - const actualProto = new.target.prototype; - if (Object.setPrototypeOf) { - // eslint-disable-next-line ban/ban - Object.setPrototypeOf(this, actualProto); - } - else { - this.__proto__ = actualProto; - } - this.name = "ZodError"; - this.issues = issues; - } - get errors() { - return this.issues; - } - format(_mapper) { - const mapper = _mapper || - function (issue) { - return issue.message; - }; - const fieldErrors = { _errors: [] }; - const processError = (error) => { - for (const issue of error.issues) { - if (issue.code === "invalid_union") { - issue.unionErrors.map(processError); - } - else if (issue.code === "invalid_return_type") { - processError(issue.returnTypeError); - } - else if (issue.code === "invalid_arguments") { - processError(issue.argumentsError); - } - else if (issue.path.length === 0) { - fieldErrors._errors.push(mapper(issue)); - } - else { - let curr = fieldErrors; - let i = 0; - while (i < issue.path.length) { - const el = issue.path[i]; - const terminal = i === issue.path.length - 1; - if (!terminal) { - curr[el] = curr[el] || { _errors: [] }; - // if (typeof el === "string") { - // curr[el] = curr[el] || { _errors: [] }; - // } else if (typeof el === "number") { - // const errorArray: any = []; - // errorArray._errors = []; - // curr[el] = curr[el] || errorArray; - // } - } - else { - curr[el] = curr[el] || { _errors: [] }; - curr[el]._errors.push(mapper(issue)); - } - curr = curr[el]; - i++; - } - } - } - }; - processError(this); - return fieldErrors; - } - static assert(value) { - if (!(value instanceof ZodError)) { - throw new Error(`Not a ZodError: ${value}`); - } - } - toString() { - return this.message; - } - get message() { - return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2); - } - get isEmpty() { - return this.issues.length === 0; - } - flatten(mapper = (issue) => issue.message) { - const fieldErrors = {}; - const formErrors = []; - for (const sub of this.issues) { - if (sub.path.length > 0) { - fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || []; - fieldErrors[sub.path[0]].push(mapper(sub)); - } - else { - formErrors.push(mapper(sub)); - } - } - return { formErrors, fieldErrors }; - } - get formErrors() { - return this.flatten(); - } -} -ZodError.create = (issues) => { - const error = new ZodError(issues); - return error; -}; - -const errorMap = (issue, _ctx) => { - let message; - switch (issue.code) { - case ZodIssueCode.invalid_type: - if (issue.received === ZodParsedType.undefined) { - message = "Required"; - } - else { - message = `Expected ${issue.expected}, received ${issue.received}`; - } - break; - case ZodIssueCode.invalid_literal: - message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`; - break; - case ZodIssueCode.unrecognized_keys: - message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, ", ")}`; - break; - case ZodIssueCode.invalid_union: - message = `Invalid input`; - break; - case ZodIssueCode.invalid_union_discriminator: - message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`; - break; - case ZodIssueCode.invalid_enum_value: - message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`; - break; - case ZodIssueCode.invalid_arguments: - message = `Invalid function arguments`; - break; - case ZodIssueCode.invalid_return_type: - message = `Invalid function return type`; - break; - case ZodIssueCode.invalid_date: - message = `Invalid date`; - break; - case ZodIssueCode.invalid_string: - if (typeof issue.validation === "object") { - if ("includes" in issue.validation) { - message = `Invalid input: must include "${issue.validation.includes}"`; - if (typeof issue.validation.position === "number") { - message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`; - } - } - else if ("startsWith" in issue.validation) { - message = `Invalid input: must start with "${issue.validation.startsWith}"`; - } - else if ("endsWith" in issue.validation) { - message = `Invalid input: must end with "${issue.validation.endsWith}"`; - } - else { - util.assertNever(issue.validation); - } - } - else if (issue.validation !== "regex") { - message = `Invalid ${issue.validation}`; - } - else { - message = "Invalid"; - } - break; - case ZodIssueCode.too_small: - if (issue.type === "array") - message = `Array must contain ${issue.exact ? "exactly" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`; - else if (issue.type === "string") - message = `String must contain ${issue.exact ? "exactly" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`; - else if (issue.type === "number") - message = `Number must be ${issue.exact - ? `exactly equal to ` - : issue.inclusive - ? `greater than or equal to ` - : `greater than `}${issue.minimum}`; - else if (issue.type === "date") - message = `Date must be ${issue.exact - ? `exactly equal to ` - : issue.inclusive - ? `greater than or equal to ` - : `greater than `}${new Date(Number(issue.minimum))}`; - else - message = "Invalid input"; - break; - case ZodIssueCode.too_big: - if (issue.type === "array") - message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`; - else if (issue.type === "string") - message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`; - else if (issue.type === "number") - message = `Number must be ${issue.exact - ? `exactly` - : issue.inclusive - ? `less than or equal to` - : `less than`} ${issue.maximum}`; - else if (issue.type === "bigint") - message = `BigInt must be ${issue.exact - ? `exactly` - : issue.inclusive - ? `less than or equal to` - : `less than`} ${issue.maximum}`; - else if (issue.type === "date") - message = `Date must be ${issue.exact - ? `exactly` - : issue.inclusive - ? `smaller than or equal to` - : `smaller than`} ${new Date(Number(issue.maximum))}`; - else - message = "Invalid input"; - break; - case ZodIssueCode.custom: - message = `Invalid input`; - break; - case ZodIssueCode.invalid_intersection_types: - message = `Intersection results could not be merged`; - break; - case ZodIssueCode.not_multiple_of: - message = `Number must be a multiple of ${issue.multipleOf}`; - break; - case ZodIssueCode.not_finite: - message = "Number must be finite"; - break; - default: - message = _ctx.defaultError; - util.assertNever(issue); - } - return { message }; -}; - -let overrideErrorMap = errorMap; -function setErrorMap(map) { - overrideErrorMap = map; -} -function getErrorMap() { - return overrideErrorMap; -} - -const makeIssue = (params) => { - const { data, path, errorMaps, issueData } = params; - const fullPath = [...path, ...(issueData.path || [])]; - const fullIssue = { - ...issueData, - path: fullPath, - }; - if (issueData.message !== undefined) { - return { - ...issueData, - path: fullPath, - message: issueData.message, - }; - } - let errorMessage = ""; - const maps = errorMaps - .filter((m) => !!m) - .slice() - .reverse(); - for (const map of maps) { - errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message; - } - return { - ...issueData, - path: fullPath, - message: errorMessage, - }; -}; -const EMPTY_PATH = []; -function addIssueToContext(ctx, issueData) { - const overrideMap = getErrorMap(); - const issue = makeIssue({ - issueData: issueData, - data: ctx.data, - path: ctx.path, - errorMaps: [ - ctx.common.contextualErrorMap, - ctx.schemaErrorMap, - overrideMap, - overrideMap === errorMap ? undefined : errorMap, // then global default map - ].filter((x) => !!x), - }); - ctx.common.issues.push(issue); -} -class ParseStatus { - constructor() { - this.value = "valid"; - } - dirty() { - if (this.value === "valid") - this.value = "dirty"; - } - abort() { - if (this.value !== "aborted") - this.value = "aborted"; - } - static mergeArray(status, results) { - const arrayValue = []; - for (const s of results) { - if (s.status === "aborted") - return INVALID; - if (s.status === "dirty") - status.dirty(); - arrayValue.push(s.value); - } - return { status: status.value, value: arrayValue }; - } - static async mergeObjectAsync(status, pairs) { - const syncPairs = []; - for (const pair of pairs) { - const key = await pair.key; - const value = await pair.value; - syncPairs.push({ - key, - value, - }); - } - return ParseStatus.mergeObjectSync(status, syncPairs); - } - static mergeObjectSync(status, pairs) { - const finalObject = {}; - for (const pair of pairs) { - const { key, value } = pair; - if (key.status === "aborted") - return INVALID; - if (value.status === "aborted") - return INVALID; - if (key.status === "dirty") - status.dirty(); - if (value.status === "dirty") - status.dirty(); - if (key.value !== "__proto__" && - (typeof value.value !== "undefined" || pair.alwaysSet)) { - finalObject[key.value] = value.value; - } - } - return { status: status.value, value: finalObject }; - } -} -const INVALID = Object.freeze({ - status: "aborted", -}); -const DIRTY = (value) => ({ status: "dirty", value }); -const OK = (value) => ({ status: "valid", value }); -const isAborted = (x) => x.status === "aborted"; -const isDirty = (x) => x.status === "dirty"; -const isValid = (x) => x.status === "valid"; -const isAsync = (x) => typeof Promise !== "undefined" && x instanceof Promise; - -/****************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ - -function __classPrivateFieldGet(receiver, state, kind, f) { - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); - return state.get(receiver); -} - -function __classPrivateFieldSet(receiver, state, value, kind, f) { - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); - return (state.set(receiver, value)), value; -} - -typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { - var e = new Error(message); - return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; -}; - -var errorUtil; -(function (errorUtil) { - errorUtil.errToObj = (message) => typeof message === "string" ? { message } : message || {}; - errorUtil.toString = (message) => typeof message === "string" ? message : message === null || message === void 0 ? void 0 : message.message; -})(errorUtil || (errorUtil = {})); - -var _ZodEnum_cache, _ZodNativeEnum_cache; -class ParseInputLazyPath { - constructor(parent, value, path, key) { - this._cachedPath = []; - this.parent = parent; - this.data = value; - this._path = path; - this._key = key; - } - get path() { - if (!this._cachedPath.length) { - if (this._key instanceof Array) { - this._cachedPath.push(...this._path, ...this._key); - } - else { - this._cachedPath.push(...this._path, this._key); - } - } - return this._cachedPath; - } -} -const handleResult = (ctx, result) => { - if (isValid(result)) { - return { success: true, data: result.value }; - } - else { - if (!ctx.common.issues.length) { - throw new Error("Validation failed but no issues detected."); - } - return { - success: false, - get error() { - if (this._error) - return this._error; - const error = new ZodError(ctx.common.issues); - this._error = error; - return this._error; - }, - }; - } -}; -function processCreateParams(params) { - if (!params) - return {}; - const { errorMap, invalid_type_error, required_error, description } = params; - if (errorMap && (invalid_type_error || required_error)) { - throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`); - } - if (errorMap) - return { errorMap: errorMap, description }; - const customMap = (iss, ctx) => { - var _a, _b; - const { message } = params; - if (iss.code === "invalid_enum_value") { - return { message: message !== null && message !== void 0 ? message : ctx.defaultError }; - } - if (typeof ctx.data === "undefined") { - return { message: (_a = message !== null && message !== void 0 ? message : required_error) !== null && _a !== void 0 ? _a : ctx.defaultError }; - } - if (iss.code !== "invalid_type") - return { message: ctx.defaultError }; - return { message: (_b = message !== null && message !== void 0 ? message : invalid_type_error) !== null && _b !== void 0 ? _b : ctx.defaultError }; - }; - return { errorMap: customMap, description }; -} -class ZodType { - constructor(def) { - /** Alias of safeParseAsync */ - this.spa = this.safeParseAsync; - this._def = def; - this.parse = this.parse.bind(this); - this.safeParse = this.safeParse.bind(this); - this.parseAsync = this.parseAsync.bind(this); - this.safeParseAsync = this.safeParseAsync.bind(this); - this.spa = this.spa.bind(this); - this.refine = this.refine.bind(this); - this.refinement = this.refinement.bind(this); - this.superRefine = this.superRefine.bind(this); - this.optional = this.optional.bind(this); - this.nullable = this.nullable.bind(this); - this.nullish = this.nullish.bind(this); - this.array = this.array.bind(this); - this.promise = this.promise.bind(this); - this.or = this.or.bind(this); - this.and = this.and.bind(this); - this.transform = this.transform.bind(this); - this.brand = this.brand.bind(this); - this.default = this.default.bind(this); - this.catch = this.catch.bind(this); - this.describe = this.describe.bind(this); - this.pipe = this.pipe.bind(this); - this.readonly = this.readonly.bind(this); - this.isNullable = this.isNullable.bind(this); - this.isOptional = this.isOptional.bind(this); - } - get description() { - return this._def.description; - } - _getType(input) { - return getParsedType(input.data); - } - _getOrReturnCtx(input, ctx) { - return (ctx || { - common: input.parent.common, - data: input.data, - parsedType: getParsedType(input.data), - schemaErrorMap: this._def.errorMap, - path: input.path, - parent: input.parent, - }); - } - _processInputParams(input) { - return { - status: new ParseStatus(), - ctx: { - common: input.parent.common, - data: input.data, - parsedType: getParsedType(input.data), - schemaErrorMap: this._def.errorMap, - path: input.path, - parent: input.parent, - }, - }; - } - _parseSync(input) { - const result = this._parse(input); - if (isAsync(result)) { - throw new Error("Synchronous parse encountered promise."); - } - return result; - } - _parseAsync(input) { - const result = this._parse(input); - return Promise.resolve(result); - } - parse(data, params) { - const result = this.safeParse(data, params); - if (result.success) - return result.data; - throw result.error; - } - safeParse(data, params) { - var _a; - const ctx = { - common: { - issues: [], - async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false, - contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap, - }, - path: (params === null || params === void 0 ? void 0 : params.path) || [], - schemaErrorMap: this._def.errorMap, - parent: null, - data, - parsedType: getParsedType(data), - }; - const result = this._parseSync({ data, path: ctx.path, parent: ctx }); - return handleResult(ctx, result); - } - async parseAsync(data, params) { - const result = await this.safeParseAsync(data, params); - if (result.success) - return result.data; - throw result.error; - } - async safeParseAsync(data, params) { - const ctx = { - common: { - issues: [], - contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap, - async: true, - }, - path: (params === null || params === void 0 ? void 0 : params.path) || [], - schemaErrorMap: this._def.errorMap, - parent: null, - data, - parsedType: getParsedType(data), - }; - const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx }); - const result = await (isAsync(maybeAsyncResult) - ? maybeAsyncResult - : Promise.resolve(maybeAsyncResult)); - return handleResult(ctx, result); - } - refine(check, message) { - const getIssueProperties = (val) => { - if (typeof message === "string" || typeof message === "undefined") { - return { message }; - } - else if (typeof message === "function") { - return message(val); - } - else { - return message; - } - }; - return this._refinement((val, ctx) => { - const result = check(val); - const setError = () => ctx.addIssue({ - code: ZodIssueCode.custom, - ...getIssueProperties(val), - }); - if (typeof Promise !== "undefined" && result instanceof Promise) { - return result.then((data) => { - if (!data) { - setError(); - return false; - } - else { - return true; - } - }); - } - if (!result) { - setError(); - return false; - } - else { - return true; - } - }); - } - refinement(check, refinementData) { - return this._refinement((val, ctx) => { - if (!check(val)) { - ctx.addIssue(typeof refinementData === "function" - ? refinementData(val, ctx) - : refinementData); - return false; - } - else { - return true; - } - }); - } - _refinement(refinement) { - return new ZodEffects({ - schema: this, - typeName: ZodFirstPartyTypeKind.ZodEffects, - effect: { type: "refinement", refinement }, - }); - } - superRefine(refinement) { - return this._refinement(refinement); - } - optional() { - return ZodOptional.create(this, this._def); - } - nullable() { - return ZodNullable.create(this, this._def); - } - nullish() { - return this.nullable().optional(); - } - array() { - return ZodArray.create(this, this._def); - } - promise() { - return ZodPromise.create(this, this._def); - } - or(option) { - return ZodUnion.create([this, option], this._def); - } - and(incoming) { - return ZodIntersection.create(this, incoming, this._def); - } - transform(transform) { - return new ZodEffects({ - ...processCreateParams(this._def), - schema: this, - typeName: ZodFirstPartyTypeKind.ZodEffects, - effect: { type: "transform", transform }, - }); - } - default(def) { - const defaultValueFunc = typeof def === "function" ? def : () => def; - return new ZodDefault({ - ...processCreateParams(this._def), - innerType: this, - defaultValue: defaultValueFunc, - typeName: ZodFirstPartyTypeKind.ZodDefault, - }); - } - brand() { - return new ZodBranded({ - typeName: ZodFirstPartyTypeKind.ZodBranded, - type: this, - ...processCreateParams(this._def), - }); - } - catch(def) { - const catchValueFunc = typeof def === "function" ? def : () => def; - return new ZodCatch({ - ...processCreateParams(this._def), - innerType: this, - catchValue: catchValueFunc, - typeName: ZodFirstPartyTypeKind.ZodCatch, - }); - } - describe(description) { - const This = this.constructor; - return new This({ - ...this._def, - description, - }); - } - pipe(target) { - return ZodPipeline.create(this, target); - } - readonly() { - return ZodReadonly.create(this); - } - isOptional() { - return this.safeParse(undefined).success; - } - isNullable() { - return this.safeParse(null).success; - } -} -const cuidRegex = /^c[^\s-]{8,}$/i; -const cuid2Regex = /^[0-9a-z]+$/; -const ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/; -// const uuidRegex = -// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i; -const uuidRegex = /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i; -const nanoidRegex = /^[a-z0-9_-]{21}$/i; -const durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/; -// from https://stackoverflow.com/a/46181/1550155 -// old version: too slow, didn't support unicode -// const emailRegex = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i; -//old email regex -// const emailRegex = /^(([^<>()[\].,;:\s@"]+(\.[^<>()[\].,;:\s@"]+)*)|(".+"))@((?!-)([^<>()[\].,;:\s@"]+\.)+[^<>()[\].,;:\s@"]{1,})[^-<>()[\].,;:\s@"]$/i; -// eslint-disable-next-line -// const emailRegex = -// /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\])|(\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\.[A-Za-z]{2,})+))$/; -// const emailRegex = -// /^[a-zA-Z0-9\.\!\#\$\%\&\'\*\+\/\=\?\^\_\`\{\|\}\~\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/; -// const emailRegex = -// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/i; -const emailRegex = /^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i; -// const emailRegex = -// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\.[a-z0-9\-]+)*$/i; -// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression -const _emojiRegex = `^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`; -let emojiRegex; -// faster, simpler, safer -const ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/; -const ipv6Regex = /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/; -// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript -const base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/; -// simple -// const dateRegexSource = `\\d{4}-\\d{2}-\\d{2}`; -// no leap year validation -// const dateRegexSource = `\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\d|2\\d))`; -// with leap year validation -const dateRegexSource = `((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`; -const dateRegex = new RegExp(`^${dateRegexSource}$`); -function timeRegexSource(args) { - // let regex = `\\d{2}:\\d{2}:\\d{2}`; - let regex = `([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d`; - if (args.precision) { - regex = `${regex}\\.\\d{${args.precision}}`; - } - else if (args.precision == null) { - regex = `${regex}(\\.\\d+)?`; - } - return regex; -} -function timeRegex(args) { - return new RegExp(`^${timeRegexSource(args)}$`); -} -// Adapted from https://stackoverflow.com/a/3143231 -function datetimeRegex(args) { - let regex = `${dateRegexSource}T${timeRegexSource(args)}`; - const opts = []; - opts.push(args.local ? `Z?` : `Z`); - if (args.offset) - opts.push(`([+-]\\d{2}:?\\d{2})`); - regex = `${regex}(${opts.join("|")})`; - return new RegExp(`^${regex}$`); -} -function isValidIP(ip, version) { - if ((version === "v4" || !version) && ipv4Regex.test(ip)) { - return true; - } - if ((version === "v6" || !version) && ipv6Regex.test(ip)) { - return true; - } - return false; -} -class ZodString extends ZodType { - _parse(input) { - if (this._def.coerce) { - input.data = String(input.data); - } - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.string) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.string, - received: ctx.parsedType, - }); - return INVALID; - } - const status = new ParseStatus(); - let ctx = undefined; - for (const check of this._def.checks) { - if (check.kind === "min") { - if (input.data.length < check.value) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.too_small, - minimum: check.value, - type: "string", - inclusive: true, - exact: false, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "max") { - if (input.data.length > check.value) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.too_big, - maximum: check.value, - type: "string", - inclusive: true, - exact: false, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "length") { - const tooBig = input.data.length > check.value; - const tooSmall = input.data.length < check.value; - if (tooBig || tooSmall) { - ctx = this._getOrReturnCtx(input, ctx); - if (tooBig) { - addIssueToContext(ctx, { - code: ZodIssueCode.too_big, - maximum: check.value, - type: "string", - inclusive: true, - exact: true, - message: check.message, - }); - } - else if (tooSmall) { - addIssueToContext(ctx, { - code: ZodIssueCode.too_small, - minimum: check.value, - type: "string", - inclusive: true, - exact: true, - message: check.message, - }); - } - status.dirty(); - } - } - else if (check.kind === "email") { - if (!emailRegex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "email", - code: ZodIssueCode.invalid_string, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "emoji") { - if (!emojiRegex) { - emojiRegex = new RegExp(_emojiRegex, "u"); - } - if (!emojiRegex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "emoji", - code: ZodIssueCode.invalid_string, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "uuid") { - if (!uuidRegex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "uuid", - code: ZodIssueCode.invalid_string, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "nanoid") { - if (!nanoidRegex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "nanoid", - code: ZodIssueCode.invalid_string, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "cuid") { - if (!cuidRegex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "cuid", - code: ZodIssueCode.invalid_string, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "cuid2") { - if (!cuid2Regex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "cuid2", - code: ZodIssueCode.invalid_string, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "ulid") { - if (!ulidRegex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "ulid", - code: ZodIssueCode.invalid_string, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "url") { - try { - new URL(input.data); - } - catch (_a) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "url", - code: ZodIssueCode.invalid_string, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "regex") { - check.regex.lastIndex = 0; - const testResult = check.regex.test(input.data); - if (!testResult) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "regex", - code: ZodIssueCode.invalid_string, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "trim") { - input.data = input.data.trim(); - } - else if (check.kind === "includes") { - if (!input.data.includes(check.value, check.position)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_string, - validation: { includes: check.value, position: check.position }, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "toLowerCase") { - input.data = input.data.toLowerCase(); - } - else if (check.kind === "toUpperCase") { - input.data = input.data.toUpperCase(); - } - else if (check.kind === "startsWith") { - if (!input.data.startsWith(check.value)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_string, - validation: { startsWith: check.value }, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "endsWith") { - if (!input.data.endsWith(check.value)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_string, - validation: { endsWith: check.value }, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "datetime") { - const regex = datetimeRegex(check); - if (!regex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_string, - validation: "datetime", - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "date") { - const regex = dateRegex; - if (!regex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_string, - validation: "date", - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "time") { - const regex = timeRegex(check); - if (!regex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_string, - validation: "time", - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "duration") { - if (!durationRegex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "duration", - code: ZodIssueCode.invalid_string, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "ip") { - if (!isValidIP(input.data, check.version)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "ip", - code: ZodIssueCode.invalid_string, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "base64") { - if (!base64Regex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "base64", - code: ZodIssueCode.invalid_string, - message: check.message, - }); - status.dirty(); - } - } - else { - util.assertNever(check); - } - } - return { status: status.value, value: input.data }; - } - _regex(regex, validation, message) { - return this.refinement((data) => regex.test(data), { - validation, - code: ZodIssueCode.invalid_string, - ...errorUtil.errToObj(message), - }); - } - _addCheck(check) { - return new ZodString({ - ...this._def, - checks: [...this._def.checks, check], - }); - } - email(message) { - return this._addCheck({ kind: "email", ...errorUtil.errToObj(message) }); - } - url(message) { - return this._addCheck({ kind: "url", ...errorUtil.errToObj(message) }); - } - emoji(message) { - return this._addCheck({ kind: "emoji", ...errorUtil.errToObj(message) }); - } - uuid(message) { - return this._addCheck({ kind: "uuid", ...errorUtil.errToObj(message) }); - } - nanoid(message) { - return this._addCheck({ kind: "nanoid", ...errorUtil.errToObj(message) }); - } - cuid(message) { - return this._addCheck({ kind: "cuid", ...errorUtil.errToObj(message) }); - } - cuid2(message) { - return this._addCheck({ kind: "cuid2", ...errorUtil.errToObj(message) }); - } - ulid(message) { - return this._addCheck({ kind: "ulid", ...errorUtil.errToObj(message) }); - } - base64(message) { - return this._addCheck({ kind: "base64", ...errorUtil.errToObj(message) }); - } - ip(options) { - return this._addCheck({ kind: "ip", ...errorUtil.errToObj(options) }); - } - datetime(options) { - var _a, _b; - if (typeof options === "string") { - return this._addCheck({ - kind: "datetime", - precision: null, - offset: false, - local: false, - message: options, - }); - } - return this._addCheck({ - kind: "datetime", - precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === "undefined" ? null : options === null || options === void 0 ? void 0 : options.precision, - offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false, - local: (_b = options === null || options === void 0 ? void 0 : options.local) !== null && _b !== void 0 ? _b : false, - ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message), - }); - } - date(message) { - return this._addCheck({ kind: "date", message }); - } - time(options) { - if (typeof options === "string") { - return this._addCheck({ - kind: "time", - precision: null, - message: options, - }); - } - return this._addCheck({ - kind: "time", - precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === "undefined" ? null : options === null || options === void 0 ? void 0 : options.precision, - ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message), - }); - } - duration(message) { - return this._addCheck({ kind: "duration", ...errorUtil.errToObj(message) }); - } - regex(regex, message) { - return this._addCheck({ - kind: "regex", - regex: regex, - ...errorUtil.errToObj(message), - }); - } - includes(value, options) { - return this._addCheck({ - kind: "includes", - value: value, - position: options === null || options === void 0 ? void 0 : options.position, - ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message), - }); - } - startsWith(value, message) { - return this._addCheck({ - kind: "startsWith", - value: value, - ...errorUtil.errToObj(message), - }); - } - endsWith(value, message) { - return this._addCheck({ - kind: "endsWith", - value: value, - ...errorUtil.errToObj(message), - }); - } - min(minLength, message) { - return this._addCheck({ - kind: "min", - value: minLength, - ...errorUtil.errToObj(message), - }); - } - max(maxLength, message) { - return this._addCheck({ - kind: "max", - value: maxLength, - ...errorUtil.errToObj(message), - }); - } - length(len, message) { - return this._addCheck({ - kind: "length", - value: len, - ...errorUtil.errToObj(message), - }); - } - /** - * @deprecated Use z.string().min(1) instead. - * @see {@link ZodString.min} - */ - nonempty(message) { - return this.min(1, errorUtil.errToObj(message)); - } - trim() { - return new ZodString({ - ...this._def, - checks: [...this._def.checks, { kind: "trim" }], - }); - } - toLowerCase() { - return new ZodString({ - ...this._def, - checks: [...this._def.checks, { kind: "toLowerCase" }], - }); - } - toUpperCase() { - return new ZodString({ - ...this._def, - checks: [...this._def.checks, { kind: "toUpperCase" }], - }); - } - get isDatetime() { - return !!this._def.checks.find((ch) => ch.kind === "datetime"); - } - get isDate() { - return !!this._def.checks.find((ch) => ch.kind === "date"); - } - get isTime() { - return !!this._def.checks.find((ch) => ch.kind === "time"); - } - get isDuration() { - return !!this._def.checks.find((ch) => ch.kind === "duration"); - } - get isEmail() { - return !!this._def.checks.find((ch) => ch.kind === "email"); - } - get isURL() { - return !!this._def.checks.find((ch) => ch.kind === "url"); - } - get isEmoji() { - return !!this._def.checks.find((ch) => ch.kind === "emoji"); - } - get isUUID() { - return !!this._def.checks.find((ch) => ch.kind === "uuid"); - } - get isNANOID() { - return !!this._def.checks.find((ch) => ch.kind === "nanoid"); - } - get isCUID() { - return !!this._def.checks.find((ch) => ch.kind === "cuid"); - } - get isCUID2() { - return !!this._def.checks.find((ch) => ch.kind === "cuid2"); - } - get isULID() { - return !!this._def.checks.find((ch) => ch.kind === "ulid"); - } - get isIP() { - return !!this._def.checks.find((ch) => ch.kind === "ip"); - } - get isBase64() { - return !!this._def.checks.find((ch) => ch.kind === "base64"); - } - get minLength() { - let min = null; - for (const ch of this._def.checks) { - if (ch.kind === "min") { - if (min === null || ch.value > min) - min = ch.value; - } - } - return min; - } - get maxLength() { - let max = null; - for (const ch of this._def.checks) { - if (ch.kind === "max") { - if (max === null || ch.value < max) - max = ch.value; - } - } - return max; - } -} -ZodString.create = (params) => { - var _a; - return new ZodString({ - checks: [], - typeName: ZodFirstPartyTypeKind.ZodString, - coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false, - ...processCreateParams(params), - }); -}; -// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034 -function floatSafeRemainder(val, step) { - const valDecCount = (val.toString().split(".")[1] || "").length; - const stepDecCount = (step.toString().split(".")[1] || "").length; - const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount; - const valInt = parseInt(val.toFixed(decCount).replace(".", "")); - const stepInt = parseInt(step.toFixed(decCount).replace(".", "")); - return (valInt % stepInt) / Math.pow(10, decCount); -} -class ZodNumber extends ZodType { - constructor() { - super(...arguments); - this.min = this.gte; - this.max = this.lte; - this.step = this.multipleOf; - } - _parse(input) { - if (this._def.coerce) { - input.data = Number(input.data); - } - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.number) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.number, - received: ctx.parsedType, - }); - return INVALID; - } - let ctx = undefined; - const status = new ParseStatus(); - for (const check of this._def.checks) { - if (check.kind === "int") { - if (!util.isInteger(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: "integer", - received: "float", - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "min") { - const tooSmall = check.inclusive - ? input.data < check.value - : input.data <= check.value; - if (tooSmall) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.too_small, - minimum: check.value, - type: "number", - inclusive: check.inclusive, - exact: false, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "max") { - const tooBig = check.inclusive - ? input.data > check.value - : input.data >= check.value; - if (tooBig) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.too_big, - maximum: check.value, - type: "number", - inclusive: check.inclusive, - exact: false, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "multipleOf") { - if (floatSafeRemainder(input.data, check.value) !== 0) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.not_multiple_of, - multipleOf: check.value, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "finite") { - if (!Number.isFinite(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.not_finite, - message: check.message, - }); - status.dirty(); - } - } - else { - util.assertNever(check); - } - } - return { status: status.value, value: input.data }; - } - gte(value, message) { - return this.setLimit("min", value, true, errorUtil.toString(message)); - } - gt(value, message) { - return this.setLimit("min", value, false, errorUtil.toString(message)); - } - lte(value, message) { - return this.setLimit("max", value, true, errorUtil.toString(message)); - } - lt(value, message) { - return this.setLimit("max", value, false, errorUtil.toString(message)); - } - setLimit(kind, value, inclusive, message) { - return new ZodNumber({ - ...this._def, - checks: [ - ...this._def.checks, - { - kind, - value, - inclusive, - message: errorUtil.toString(message), - }, - ], - }); - } - _addCheck(check) { - return new ZodNumber({ - ...this._def, - checks: [...this._def.checks, check], - }); - } - int(message) { - return this._addCheck({ - kind: "int", - message: errorUtil.toString(message), - }); - } - positive(message) { - return this._addCheck({ - kind: "min", - value: 0, - inclusive: false, - message: errorUtil.toString(message), - }); - } - negative(message) { - return this._addCheck({ - kind: "max", - value: 0, - inclusive: false, - message: errorUtil.toString(message), - }); - } - nonpositive(message) { - return this._addCheck({ - kind: "max", - value: 0, - inclusive: true, - message: errorUtil.toString(message), - }); - } - nonnegative(message) { - return this._addCheck({ - kind: "min", - value: 0, - inclusive: true, - message: errorUtil.toString(message), - }); - } - multipleOf(value, message) { - return this._addCheck({ - kind: "multipleOf", - value: value, - message: errorUtil.toString(message), - }); - } - finite(message) { - return this._addCheck({ - kind: "finite", - message: errorUtil.toString(message), - }); - } - safe(message) { - return this._addCheck({ - kind: "min", - inclusive: true, - value: Number.MIN_SAFE_INTEGER, - message: errorUtil.toString(message), - })._addCheck({ - kind: "max", - inclusive: true, - value: Number.MAX_SAFE_INTEGER, - message: errorUtil.toString(message), - }); - } - get minValue() { - let min = null; - for (const ch of this._def.checks) { - if (ch.kind === "min") { - if (min === null || ch.value > min) - min = ch.value; - } - } - return min; - } - get maxValue() { - let max = null; - for (const ch of this._def.checks) { - if (ch.kind === "max") { - if (max === null || ch.value < max) - max = ch.value; - } - } - return max; - } - get isInt() { - return !!this._def.checks.find((ch) => ch.kind === "int" || - (ch.kind === "multipleOf" && util.isInteger(ch.value))); - } - get isFinite() { - let max = null, min = null; - for (const ch of this._def.checks) { - if (ch.kind === "finite" || - ch.kind === "int" || - ch.kind === "multipleOf") { - return true; - } - else if (ch.kind === "min") { - if (min === null || ch.value > min) - min = ch.value; - } - else if (ch.kind === "max") { - if (max === null || ch.value < max) - max = ch.value; - } - } - return Number.isFinite(min) && Number.isFinite(max); - } -} -ZodNumber.create = (params) => { - return new ZodNumber({ - checks: [], - typeName: ZodFirstPartyTypeKind.ZodNumber, - coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false, - ...processCreateParams(params), - }); -}; -class ZodBigInt extends ZodType { - constructor() { - super(...arguments); - this.min = this.gte; - this.max = this.lte; - } - _parse(input) { - if (this._def.coerce) { - input.data = BigInt(input.data); - } - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.bigint) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.bigint, - received: ctx.parsedType, - }); - return INVALID; - } - let ctx = undefined; - const status = new ParseStatus(); - for (const check of this._def.checks) { - if (check.kind === "min") { - const tooSmall = check.inclusive - ? input.data < check.value - : input.data <= check.value; - if (tooSmall) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.too_small, - type: "bigint", - minimum: check.value, - inclusive: check.inclusive, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "max") { - const tooBig = check.inclusive - ? input.data > check.value - : input.data >= check.value; - if (tooBig) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.too_big, - type: "bigint", - maximum: check.value, - inclusive: check.inclusive, - message: check.message, - }); - status.dirty(); - } - } - else if (check.kind === "multipleOf") { - if (input.data % check.value !== BigInt(0)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.not_multiple_of, - multipleOf: check.value, - message: check.message, - }); - status.dirty(); - } - } - else { - util.assertNever(check); - } - } - return { status: status.value, value: input.data }; - } - gte(value, message) { - return this.setLimit("min", value, true, errorUtil.toString(message)); - } - gt(value, message) { - return this.setLimit("min", value, false, errorUtil.toString(message)); - } - lte(value, message) { - return this.setLimit("max", value, true, errorUtil.toString(message)); - } - lt(value, message) { - return this.setLimit("max", value, false, errorUtil.toString(message)); - } - setLimit(kind, value, inclusive, message) { - return new ZodBigInt({ - ...this._def, - checks: [ - ...this._def.checks, - { - kind, - value, - inclusive, - message: errorUtil.toString(message), - }, - ], - }); - } - _addCheck(check) { - return new ZodBigInt({ - ...this._def, - checks: [...this._def.checks, check], - }); - } - positive(message) { - return this._addCheck({ - kind: "min", - value: BigInt(0), - inclusive: false, - message: errorUtil.toString(message), - }); - } - negative(message) { - return this._addCheck({ - kind: "max", - value: BigInt(0), - inclusive: false, - message: errorUtil.toString(message), - }); - } - nonpositive(message) { - return this._addCheck({ - kind: "max", - value: BigInt(0), - inclusive: true, - message: errorUtil.toString(message), - }); - } - nonnegative(message) { - return this._addCheck({ - kind: "min", - value: BigInt(0), - inclusive: true, - message: errorUtil.toString(message), - }); - } - multipleOf(value, message) { - return this._addCheck({ - kind: "multipleOf", - value, - message: errorUtil.toString(message), - }); - } - get minValue() { - let min = null; - for (const ch of this._def.checks) { - if (ch.kind === "min") { - if (min === null || ch.value > min) - min = ch.value; - } - } - return min; - } - get maxValue() { - let max = null; - for (const ch of this._def.checks) { - if (ch.kind === "max") { - if (max === null || ch.value < max) - max = ch.value; - } - } - return max; - } -} -ZodBigInt.create = (params) => { - var _a; - return new ZodBigInt({ - checks: [], - typeName: ZodFirstPartyTypeKind.ZodBigInt, - coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false, - ...processCreateParams(params), - }); -}; -class ZodBoolean extends ZodType { - _parse(input) { - if (this._def.coerce) { - input.data = Boolean(input.data); - } - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.boolean) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.boolean, - received: ctx.parsedType, - }); - return INVALID; - } - return OK(input.data); - } -} -ZodBoolean.create = (params) => { - return new ZodBoolean({ - typeName: ZodFirstPartyTypeKind.ZodBoolean, - coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false, - ...processCreateParams(params), - }); -}; -class ZodDate extends ZodType { - _parse(input) { - if (this._def.coerce) { - input.data = new Date(input.data); - } - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.date) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.date, - received: ctx.parsedType, - }); - return INVALID; - } - if (isNaN(input.data.getTime())) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_date, - }); - return INVALID; - } - const status = new ParseStatus(); - let ctx = undefined; - for (const check of this._def.checks) { - if (check.kind === "min") { - if (input.data.getTime() < check.value) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.too_small, - message: check.message, - inclusive: true, - exact: false, - minimum: check.value, - type: "date", - }); - status.dirty(); - } - } - else if (check.kind === "max") { - if (input.data.getTime() > check.value) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.too_big, - message: check.message, - inclusive: true, - exact: false, - maximum: check.value, - type: "date", - }); - status.dirty(); - } - } - else { - util.assertNever(check); - } - } - return { - status: status.value, - value: new Date(input.data.getTime()), - }; - } - _addCheck(check) { - return new ZodDate({ - ...this._def, - checks: [...this._def.checks, check], - }); - } - min(minDate, message) { - return this._addCheck({ - kind: "min", - value: minDate.getTime(), - message: errorUtil.toString(message), - }); - } - max(maxDate, message) { - return this._addCheck({ - kind: "max", - value: maxDate.getTime(), - message: errorUtil.toString(message), - }); - } - get minDate() { - let min = null; - for (const ch of this._def.checks) { - if (ch.kind === "min") { - if (min === null || ch.value > min) - min = ch.value; - } - } - return min != null ? new Date(min) : null; - } - get maxDate() { - let max = null; - for (const ch of this._def.checks) { - if (ch.kind === "max") { - if (max === null || ch.value < max) - max = ch.value; - } - } - return max != null ? new Date(max) : null; - } -} -ZodDate.create = (params) => { - return new ZodDate({ - checks: [], - coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false, - typeName: ZodFirstPartyTypeKind.ZodDate, - ...processCreateParams(params), - }); -}; -class ZodSymbol extends ZodType { - _parse(input) { - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.symbol) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.symbol, - received: ctx.parsedType, - }); - return INVALID; - } - return OK(input.data); - } -} -ZodSymbol.create = (params) => { - return new ZodSymbol({ - typeName: ZodFirstPartyTypeKind.ZodSymbol, - ...processCreateParams(params), - }); -}; -class ZodUndefined extends ZodType { - _parse(input) { - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.undefined) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.undefined, - received: ctx.parsedType, - }); - return INVALID; - } - return OK(input.data); - } -} -ZodUndefined.create = (params) => { - return new ZodUndefined({ - typeName: ZodFirstPartyTypeKind.ZodUndefined, - ...processCreateParams(params), - }); -}; -class ZodNull extends ZodType { - _parse(input) { - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.null) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.null, - received: ctx.parsedType, - }); - return INVALID; - } - return OK(input.data); - } -} -ZodNull.create = (params) => { - return new ZodNull({ - typeName: ZodFirstPartyTypeKind.ZodNull, - ...processCreateParams(params), - }); -}; -class ZodAny extends ZodType { - constructor() { - super(...arguments); - // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject. - this._any = true; - } - _parse(input) { - return OK(input.data); - } -} -ZodAny.create = (params) => { - return new ZodAny({ - typeName: ZodFirstPartyTypeKind.ZodAny, - ...processCreateParams(params), - }); -}; -class ZodUnknown extends ZodType { - constructor() { - super(...arguments); - // required - this._unknown = true; - } - _parse(input) { - return OK(input.data); - } -} -ZodUnknown.create = (params) => { - return new ZodUnknown({ - typeName: ZodFirstPartyTypeKind.ZodUnknown, - ...processCreateParams(params), - }); -}; -class ZodNever extends ZodType { - _parse(input) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.never, - received: ctx.parsedType, - }); - return INVALID; - } -} -ZodNever.create = (params) => { - return new ZodNever({ - typeName: ZodFirstPartyTypeKind.ZodNever, - ...processCreateParams(params), - }); -}; -class ZodVoid extends ZodType { - _parse(input) { - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.undefined) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.void, - received: ctx.parsedType, - }); - return INVALID; - } - return OK(input.data); - } -} -ZodVoid.create = (params) => { - return new ZodVoid({ - typeName: ZodFirstPartyTypeKind.ZodVoid, - ...processCreateParams(params), - }); -}; -class ZodArray extends ZodType { - _parse(input) { - const { ctx, status } = this._processInputParams(input); - const def = this._def; - if (ctx.parsedType !== ZodParsedType.array) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.array, - received: ctx.parsedType, - }); - return INVALID; - } - if (def.exactLength !== null) { - const tooBig = ctx.data.length > def.exactLength.value; - const tooSmall = ctx.data.length < def.exactLength.value; - if (tooBig || tooSmall) { - addIssueToContext(ctx, { - code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small, - minimum: (tooSmall ? def.exactLength.value : undefined), - maximum: (tooBig ? def.exactLength.value : undefined), - type: "array", - inclusive: true, - exact: true, - message: def.exactLength.message, - }); - status.dirty(); - } - } - if (def.minLength !== null) { - if (ctx.data.length < def.minLength.value) { - addIssueToContext(ctx, { - code: ZodIssueCode.too_small, - minimum: def.minLength.value, - type: "array", - inclusive: true, - exact: false, - message: def.minLength.message, - }); - status.dirty(); - } - } - if (def.maxLength !== null) { - if (ctx.data.length > def.maxLength.value) { - addIssueToContext(ctx, { - code: ZodIssueCode.too_big, - maximum: def.maxLength.value, - type: "array", - inclusive: true, - exact: false, - message: def.maxLength.message, - }); - status.dirty(); - } - } - if (ctx.common.async) { - return Promise.all([...ctx.data].map((item, i) => { - return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i)); - })).then((result) => { - return ParseStatus.mergeArray(status, result); - }); - } - const result = [...ctx.data].map((item, i) => { - return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i)); - }); - return ParseStatus.mergeArray(status, result); - } - get element() { - return this._def.type; - } - min(minLength, message) { - return new ZodArray({ - ...this._def, - minLength: { value: minLength, message: errorUtil.toString(message) }, - }); - } - max(maxLength, message) { - return new ZodArray({ - ...this._def, - maxLength: { value: maxLength, message: errorUtil.toString(message) }, - }); - } - length(len, message) { - return new ZodArray({ - ...this._def, - exactLength: { value: len, message: errorUtil.toString(message) }, - }); - } - nonempty(message) { - return this.min(1, message); - } -} -ZodArray.create = (schema, params) => { - return new ZodArray({ - type: schema, - minLength: null, - maxLength: null, - exactLength: null, - typeName: ZodFirstPartyTypeKind.ZodArray, - ...processCreateParams(params), - }); -}; -function deepPartialify(schema) { - if (schema instanceof ZodObject) { - const newShape = {}; - for (const key in schema.shape) { - const fieldSchema = schema.shape[key]; - newShape[key] = ZodOptional.create(deepPartialify(fieldSchema)); - } - return new ZodObject({ - ...schema._def, - shape: () => newShape, - }); - } - else if (schema instanceof ZodArray) { - return new ZodArray({ - ...schema._def, - type: deepPartialify(schema.element), - }); - } - else if (schema instanceof ZodOptional) { - return ZodOptional.create(deepPartialify(schema.unwrap())); - } - else if (schema instanceof ZodNullable) { - return ZodNullable.create(deepPartialify(schema.unwrap())); - } - else if (schema instanceof ZodTuple) { - return ZodTuple.create(schema.items.map((item) => deepPartialify(item))); - } - else { - return schema; - } -} -class ZodObject extends ZodType { - constructor() { - super(...arguments); - this._cached = null; - /** - * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped. - * If you want to pass through unknown properties, use `.passthrough()` instead. - */ - this.nonstrict = this.passthrough; - // extend< - // Augmentation extends ZodRawShape, - // NewOutput extends util.flatten<{ - // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation - // ? Augmentation[k]["_output"] - // : k extends keyof Output - // ? Output[k] - // : never; - // }>, - // NewInput extends util.flatten<{ - // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation - // ? Augmentation[k]["_input"] - // : k extends keyof Input - // ? Input[k] - // : never; - // }> - // >( - // augmentation: Augmentation - // ): ZodObject< - // extendShape, - // UnknownKeys, - // Catchall, - // NewOutput, - // NewInput - // > { - // return new ZodObject({ - // ...this._def, - // shape: () => ({ - // ...this._def.shape(), - // ...augmentation, - // }), - // }) as any; - // } - /** - * @deprecated Use `.extend` instead - * */ - this.augment = this.extend; - } - _getCached() { - if (this._cached !== null) - return this._cached; - const shape = this._def.shape(); - const keys = util.objectKeys(shape); - return (this._cached = { shape, keys }); - } - _parse(input) { - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.object) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.object, - received: ctx.parsedType, - }); - return INVALID; - } - const { status, ctx } = this._processInputParams(input); - const { shape, keys: shapeKeys } = this._getCached(); - const extraKeys = []; - if (!(this._def.catchall instanceof ZodNever && - this._def.unknownKeys === "strip")) { - for (const key in ctx.data) { - if (!shapeKeys.includes(key)) { - extraKeys.push(key); - } - } - } - const pairs = []; - for (const key of shapeKeys) { - const keyValidator = shape[key]; - const value = ctx.data[key]; - pairs.push({ - key: { status: "valid", value: key }, - value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)), - alwaysSet: key in ctx.data, - }); - } - if (this._def.catchall instanceof ZodNever) { - const unknownKeys = this._def.unknownKeys; - if (unknownKeys === "passthrough") { - for (const key of extraKeys) { - pairs.push({ - key: { status: "valid", value: key }, - value: { status: "valid", value: ctx.data[key] }, - }); - } - } - else if (unknownKeys === "strict") { - if (extraKeys.length > 0) { - addIssueToContext(ctx, { - code: ZodIssueCode.unrecognized_keys, - keys: extraKeys, - }); - status.dirty(); - } - } - else if (unknownKeys === "strip") ; - else { - throw new Error(`Internal ZodObject error: invalid unknownKeys value.`); - } - } - else { - // run catchall validation - const catchall = this._def.catchall; - for (const key of extraKeys) { - const value = ctx.data[key]; - pairs.push({ - key: { status: "valid", value: key }, - value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value) - ), - alwaysSet: key in ctx.data, - }); - } - } - if (ctx.common.async) { - return Promise.resolve() - .then(async () => { - const syncPairs = []; - for (const pair of pairs) { - const key = await pair.key; - const value = await pair.value; - syncPairs.push({ - key, - value, - alwaysSet: pair.alwaysSet, - }); - } - return syncPairs; - }) - .then((syncPairs) => { - return ParseStatus.mergeObjectSync(status, syncPairs); - }); - } - else { - return ParseStatus.mergeObjectSync(status, pairs); - } - } - get shape() { - return this._def.shape(); - } - strict(message) { - errorUtil.errToObj; - return new ZodObject({ - ...this._def, - unknownKeys: "strict", - ...(message !== undefined - ? { - errorMap: (issue, ctx) => { - var _a, _b, _c, _d; - const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError; - if (issue.code === "unrecognized_keys") - return { - message: (_d = errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : defaultError, - }; - return { - message: defaultError, - }; - }, - } - : {}), - }); - } - strip() { - return new ZodObject({ - ...this._def, - unknownKeys: "strip", - }); - } - passthrough() { - return new ZodObject({ - ...this._def, - unknownKeys: "passthrough", - }); - } - // const AugmentFactory = - // (def: Def) => - // ( - // augmentation: Augmentation - // ): ZodObject< - // extendShape, Augmentation>, - // Def["unknownKeys"], - // Def["catchall"] - // > => { - // return new ZodObject({ - // ...def, - // shape: () => ({ - // ...def.shape(), - // ...augmentation, - // }), - // }) as any; - // }; - extend(augmentation) { - return new ZodObject({ - ...this._def, - shape: () => ({ - ...this._def.shape(), - ...augmentation, - }), - }); - } - /** - * Prior to zod@1.0.12 there was a bug in the - * inferred type of merged objects. Please - * upgrade if you are experiencing issues. - */ - merge(merging) { - const merged = new ZodObject({ - unknownKeys: merging._def.unknownKeys, - catchall: merging._def.catchall, - shape: () => ({ - ...this._def.shape(), - ...merging._def.shape(), - }), - typeName: ZodFirstPartyTypeKind.ZodObject, - }); - return merged; - } - // merge< - // Incoming extends AnyZodObject, - // Augmentation extends Incoming["shape"], - // NewOutput extends { - // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation - // ? Augmentation[k]["_output"] - // : k extends keyof Output - // ? Output[k] - // : never; - // }, - // NewInput extends { - // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation - // ? Augmentation[k]["_input"] - // : k extends keyof Input - // ? Input[k] - // : never; - // } - // >( - // merging: Incoming - // ): ZodObject< - // extendShape>, - // Incoming["_def"]["unknownKeys"], - // Incoming["_def"]["catchall"], - // NewOutput, - // NewInput - // > { - // const merged: any = new ZodObject({ - // unknownKeys: merging._def.unknownKeys, - // catchall: merging._def.catchall, - // shape: () => - // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()), - // typeName: ZodFirstPartyTypeKind.ZodObject, - // }) as any; - // return merged; - // } - setKey(key, schema) { - return this.augment({ [key]: schema }); - } - // merge( - // merging: Incoming - // ): //ZodObject = (merging) => { - // ZodObject< - // extendShape>, - // Incoming["_def"]["unknownKeys"], - // Incoming["_def"]["catchall"] - // > { - // // const mergedShape = objectUtil.mergeShapes( - // // this._def.shape(), - // // merging._def.shape() - // // ); - // const merged: any = new ZodObject({ - // unknownKeys: merging._def.unknownKeys, - // catchall: merging._def.catchall, - // shape: () => - // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()), - // typeName: ZodFirstPartyTypeKind.ZodObject, - // }) as any; - // return merged; - // } - catchall(index) { - return new ZodObject({ - ...this._def, - catchall: index, - }); - } - pick(mask) { - const shape = {}; - util.objectKeys(mask).forEach((key) => { - if (mask[key] && this.shape[key]) { - shape[key] = this.shape[key]; - } - }); - return new ZodObject({ - ...this._def, - shape: () => shape, - }); - } - omit(mask) { - const shape = {}; - util.objectKeys(this.shape).forEach((key) => { - if (!mask[key]) { - shape[key] = this.shape[key]; - } - }); - return new ZodObject({ - ...this._def, - shape: () => shape, - }); - } - /** - * @deprecated - */ - deepPartial() { - return deepPartialify(this); - } - partial(mask) { - const newShape = {}; - util.objectKeys(this.shape).forEach((key) => { - const fieldSchema = this.shape[key]; - if (mask && !mask[key]) { - newShape[key] = fieldSchema; - } - else { - newShape[key] = fieldSchema.optional(); - } - }); - return new ZodObject({ - ...this._def, - shape: () => newShape, - }); - } - required(mask) { - const newShape = {}; - util.objectKeys(this.shape).forEach((key) => { - if (mask && !mask[key]) { - newShape[key] = this.shape[key]; - } - else { - const fieldSchema = this.shape[key]; - let newField = fieldSchema; - while (newField instanceof ZodOptional) { - newField = newField._def.innerType; - } - newShape[key] = newField; - } - }); - return new ZodObject({ - ...this._def, - shape: () => newShape, - }); - } - keyof() { - return createZodEnum(util.objectKeys(this.shape)); - } -} -ZodObject.create = (shape, params) => { - return new ZodObject({ - shape: () => shape, - unknownKeys: "strip", - catchall: ZodNever.create(), - typeName: ZodFirstPartyTypeKind.ZodObject, - ...processCreateParams(params), - }); -}; -ZodObject.strictCreate = (shape, params) => { - return new ZodObject({ - shape: () => shape, - unknownKeys: "strict", - catchall: ZodNever.create(), - typeName: ZodFirstPartyTypeKind.ZodObject, - ...processCreateParams(params), - }); -}; -ZodObject.lazycreate = (shape, params) => { - return new ZodObject({ - shape, - unknownKeys: "strip", - catchall: ZodNever.create(), - typeName: ZodFirstPartyTypeKind.ZodObject, - ...processCreateParams(params), - }); -}; -class ZodUnion extends ZodType { - _parse(input) { - const { ctx } = this._processInputParams(input); - const options = this._def.options; - function handleResults(results) { - // return first issue-free validation if it exists - for (const result of results) { - if (result.result.status === "valid") { - return result.result; - } - } - for (const result of results) { - if (result.result.status === "dirty") { - // add issues from dirty option - ctx.common.issues.push(...result.ctx.common.issues); - return result.result; - } - } - // return invalid - const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues)); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_union, - unionErrors, - }); - return INVALID; - } - if (ctx.common.async) { - return Promise.all(options.map(async (option) => { - const childCtx = { - ...ctx, - common: { - ...ctx.common, - issues: [], - }, - parent: null, - }; - return { - result: await option._parseAsync({ - data: ctx.data, - path: ctx.path, - parent: childCtx, - }), - ctx: childCtx, - }; - })).then(handleResults); - } - else { - let dirty = undefined; - const issues = []; - for (const option of options) { - const childCtx = { - ...ctx, - common: { - ...ctx.common, - issues: [], - }, - parent: null, - }; - const result = option._parseSync({ - data: ctx.data, - path: ctx.path, - parent: childCtx, - }); - if (result.status === "valid") { - return result; - } - else if (result.status === "dirty" && !dirty) { - dirty = { result, ctx: childCtx }; - } - if (childCtx.common.issues.length) { - issues.push(childCtx.common.issues); - } - } - if (dirty) { - ctx.common.issues.push(...dirty.ctx.common.issues); - return dirty.result; - } - const unionErrors = issues.map((issues) => new ZodError(issues)); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_union, - unionErrors, - }); - return INVALID; - } - } - get options() { - return this._def.options; - } -} -ZodUnion.create = (types, params) => { - return new ZodUnion({ - options: types, - typeName: ZodFirstPartyTypeKind.ZodUnion, - ...processCreateParams(params), - }); -}; -///////////////////////////////////////////////////// -///////////////////////////////////////////////////// -////////// ////////// -////////// ZodDiscriminatedUnion ////////// -////////// ////////// -///////////////////////////////////////////////////// -///////////////////////////////////////////////////// -const getDiscriminator = (type) => { - if (type instanceof ZodLazy) { - return getDiscriminator(type.schema); - } - else if (type instanceof ZodEffects) { - return getDiscriminator(type.innerType()); - } - else if (type instanceof ZodLiteral) { - return [type.value]; - } - else if (type instanceof ZodEnum) { - return type.options; - } - else if (type instanceof ZodNativeEnum) { - // eslint-disable-next-line ban/ban - return util.objectValues(type.enum); - } - else if (type instanceof ZodDefault) { - return getDiscriminator(type._def.innerType); - } - else if (type instanceof ZodUndefined) { - return [undefined]; - } - else if (type instanceof ZodNull) { - return [null]; - } - else if (type instanceof ZodOptional) { - return [undefined, ...getDiscriminator(type.unwrap())]; - } - else if (type instanceof ZodNullable) { - return [null, ...getDiscriminator(type.unwrap())]; - } - else if (type instanceof ZodBranded) { - return getDiscriminator(type.unwrap()); - } - else if (type instanceof ZodReadonly) { - return getDiscriminator(type.unwrap()); - } - else if (type instanceof ZodCatch) { - return getDiscriminator(type._def.innerType); - } - else { - return []; - } -}; -class ZodDiscriminatedUnion extends ZodType { - _parse(input) { - const { ctx } = this._processInputParams(input); - if (ctx.parsedType !== ZodParsedType.object) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.object, - received: ctx.parsedType, - }); - return INVALID; - } - const discriminator = this.discriminator; - const discriminatorValue = ctx.data[discriminator]; - const option = this.optionsMap.get(discriminatorValue); - if (!option) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_union_discriminator, - options: Array.from(this.optionsMap.keys()), - path: [discriminator], - }); - return INVALID; - } - if (ctx.common.async) { - return option._parseAsync({ - data: ctx.data, - path: ctx.path, - parent: ctx, - }); - } - else { - return option._parseSync({ - data: ctx.data, - path: ctx.path, - parent: ctx, - }); - } - } - get discriminator() { - return this._def.discriminator; - } - get options() { - return this._def.options; - } - get optionsMap() { - return this._def.optionsMap; - } - /** - * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor. - * However, it only allows a union of objects, all of which need to share a discriminator property. This property must - * have a different value for each object in the union. - * @param discriminator the name of the discriminator property - * @param types an array of object schemas - * @param params - */ - static create(discriminator, options, params) { - // Get all the valid discriminator values - const optionsMap = new Map(); - // try { - for (const type of options) { - const discriminatorValues = getDiscriminator(type.shape[discriminator]); - if (!discriminatorValues.length) { - throw new Error(`A discriminator value for key \`${discriminator}\` could not be extracted from all schema options`); - } - for (const value of discriminatorValues) { - if (optionsMap.has(value)) { - throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`); - } - optionsMap.set(value, type); - } - } - return new ZodDiscriminatedUnion({ - typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion, - discriminator, - options, - optionsMap, - ...processCreateParams(params), - }); - } -} -function mergeValues(a, b) { - const aType = getParsedType(a); - const bType = getParsedType(b); - if (a === b) { - return { valid: true, data: a }; - } - else if (aType === ZodParsedType.object && bType === ZodParsedType.object) { - const bKeys = util.objectKeys(b); - const sharedKeys = util - .objectKeys(a) - .filter((key) => bKeys.indexOf(key) !== -1); - const newObj = { ...a, ...b }; - for (const key of sharedKeys) { - const sharedValue = mergeValues(a[key], b[key]); - if (!sharedValue.valid) { - return { valid: false }; - } - newObj[key] = sharedValue.data; - } - return { valid: true, data: newObj }; - } - else if (aType === ZodParsedType.array && bType === ZodParsedType.array) { - if (a.length !== b.length) { - return { valid: false }; - } - const newArray = []; - for (let index = 0; index < a.length; index++) { - const itemA = a[index]; - const itemB = b[index]; - const sharedValue = mergeValues(itemA, itemB); - if (!sharedValue.valid) { - return { valid: false }; - } - newArray.push(sharedValue.data); - } - return { valid: true, data: newArray }; - } - else if (aType === ZodParsedType.date && - bType === ZodParsedType.date && - +a === +b) { - return { valid: true, data: a }; - } - else { - return { valid: false }; - } -} -class ZodIntersection extends ZodType { - _parse(input) { - const { status, ctx } = this._processInputParams(input); - const handleParsed = (parsedLeft, parsedRight) => { - if (isAborted(parsedLeft) || isAborted(parsedRight)) { - return INVALID; - } - const merged = mergeValues(parsedLeft.value, parsedRight.value); - if (!merged.valid) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_intersection_types, - }); - return INVALID; - } - if (isDirty(parsedLeft) || isDirty(parsedRight)) { - status.dirty(); - } - return { status: status.value, value: merged.data }; - }; - if (ctx.common.async) { - return Promise.all([ - this._def.left._parseAsync({ - data: ctx.data, - path: ctx.path, - parent: ctx, - }), - this._def.right._parseAsync({ - data: ctx.data, - path: ctx.path, - parent: ctx, - }), - ]).then(([left, right]) => handleParsed(left, right)); - } - else { - return handleParsed(this._def.left._parseSync({ - data: ctx.data, - path: ctx.path, - parent: ctx, - }), this._def.right._parseSync({ - data: ctx.data, - path: ctx.path, - parent: ctx, - })); - } - } -} -ZodIntersection.create = (left, right, params) => { - return new ZodIntersection({ - left: left, - right: right, - typeName: ZodFirstPartyTypeKind.ZodIntersection, - ...processCreateParams(params), - }); -}; -class ZodTuple extends ZodType { - _parse(input) { - const { status, ctx } = this._processInputParams(input); - if (ctx.parsedType !== ZodParsedType.array) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.array, - received: ctx.parsedType, - }); - return INVALID; - } - if (ctx.data.length < this._def.items.length) { - addIssueToContext(ctx, { - code: ZodIssueCode.too_small, - minimum: this._def.items.length, - inclusive: true, - exact: false, - type: "array", - }); - return INVALID; - } - const rest = this._def.rest; - if (!rest && ctx.data.length > this._def.items.length) { - addIssueToContext(ctx, { - code: ZodIssueCode.too_big, - maximum: this._def.items.length, - inclusive: true, - exact: false, - type: "array", - }); - status.dirty(); - } - const items = [...ctx.data] - .map((item, itemIndex) => { - const schema = this._def.items[itemIndex] || this._def.rest; - if (!schema) - return null; - return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex)); - }) - .filter((x) => !!x); // filter nulls - if (ctx.common.async) { - return Promise.all(items).then((results) => { - return ParseStatus.mergeArray(status, results); - }); - } - else { - return ParseStatus.mergeArray(status, items); - } - } - get items() { - return this._def.items; - } - rest(rest) { - return new ZodTuple({ - ...this._def, - rest, - }); - } -} -ZodTuple.create = (schemas, params) => { - if (!Array.isArray(schemas)) { - throw new Error("You must pass an array of schemas to z.tuple([ ... ])"); - } - return new ZodTuple({ - items: schemas, - typeName: ZodFirstPartyTypeKind.ZodTuple, - rest: null, - ...processCreateParams(params), - }); -}; -class ZodRecord extends ZodType { - get keySchema() { - return this._def.keyType; - } - get valueSchema() { - return this._def.valueType; - } - _parse(input) { - const { status, ctx } = this._processInputParams(input); - if (ctx.parsedType !== ZodParsedType.object) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.object, - received: ctx.parsedType, - }); - return INVALID; - } - const pairs = []; - const keyType = this._def.keyType; - const valueType = this._def.valueType; - for (const key in ctx.data) { - pairs.push({ - key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)), - value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)), - alwaysSet: key in ctx.data, - }); - } - if (ctx.common.async) { - return ParseStatus.mergeObjectAsync(status, pairs); - } - else { - return ParseStatus.mergeObjectSync(status, pairs); - } - } - get element() { - return this._def.valueType; - } - static create(first, second, third) { - if (second instanceof ZodType) { - return new ZodRecord({ - keyType: first, - valueType: second, - typeName: ZodFirstPartyTypeKind.ZodRecord, - ...processCreateParams(third), - }); - } - return new ZodRecord({ - keyType: ZodString.create(), - valueType: first, - typeName: ZodFirstPartyTypeKind.ZodRecord, - ...processCreateParams(second), - }); - } -} -class ZodMap extends ZodType { - get keySchema() { - return this._def.keyType; - } - get valueSchema() { - return this._def.valueType; - } - _parse(input) { - const { status, ctx } = this._processInputParams(input); - if (ctx.parsedType !== ZodParsedType.map) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.map, - received: ctx.parsedType, - }); - return INVALID; - } - const keyType = this._def.keyType; - const valueType = this._def.valueType; - const pairs = [...ctx.data.entries()].map(([key, value], index) => { - return { - key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, "key"])), - value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, "value"])), - }; - }); - if (ctx.common.async) { - const finalMap = new Map(); - return Promise.resolve().then(async () => { - for (const pair of pairs) { - const key = await pair.key; - const value = await pair.value; - if (key.status === "aborted" || value.status === "aborted") { - return INVALID; - } - if (key.status === "dirty" || value.status === "dirty") { - status.dirty(); - } - finalMap.set(key.value, value.value); - } - return { status: status.value, value: finalMap }; - }); - } - else { - const finalMap = new Map(); - for (const pair of pairs) { - const key = pair.key; - const value = pair.value; - if (key.status === "aborted" || value.status === "aborted") { - return INVALID; - } - if (key.status === "dirty" || value.status === "dirty") { - status.dirty(); - } - finalMap.set(key.value, value.value); - } - return { status: status.value, value: finalMap }; - } - } -} -ZodMap.create = (keyType, valueType, params) => { - return new ZodMap({ - valueType, - keyType, - typeName: ZodFirstPartyTypeKind.ZodMap, - ...processCreateParams(params), - }); -}; -class ZodSet extends ZodType { - _parse(input) { - const { status, ctx } = this._processInputParams(input); - if (ctx.parsedType !== ZodParsedType.set) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.set, - received: ctx.parsedType, - }); - return INVALID; - } - const def = this._def; - if (def.minSize !== null) { - if (ctx.data.size < def.minSize.value) { - addIssueToContext(ctx, { - code: ZodIssueCode.too_small, - minimum: def.minSize.value, - type: "set", - inclusive: true, - exact: false, - message: def.minSize.message, - }); - status.dirty(); - } - } - if (def.maxSize !== null) { - if (ctx.data.size > def.maxSize.value) { - addIssueToContext(ctx, { - code: ZodIssueCode.too_big, - maximum: def.maxSize.value, - type: "set", - inclusive: true, - exact: false, - message: def.maxSize.message, - }); - status.dirty(); - } - } - const valueType = this._def.valueType; - function finalizeSet(elements) { - const parsedSet = new Set(); - for (const element of elements) { - if (element.status === "aborted") - return INVALID; - if (element.status === "dirty") - status.dirty(); - parsedSet.add(element.value); - } - return { status: status.value, value: parsedSet }; - } - const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i))); - if (ctx.common.async) { - return Promise.all(elements).then((elements) => finalizeSet(elements)); - } - else { - return finalizeSet(elements); - } - } - min(minSize, message) { - return new ZodSet({ - ...this._def, - minSize: { value: minSize, message: errorUtil.toString(message) }, - }); - } - max(maxSize, message) { - return new ZodSet({ - ...this._def, - maxSize: { value: maxSize, message: errorUtil.toString(message) }, - }); - } - size(size, message) { - return this.min(size, message).max(size, message); - } - nonempty(message) { - return this.min(1, message); - } -} -ZodSet.create = (valueType, params) => { - return new ZodSet({ - valueType, - minSize: null, - maxSize: null, - typeName: ZodFirstPartyTypeKind.ZodSet, - ...processCreateParams(params), - }); -}; -class ZodFunction extends ZodType { - constructor() { - super(...arguments); - this.validate = this.implement; - } - _parse(input) { - const { ctx } = this._processInputParams(input); - if (ctx.parsedType !== ZodParsedType.function) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.function, - received: ctx.parsedType, - }); - return INVALID; - } - function makeArgsIssue(args, error) { - return makeIssue({ - data: args, - path: ctx.path, - errorMaps: [ - ctx.common.contextualErrorMap, - ctx.schemaErrorMap, - getErrorMap(), - errorMap, - ].filter((x) => !!x), - issueData: { - code: ZodIssueCode.invalid_arguments, - argumentsError: error, - }, - }); - } - function makeReturnsIssue(returns, error) { - return makeIssue({ - data: returns, - path: ctx.path, - errorMaps: [ - ctx.common.contextualErrorMap, - ctx.schemaErrorMap, - getErrorMap(), - errorMap, - ].filter((x) => !!x), - issueData: { - code: ZodIssueCode.invalid_return_type, - returnTypeError: error, - }, - }); - } - const params = { errorMap: ctx.common.contextualErrorMap }; - const fn = ctx.data; - if (this._def.returns instanceof ZodPromise) { - // Would love a way to avoid disabling this rule, but we need - // an alias (using an arrow function was what caused 2651). - // eslint-disable-next-line @typescript-eslint/no-this-alias - const me = this; - return OK(async function (...args) { - const error = new ZodError([]); - const parsedArgs = await me._def.args - .parseAsync(args, params) - .catch((e) => { - error.addIssue(makeArgsIssue(args, e)); - throw error; - }); - const result = await Reflect.apply(fn, this, parsedArgs); - const parsedReturns = await me._def.returns._def.type - .parseAsync(result, params) - .catch((e) => { - error.addIssue(makeReturnsIssue(result, e)); - throw error; - }); - return parsedReturns; - }); - } - else { - // Would love a way to avoid disabling this rule, but we need - // an alias (using an arrow function was what caused 2651). - // eslint-disable-next-line @typescript-eslint/no-this-alias - const me = this; - return OK(function (...args) { - const parsedArgs = me._def.args.safeParse(args, params); - if (!parsedArgs.success) { - throw new ZodError([makeArgsIssue(args, parsedArgs.error)]); - } - const result = Reflect.apply(fn, this, parsedArgs.data); - const parsedReturns = me._def.returns.safeParse(result, params); - if (!parsedReturns.success) { - throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]); - } - return parsedReturns.data; - }); - } - } - parameters() { - return this._def.args; - } - returnType() { - return this._def.returns; - } - args(...items) { - return new ZodFunction({ - ...this._def, - args: ZodTuple.create(items).rest(ZodUnknown.create()), - }); - } - returns(returnType) { - return new ZodFunction({ - ...this._def, - returns: returnType, - }); - } - implement(func) { - const validatedFunc = this.parse(func); - return validatedFunc; - } - strictImplement(func) { - const validatedFunc = this.parse(func); - return validatedFunc; - } - static create(args, returns, params) { - return new ZodFunction({ - args: (args - ? args - : ZodTuple.create([]).rest(ZodUnknown.create())), - returns: returns || ZodUnknown.create(), - typeName: ZodFirstPartyTypeKind.ZodFunction, - ...processCreateParams(params), - }); - } -} -class ZodLazy extends ZodType { - get schema() { - return this._def.getter(); - } - _parse(input) { - const { ctx } = this._processInputParams(input); - const lazySchema = this._def.getter(); - return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx }); - } -} -ZodLazy.create = (getter, params) => { - return new ZodLazy({ - getter: getter, - typeName: ZodFirstPartyTypeKind.ZodLazy, - ...processCreateParams(params), - }); -}; -class ZodLiteral extends ZodType { - _parse(input) { - if (input.data !== this._def.value) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - received: ctx.data, - code: ZodIssueCode.invalid_literal, - expected: this._def.value, - }); - return INVALID; - } - return { status: "valid", value: input.data }; - } - get value() { - return this._def.value; - } -} -ZodLiteral.create = (value, params) => { - return new ZodLiteral({ - value: value, - typeName: ZodFirstPartyTypeKind.ZodLiteral, - ...processCreateParams(params), - }); -}; -function createZodEnum(values, params) { - return new ZodEnum({ - values, - typeName: ZodFirstPartyTypeKind.ZodEnum, - ...processCreateParams(params), - }); -} -class ZodEnum extends ZodType { - constructor() { - super(...arguments); - _ZodEnum_cache.set(this, void 0); - } - _parse(input) { - if (typeof input.data !== "string") { - const ctx = this._getOrReturnCtx(input); - const expectedValues = this._def.values; - addIssueToContext(ctx, { - expected: util.joinValues(expectedValues), - received: ctx.parsedType, - code: ZodIssueCode.invalid_type, - }); - return INVALID; - } - if (!__classPrivateFieldGet(this, _ZodEnum_cache)) { - __classPrivateFieldSet(this, _ZodEnum_cache, new Set(this._def.values)); - } - if (!__classPrivateFieldGet(this, _ZodEnum_cache).has(input.data)) { - const ctx = this._getOrReturnCtx(input); - const expectedValues = this._def.values; - addIssueToContext(ctx, { - received: ctx.data, - code: ZodIssueCode.invalid_enum_value, - options: expectedValues, - }); - return INVALID; - } - return OK(input.data); - } - get options() { - return this._def.values; - } - get enum() { - const enumValues = {}; - for (const val of this._def.values) { - enumValues[val] = val; - } - return enumValues; - } - get Values() { - const enumValues = {}; - for (const val of this._def.values) { - enumValues[val] = val; - } - return enumValues; - } - get Enum() { - const enumValues = {}; - for (const val of this._def.values) { - enumValues[val] = val; - } - return enumValues; - } - extract(values, newDef = this._def) { - return ZodEnum.create(values, { - ...this._def, - ...newDef, - }); - } - exclude(values, newDef = this._def) { - return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), { - ...this._def, - ...newDef, - }); - } -} -_ZodEnum_cache = new WeakMap(); -ZodEnum.create = createZodEnum; -class ZodNativeEnum extends ZodType { - constructor() { - super(...arguments); - _ZodNativeEnum_cache.set(this, void 0); - } - _parse(input) { - const nativeEnumValues = util.getValidEnumValues(this._def.values); - const ctx = this._getOrReturnCtx(input); - if (ctx.parsedType !== ZodParsedType.string && - ctx.parsedType !== ZodParsedType.number) { - const expectedValues = util.objectValues(nativeEnumValues); - addIssueToContext(ctx, { - expected: util.joinValues(expectedValues), - received: ctx.parsedType, - code: ZodIssueCode.invalid_type, - }); - return INVALID; - } - if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache)) { - __classPrivateFieldSet(this, _ZodNativeEnum_cache, new Set(util.getValidEnumValues(this._def.values))); - } - if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache).has(input.data)) { - const expectedValues = util.objectValues(nativeEnumValues); - addIssueToContext(ctx, { - received: ctx.data, - code: ZodIssueCode.invalid_enum_value, - options: expectedValues, - }); - return INVALID; - } - return OK(input.data); - } - get enum() { - return this._def.values; - } -} -_ZodNativeEnum_cache = new WeakMap(); -ZodNativeEnum.create = (values, params) => { - return new ZodNativeEnum({ - values: values, - typeName: ZodFirstPartyTypeKind.ZodNativeEnum, - ...processCreateParams(params), - }); -}; -class ZodPromise extends ZodType { - unwrap() { - return this._def.type; - } - _parse(input) { - const { ctx } = this._processInputParams(input); - if (ctx.parsedType !== ZodParsedType.promise && - ctx.common.async === false) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.promise, - received: ctx.parsedType, - }); - return INVALID; - } - const promisified = ctx.parsedType === ZodParsedType.promise - ? ctx.data - : Promise.resolve(ctx.data); - return OK(promisified.then((data) => { - return this._def.type.parseAsync(data, { - path: ctx.path, - errorMap: ctx.common.contextualErrorMap, - }); - })); - } -} -ZodPromise.create = (schema, params) => { - return new ZodPromise({ - type: schema, - typeName: ZodFirstPartyTypeKind.ZodPromise, - ...processCreateParams(params), - }); -}; -class ZodEffects extends ZodType { - innerType() { - return this._def.schema; - } - sourceType() { - return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects - ? this._def.schema.sourceType() - : this._def.schema; - } - _parse(input) { - const { status, ctx } = this._processInputParams(input); - const effect = this._def.effect || null; - const checkCtx = { - addIssue: (arg) => { - addIssueToContext(ctx, arg); - if (arg.fatal) { - status.abort(); - } - else { - status.dirty(); - } - }, - get path() { - return ctx.path; - }, - }; - checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx); - if (effect.type === "preprocess") { - const processed = effect.transform(ctx.data, checkCtx); - if (ctx.common.async) { - return Promise.resolve(processed).then(async (processed) => { - if (status.value === "aborted") - return INVALID; - const result = await this._def.schema._parseAsync({ - data: processed, - path: ctx.path, - parent: ctx, - }); - if (result.status === "aborted") - return INVALID; - if (result.status === "dirty") - return DIRTY(result.value); - if (status.value === "dirty") - return DIRTY(result.value); - return result; - }); - } - else { - if (status.value === "aborted") - return INVALID; - const result = this._def.schema._parseSync({ - data: processed, - path: ctx.path, - parent: ctx, - }); - if (result.status === "aborted") - return INVALID; - if (result.status === "dirty") - return DIRTY(result.value); - if (status.value === "dirty") - return DIRTY(result.value); - return result; - } - } - if (effect.type === "refinement") { - const executeRefinement = (acc) => { - const result = effect.refinement(acc, checkCtx); - if (ctx.common.async) { - return Promise.resolve(result); - } - if (result instanceof Promise) { - throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead."); - } - return acc; - }; - if (ctx.common.async === false) { - const inner = this._def.schema._parseSync({ - data: ctx.data, - path: ctx.path, - parent: ctx, - }); - if (inner.status === "aborted") - return INVALID; - if (inner.status === "dirty") - status.dirty(); - // return value is ignored - executeRefinement(inner.value); - return { status: status.value, value: inner.value }; - } - else { - return this._def.schema - ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }) - .then((inner) => { - if (inner.status === "aborted") - return INVALID; - if (inner.status === "dirty") - status.dirty(); - return executeRefinement(inner.value).then(() => { - return { status: status.value, value: inner.value }; - }); - }); - } - } - if (effect.type === "transform") { - if (ctx.common.async === false) { - const base = this._def.schema._parseSync({ - data: ctx.data, - path: ctx.path, - parent: ctx, - }); - if (!isValid(base)) - return base; - const result = effect.transform(base.value, checkCtx); - if (result instanceof Promise) { - throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`); - } - return { status: status.value, value: result }; - } - else { - return this._def.schema - ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }) - .then((base) => { - if (!isValid(base)) - return base; - return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ status: status.value, value: result })); - }); - } - } - util.assertNever(effect); - } -} -ZodEffects.create = (schema, effect, params) => { - return new ZodEffects({ - schema, - typeName: ZodFirstPartyTypeKind.ZodEffects, - effect, - ...processCreateParams(params), - }); -}; -ZodEffects.createWithPreprocess = (preprocess, schema, params) => { - return new ZodEffects({ - schema, - effect: { type: "preprocess", transform: preprocess }, - typeName: ZodFirstPartyTypeKind.ZodEffects, - ...processCreateParams(params), - }); -}; -class ZodOptional extends ZodType { - _parse(input) { - const parsedType = this._getType(input); - if (parsedType === ZodParsedType.undefined) { - return OK(undefined); - } - return this._def.innerType._parse(input); - } - unwrap() { - return this._def.innerType; - } -} -ZodOptional.create = (type, params) => { - return new ZodOptional({ - innerType: type, - typeName: ZodFirstPartyTypeKind.ZodOptional, - ...processCreateParams(params), - }); -}; -class ZodNullable extends ZodType { - _parse(input) { - const parsedType = this._getType(input); - if (parsedType === ZodParsedType.null) { - return OK(null); - } - return this._def.innerType._parse(input); - } - unwrap() { - return this._def.innerType; - } -} -ZodNullable.create = (type, params) => { - return new ZodNullable({ - innerType: type, - typeName: ZodFirstPartyTypeKind.ZodNullable, - ...processCreateParams(params), - }); -}; -class ZodDefault extends ZodType { - _parse(input) { - const { ctx } = this._processInputParams(input); - let data = ctx.data; - if (ctx.parsedType === ZodParsedType.undefined) { - data = this._def.defaultValue(); - } - return this._def.innerType._parse({ - data, - path: ctx.path, - parent: ctx, - }); - } - removeDefault() { - return this._def.innerType; - } -} -ZodDefault.create = (type, params) => { - return new ZodDefault({ - innerType: type, - typeName: ZodFirstPartyTypeKind.ZodDefault, - defaultValue: typeof params.default === "function" - ? params.default - : () => params.default, - ...processCreateParams(params), - }); -}; -class ZodCatch extends ZodType { - _parse(input) { - const { ctx } = this._processInputParams(input); - // newCtx is used to not collect issues from inner types in ctx - const newCtx = { - ...ctx, - common: { - ...ctx.common, - issues: [], - }, - }; - const result = this._def.innerType._parse({ - data: newCtx.data, - path: newCtx.path, - parent: { - ...newCtx, - }, - }); - if (isAsync(result)) { - return result.then((result) => { - return { - status: "valid", - value: result.status === "valid" - ? result.value - : this._def.catchValue({ - get error() { - return new ZodError(newCtx.common.issues); - }, - input: newCtx.data, - }), - }; - }); - } - else { - return { - status: "valid", - value: result.status === "valid" - ? result.value - : this._def.catchValue({ - get error() { - return new ZodError(newCtx.common.issues); - }, - input: newCtx.data, - }), - }; - } - } - removeCatch() { - return this._def.innerType; - } -} -ZodCatch.create = (type, params) => { - return new ZodCatch({ - innerType: type, - typeName: ZodFirstPartyTypeKind.ZodCatch, - catchValue: typeof params.catch === "function" ? params.catch : () => params.catch, - ...processCreateParams(params), - }); -}; -class ZodNaN extends ZodType { - _parse(input) { - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.nan) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.nan, - received: ctx.parsedType, - }); - return INVALID; - } - return { status: "valid", value: input.data }; - } -} -ZodNaN.create = (params) => { - return new ZodNaN({ - typeName: ZodFirstPartyTypeKind.ZodNaN, - ...processCreateParams(params), - }); -}; -const BRAND = Symbol("zod_brand"); -class ZodBranded extends ZodType { - _parse(input) { - const { ctx } = this._processInputParams(input); - const data = ctx.data; - return this._def.type._parse({ - data, - path: ctx.path, - parent: ctx, - }); - } - unwrap() { - return this._def.type; - } -} -class ZodPipeline extends ZodType { - _parse(input) { - const { status, ctx } = this._processInputParams(input); - if (ctx.common.async) { - const handleAsync = async () => { - const inResult = await this._def.in._parseAsync({ - data: ctx.data, - path: ctx.path, - parent: ctx, - }); - if (inResult.status === "aborted") - return INVALID; - if (inResult.status === "dirty") { - status.dirty(); - return DIRTY(inResult.value); - } - else { - return this._def.out._parseAsync({ - data: inResult.value, - path: ctx.path, - parent: ctx, - }); - } - }; - return handleAsync(); - } - else { - const inResult = this._def.in._parseSync({ - data: ctx.data, - path: ctx.path, - parent: ctx, - }); - if (inResult.status === "aborted") - return INVALID; - if (inResult.status === "dirty") { - status.dirty(); - return { - status: "dirty", - value: inResult.value, - }; - } - else { - return this._def.out._parseSync({ - data: inResult.value, - path: ctx.path, - parent: ctx, - }); - } - } - } - static create(a, b) { - return new ZodPipeline({ - in: a, - out: b, - typeName: ZodFirstPartyTypeKind.ZodPipeline, - }); - } -} -class ZodReadonly extends ZodType { - _parse(input) { - const result = this._def.innerType._parse(input); - const freeze = (data) => { - if (isValid(data)) { - data.value = Object.freeze(data.value); - } - return data; - }; - return isAsync(result) - ? result.then((data) => freeze(data)) - : freeze(result); - } - unwrap() { - return this._def.innerType; - } -} -ZodReadonly.create = (type, params) => { - return new ZodReadonly({ - innerType: type, - typeName: ZodFirstPartyTypeKind.ZodReadonly, - ...processCreateParams(params), - }); -}; -function custom(check, params = {}, -/** - * @deprecated - * - * Pass `fatal` into the params object instead: - * - * ```ts - * z.string().custom((val) => val.length > 5, { fatal: false }) - * ``` - * - */ -fatal) { - if (check) - return ZodAny.create().superRefine((data, ctx) => { - var _a, _b; - if (!check(data)) { - const p = typeof params === "function" - ? params(data) - : typeof params === "string" - ? { message: params } - : params; - const _fatal = (_b = (_a = p.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true; - const p2 = typeof p === "string" ? { message: p } : p; - ctx.addIssue({ code: "custom", ...p2, fatal: _fatal }); - } - }); - return ZodAny.create(); -} -const late = { - object: ZodObject.lazycreate, -}; -var ZodFirstPartyTypeKind; -(function (ZodFirstPartyTypeKind) { - ZodFirstPartyTypeKind["ZodString"] = "ZodString"; - ZodFirstPartyTypeKind["ZodNumber"] = "ZodNumber"; - ZodFirstPartyTypeKind["ZodNaN"] = "ZodNaN"; - ZodFirstPartyTypeKind["ZodBigInt"] = "ZodBigInt"; - ZodFirstPartyTypeKind["ZodBoolean"] = "ZodBoolean"; - ZodFirstPartyTypeKind["ZodDate"] = "ZodDate"; - ZodFirstPartyTypeKind["ZodSymbol"] = "ZodSymbol"; - ZodFirstPartyTypeKind["ZodUndefined"] = "ZodUndefined"; - ZodFirstPartyTypeKind["ZodNull"] = "ZodNull"; - ZodFirstPartyTypeKind["ZodAny"] = "ZodAny"; - ZodFirstPartyTypeKind["ZodUnknown"] = "ZodUnknown"; - ZodFirstPartyTypeKind["ZodNever"] = "ZodNever"; - ZodFirstPartyTypeKind["ZodVoid"] = "ZodVoid"; - ZodFirstPartyTypeKind["ZodArray"] = "ZodArray"; - ZodFirstPartyTypeKind["ZodObject"] = "ZodObject"; - ZodFirstPartyTypeKind["ZodUnion"] = "ZodUnion"; - ZodFirstPartyTypeKind["ZodDiscriminatedUnion"] = "ZodDiscriminatedUnion"; - ZodFirstPartyTypeKind["ZodIntersection"] = "ZodIntersection"; - ZodFirstPartyTypeKind["ZodTuple"] = "ZodTuple"; - ZodFirstPartyTypeKind["ZodRecord"] = "ZodRecord"; - ZodFirstPartyTypeKind["ZodMap"] = "ZodMap"; - ZodFirstPartyTypeKind["ZodSet"] = "ZodSet"; - ZodFirstPartyTypeKind["ZodFunction"] = "ZodFunction"; - ZodFirstPartyTypeKind["ZodLazy"] = "ZodLazy"; - ZodFirstPartyTypeKind["ZodLiteral"] = "ZodLiteral"; - ZodFirstPartyTypeKind["ZodEnum"] = "ZodEnum"; - ZodFirstPartyTypeKind["ZodEffects"] = "ZodEffects"; - ZodFirstPartyTypeKind["ZodNativeEnum"] = "ZodNativeEnum"; - ZodFirstPartyTypeKind["ZodOptional"] = "ZodOptional"; - ZodFirstPartyTypeKind["ZodNullable"] = "ZodNullable"; - ZodFirstPartyTypeKind["ZodDefault"] = "ZodDefault"; - ZodFirstPartyTypeKind["ZodCatch"] = "ZodCatch"; - ZodFirstPartyTypeKind["ZodPromise"] = "ZodPromise"; - ZodFirstPartyTypeKind["ZodBranded"] = "ZodBranded"; - ZodFirstPartyTypeKind["ZodPipeline"] = "ZodPipeline"; - ZodFirstPartyTypeKind["ZodReadonly"] = "ZodReadonly"; -})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {})); -const instanceOfType = ( -// const instanceOfType = any>( -cls, params = { - message: `Input not instance of ${cls.name}`, -}) => custom((data) => data instanceof cls, params); -const stringType = ZodString.create; -const numberType = ZodNumber.create; -const nanType = ZodNaN.create; -const bigIntType = ZodBigInt.create; -const booleanType = ZodBoolean.create; -const dateType = ZodDate.create; -const symbolType = ZodSymbol.create; -const undefinedType = ZodUndefined.create; -const nullType = ZodNull.create; -const anyType = ZodAny.create; -const unknownType = ZodUnknown.create; -const neverType = ZodNever.create; -const voidType = ZodVoid.create; -const arrayType = ZodArray.create; -const objectType = ZodObject.create; -const strictObjectType = ZodObject.strictCreate; -const unionType = ZodUnion.create; -const discriminatedUnionType = ZodDiscriminatedUnion.create; -const intersectionType = ZodIntersection.create; -const tupleType = ZodTuple.create; -const recordType = ZodRecord.create; -const mapType = ZodMap.create; -const setType = ZodSet.create; -const functionType = ZodFunction.create; -const lazyType = ZodLazy.create; -const literalType = ZodLiteral.create; -const enumType = ZodEnum.create; -const nativeEnumType = ZodNativeEnum.create; -const promiseType = ZodPromise.create; -const effectsType = ZodEffects.create; -const optionalType = ZodOptional.create; -const nullableType = ZodNullable.create; -const preprocessType = ZodEffects.createWithPreprocess; -const pipelineType = ZodPipeline.create; -const ostring = () => stringType().optional(); -const onumber = () => numberType().optional(); -const oboolean = () => booleanType().optional(); -const coerce = { - string: ((arg) => ZodString.create({ ...arg, coerce: true })), - number: ((arg) => ZodNumber.create({ ...arg, coerce: true })), - boolean: ((arg) => ZodBoolean.create({ - ...arg, - coerce: true, - })), - bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })), - date: ((arg) => ZodDate.create({ ...arg, coerce: true })), -}; -const NEVER = INVALID; - -var z = /*#__PURE__*/Object.freeze({ - __proto__: null, - defaultErrorMap: errorMap, - setErrorMap: setErrorMap, - getErrorMap: getErrorMap, - makeIssue: makeIssue, - EMPTY_PATH: EMPTY_PATH, - addIssueToContext: addIssueToContext, - ParseStatus: ParseStatus, - INVALID: INVALID, - DIRTY: DIRTY, - OK: OK, - isAborted: isAborted, - isDirty: isDirty, - isValid: isValid, - isAsync: isAsync, - get util () { return util; }, - get objectUtil () { return objectUtil; }, - ZodParsedType: ZodParsedType, - getParsedType: getParsedType, - ZodType: ZodType, - datetimeRegex: datetimeRegex, - ZodString: ZodString, - ZodNumber: ZodNumber, - ZodBigInt: ZodBigInt, - ZodBoolean: ZodBoolean, - ZodDate: ZodDate, - ZodSymbol: ZodSymbol, - ZodUndefined: ZodUndefined, - ZodNull: ZodNull, - ZodAny: ZodAny, - ZodUnknown: ZodUnknown, - ZodNever: ZodNever, - ZodVoid: ZodVoid, - ZodArray: ZodArray, - ZodObject: ZodObject, - ZodUnion: ZodUnion, - ZodDiscriminatedUnion: ZodDiscriminatedUnion, - ZodIntersection: ZodIntersection, - ZodTuple: ZodTuple, - ZodRecord: ZodRecord, - ZodMap: ZodMap, - ZodSet: ZodSet, - ZodFunction: ZodFunction, - ZodLazy: ZodLazy, - ZodLiteral: ZodLiteral, - ZodEnum: ZodEnum, - ZodNativeEnum: ZodNativeEnum, - ZodPromise: ZodPromise, - ZodEffects: ZodEffects, - ZodTransformer: ZodEffects, - ZodOptional: ZodOptional, - ZodNullable: ZodNullable, - ZodDefault: ZodDefault, - ZodCatch: ZodCatch, - ZodNaN: ZodNaN, - BRAND: BRAND, - ZodBranded: ZodBranded, - ZodPipeline: ZodPipeline, - ZodReadonly: ZodReadonly, - custom: custom, - Schema: ZodType, - ZodSchema: ZodType, - late: late, - get ZodFirstPartyTypeKind () { return ZodFirstPartyTypeKind; }, - coerce: coerce, - any: anyType, - array: arrayType, - bigint: bigIntType, - boolean: booleanType, - date: dateType, - discriminatedUnion: discriminatedUnionType, - effect: effectsType, - 'enum': enumType, - 'function': functionType, - 'instanceof': instanceOfType, - intersection: intersectionType, - lazy: lazyType, - literal: literalType, - map: mapType, - nan: nanType, - nativeEnum: nativeEnumType, - never: neverType, - 'null': nullType, - nullable: nullableType, - number: numberType, - object: objectType, - oboolean: oboolean, - onumber: onumber, - optional: optionalType, - ostring: ostring, - pipeline: pipelineType, - preprocess: preprocessType, - promise: promiseType, - record: recordType, - set: setType, - strictObject: strictObjectType, - string: stringType, - symbol: symbolType, - transformer: effectsType, - tuple: tupleType, - 'undefined': undefinedType, - union: unionType, - unknown: unknownType, - 'void': voidType, - NEVER: NEVER, - ZodIssueCode: ZodIssueCode, - quotelessJson: quotelessJson, - ZodError: ZodError -}); - -const SerializedSealingPair = z.object({ - privateKey: z.string(), - publicKey: z.string(), -}); -const zPermitV2WithDefaults = z.object({ - name: z.string().optional().default("Unnamed Permit"), - type: z.enum(["self", "sharing", "recipient"]), - issuer: z - .string() - .refine((val) => isAddress(val), { - message: "PermitV2 issuer :: invalid address", - }) - .refine((val) => val !== ZeroAddress, { - message: "PermitV2 issuer :: must not be zeroAddress", - }), - expiration: z.number().optional().default(1000000000000), - contracts: z.array(z.string()).optional().default([]), - projects: z.array(z.string()).optional().default([]), - recipient: z - .string() - .optional() - .default(ZeroAddress) - .refine((val) => isAddress(val), { - message: "PermitV2 recipient :: invalid address", - }), - validatorId: z.number().optional().default(0), - validatorContract: z - .string() - .optional() - .default(ZeroAddress) - .refine((val) => isAddress(val), { - message: "PermitV2 validatorContract :: invalid address", - }), - sealingPair: SerializedSealingPair.optional(), - issuerSignature: z.string().optional().default("0x"), - recipientSignature: z.string().optional().default("0x"), -}); -/** - * Ensures that this Permit will provide access to a non-zero amount of contracts - * by ensuring that `contracts` and `projects` aren't both empty arrays. - */ -const PermitV2RefineAccess = [ - (data) => { - return data.contracts.length + data.projects.length > 0; - }, - { - message: "PermitV2 access :: at least one contract or project must be accessible.", - path: ["contracts", "projects"], - }, -]; -/** - * Permits allow a hook into an optional external validator contract, - * this check ensures that IF an external validator is applied, that both `validatorId` and `validatorContract` are populated, - * ELSE ensures that both `validatorId` and `validatorContract` are empty - */ -const PermitV2RefineValidator = [ - (data) => (data.validatorId !== 0 && data.validatorContract !== ZeroAddress) || - (data.validatorId === 0 && data.validatorContract === ZeroAddress), - { - message: "PermitV2 external validator :: validatorId and validatorContract must either both be set or both be unset.", - path: ["validatorId", "validatorContract"], - }, -]; -/** - * SuperRefinement that checks a PermitV2s signatures - * checkRecipient - whether to validate that `recipient` is empty for permit with type , and populated for - * checkSealingPair - only the fully formed permit requires the sealing pair, it can be optional for permitV2 create params - * checkExistingSignatures - not optional - checks that the permit's type matches the populated signature fields - * checkSigned - checks that the active user's signature has been signed and added. -> issuerSignature, -> recipientSignature - */ -const PermitV2SignaturesSuperRefinement = (options) => { - return (data, ctx) => { - // Check Recipient - // If type , `PermitV2.recipient` must be zeroAddress - // If type , `PermitV2.recipient` must not be zeroAddress - if (options.checkRecipient) { - if (data.type === "self" && data.recipient !== ZeroAddress) - ctx.addIssue({ - code: z.ZodIssueCode.custom, - path: ["recipient"], - message: `PermitV2 (type '${data.type}') recipient :: must be empty (zeroAddress)`, - }); - if ((data.type === "recipient" || data.type === "sharing") && - data.recipient === ZeroAddress) { - ctx.addIssue({ - code: z.ZodIssueCode.custom, - path: ["recipient"], - message: `PermitV2 (type '${data.type}') recipient :: must not be empty`, - }); - } - } - // Check Sealing Pair - if (options.checkSealingPair && data.sealingPair == null) - ctx.addIssue({ - code: z.ZodIssueCode.custom, - path: ["sealingPair"], - message: `PermitV2 sealingPair :: must not be empty`, - }); - // Check existing signatures match type (not checking this user's signature, but the other signature) - // If type , `PermitV2.recipientSignature` must be empty - // If type , `PermitV2.issuerSignature` must not be empty - if ((data.type === "self" || data.type === "sharing") && - data.recipientSignature !== "0x") { - ctx.addIssue({ - code: z.ZodIssueCode.custom, - path: ["recipientSignature"], - message: `PermitV2 (type '${data.type}') recipientSignature :: should not be populated by the issuer`, - }); - } - if (data.type === "recipient" && data.issuerSignature === "0x") { - ctx.addIssue({ - code: z.ZodIssueCode.custom, - path: ["issuerSignature"], - message: `PermitV2 (type 'recipient') issuerSignature :: \`issuer\` must sign the PermitV2 before sharing it with \`recipient\``, - }); - } - // Check Signed - // If type , `PermitV2.issuerSignature` must not be empty - // If type , `PermitV2.recipientSignature` must not be empty - if (options.checkSigned) { - if ((data.type === "self" || data.type === "sharing") && - data.issuerSignature === "0x") - ctx.addIssue({ - code: z.ZodIssueCode.custom, - path: ["issuerSignature"], - message: `PermitV2 (type '${data.type}') issuerSignature :: must be populated with issuer's signature. Use \`PermitV2.sign\` or create permit with \`PermitV2.createAndSign\``, - }); - if (data.type === "recipient" && data.recipientSignature === "0x") { - ctx.addIssue({ - code: z.ZodIssueCode.custom, - path: ["recipientSignature"], - message: `PermitV2 (type 'recipient') recipientSignature :: must be populated with recipient's signature. Use \`PermitV2.sign\` or create permit with \`PermitV2.createAndSign\``, - }); - } - } - return; - }; -}; -/** - * Validator for the params used when creating a fresh PermitV2 - * Has defaults added that will be populated in the options object - * Signatures superRefinement checks only the recipient, sealingPair and signatures are not necessary in the Permit params - */ -const PermitV2ParamsValidator = zPermitV2WithDefaults - .refine(...PermitV2RefineAccess) - .refine(...PermitV2RefineValidator) - .superRefine(PermitV2SignaturesSuperRefinement({ - checkRecipient: true, - checkSealingPair: false, // SealingPair not required when creating a fresh permit - checkSigned: false, // Signature not required when creating a fresh permit -})); -/** - * Validator for a PermitV2 that is expected to be fully formed - * Does not allow optional values or offer defaults - * Validates that the correct signatures are populated - * Validates sealingPair is populated - */ -const FullyFormedPermitV2Validator = zPermitV2WithDefaults - .required() - .refine(...PermitV2RefineAccess) - .refine(...PermitV2RefineValidator) - .superRefine(PermitV2SignaturesSuperRefinement({ - checkRecipient: true, - checkSealingPair: true, - checkSigned: true, -})); - -/* eslint-disable @typescript-eslint/no-explicit-any */ -class PermitV2 { - constructor(options, metadata) { - /** - * Chain that this permit was signed on. In part used for mock encrypt/unseal on hardhat network. - * Should not be set manually, included in metadata as part of serialization flows. - */ - this._signedChainId = undefined; - this.updateName = (name) => { - this.name = name; - }; - /** - * Utility to extract the public data from a permit. - * Used in `serialize`, `getPermission`, `getHash` etc - */ - this.getInterface = () => { - return { - name: this.name, - type: this.type, - issuer: this.issuer, - expiration: this.expiration, - contracts: this.contracts, - projects: this.projects, - recipient: this.recipient, - validatorId: this.validatorId, - validatorContract: this.validatorContract, - sealingPair: this.sealingPair, - issuerSignature: this.issuerSignature, - recipientSignature: this.recipientSignature, - }; - }; - /** - * Export the necessary permit data to share a permit with another user - */ - this.export = () => { - const cleanedPermit = { - name: this.name, - type: this.type, - issuer: this.issuer, - expiration: this.expiration, - }; - if (this.contracts.length > 0) - cleanedPermit.contracts = this.contracts; - if (this.projects.length > 0) - cleanedPermit.projects = this.projects; - if (this.recipient !== ZeroAddress) - cleanedPermit.recipient = this.recipient; - if (this.validatorId !== 0) - cleanedPermit.validatorId = this.validatorId; - if (this.validatorContract !== ZeroAddress) - cleanedPermit.validatorContract = this.validatorContract; - if (this.type === "sharing" && this.issuerSignature !== "0x") - cleanedPermit.issuerSignature = this.issuerSignature; - return JSON.stringify(cleanedPermit, undefined, 2); - }; - /** - * Returns a serializable permit instance, removing classes and methods. - * NOTE: Does not return a stringified permit - */ - this.serialize = () => { - const { sealingPair, ...permit } = this.getInterface(); - return { - ...permit, - _signedChainId: this._signedChainId, - sealingPair: { - publicKey: sealingPair.publicKey, - privateKey: sealingPair.privateKey, - }, - }; - }; - /** - * Extracts a contract input ready permission from this permit. - * The permission inherits most fields from the permit, however - * `permit.sealingPair` is removed and replaced by `permit.sealingPair.publicKey` in the `sealingKey` field. - * - * @permit {boolean} skipValidation - Flag to prevent running validation on the permit before returning the extracted permission. Used internally. - * @returns {PermissionV2} - */ - this.getPermission = (skipValidation = false) => { - const permitData = this.getInterface(); - if (!skipValidation) { - const validationResult = FullyFormedPermitV2Validator.safeParse(permitData); - if (!validationResult.success) { - throw new Error(`PermitV2 :: getPermission :: permit validation failed - ${JSON.stringify(validationResult.error, null, 2)} ${JSON.stringify(permitData, null, 2)}`); - } - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { name, type, sealingPair, ...permit } = permitData; - return { - ...permit, - sealingKey: `0x${sealingPair.publicKey}`, - }; - }; - /** - * Returns a stable hash depending on the core data of the permit. - * Is used in the store as each permit's key in the permit map. - */ - this.getHash = () => keccak256(id(JSON.stringify({ - type: this.type, - issuer: this.issuer, - expiration: this.expiration, - contracts: this.contracts, - projects: this.projects, - recipient: this.recipient, - validatorId: this.validatorId, - validatorContract: this.validatorContract, - }))); - /** - * Returns the domain, types, primaryType, and message fields required to request the user's signature - * Primary type is returned to allow viem clients to more easily connect - */ - this.getSignatureParams = (chainId, primaryType) => { - return { - domain: getSignatureDomain(chainId), - ...getSignatureTypesAndMessage(primaryType, SignatureTypes[primaryType], this.getPermission(true)), - }; - }; - /** - * Determines the required signature type. - * Creates the EIP712 types and message. - * Prompts the user for their signature. - * Inserts the signature into `issuerSignature` or `recipientSignature` as necessary. - * - * @param {string} chainId - Used as part of the EIP712 domain, throws if undefined - * @param {AbstractSigner} signer - Signer responsible for signing the EIP712 permit signature, throws if undefined - */ - this.sign = async (chainId, signer) => { - if (chainId == null) - throw new Error("PermitV2 :: sign - chainId undefined, cannot sign a permit with an unknown chainId"); - if (signer == null) - throw new Error("PermitV2 :: sign - signer undefined, you must pass in a `signer` for the connected user to create a permitV2 signature"); - let primaryType = "PermissionedV2IssuerSelf"; - if (this.type === "self") - primaryType = "PermissionedV2IssuerSelf"; - if (this.type === "sharing") - primaryType = "PermissionedV2IssuerShared"; - if (this.type === "recipient") - primaryType = "PermissionedV2Recipient"; - const { domain, types, message } = this.getSignatureParams(chainId, primaryType); - const signature = await signer.signTypedData(domain, types, message); - if (this.type === "self" || this.type === "sharing") { - this.issuerSignature = signature; - } - if (this.type === "recipient") { - this.recipientSignature = signature; - } - this._signedChainId = chainId; - }; - /** - * Use the privateKey of `permit.sealingPair` to unseal `ciphertext` returned from the Fhenix chain. - * Useful when not using `SealedItem` structs and need to unseal an individual ciphertext. - */ - this.unsealCiphertext = (ciphertext) => { - // Early exit with mock unseal if interacting with hardhat network - if (chainIsHardhat(this._signedChainId)) - return hardhatMockUnseal(ciphertext); - return this.sealingPair.unseal(ciphertext); - }; - /** - * Check if permit satisfies the requirements param. - * Permit must satisfy either the contracts list or the projects list - * - * @param {{contracts?: string[], projects?: string[]}} requirements - Lists of contract and project requirements. - * @returns {satisfies: boolean, unsatisfiedContracts, unsatisfiedProjects} - satisfied if either req list is fulfilled. - */ - this.getSatisfies = (requirements) => { - let contractsSatisfied = true; - const unsatisfiedContracts = []; - for (const contract in requirements.contracts) { - if (!this.contracts.includes(contract)) { - contractsSatisfied = false; - unsatisfiedContracts.push(contract); - } - } - let projectsSatisfied = true; - const unsatisfiedProjects = []; - for (const project in requirements.projects) { - if (!this.projects.includes(project)) { - projectsSatisfied = false; - unsatisfiedProjects.push(project); - } - } - if (contractsSatisfied || projectsSatisfied) - return { - satisfies: true, - unsatisfiedContracts: null, - unsatisfiedProjects: null, - }; - return { - satisfies: false, - unsatisfiedContracts, - unsatisfiedProjects, - }; - }; - /** - * Returns whether the active party has created their signature. - * If `permit.type` is self or sharing, the active party is `issuer`. - * If `permit.type` is recipient, the active party is `recipient` - * - * @returns {boolean} - */ - this.isSigned = () => { - if (this.type === "self" || this.type === "sharing") { - return this.issuerSignature !== "0x"; - } - if (this.type === "recipient") { - return this.recipientSignature != "0x"; - } - return false; - }; - /** - * Returns whether this permit has expired due to `permit.expiration` - * - * @returns {boolean} - */ - this.isExpired = () => { - return this.expiration < Math.floor(Date.now() / 1000); - }; - /** - * Overall validity checker of a permit, checks the signatures and expirations - * - * @returns {{valid: boolean, error: string}} - If `valid`, `error` is null, else `error` indicates which validity check failed - */ - this.isValid = () => { - if (this.isExpired()) - return { valid: false, error: "expired" }; - if (!this.isSigned()) - return { valid: false, error: "not-signed" }; - return { valid: true, error: null }; - }; - this.name = options.name; - this.type = options.type; - this.issuer = options.issuer; - this.expiration = options.expiration; - this.contracts = options.contracts; - this.projects = options.projects; - this.recipient = options.recipient; - this.validatorId = options.validatorId; - this.validatorContract = options.validatorContract; - this.sealingPair = options.sealingPair; - this.issuerSignature = options.issuerSignature; - this.recipientSignature = options.recipientSignature; - this._signedChainId = metadata?._signedChainId; - } - static async create(options) { - const { success, data: parsed, error, } = PermitV2ParamsValidator.safeParse(options); - if (!success) { - throw new Error("PermitV2 :: create :: Parsing PermitV2Options failed " + - JSON.stringify(error, null, 2)); - } - const sealingPair = parsed.sealingPair != null - ? new SealingKey(parsed.sealingPair.privateKey, parsed.sealingPair.publicKey) - : await GenerateSealingKey(); - return new PermitV2({ - ...parsed, - sealingPair, - }); - } - static async createAndSign(options, chainId, signer) { - const permit = await PermitV2.create(options); - await permit.sign(chainId, signer); - return permit; - } - unseal(item) { - // SealedItem - const sealedItem = getAsSealedItem(item); - if (sealedItem != null) { - const bn = chainIsHardhat(this._signedChainId) - ? hardhatMockUnseal(sealedItem.data) - : this.sealingPair.unseal(sealedItem.data); - if (isSealedBool(sealedItem)) { - // Return a boolean for SealedBool - return Boolean(bn).valueOf(); - } - if (isSealedAddress(sealedItem)) { - // Return a string for SealedAddress - return getAddress(`0x${bn.toString(16).slice(-40)}`); - } - if (isSealedUint(sealedItem)) { - // Return a bigint for SealedUint - return bn; - } - } - // Object | Array - if (typeof item === "object" && item !== null) { - if (Array.isArray(item)) { - // Array - recurse - return item.map((nestedItem) => this.unseal(nestedItem)); - } - else { - // Object - recurse - const result = {}; - for (const key in item) { - result[key] = this.unseal(item[key]); - } - return result; - } - } - // Primitive - return item; - } -} -/** - * Creates a `PermitV2` from a serialized permit, hydrating methods and classes - * NOTE: Does not return a stringified permit - * - * @param {SerializedPermitV2} - Permit structure excluding classes - * @returns {PermitV2} - New instance of PermitV2 class - */ -PermitV2.deserialize = ({ _signedChainId, sealingPair, ...permit }) => { - return new PermitV2({ - ...permit, - sealingPair: new SealingKey(sealingPair.privateKey, sealingPair.publicKey), - }, { - _signedChainId, - }); -}; -PermitV2.validate = (permit) => { - return FullyFormedPermitV2Validator.safeParse(permit); -}; - -const createStoreImpl = (createState) => { - let state; - const listeners = /* @__PURE__ */ new Set(); - const setState = (partial, replace) => { - const nextState = typeof partial === "function" ? partial(state) : partial; - if (!Object.is(nextState, state)) { - const previousState = state; - state = (replace != null ? replace : typeof nextState !== "object" || nextState === null) ? nextState : Object.assign({}, state, nextState); - listeners.forEach((listener) => listener(state, previousState)); - } - }; - const getState = () => state; - const getInitialState = () => initialState; - const subscribe = (listener) => { - listeners.add(listener); - return () => listeners.delete(listener); - }; - const api = { setState, getState, getInitialState, subscribe }; - const initialState = state = createState(setState, getState, api); - return api; -}; -const createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl; - -function createJSONStorage(getStorage, options) { - let storage; - try { - storage = getStorage(); - } catch (e) { - return; - } - const persistStorage = { - getItem: (name) => { - var _a; - const parse = (str2) => { - if (str2 === null) { - return null; - } - return JSON.parse(str2, void 0 ); - }; - const str = (_a = storage.getItem(name)) != null ? _a : null; - if (str instanceof Promise) { - return str.then(parse); - } - return parse(str); - }, - setItem: (name, newValue) => storage.setItem( - name, - JSON.stringify(newValue, void 0 ) - ), - removeItem: (name) => storage.removeItem(name) - }; - return persistStorage; -} -const toThenable = (fn) => (input) => { - try { - const result = fn(input); - if (result instanceof Promise) { - return result; - } - return { - then(onFulfilled) { - return toThenable(onFulfilled)(result); - }, - catch(_onRejected) { - return this; - } - }; - } catch (e) { - return { - then(_onFulfilled) { - return this; - }, - catch(onRejected) { - return toThenable(onRejected)(e); - } - }; - } -}; -const persistImpl = (config, baseOptions) => (set, get, api) => { - let options = { - storage: createJSONStorage(() => localStorage), - partialize: (state) => state, - version: 0, - merge: (persistedState, currentState) => ({ - ...currentState, - ...persistedState - }), - ...baseOptions - }; - let hasHydrated = false; - const hydrationListeners = /* @__PURE__ */ new Set(); - const finishHydrationListeners = /* @__PURE__ */ new Set(); - let storage = options.storage; - if (!storage) { - return config( - (...args) => { - console.warn( - `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.` - ); - set(...args); - }, - get, - api - ); - } - const setItem = () => { - const state = options.partialize({ ...get() }); - return storage.setItem(options.name, { - state, - version: options.version - }); - }; - const savedSetState = api.setState; - api.setState = (state, replace) => { - savedSetState(state, replace); - void setItem(); - }; - const configResult = config( - (...args) => { - set(...args); - void setItem(); - }, - get, - api - ); - api.getInitialState = () => configResult; - let stateFromStorage; - const hydrate = () => { - var _a, _b; - if (!storage) return; - hasHydrated = false; - hydrationListeners.forEach((cb) => { - var _a2; - return cb((_a2 = get()) != null ? _a2 : configResult); - }); - const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0; - return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => { - if (deserializedStorageValue) { - if (typeof deserializedStorageValue.version === "number" && deserializedStorageValue.version !== options.version) { - if (options.migrate) { - return [ - true, - options.migrate( - deserializedStorageValue.state, - deserializedStorageValue.version - ) - ]; - } - console.error( - `State loaded from storage couldn't be migrated since no migrate function was provided` - ); - } else { - return [false, deserializedStorageValue.state]; - } - } - return [false, void 0]; - }).then((migrationResult) => { - var _a2; - const [migrated, migratedState] = migrationResult; - stateFromStorage = options.merge( - migratedState, - (_a2 = get()) != null ? _a2 : configResult - ); - set(stateFromStorage, true); - if (migrated) { - return setItem(); - } - }).then(() => { - postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0); - stateFromStorage = get(); - hasHydrated = true; - finishHydrationListeners.forEach((cb) => cb(stateFromStorage)); - }).catch((e) => { - postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e); - }); - }; - api.persist = { - setOptions: (newOptions) => { - options = { - ...options, - ...newOptions - }; - if (newOptions.storage) { - storage = newOptions.storage; - } - }, - clearStorage: () => { - storage == null ? void 0 : storage.removeItem(options.name); - }, - getOptions: () => options, - rehydrate: () => hydrate(), - hasHydrated: () => hasHydrated, - onHydrate: (cb) => { - hydrationListeners.add(cb); - return () => { - hydrationListeners.delete(cb); - }; - }, - onFinishHydration: (cb) => { - finishHydrationListeners.add(cb); - return () => { - finishHydrationListeners.delete(cb); - }; - } - }; - if (!options.skipHydration) { - hydrate(); - } - return stateFromStorage || configResult; -}; -const persist = persistImpl; - -// src/utils/env.ts -var NOTHING = Symbol.for("immer-nothing"); -var DRAFTABLE = Symbol.for("immer-draftable"); -var DRAFT_STATE = Symbol.for("immer-state"); - -// src/utils/errors.ts -var errors = process.env.NODE_ENV !== "production" ? [ - // All error codes, starting by 0: - function(plugin) { - return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \`enable${plugin}()\` when initializing your application.`; - }, - function(thing) { - return `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`; - }, - "This object has been frozen and should not be mutated", - function(data) { - return "Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? " + data; - }, - "An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.", - "Immer forbids circular references", - "The first or second argument to `produce` must be a function", - "The third argument to `produce` must be a function or undefined", - "First argument to `createDraft` must be a plain object, an array, or an immerable object", - "First argument to `finishDraft` must be a draft returned by `createDraft`", - function(thing) { - return `'current' expects a draft, got: ${thing}`; - }, - "Object.defineProperty() cannot be used on an Immer draft", - "Object.setPrototypeOf() cannot be used on an Immer draft", - "Immer only supports deleting array indices", - "Immer only supports setting array indices and the 'length' property", - function(thing) { - return `'original' expects a draft, got: ${thing}`; - } - // Note: if more errors are added, the errorOffset in Patches.ts should be increased - // See Patches.ts for additional errors -] : []; -function die(error, ...args) { - if (process.env.NODE_ENV !== "production") { - const e = errors[error]; - const msg = typeof e === "function" ? e.apply(null, args) : e; - throw new Error(`[Immer] ${msg}`); - } - throw new Error( - `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf` - ); -} - -// src/utils/common.ts -var getPrototypeOf = Object.getPrototypeOf; -function isDraft(value) { - return !!value && !!value[DRAFT_STATE]; -} -function isDraftable(value) { - if (!value) - return false; - return isPlainObject(value) || Array.isArray(value) || !!value[DRAFTABLE] || !!value.constructor?.[DRAFTABLE] || isMap(value) || isSet(value); -} -var objectCtorString = Object.prototype.constructor.toString(); -function isPlainObject(value) { - if (!value || typeof value !== "object") - return false; - const proto = getPrototypeOf(value); - if (proto === null) { - return true; - } - const Ctor = Object.hasOwnProperty.call(proto, "constructor") && proto.constructor; - if (Ctor === Object) - return true; - return typeof Ctor == "function" && Function.toString.call(Ctor) === objectCtorString; -} -function each(obj, iter) { - if (getArchtype(obj) === 0 /* Object */) { - Reflect.ownKeys(obj).forEach((key) => { - iter(key, obj[key], obj); - }); - } else { - obj.forEach((entry, index) => iter(index, entry, obj)); - } -} -function getArchtype(thing) { - const state = thing[DRAFT_STATE]; - return state ? state.type_ : Array.isArray(thing) ? 1 /* Array */ : isMap(thing) ? 2 /* Map */ : isSet(thing) ? 3 /* Set */ : 0 /* Object */; -} -function has(thing, prop) { - return getArchtype(thing) === 2 /* Map */ ? thing.has(prop) : Object.prototype.hasOwnProperty.call(thing, prop); -} -function set(thing, propOrOldValue, value) { - const t = getArchtype(thing); - if (t === 2 /* Map */) - thing.set(propOrOldValue, value); - else if (t === 3 /* Set */) { - thing.add(value); - } else - thing[propOrOldValue] = value; -} -function is(x, y) { - if (x === y) { - return x !== 0 || 1 / x === 1 / y; - } else { - return x !== x && y !== y; - } -} -function isMap(target) { - return target instanceof Map; -} -function isSet(target) { - return target instanceof Set; -} -function latest(state) { - return state.copy_ || state.base_; -} -function shallowCopy(base, strict) { - if (isMap(base)) { - return new Map(base); - } - if (isSet(base)) { - return new Set(base); - } - if (Array.isArray(base)) - return Array.prototype.slice.call(base); - const isPlain = isPlainObject(base); - if (strict === true || strict === "class_only" && !isPlain) { - const descriptors = Object.getOwnPropertyDescriptors(base); - delete descriptors[DRAFT_STATE]; - let keys = Reflect.ownKeys(descriptors); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const desc = descriptors[key]; - if (desc.writable === false) { - desc.writable = true; - desc.configurable = true; - } - if (desc.get || desc.set) - descriptors[key] = { - configurable: true, - writable: true, - // could live with !!desc.set as well here... - enumerable: desc.enumerable, - value: base[key] - }; - } - return Object.create(getPrototypeOf(base), descriptors); - } else { - const proto = getPrototypeOf(base); - if (proto !== null && isPlain) { - return { ...base }; - } - const obj = Object.create(proto); - return Object.assign(obj, base); - } -} -function freeze(obj, deep = false) { - if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) - return obj; - if (getArchtype(obj) > 1) { - obj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections; - } - Object.freeze(obj); - if (deep) - Object.entries(obj).forEach(([key, value]) => freeze(value, true)); - return obj; -} -function dontMutateFrozenCollections() { - die(2); -} -function isFrozen(obj) { - return Object.isFrozen(obj); -} - -// src/utils/plugins.ts -var plugins = {}; -function getPlugin(pluginKey) { - const plugin = plugins[pluginKey]; - if (!plugin) { - die(0, pluginKey); - } - return plugin; -} - -// src/core/scope.ts -var currentScope; -function getCurrentScope() { - return currentScope; -} -function createScope(parent_, immer_) { - return { - drafts_: [], - parent_, - immer_, - // Whenever the modified draft contains a draft from another scope, we - // need to prevent auto-freezing so the unowned draft can be finalized. - canAutoFreeze_: true, - unfinalizedDrafts_: 0 - }; -} -function usePatchesInScope(scope, patchListener) { - if (patchListener) { - getPlugin("Patches"); - scope.patches_ = []; - scope.inversePatches_ = []; - scope.patchListener_ = patchListener; - } -} -function revokeScope(scope) { - leaveScope(scope); - scope.drafts_.forEach(revokeDraft); - scope.drafts_ = null; -} -function leaveScope(scope) { - if (scope === currentScope) { - currentScope = scope.parent_; - } -} -function enterScope(immer2) { - return currentScope = createScope(currentScope, immer2); -} -function revokeDraft(draft) { - const state = draft[DRAFT_STATE]; - if (state.type_ === 0 /* Object */ || state.type_ === 1 /* Array */) - state.revoke_(); - else - state.revoked_ = true; -} - -// src/core/finalize.ts -function processResult(result, scope) { - scope.unfinalizedDrafts_ = scope.drafts_.length; - const baseDraft = scope.drafts_[0]; - const isReplaced = result !== void 0 && result !== baseDraft; - if (isReplaced) { - if (baseDraft[DRAFT_STATE].modified_) { - revokeScope(scope); - die(4); - } - if (isDraftable(result)) { - result = finalize(scope, result); - if (!scope.parent_) - maybeFreeze(scope, result); - } - if (scope.patches_) { - getPlugin("Patches").generateReplacementPatches_( - baseDraft[DRAFT_STATE].base_, - result, - scope.patches_, - scope.inversePatches_ - ); - } - } else { - result = finalize(scope, baseDraft, []); - } - revokeScope(scope); - if (scope.patches_) { - scope.patchListener_(scope.patches_, scope.inversePatches_); - } - return result !== NOTHING ? result : void 0; -} -function finalize(rootScope, value, path) { - if (isFrozen(value)) - return value; - const state = value[DRAFT_STATE]; - if (!state) { - each( - value, - (key, childValue) => finalizeProperty(rootScope, state, value, key, childValue, path) - ); - return value; - } - if (state.scope_ !== rootScope) - return value; - if (!state.modified_) { - maybeFreeze(rootScope, state.base_, true); - return state.base_; - } - if (!state.finalized_) { - state.finalized_ = true; - state.scope_.unfinalizedDrafts_--; - const result = state.copy_; - let resultEach = result; - let isSet2 = false; - if (state.type_ === 3 /* Set */) { - resultEach = new Set(result); - result.clear(); - isSet2 = true; - } - each( - resultEach, - (key, childValue) => finalizeProperty(rootScope, state, result, key, childValue, path, isSet2) - ); - maybeFreeze(rootScope, result, false); - if (path && rootScope.patches_) { - getPlugin("Patches").generatePatches_( - state, - path, - rootScope.patches_, - rootScope.inversePatches_ - ); - } - } - return state.copy_; -} -function finalizeProperty(rootScope, parentState, targetObject, prop, childValue, rootPath, targetIsSet) { - if (process.env.NODE_ENV !== "production" && childValue === targetObject) - die(5); - if (isDraft(childValue)) { - const path = rootPath && parentState && parentState.type_ !== 3 /* Set */ && // Set objects are atomic since they have no keys. - !has(parentState.assigned_, prop) ? rootPath.concat(prop) : void 0; - const res = finalize(rootScope, childValue, path); - set(targetObject, prop, res); - if (isDraft(res)) { - rootScope.canAutoFreeze_ = false; - } else - return; - } else if (targetIsSet) { - targetObject.add(childValue); - } - if (isDraftable(childValue) && !isFrozen(childValue)) { - if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) { - return; - } - finalize(rootScope, childValue); - if ((!parentState || !parentState.scope_.parent_) && typeof prop !== "symbol" && Object.prototype.propertyIsEnumerable.call(targetObject, prop)) - maybeFreeze(rootScope, childValue); - } -} -function maybeFreeze(scope, value, deep = false) { - if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) { - freeze(value, deep); - } -} - -// src/core/proxy.ts -function createProxyProxy(base, parent) { - const isArray = Array.isArray(base); - const state = { - type_: isArray ? 1 /* Array */ : 0 /* Object */, - // Track which produce call this is associated with. - scope_: parent ? parent.scope_ : getCurrentScope(), - // True for both shallow and deep changes. - modified_: false, - // Used during finalization. - finalized_: false, - // Track which properties have been assigned (true) or deleted (false). - assigned_: {}, - // The parent draft state. - parent_: parent, - // The base state. - base_: base, - // The base proxy. - draft_: null, - // set below - // The base copy with any updated values. - copy_: null, - // Called by the `produce` function. - revoke_: null, - isManual_: false - }; - let target = state; - let traps = objectTraps; - if (isArray) { - target = [state]; - traps = arrayTraps; - } - const { revoke, proxy } = Proxy.revocable(target, traps); - state.draft_ = proxy; - state.revoke_ = revoke; - return proxy; -} -var objectTraps = { - get(state, prop) { - if (prop === DRAFT_STATE) - return state; - const source = latest(state); - if (!has(source, prop)) { - return readPropFromProto(state, source, prop); - } - const value = source[prop]; - if (state.finalized_ || !isDraftable(value)) { - return value; - } - if (value === peek(state.base_, prop)) { - prepareCopy(state); - return state.copy_[prop] = createProxy(value, state); - } - return value; - }, - has(state, prop) { - return prop in latest(state); - }, - ownKeys(state) { - return Reflect.ownKeys(latest(state)); - }, - set(state, prop, value) { - const desc = getDescriptorFromProto(latest(state), prop); - if (desc?.set) { - desc.set.call(state.draft_, value); - return true; - } - if (!state.modified_) { - const current2 = peek(latest(state), prop); - const currentState = current2?.[DRAFT_STATE]; - if (currentState && currentState.base_ === value) { - state.copy_[prop] = value; - state.assigned_[prop] = false; - return true; - } - if (is(value, current2) && (value !== void 0 || has(state.base_, prop))) - return true; - prepareCopy(state); - markChanged(state); - } - if (state.copy_[prop] === value && // special case: handle new props with value 'undefined' - (value !== void 0 || prop in state.copy_) || // special case: NaN - Number.isNaN(value) && Number.isNaN(state.copy_[prop])) - return true; - state.copy_[prop] = value; - state.assigned_[prop] = true; - return true; - }, - deleteProperty(state, prop) { - if (peek(state.base_, prop) !== void 0 || prop in state.base_) { - state.assigned_[prop] = false; - prepareCopy(state); - markChanged(state); - } else { - delete state.assigned_[prop]; - } - if (state.copy_) { - delete state.copy_[prop]; - } - return true; - }, - // Note: We never coerce `desc.value` into an Immer draft, because we can't make - // the same guarantee in ES5 mode. - getOwnPropertyDescriptor(state, prop) { - const owner = latest(state); - const desc = Reflect.getOwnPropertyDescriptor(owner, prop); - if (!desc) - return desc; - return { - writable: true, - configurable: state.type_ !== 1 /* Array */ || prop !== "length", - enumerable: desc.enumerable, - value: owner[prop] - }; - }, - defineProperty() { - die(11); - }, - getPrototypeOf(state) { - return getPrototypeOf(state.base_); - }, - setPrototypeOf() { - die(12); - } -}; -var arrayTraps = {}; -each(objectTraps, (key, fn) => { - arrayTraps[key] = function() { - arguments[0] = arguments[0][0]; - return fn.apply(this, arguments); - }; -}); -arrayTraps.deleteProperty = function(state, prop) { - if (process.env.NODE_ENV !== "production" && isNaN(parseInt(prop))) - die(13); - return arrayTraps.set.call(this, state, prop, void 0); -}; -arrayTraps.set = function(state, prop, value) { - if (process.env.NODE_ENV !== "production" && prop !== "length" && isNaN(parseInt(prop))) - die(14); - return objectTraps.set.call(this, state[0], prop, value, state[0]); -}; -function peek(draft, prop) { - const state = draft[DRAFT_STATE]; - const source = state ? latest(state) : draft; - return source[prop]; -} -function readPropFromProto(state, source, prop) { - const desc = getDescriptorFromProto(source, prop); - return desc ? `value` in desc ? desc.value : ( - // This is a very special case, if the prop is a getter defined by the - // prototype, we should invoke it with the draft as context! - desc.get?.call(state.draft_) - ) : void 0; -} -function getDescriptorFromProto(source, prop) { - if (!(prop in source)) - return void 0; - let proto = getPrototypeOf(source); - while (proto) { - const desc = Object.getOwnPropertyDescriptor(proto, prop); - if (desc) - return desc; - proto = getPrototypeOf(proto); - } - return void 0; -} -function markChanged(state) { - if (!state.modified_) { - state.modified_ = true; - if (state.parent_) { - markChanged(state.parent_); - } - } -} -function prepareCopy(state) { - if (!state.copy_) { - state.copy_ = shallowCopy( - state.base_, - state.scope_.immer_.useStrictShallowCopy_ - ); - } -} - -// src/core/immerClass.ts -var Immer2 = class { - constructor(config) { - this.autoFreeze_ = true; - this.useStrictShallowCopy_ = false; - /** - * The `produce` function takes a value and a "recipe function" (whose - * return value often depends on the base state). The recipe function is - * free to mutate its first argument however it wants. All mutations are - * only ever applied to a __copy__ of the base state. - * - * Pass only a function to create a "curried producer" which relieves you - * from passing the recipe function every time. - * - * Only plain objects and arrays are made mutable. All other objects are - * considered uncopyable. - * - * Note: This function is __bound__ to its `Immer` instance. - * - * @param {any} base - the initial state - * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified - * @param {Function} patchListener - optional function that will be called with all the patches produced here - * @returns {any} a new state, or the initial state if nothing was modified - */ - this.produce = (base, recipe, patchListener) => { - if (typeof base === "function" && typeof recipe !== "function") { - const defaultBase = recipe; - recipe = base; - const self = this; - return function curriedProduce(base2 = defaultBase, ...args) { - return self.produce(base2, (draft) => recipe.call(this, draft, ...args)); - }; - } - if (typeof recipe !== "function") - die(6); - if (patchListener !== void 0 && typeof patchListener !== "function") - die(7); - let result; - if (isDraftable(base)) { - const scope = enterScope(this); - const proxy = createProxy(base, void 0); - let hasError = true; - try { - result = recipe(proxy); - hasError = false; - } finally { - if (hasError) - revokeScope(scope); - else - leaveScope(scope); - } - usePatchesInScope(scope, patchListener); - return processResult(result, scope); - } else if (!base || typeof base !== "object") { - result = recipe(base); - if (result === void 0) - result = base; - if (result === NOTHING) - result = void 0; - if (this.autoFreeze_) - freeze(result, true); - if (patchListener) { - const p = []; - const ip = []; - getPlugin("Patches").generateReplacementPatches_(base, result, p, ip); - patchListener(p, ip); - } - return result; - } else - die(1, base); - }; - this.produceWithPatches = (base, recipe) => { - if (typeof base === "function") { - return (state, ...args) => this.produceWithPatches(state, (draft) => base(draft, ...args)); - } - let patches, inversePatches; - const result = this.produce(base, recipe, (p, ip) => { - patches = p; - inversePatches = ip; - }); - return [result, patches, inversePatches]; - }; - if (typeof config?.autoFreeze === "boolean") - this.setAutoFreeze(config.autoFreeze); - if (typeof config?.useStrictShallowCopy === "boolean") - this.setUseStrictShallowCopy(config.useStrictShallowCopy); - } - createDraft(base) { - if (!isDraftable(base)) - die(8); - if (isDraft(base)) - base = current(base); - const scope = enterScope(this); - const proxy = createProxy(base, void 0); - proxy[DRAFT_STATE].isManual_ = true; - leaveScope(scope); - return proxy; - } - finishDraft(draft, patchListener) { - const state = draft && draft[DRAFT_STATE]; - if (!state || !state.isManual_) - die(9); - const { scope_: scope } = state; - usePatchesInScope(scope, patchListener); - return processResult(void 0, scope); - } - /** - * Pass true to automatically freeze all copies created by Immer. - * - * By default, auto-freezing is enabled. - */ - setAutoFreeze(value) { - this.autoFreeze_ = value; - } - /** - * Pass true to enable strict shallow copy. - * - * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties. - */ - setUseStrictShallowCopy(value) { - this.useStrictShallowCopy_ = value; - } - applyPatches(base, patches) { - let i; - for (i = patches.length - 1; i >= 0; i--) { - const patch = patches[i]; - if (patch.path.length === 0 && patch.op === "replace") { - base = patch.value; - break; - } - } - if (i > -1) { - patches = patches.slice(i + 1); - } - const applyPatchesImpl = getPlugin("Patches").applyPatches_; - if (isDraft(base)) { - return applyPatchesImpl(base, patches); - } - return this.produce( - base, - (draft) => applyPatchesImpl(draft, patches) - ); - } -}; -function createProxy(value, parent) { - const draft = isMap(value) ? getPlugin("MapSet").proxyMap_(value, parent) : isSet(value) ? getPlugin("MapSet").proxySet_(value, parent) : createProxyProxy(value, parent); - const scope = parent ? parent.scope_ : getCurrentScope(); - scope.drafts_.push(draft); - return draft; -} - -// src/core/current.ts -function current(value) { - if (!isDraft(value)) - die(10, value); - return currentImpl(value); -} -function currentImpl(value) { - if (!isDraftable(value) || isFrozen(value)) - return value; - const state = value[DRAFT_STATE]; - let copy; - if (state) { - if (!state.modified_) - return state.base_; - state.finalized_ = true; - copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_); - } else { - copy = shallowCopy(value, true); - } - each(copy, (key, childValue) => { - set(copy, key, currentImpl(childValue)); - }); - if (state) { - state.finalized_ = false; - } - return copy; -} - -// src/immer.ts -var immer = new Immer2(); -var produce = immer.produce; -immer.produceWithPatches.bind( - immer -); -immer.setAutoFreeze.bind(immer); -immer.setUseStrictShallowCopy.bind(immer); -immer.applyPatches.bind(immer); -immer.createDraft.bind(immer); -immer.finishDraft.bind(immer); - -// Stores generated permits for each user, a hash indicating the active permit for each user, and a list of fheKeys as a cache -// Can be used to create reactive hooks -const _permitStore = createStore()(persist(() => ({ - permits: {}, - activePermitHash: {}, -}), { name: "fhenixjs-permits" })); -// Permit V2 -const getPermit$1 = (account, hash) => { - if (account == null || hash == null) - return; - const savedPermit = _permitStore.getState().permits[account]?.[hash]; - if (savedPermit == null) - return; - return PermitV2.deserialize(savedPermit); -}; -const getActivePermit = (account) => { - if (account == null) - return; - const activePermitHash = _permitStore.getState().activePermitHash[account]; - return getPermit$1(account, activePermitHash); -}; -const getPermits = (account) => { - if (account == null) - return {}; - return Object.entries(_permitStore.getState().permits[account] ?? {}).reduce((acc, [hash, permit]) => { - if (permit == undefined) - return acc; - return { ...acc, [hash]: PermitV2.deserialize(permit) }; - }, {}); -}; -const setPermit = (account, permitV2) => { - _permitStore.setState(produce((state) => { - if (state.permits[account] == null) - state.permits[account] = {}; - state.permits[account][permitV2.getHash()] = permitV2.serialize(); - })); -}; -const removePermit = (account, hash) => { - _permitStore.setState(produce((state) => { - state.permits[account][hash] = undefined; - })); -}; -// Active Permit Hash -const getActivePermitHash = (account) => { - if (account == null) - return undefined; - return _permitStore.getState().activePermitHash[account]; -}; -const setActivePermitHash = (account, hash) => { - _permitStore.setState(produce((state) => { - state.activePermitHash[account] = hash; - })); -}; -const removeActivePermitHash = (account) => { - _permitStore.setState(produce((state) => { - state.activePermitHash[account] = undefined; - })); -}; -const permitStore = { - store: _permitStore, - getPermit: getPermit$1, - getActivePermit, - getPermits, - setPermit, - removePermit, - getActivePermitHash, - setActivePermitHash, - removeActivePermitHash, -}; - -/* eslint-disable @typescript-eslint/no-explicit-any */ -const _sdkStore = createStore(() => ({ - fheKeysInitialized: false, - securityZones: [0], - fheKeys: {}, - accessRequirements: { - contracts: [], - projects: [], - }, - providerInitialized: false, - provider: undefined, - chainId: undefined, - signerInitialized: false, - signer: undefined, - account: undefined, -})); -// Store getters / setters -const _store_chainId = () => _sdkStore.getState().chainId; -const _store_getFheKey = (chainId, securityZone = 0) => { - if (chainId == null || securityZone == null) - return undefined; - const serialized = _sdkStore.getState().fheKeys[chainId]?.[securityZone]; - if (serialized == null) - return undefined; - return TfheCompactPublicKey.deserialize(serialized); -}; -const _store_getConnectedChainFheKey = (securityZone = 0) => { - const state = _sdkStore.getState(); - if (securityZone == null) - return undefined; - if (state.chainId == null) - return undefined; - const serialized = state.fheKeys[state.chainId]?.[securityZone]; - if (serialized == null) - return undefined; - return TfheCompactPublicKey.deserialize(serialized); -}; -const _store_setFheKey = (chainId, securityZone, fheKey) => { - if (chainId == null || securityZone == null) - return; - _sdkStore.setState(produce((state) => { - if (state.fheKeys[chainId] == null) - state.fheKeys[chainId] = {}; - state.fheKeys[chainId][securityZone] = fheKey?.serialize(); - })); -}; -const getChainIdFromProvider = async (provider) => { - const chainId = await provider.getChainId(); - if (chainId == null) - throw new Error("sdk :: getChainIdFromProvider :: provider.getChainId returned a null result, ensure that your provider is connected to a network"); - return chainId; -}; -const _store_initialize = async (params) => { - const { provider, signer, securityZones = [0], contracts: contractRequirements = [], projects: projectRequirements = [], } = params; - _sdkStore.setState({ - providerInitialized: false, - signerInitialized: false, - accessRequirements: { - contracts: contractRequirements, - projects: projectRequirements, - }, - }); - // PROVIDER - // Fetch chain Id from provider - const chainId = await getChainIdFromProvider(provider); - const chainIdChanged = chainId != null && chainId !== _sdkStore.getState().chainId; - if (chainId != null && provider != null) { - _sdkStore.setState({ providerInitialized: true, provider, chainId }); - } - // SIGNER - // Account is fetched and stored here, the `account` field in the store is used to index which permits belong to which users - // In sdk functions, `state.account != null` is validated, this is a check to ensure that a valid signer has been provided - // which is necessary to interact with permits - const account = await signer?.getAddress(); - if (account != null && signer != null) { - _sdkStore.setState({ signerInitialized: true, account, signer }); - } - else { - _sdkStore.setState({ - signerInitialized: false, - account: undefined, - signer: undefined, - }); - } - // If chainId or securityZones changes, update the store and update fheKeys for re-initialization - const securityZonesChanged = securityZones !== _sdkStore.getState().securityZones; - if (chainIdChanged || securityZonesChanged) { - _sdkStore.setState({ - securityZones, - fheKeysInitialized: false, - }); - } - // Fetch FHE keys (skipped if hardhat) - if (!chainIsHardhat(chainId) && !_sdkStore.getState().fheKeysInitialized) { - await Promise.all(securityZones.map((securityZone) => _store_fetchFheKey(chainId, provider, securityZone))); - } - _sdkStore.setState({ fheKeysInitialized: true }); -}; -/** - * Retrieves the FHE public key from the provider. - * If the key already exists in the store it is returned, else it is fetched, stored, and returned - * @param {string} chainId - The chain to fetch the FHE key for, if no chainId provided, undefined is returned - * @param {Provider} provider - EthersV6 Provider that performs the key fetch. - * @param securityZone - The security zone for which to retrieve the key (default 0). - * @returns {Promise} - The retrieved public key. - */ -const _store_fetchFheKey = async (chainId, provider, securityZone = 0) => { - const storedKey = _store_getFheKey(chainId, securityZone); - if (storedKey != null) - return storedKey; - const funcSig = "0x1b1b484e"; // cast sig "getNetworkPublicKey(int32)" - const callData = funcSig + toABIEncodedUint32(securityZone); - const publicKey = await provider.call({ to: FheOpsAddress, data: callData }); - if (typeof publicKey !== "string") { - throw new Error("Error initializing fhenixjs; FHE publicKey fetched from provider invalid: not a string"); - } - if (publicKey === "0x") { - throw new Error("Error initializing fhenixjs; provided chain is not FHE enabled, no FHE publicKey found"); - } - if (publicKey.length < PUBLIC_KEY_LENGTH_MIN) { - throw new Error(`Error initializing fhenixjs; got shorter than expected FHE publicKey: ${publicKey.length}. Expected length >= ${PUBLIC_KEY_LENGTH_MIN}`); - } - // todo (eshel) verify this - // magically know how to decode rlp or w/e returns from the evm json-rpc - const buff = fromHexString(publicKey.slice(130)); - try { - const key = TfheCompactPublicKey.deserialize(buff); - _store_setFheKey(chainId, securityZone, key); - return key; - } - catch (err) { - throw new Error(`Error deserializing public key ${err}`); - } -}; - -/* eslint-disable @typescript-eslint/no-explicit-any */ -/** - * Initializes the `fhenixsdk` to enable encrypting input data, creating permits / permissions, and decrypting sealed outputs. - * Initializes `fhevm` client FHE wasm module and fetches the provided chain's FHE publicKey. - * If a valid signer is provided, a `permit/permission` is generated automatically - */ -const initialize = async (params) => { - // Initialize the fhevm - await InitFhevm().catch((err) => { - if (params.ignoreErrors) { - return undefined; - } - else { - return ResultErr(`initialize :: failed to initialize fhenixjs - is the network FHE-enabled? ${err}`); - } - }); - if (params.provider == null) - return ResultErr("initialize :: missing provider - Please provide an AbstractProvider interface"); - if (params.securityZones != null && params.securityZones.length === 0) - return ResultErr("initialize :: a list of securityZones was provided, but it is empty"); - await _store_initialize(params); - // `generatePermit` must set to `false` to early exit here - if (params.generatePermit === false) - return ResultOk(undefined); - // Return the existing active permit - const userActivePermit = getPermit(); - if (userActivePermit.success) - return userActivePermit; - // Create permit and return it - return createPermit(); -}; -/** - * Internal reusable initialization checker - */ -const _checkInitialized = (state, options) => { - if (options?.fheKeys !== false && !state.fheKeysInitialized) { - return ResultErr("fhenixsdk not initialized. Use `fhenixsdk.initialize(...)`."); - } - if (options?.provider !== false && !state.providerInitialized) - return ResultErr("fhenixsdk not initialized with valid provider. Use `fhenixsdk.initialize(...)` with a valid provider that satisfies `AbstractProvider`."); - if (options?.signer !== false && !state.signerInitialized) - return ResultErr("fhenixsdk not initialized with a valid signer. Use `fhenixsdk.initialize(...)` with a valid signer that satisfies `AbstractSigner`."); - return ResultOk(null); -}; -// Permit -/** - * Creates a new permit with options, prompts user for signature. - * Handles all `permit.type`s, and prompts for the correct signature type. - * The created PermitV2 will be inserted into the store and marked as the active permit. - * NOTE: This is a wrapper around `PermitV2.create` and `PermitV2.sign` - * - * @param {PermitV2Options} options - Partial PermitV2 fields to create the Permit with, if no options provided will be filled with the defaults: - * { type: "self", issuer: initializedUserAddress, projects: initializedProjects, contracts: initializedContracts } - * @returns {Result} - Newly created PermitV2 as a Result object - */ -const createPermit = async (options) => { - const state = _sdkStore.getState(); - const initialized = _checkInitialized(state); - if (!initialized.success) - return ResultErr(`${createPermit.name} :: ${initialized.error}`); - const optionsWithDefaults = { - type: "self", - issuer: state.account, - contracts: state.accessRequirements.contracts, - projects: state.accessRequirements.projects, - ...options, - }; - let permit; - try { - permit = await PermitV2.createAndSign(optionsWithDefaults, state.chainId, state.signer); - } - catch (e) { - return ResultErr(`${createPermit.name} :: ${e}`); - } - permitStore.setPermit(state.account, permit); - permitStore.setActivePermitHash(state.account, permit.getHash()); - return ResultOk(permit); -}; -/** - * Imports a fully formed existing permit, expected to be valid. - * Does not ask for user signature, expects to already be populated. - * Will throw an error if the imported permit is invalid, see `PermitV2.isValid`. - * The imported PermitV2 will be inserted into the store and marked as the active permit. - * - * @param {string | PermitV2Interface} imported - Permit to import as a text string or PermitV2Interface - */ -const importPermit = async (imported) => { - const state = _sdkStore.getState(); - const initialized = _checkInitialized(state); - if (!initialized.success) - return ResultErr(`${createPermit.name} :: ${initialized.error}`); - // Import validation - if (typeof imported === "string") { - try { - imported = JSON.parse(imported); - } - catch (e) { - return ResultErr(`importPermit :: json parsing failed - ${e}`); - } - } - const { success, data: parsedPermit, error: permitParsingError, } = PermitV2ParamsValidator.safeParse(imported); - if (!success) { - const errorString = Object.entries(permitParsingError.flatten().fieldErrors) - .map(([field, err]) => `- ${field}: ${err}`) - .join("\n"); - return ResultErr(`importPermit :: invalid permit data - ${errorString}`); - } - if (parsedPermit.type !== "self") { - if (parsedPermit.issuer === state.account) - parsedPermit.type = "sharing"; - else if (parsedPermit.recipient === state.account) - parsedPermit.type = "recipient"; - else { - return ResultErr(`importPermit :: invalid Permit - connected account <${state.account}> is not issuer or recipient`); - } - } - let permit; - try { - permit = await PermitV2.create(parsedPermit); - } - catch (e) { - return ResultErr(`importPermit :: ${e}`); - } - const { valid, error } = permit.isValid(); - if (!valid) { - return ResultErr(`importPermit :: newly imported permit is invalid - ${error}`); - } - permitStore.setPermit(state.account, permit); - permitStore.setActivePermitHash(state.account, permit.getHash()); - return ResultOk(permit); -}; -/** - * Selects the active permit using its hash. - * If the hash is not found in the stored permits store, throws an error. - * The matched permit will be marked as the active permit. - * - * @param {string} hash - The `PermitV2.getHash` of the target permit. - */ -const selectActivePermit = (hash) => { - const state = _sdkStore.getState(); - const initialized = _checkInitialized(state); - if (!initialized.success) - return ResultErr(`${selectActivePermit.name} :: ${initialized.error}`); - const permit = permitStore.getPermit(state.account, hash); - if (permit == null) - return ResultErr(`${selectActivePermit.name} :: Permit with hash <${hash}> not found`); - permitStore.setActivePermitHash(state.account, permit.getHash()); - return ResultOk(permit); -}; -/** - * Retrieves a stored permit based on its hash. - * If no hash is provided, the currently active permit will be retrieved. - * - * @param {string} hash - Optional `PermitV2.getHash` of the permit. - * @returns {Result} - The active permit or permit associated with `hash` as a Result object. - */ -const getPermit = (hash) => { - const state = _sdkStore.getState(); - const initialized = _checkInitialized(state); - if (!initialized.success) - return ResultErr(`${getPermit.name} :: ${initialized.error}`); - if (hash == null) { - const permit = permitStore.getActivePermit(state.account); - if (permit == null) - return ResultErr(`getPermit :: active permit not found`); - return ResultOk(permit); - } - const permit = permitStore.getPermit(state.account, hash); - if (permit == null) - return ResultErr(`getPermit :: permit with hash <${hash}> not found`); - return ResultOk(permit); -}; -/** - * Retrieves a stored permission based on the permit's hash. - * If no hash is provided, the currently active permit will be used. - * The `PermissionV2` is extracted from the permit. - * - * @param {string} hash - Optional hash of the permission to get, defaults to active permit's permission - * @returns {Result} - The active permission or permission associated with `hash`, as a result object. - */ -const getPermission = (hash) => { - const permitResult = getPermit(hash); - if (!permitResult.success) - return ResultErr(`${getPermission.name} :: ${permitResult.error}`); - return ResultOk(permitResult.data.getPermission()); -}; -/** - * Exports all stored permits. - * @returns {Result>} - All stored permits. - */ -const getAllPermits = () => { - const state = _sdkStore.getState(); - const initialized = _checkInitialized(state); - if (!initialized.success) - return ResultErr(`${getAllPermits.name} :: ${initialized.error}`); - return ResultOk(permitStore.getPermits(state.account)); -}; -// Encrypt -/** - * Encrypts a numeric value according to the specified encryption type or the most efficient one based on the value. - * Useful when not using `Encryptable` utility structures. - * @param {number} value - The numeric value to encrypt. - * @param {EncryptionTypes} type - Optional. The encryption type (uint8, uint16, uint32). - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedNumber} - The encrypted value serialized as Uint8Array. Use the .data property to access the Uint8Array. - */ -const encryptValue = (value, type, securityZone = 0) => { - const state = _sdkStore.getState(); - // Only need to check `fheKeysInitialized`, signer and provider not needed for encryption - const initialized = _checkInitialized(state, { - provider: false, - signer: false, - }); - if (!initialized.success) - return ResultErr(`${encryptValue.name} :: ${initialized.error}`); - // Early exit with mock encrypted value if chain is hardhat - if (chainIsHardhat(state.chainId)) - return ResultOk(hardhatMockEncrypt(BigInt(value))); - const fhePublicKey = _store_getFheKey(state.chainId, securityZone); - if (fhePublicKey == null) - return ResultErr(`encryptValue :: FHE publicKey not found for chain <${state.chainId}> and securityZone <${securityZone}>`); - let outputSize = type; - // choose the most efficient ciphertext size if not selected - if (!outputSize) { - if (value < MAX_UINT8) { - outputSize = EncryptionTypes.uint8; - } - else if (value < MAX_UINT16) { - outputSize = EncryptionTypes.uint16; - } - else if (value < MAX_UINT32) { - outputSize = EncryptionTypes.uint32; - } - else { - return ResultErr(`encryptValue :: Encryption input must be smaller than ${MAX_UINT32}`); - } - } - try { - switch (outputSize) { - case EncryptionTypes.uint8: - ValidateUintInRange(value, MAX_UINT8, 0); - break; - case EncryptionTypes.uint16: - ValidateUintInRange(value, MAX_UINT16, 0); - break; - case EncryptionTypes.uint32: - ValidateUintInRange(value, MAX_UINT32, 0); - break; - default: - } - } - catch (e) { - return ResultErr(`encryptValue :: outputSize :: ${e}`); - } - let encrypted; - try { - encrypted = encrypt$1(value, fhePublicKey, type, securityZone); - } - catch (e) { - return ResultErr(`encryptValue :: tfhe_encrypt :: ${e}`); - } - return ResultOk(encrypted); -}; -function encrypt(item) { - const state = _sdkStore.getState(); - // Only need to check `fheKeysInitialized`, signer and provider not needed for encryption - const initialized = _checkInitialized(state, { - provider: false, - signer: false, - }); - if (!initialized.success) - return ResultErr(`${encrypt.name} :: ${initialized.error}`); - // Permission - if (item === "permission") { - return getPermission(); - } - // EncryptableItem - if (isEncryptableItem(item)) { - // Early exit with mock encrypted value if chain is hardhat - if (chainIsHardhat(_store_chainId())) - return ResultOk(hardhatMockEncrypt(BigInt(item.data))); - const fhePublicKey = _store_getConnectedChainFheKey(item.securityZone ?? 0); - if (fhePublicKey == null) - return ResultErr("encrypt :: fheKey for current chain not found"); - // prettier-ignore - try { - switch (item.utype) { - case FheUType.bool: return ResultOk(encrypt_bool(item.data, fhePublicKey, item.securityZone)); - case FheUType.uint8: return ResultOk(encrypt_uint8(item.data, fhePublicKey, item.securityZone)); - case FheUType.uint16: return ResultOk(encrypt_uint16(item.data, fhePublicKey, item.securityZone)); - case FheUType.uint32: return ResultOk(encrypt_uint32(item.data, fhePublicKey, item.securityZone)); - case FheUType.uint64: return ResultOk(encrypt_uint64(item.data, fhePublicKey, item.securityZone)); - case FheUType.uint128: return ResultOk(encrypt_uint128(item.data, fhePublicKey, item.securityZone)); - case FheUType.uint256: return ResultOk(encrypt_uint256(item.data, fhePublicKey, item.securityZone)); - case FheUType.address: return ResultOk(encrypt_address(item.data, fhePublicKey, item.securityZone)); - } - } - catch (e) { - return ResultErr(`encrypt :: tfhe_encrypt_xxxx :: ${e}`); - } - } - // Object | Array - if (typeof item === "object" && item !== null) { - if (Array.isArray(item)) { - // Array - recurse - const nestedItems = item.map((nestedItem) => encrypt(nestedItem)); - // Any nested error break out - const nestedItemResultErr = nestedItems.find((nestedItem) => !nestedItem.success); - if (nestedItemResultErr) - return nestedItemResultErr; - return ResultOk(nestedItems.map((nestedItem) => nestedItem.data)); - } - else { - // Object - recurse - const result = {}; - for (const key in item) { - const encryptedResult = encrypt(item[key]); - if (!encryptedResult.success) - return encryptedResult; - result[key] = encryptedResult.data; - } - return ResultOk(result); - } - } - // Primitive - return ResultOk(item); -} -// Unseal -/** - * Unseals an encrypted message using the stored permit for a specific contract address. - * NOTE: Wrapper around `PermitV2.unseal` - * - * @param {string} ciphertext - The encrypted message to unseal. - * @param {string} account - Users address, defaults to store.account - * @param {string} hash - The hash of the permit to use for this operation, defaults to active permitV2 hash - * @returns bigint - The unsealed message. - */ -const unsealCiphertext = (ciphertext, account, hash) => { - const state = _sdkStore.getState(); - const initialized = _checkInitialized(state); - if (!initialized.success) - return ResultErr(`${getAllPermits.name} :: ${initialized.error}`); - isString(ciphertext); - const resolvedAccount = account ?? state.account; - const resolvedHash = hash ?? permitStore.getActivePermitHash(resolvedAccount); - if (resolvedAccount == null || resolvedHash == null) { - return ResultErr(`unsealCiphertext :: PermitV2 hash not provided and active PermitV2 not found`); - } - const permit = permitStore.getPermit(resolvedAccount, resolvedHash); - if (permit == null) { - return ResultErr(`unsealCiphertext :: PermitV2 with account <${account}> and hash <${hash}> not found`); - } - let unsealed; - try { - unsealed = permit.unsealCiphertext(ciphertext); - } - catch (e) { - return ResultErr(`unsealCiphertext :: ${e}`); - } - return ResultOk(unsealed); -}; -/** - * Uses the privateKey of `permit.sealingPair` to recursively unseal any contained `SealedItems`. - * If `item` is a single `SealedItem` it will be individually. - * NOTE: Only unseals typed `SealedItem`s returned from `FHE.sealoutputTyped` and the FHE bindings' `e____.sealTyped`. - * - * @param {any | any[]} item - Array, object, or item. Any nested `SealedItems` will be unsealed. - * @returns - Recursively unsealed data in the target type, SealedBool -> boolean, SealedAddress -> string, etc. - */ -function unseal(item, account, hash) { - const resolvedAccount = account ?? _sdkStore.getState().account; - const resolvedHash = hash ?? permitStore.getActivePermitHash(resolvedAccount); - if (resolvedAccount == null || resolvedHash == null) { - return ResultErr(`unseal :: PermitV2 hash not provided and active PermitV2 not found`); - } - const permit = permitStore.getPermit(resolvedAccount, resolvedHash); - if (permit == null) { - return ResultErr(`unseal :: PermitV2 with account <${account}> and hash <${hash}> not found`); - } - let unsealed; - try { - unsealed = permit.unseal(item); - } - catch (e) { - return ResultErr(`unseal :: ${e}`); - } - return ResultOk(unsealed); -} -// Export -const fhenixsdk = { - store: _sdkStore, - initialize, - createPermit, - importPermit, - selectActivePermit, - getPermit, - getPermission, - getAllPermits, - encryptValue, - encrypt, - unsealCiphertext, - unseal, -}; - -// for mobile -// if (typeof BigInt === "undefined") { -// global.BigInt = require("big-integer"); -// } - -var fhenix = /*#__PURE__*/Object.freeze({ - __proto__: null, - Encryptable: Encryptable, - get EncryptionTypes () { return EncryptionTypes; }, - FhenixClient: FhenixClient, - FhenixClientSync: FhenixClientSync, - GenerateSealingKey: GenerateSealingKey, - PermitV2: PermitV2, - SealingKey: SealingKey, - createTfheKeypair: createTfheKeypair, - createTfhePublicKey: createTfhePublicKey, - fhenixsdk: fhenixsdk, - generatePermit: generatePermit, - getAllExistingPermits: getAllExistingPermits, - getAllPermits: getAllPermits$1, - getPermit: getPermit$2, - getPermitFromLocalstorage: getPermitFromLocalstorage, - permitStore: permitStore, - removePermit: removePermit$1, - removePermitFromLocalstorage: removePermitFromLocalstorage, - storePermitInLocalStorage: storePermitInLocalStorage -}); - -export { Encryptable, EncryptionTypes, FhenixClient, FhenixClientSync, GenerateSealingKey, PermitV2, SealingKey, createTfheKeypair, createTfhePublicKey, fhenix as fhenixjs, fhenixsdk, generatePermit, getAllExistingPermits, getAllPermits$1 as getAllPermits, getPermit$2 as getPermit, getPermitFromLocalstorage, permitStore, removePermit$1 as removePermit, removePermitFromLocalstorage, storePermitInLocalStorage }; -//# sourceMappingURL=fhenix.esm.js.map diff --git a/dist/fhenix.esm.js.map b/dist/fhenix.esm.js.map deleted file mode 100644 index 4d14c5c..0000000 --- a/dist/fhenix.esm.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fhenix.esm.js","sources":["../lib/esm/sdk/fhe/tfhe-browser.js","../lib/esm/sdk/fhe/fhe-browser.js","../lib/esm/sdk/validation.js","../lib/esm/sdk/utils.js","../lib/esm/sdk/types.js","../node_modules/.pnpm/tweetnacl@1.0.3/node_modules/tweetnacl/nacl-fast.js","../node_modules/.pnpm/tweetnacl-util@0.15.1/node_modules/tweetnacl-util/nacl-util.js","../lib/esm/sdk/sealing.js","../lib/esm/extensions/access_control/permit/index.js","../lib/esm/sdk/consts.js","../lib/esm/sdk/encrypt.js","../lib/esm/sdk/init.js","../lib/esm/sdk/index.js","../lib/esm/sdk/keygen.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/_version.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/utils/properties.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/utils/errors.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/utils/data.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/utils/utf8.js","../node_modules/.pnpm/@noble+hashes@1.3.2/node_modules/@noble/hashes/esm/_assert.js","../node_modules/.pnpm/@noble+hashes@1.3.2/node_modules/@noble/hashes/esm/utils.js","../node_modules/.pnpm/@noble+hashes@1.3.2/node_modules/@noble/hashes/esm/_u64.js","../node_modules/.pnpm/@noble+hashes@1.3.2/node_modules/@noble/hashes/esm/sha3.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/crypto/keccak.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/constants/addresses.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/address/address.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/address/checks.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/hash/id.js","../lib/esm/sdk/v2/types.js","../lib/esm/sdk/v2/permit.generate.js","../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/index.mjs","../lib/esm/sdk/v2/permit.z.js","../lib/esm/sdk/v2/permit.js","../node_modules/.pnpm/zustand@5.0.1_immer@10.1.1/node_modules/zustand/esm/vanilla.mjs","../node_modules/.pnpm/zustand@5.0.1_immer@10.1.1/node_modules/zustand/esm/middleware.mjs","../node_modules/.pnpm/immer@10.1.1/node_modules/immer/dist/immer.mjs","../lib/esm/sdk/v2/permit.store.js","../lib/esm/sdk/v2/sdk.store.js","../lib/esm/sdk/v2/sdk.js","../lib/esm/fhenix.js"],"sourcesContent":["let wasm;\nconst heap = new Array(128).fill(undefined);\nheap.push(undefined, null, true, false);\nlet heap_next = heap.length;\nfunction addHeapObject(obj) {\n if (heap_next === heap.length)\n heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n heap[idx] = obj;\n return idx;\n}\nfunction getObject(idx) {\n return heap[idx];\n}\nfunction dropObject(idx) {\n if (idx < 132)\n return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\nconst cachedTextDecoder = typeof TextDecoder !== \"undefined\"\n ? new TextDecoder(\"utf-8\", { ignoreBOM: true, fatal: true })\n : {\n decode: () => {\n throw Error(\"TextDecoder not available\");\n },\n };\nif (typeof TextDecoder !== \"undefined\") {\n cachedTextDecoder.decode();\n}\nlet cachedUint8Memory0 = null;\nfunction getUint8Memory0() {\n if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) {\n cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8Memory0;\n}\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\nlet cachedBigInt64Memory0 = null;\nfunction getBigInt64Memory0() {\n if (cachedBigInt64Memory0 === null ||\n cachedBigInt64Memory0.byteLength === 0) {\n cachedBigInt64Memory0 = new BigInt64Array(wasm.memory.buffer);\n }\n return cachedBigInt64Memory0;\n}\nlet cachedInt32Memory0 = null;\nfunction getInt32Memory0() {\n if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) {\n cachedInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachedInt32Memory0;\n}\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == \"number\" || type == \"boolean\" || val == null) {\n return `${val}`;\n }\n if (type == \"string\") {\n return `\"${val}\"`;\n }\n if (type == \"symbol\") {\n const description = val.description;\n if (description == null) {\n return \"Symbol\";\n }\n else {\n return `Symbol(${description})`;\n }\n }\n if (type == \"function\") {\n const name = val.name;\n if (typeof name == \"string\" && name.length > 0) {\n return `Function(${name})`;\n }\n else {\n return \"Function\";\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = \"[\";\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for (let i = 1; i < length; i++) {\n debug += \", \" + debugString(val[i]);\n }\n debug += \"]\";\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n }\n else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == \"Object\") {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return \"Object(\" + JSON.stringify(val) + \")\";\n }\n catch (_) {\n return \"Object\";\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\nlet WASM_VECTOR_LEN = 0;\nconst cachedTextEncoder = typeof TextEncoder !== \"undefined\"\n ? new TextEncoder(\"utf-8\")\n : {\n encode: () => {\n throw Error(\"TextEncoder not available\");\n },\n };\nconst encodeString = typeof cachedTextEncoder.encodeInto === \"function\"\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n }\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length,\n };\n };\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8Memory0()\n .subarray(ptr, ptr + buf.length)\n .set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n const mem = getUint8Memory0();\n let offset = 0;\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7f)\n break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, (len = offset + arg.length * 3), 1) >>> 0;\n const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n offset += ret.written;\n }\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n/**\n */\nexport function init_panic_hook() {\n wasm.init_panic_hook();\n}\nfunction _assertClass(instance, klass) {\n if (!(instance instanceof klass)) {\n throw new Error(`expected instance of ${klass.name}`);\n }\n return instance.ptr;\n}\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);\n}\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8Memory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\nlet cachedUint32Memory0 = null;\nfunction getUint32Memory0() {\n if (cachedUint32Memory0 === null || cachedUint32Memory0.byteLength === 0) {\n cachedUint32Memory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32Memory0;\n}\nfunction passArrayJsValueToWasm0(array, malloc) {\n const ptr = malloc(array.length * 4, 4) >>> 0;\n const mem = getUint32Memory0();\n for (let i = 0; i < array.length; i++) {\n mem[ptr / 4 + i] = addHeapObject(array[i]);\n }\n WASM_VECTOR_LEN = array.length;\n return ptr;\n}\nfunction getArrayJsValueFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n const mem = getUint32Memory0();\n const slice = mem.subarray(ptr / 4, ptr / 4 + len);\n const result = [];\n for (let i = 0; i < slice.length; i++) {\n result.push(takeObject(slice[i]));\n }\n return result;\n}\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n }\n catch (e) {\n wasm.__wbindgen_exn_store(addHeapObject(e));\n }\n}\n/**\n */\nexport class CompactFheBool {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheBool.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfhebool_free(ptr);\n }\n /**\n * @param {boolean} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheBool}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfhebool_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheBool}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfhebool_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfhebool_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheBool}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfhebool_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfhebool_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheBool}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfhebool_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheBoolList {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheBoolList.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheboollist_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheboollist_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheboollist_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheBoolList}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheboollist_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheBoolList.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheBoolList}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheboollist_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheBoolList.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt128 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt128.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint128_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt128}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt128}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt128}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint128_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt128}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt128List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt128List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint128list_free(ptr);\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheInt128List}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheint128list_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt128List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt128List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint128list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt128List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt16 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt16.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint16_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt16}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint16_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt16}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint16_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt16}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint16_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt16}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt160 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt160.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint160_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt160}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt160}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint160_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt160}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint160_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt160}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt160List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt160List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint160list_free(ptr);\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheInt160List}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheint160list_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt160List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint160list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint160list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt160List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint160list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt160List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt16List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt16List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint16list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint16list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint16list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt16List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint16list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt16List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt256 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt256.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint256_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt256}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt256}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint256_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt256}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint256_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt256}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt256List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt256List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint256list_free(ptr);\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheInt256List}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheint256list_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt256List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint256list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint256list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt256List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint256list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt256List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt32 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt32.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint32_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt32}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint32_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt32}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint32_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt32}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint32_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt32}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt32List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt32List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint32list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint32list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint32list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt32List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint32list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt32List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt64 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt64.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint64_free(ptr);\n }\n /**\n * @param {bigint} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt64}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint64_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt64}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint64_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt64}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint64_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt64}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt64List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt64List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint64list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint64list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint64list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt64List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint64list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt64List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt8 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt8.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint8_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt8}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint8_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt8}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint8_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt8}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint8_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt8}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt8List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt8List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint8list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint8list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint8list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt8List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint8list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt8List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint128 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint128.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint128_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint128}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint128}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint128_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint128}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint128_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint128}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint128List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint128List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint128list_free(ptr);\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheUint128List}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheuint128list_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint128List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint128list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint128list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint128List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint128list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint128List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint16 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint16.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint16_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint16}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint16_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint16}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint16_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint16}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint16_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint16}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint160 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint160.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint160_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint160}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint160}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint160_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint160}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint160_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint160}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint160List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint160List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint160list_free(ptr);\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheUint160List}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheuint160list_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint160List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint160list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint160list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint160List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint160list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint160List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint16List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint16List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint16list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint16list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint16list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint16List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint16list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint16List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint256 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint256.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint256_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint256}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint256}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint256_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint256}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint256_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint256}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint256List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint256List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint256list_free(ptr);\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheUint256List}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheuint256list_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint256List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint256list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint256list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint256List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint256list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint256List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint32 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint32.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint32_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint32}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint32_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint32}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint32_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint32}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint32_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint32}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint32List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint32List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint32list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint32list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint32list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint32List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint32list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint32List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint64 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint64.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint64_free(ptr);\n }\n /**\n * @param {bigint} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint64}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint64_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint64}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint64_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint64}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint64_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint64}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint64List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint64List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint64list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint64list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint64list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint64List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint64list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint64List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint8 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint8.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint8_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint8}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint8_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint8}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint8_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint8}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint8_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint8}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint8List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint8List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint8list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint8list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint8list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint8List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint8list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint8List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheBool {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheBool.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfhebool_free(ptr);\n }\n /**\n * @param {boolean} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheBool}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfhebool_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheBool}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfhebool_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfhebool_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheBool}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfhebool_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfhebool_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheBool}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfhebool_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt128 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt128.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint128_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt128}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint128_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt128}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint128_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint128_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt128}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint128_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt128}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt16 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt16.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint16_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt16}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint16_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt16}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint16_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint16_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt16}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint16_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt16}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt160 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt160.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint160_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt160}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint160_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt160}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint160_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint160_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt160}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint160_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt160}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt256 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt256.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint256_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt256}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint256_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt256}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint256_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint256_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt256}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint256_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt256}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt32 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt32.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint32_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt32}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint32_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt32}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint32_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint32_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt32}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint32_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt32}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt64 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt64.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint64_free(ptr);\n }\n /**\n * @param {bigint} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt64}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint64_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt64}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint64_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint64_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt64}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint64_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt64}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt8 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt8.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint8_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt8}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint8_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt8}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint8_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint8_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt8}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint8_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt8}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint128 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint128.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint128_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint128}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint128_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint128}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint128_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint128_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint128}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint128_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint128}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint16 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint16.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint16_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint16}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint16_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint16}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint16_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint16_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint16}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint16_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint16}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint160 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint160.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint160_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint160}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint160_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint160}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint160_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint160_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint160}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint160_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint160}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint256 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint256.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint256_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint256}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint256_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint256}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint256_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint256_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint256}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint256_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint256}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint32 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint32.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint32_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint32}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint32_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint32}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint32_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint32_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint32}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint32_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint32}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint64 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint64.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint64_free(ptr);\n }\n /**\n * @param {bigint} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint64}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint64_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint64}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint64_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint64_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint64}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint64_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint64}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint8 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint8.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint8_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint8}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint8_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint8}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint8_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint8_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint8}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint8_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint8}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheBool {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheBool.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fhebool_free(ptr);\n }\n /**\n * @param {boolean} value\n * @param {TfheClientKey} client_key\n * @returns {FheBool}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fhebool_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {boolean} value\n * @param {TfhePublicKey} public_key\n * @returns {FheBool}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fhebool_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {boolean} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheBool}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fhebool_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {boolean} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheBool}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fhebool_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {boolean}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fhebool_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0 !== 0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fhebool_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheBool}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fhebool_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fhebool_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheBool}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fhebool_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt128 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt128.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint128_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt128}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint128_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt128}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint128_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt128}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint128_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt128}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {any}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint128_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint128_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt128}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint128_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt128}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt16 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt16.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint16_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt16}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint16_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt16}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint16_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt16}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint16_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt16}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint16_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {number}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint16_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint16_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt16}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint16_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt16}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt160 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt160.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint160_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt160}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint160_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt160}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint160_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt160}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint160_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt160}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {any}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint160_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint160_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt160}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint160_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt160}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt256 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt256.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint256_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt256}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint256_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt256}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint256_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt256}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint256_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt256}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {any}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint256_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint256_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt256}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint256_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt256}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt32 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt32.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint32_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt32}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint32_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt32}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint32_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt32}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint32_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt32}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint32_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {number}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint32_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint32_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt32}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint32_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt32}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt64 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt64.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint64_free(ptr);\n }\n /**\n * @param {bigint} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt64}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint64_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt64}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint64_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt64}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint64_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt64}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint64_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {bigint}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint64_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getBigInt64Memory0()[retptr / 8 + 0];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n return r0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint64_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt64}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint64_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt64}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt8 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt8.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint8_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt8}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint8_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt8}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint8_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt8}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint8_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt8}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint8_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {number}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint8_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint8_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt8}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint8_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt8}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint128 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint128.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint128_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint128}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint128_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint128}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint128_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint128}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint128_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint128}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {any}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint128_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint128_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint128}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint128_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint128}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint16 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint16.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint16_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint16}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint16_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint16}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint16_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint16}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint16_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint16}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint16_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {number}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint16_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint16_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint16}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint16_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint16}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint160 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint160.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint160_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint160}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint160_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint160}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint160_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint160}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint160_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint160}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {any}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint160_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint160_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint160}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint160_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint160}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint256 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint256.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint256_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint256}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint256_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint256}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint256_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint256}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint256_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint256}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {any}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint256_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint256_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint256}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint256_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint256}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint32 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint32.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint32_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint32}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint32_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint32}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint32_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint32}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint32_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint32}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint32_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {number}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint32_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0 >>> 0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint32_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint32}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint32_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint32}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint64 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint64.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint64_free(ptr);\n }\n /**\n * @param {bigint} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint64}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint64_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint64}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint64_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint64}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint64_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint64}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint64_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {bigint}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint64_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getBigInt64Memory0()[retptr / 8 + 0];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n return BigInt.asUintN(64, r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint64_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint64}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint64_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint64}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint8 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint8.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint8_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint8}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint8_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint8}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint8_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint8}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint8_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint8}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint8_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {number}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint8_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint8_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint8}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint8_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint8}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class TfheClientKey {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheClientKey.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfheclientkey_free(ptr);\n }\n /**\n * @param {TfheConfig} config\n * @returns {TfheClientKey}\n */\n static generate(config) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(config, TfheConfig);\n wasm.tfheclientkey_generate(retptr, config.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheClientKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheConfig} config\n * @param {any} seed\n * @returns {TfheClientKey}\n */\n static generate_with_seed(config, seed) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(config, TfheConfig);\n wasm.tfheclientkey_generate_with_seed(retptr, config.__wbg_ptr, addHeapObject(seed));\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheClientKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfheclientkey_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {TfheClientKey}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.tfheclientkey_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheClientKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class TfheCompactPublicKey {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheCompactPublicKey.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfhecompactpublickey_free(ptr);\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {TfheCompactPublicKey}\n */\n static new(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.tfhecompactpublickey_new(retptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompactPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhecompactpublickey_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {TfheCompactPublicKey}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.tfhecompactpublickey_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompactPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class TfheCompressedCompactPublicKey {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheCompressedCompactPublicKey.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfhecompressedcompactpublickey_free(ptr);\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {TfheCompressedCompactPublicKey}\n */\n static new(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.tfhecompressedcompactpublickey_new(retptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompressedCompactPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhecompressedcompactpublickey_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {TfheCompressedCompactPublicKey}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.tfhecompressedcompactpublickey_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompressedCompactPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {TfheCompactPublicKey}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhecompressedcompactpublickey_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompactPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class TfheCompressedPublicKey {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheCompressedPublicKey.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfhecompressedpublickey_free(ptr);\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {TfheCompressedPublicKey}\n */\n static new(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.tfhecompressedpublickey_new(retptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompressedPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {TfhePublicKey}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhecompressedpublickey_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfhePublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhecompressedpublickey_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {TfheCompressedPublicKey}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.tfhecompressedpublickey_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompressedPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class TfheCompressedServerKey {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheCompressedServerKey.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfhecompressedserverkey_free(ptr);\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {TfheCompressedServerKey}\n */\n static new(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.tfhecompressedserverkey_new(retptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompressedServerKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhecompressedserverkey_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {TfheCompressedServerKey}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.tfhecompressedserverkey_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompressedServerKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class TfheConfig {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheConfig.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfheconfig_free(ptr);\n }\n}\n/**\n */\nexport class TfheConfigBuilder {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheConfigBuilder.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfheconfigbuilder_free(ptr);\n }\n /**\n * @returns {TfheConfigBuilder}\n */\n static default() {\n const ret = wasm.tfheconfigbuilder_default();\n return TfheConfigBuilder.__wrap(ret);\n }\n /**\n * @returns {TfheConfigBuilder}\n */\n static default_with_small_encryption() {\n const ret = wasm.tfheconfigbuilder_default_with_small_encryption();\n return TfheConfigBuilder.__wrap(ret);\n }\n /**\n * @returns {TfheConfigBuilder}\n */\n static default_with_big_encryption() {\n const ret = wasm.tfheconfigbuilder_default();\n return TfheConfigBuilder.__wrap(ret);\n }\n /**\n * @returns {TfheConfig}\n */\n build() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.tfheconfigbuilder_build(ptr);\n return TfheConfig.__wrap(ret);\n }\n}\n/**\n */\nexport class TfhePublicKey {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfhePublicKey.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfhepublickey_free(ptr);\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {TfhePublicKey}\n */\n static new(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.tfhepublickey_new(retptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfhePublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhepublickey_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {TfhePublicKey}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.tfhepublickey_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfhePublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class tfheBrowser {\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfhe_free(ptr);\n }\n}\nasync function __wbg_load(module, imports) {\n if (typeof Response === \"function\" && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === \"function\") {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n }\n catch (e) {\n if (module.headers.get(\"Content-Type\") != \"application/wasm\") {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n }\n else {\n throw e;\n }\n }\n }\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n }\n else {\n const instance = await WebAssembly.instantiate(module, imports);\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n }\n else {\n return instance;\n }\n }\n}\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_bigint_from_u64 = function (arg0) {\n const ret = BigInt.asUintN(64, arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_shr = function (arg0, arg1) {\n const ret = getObject(arg0) >> getObject(arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_object_drop_ref = function (arg0) {\n takeObject(arg0);\n };\n imports.wbg.__wbindgen_bigint_from_i64 = function (arg0) {\n const ret = arg0;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_jsval_eq = function (arg0, arg1) {\n const ret = getObject(arg0) === getObject(arg1);\n return ret;\n };\n imports.wbg.__wbindgen_error_new = function (arg0, arg1) {\n const ret = new Error(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_bigint_from_i128 = function (arg0, arg1) {\n const ret = (arg0 << BigInt(64)) | BigInt.asUintN(64, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_bigint_from_u128 = function (arg0, arg1) {\n const ret = (BigInt.asUintN(64, arg0) << BigInt(64)) | BigInt.asUintN(64, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint16_new = function (arg0) {\n const ret = FheUint16.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint160_new = function (arg0) {\n const ret = FheUint160.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint256_new = function (arg0) {\n const ret = FheUint256.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint32_new = function (arg0) {\n const ret = FheUint32.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint128_new = function (arg0) {\n const ret = FheUint128.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint8_new = function (arg0) {\n const ret = FheUint8.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint64_new = function (arg0) {\n const ret = FheUint64.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint32_new = function (arg0) {\n const ret = FheInt32.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint64_new = function (arg0) {\n const ret = FheInt64.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fhebool_new = function (arg0) {\n const ret = FheBool.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint256_new = function (arg0) {\n const ret = FheInt256.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint160_new = function (arg0) {\n const ret = FheInt160.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint16_new = function (arg0) {\n const ret = FheInt16.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint8_new = function (arg0) {\n const ret = FheInt8.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint128_new = function (arg0) {\n const ret = FheInt128.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_boolean_get = function (arg0) {\n const v = getObject(arg0);\n const ret = typeof v === \"boolean\" ? (v ? 1 : 0) : 2;\n return ret;\n };\n imports.wbg.__wbindgen_bigint_from_str = function (arg0, arg1) {\n const ret = BigInt(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_bit_and = function (arg0, arg1) {\n const ret = getObject(arg0) & getObject(arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_number_new = function (arg0) {\n const ret = arg0;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_lt = function (arg0, arg1) {\n const ret = getObject(arg0) < getObject(arg1);\n return ret;\n };\n imports.wbg.__wbindgen_neg = function (arg0) {\n const ret = -getObject(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_shl = function (arg0, arg1) {\n const ret = getObject(arg0) << getObject(arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_add = function (arg0, arg1) {\n const ret = getObject(arg0) + getObject(arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_bit_or = function (arg0, arg1) {\n const ret = getObject(arg0) | getObject(arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_abda76e883ba8a5f = function () {\n const ret = new Error();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_stack_658279fe44541cf6 = function (arg0, arg1) {\n const ret = getObject(arg1).stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_error_f851667af71bcfc6 = function (arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n }\n finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n };\n imports.wbg.__wbg_crypto_70a96de3b6b73dac = function (arg0) {\n const ret = getObject(arg0).crypto;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_is_object = function (arg0) {\n const val = getObject(arg0);\n const ret = typeof val === \"object\" && val !== null;\n return ret;\n };\n imports.wbg.__wbg_process_dd1577445152112e = function (arg0) {\n const ret = getObject(arg0).process;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_versions_58036bec3add9e6f = function (arg0) {\n const ret = getObject(arg0).versions;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_node_6a9d28205ed5b0d8 = function (arg0) {\n const ret = getObject(arg0).node;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_is_string = function (arg0) {\n const ret = typeof getObject(arg0) === \"string\";\n return ret;\n };\n imports.wbg.__wbg_require_f05d779769764e82 = function () {\n return handleError(function () {\n const ret = module.require;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbindgen_string_new = function (arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_msCrypto_adbc770ec9eca9c7 = function (arg0) {\n const ret = getObject(arg0).msCrypto;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_randomFillSync_e950366c42764a07 = function () {\n return handleError(function (arg0, arg1) {\n getObject(arg0).randomFillSync(takeObject(arg1));\n }, arguments);\n };\n imports.wbg.__wbg_getRandomValues_3774744e221a22ad = function () {\n return handleError(function (arg0, arg1) {\n getObject(arg0).getRandomValues(getObject(arg1));\n }, arguments);\n };\n imports.wbg.__wbindgen_is_function = function (arg0) {\n const ret = typeof getObject(arg0) === \"function\";\n return ret;\n };\n imports.wbg.__wbg_newnoargs_e643855c6572a4a8 = function (arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_call_f96b398515635514 = function () {\n return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_self_b9aad7f1c618bfaf = function () {\n return handleError(function () {\n const ret = self.self;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_window_55e469842c98b086 = function () {\n return handleError(function () {\n const ret = window.window;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_globalThis_d0957e302752547e = function () {\n return handleError(function () {\n const ret = globalThis.globalThis;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_global_ae2f87312b8987fb = function () {\n return handleError(function () {\n const ret = global.global;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbindgen_is_undefined = function (arg0) {\n const ret = getObject(arg0) === undefined;\n return ret;\n };\n imports.wbg.__wbg_call_35782e9a1aa5e091 = function () {\n return handleError(function (arg0, arg1, arg2) {\n const ret = getObject(arg0).call(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_buffer_fcbfb6d88b2732e9 = function (arg0) {\n const ret = getObject(arg0).buffer;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_newwithbyteoffsetandlength_92c251989c485785 = function (arg0, arg1, arg2) {\n const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_bc5d9aad3f9ac80e = function (arg0) {\n const ret = new Uint8Array(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_set_4b3aa8445ac1e91c = function (arg0, arg1, arg2) {\n getObject(arg0).set(getObject(arg1), arg2 >>> 0);\n };\n imports.wbg.__wbg_newwithlength_89eca18f2603a999 = function (arg0) {\n const ret = new Uint8Array(arg0 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_subarray_7649d027b2b141b3 = function (arg0, arg1, arg2) {\n const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_object_clone_ref = function (arg0) {\n const ret = getObject(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_bigint_get_as_i64 = function (arg0, arg1) {\n const v = getObject(arg1);\n const ret = typeof v === \"bigint\" ? v : undefined;\n getBigInt64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? BigInt(0) : ret;\n getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);\n };\n imports.wbg.__wbindgen_debug_string = function (arg0, arg1) {\n const ret = debugString(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbindgen_throw = function (arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbindgen_memory = function () {\n const ret = wasm.memory;\n return addHeapObject(ret);\n };\n return imports;\n}\nfunction __wbg_init_memory(imports, maybe_memory) { }\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedBigInt64Memory0 = null;\n cachedInt32Memory0 = null;\n cachedUint32Memory0 = null;\n cachedUint8Memory0 = null;\n return wasm;\n}\nfunction initSync(module) {\n if (wasm !== undefined)\n return wasm;\n const imports = __wbg_get_imports();\n __wbg_init_memory(imports);\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\nasync function __wbg_init(input) {\n if (wasm !== undefined)\n return wasm;\n // FHENIX: disabling this because it fucks with frameworks that try to resolve it\n // if (typeof input === 'undefined') {\n // input = new URL('tfhe_bg.wasm', import.meta.url);\n // }\n const imports = __wbg_get_imports();\n if (typeof input === \"string\" ||\n (typeof Request === \"function\" && input instanceof Request) ||\n (typeof URL === \"function\" && input instanceof URL)) {\n input = fetch(input);\n }\n __wbg_init_memory(imports);\n const { instance, module } = await __wbg_load(await input, imports);\n return __wbg_finalize_init(instance, module);\n}\nexport { initSync };\nexport default __wbg_init;\n//# sourceMappingURL=tfhe-browser.js.map","import wasm from \"./tfhe_bg.wasm\";\n//@ts-expect-error imports from different wasm/js files are wonky\nimport initSDK from \"./tfhe.js\";\nlet initialized;\nconst initFhevm = async () => {\n if (!initialized) {\n try {\n initialized = await initSDK(wasm);\n }\n catch (_) {\n initialized = await initSDK(wasm());\n }\n }\n return initialized;\n};\nexport const asyncInitFhevm = async () => {\n try {\n await initFhevm();\n }\n catch (err) {\n throw new Error(`Error initializing FhenixClient ${err}`);\n }\n};\nexport { TfheCompactPublicKey } from \"./tfhe.js\";\nexport { CompactFheBool, CompactFheUint8, CompactFheUint16, CompactFheUint32, CompactFheUint64, CompactFheUint128, CompactFheUint160, CompactFheUint256, } from \"./tfhe.js\";\n//# sourceMappingURL=fhe-browser.js.map","function assertIs(is, expected, value) {\n if (!is) {\n throw new Error(`Expected value which is \\`${expected}\\`, received value of type \\`${typeof value}\\`.`);\n }\n}\nexport function isString(value) {\n const is = typeof value === \"string\";\n assertIs(is, \"string\", value);\n}\nexport function isPlainObject(value) {\n // From: https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const prototype = Object.getPrototypeOf(value);\n const is = (prototype === null ||\n prototype === Object.prototype ||\n Object.getPrototypeOf(prototype) === null) &&\n !(Symbol.toStringTag in value) &&\n !(Symbol.iterator in value);\n assertIs(is, \"plain object\", value);\n return true;\n}\nexport function isBigIntOrHexString(value) {\n const is = typeof value === \"bigint\" || typeof value === \"string\";\n assertIs(is, \"bigint or hex string\", value);\n}\nexport function isNumber(value) {\n const is = typeof value === \"number\" && !Number.isNaN(value);\n assertIs(is, \"number\", value);\n}\nexport function isBigIntOrNumber(value) {\n const is = typeof value === \"bigint\";\n if (!is) {\n try {\n isNumber(value);\n }\n catch (e) {\n throw new Error(`Value ${value} is not a number or bigint: ${typeof value}`);\n }\n }\n}\n//# sourceMappingURL=validation.js.map","import { isNumber } from \"./validation.js\";\nexport const ValidateUintInRange = (value, max, min) => {\n isNumber(value);\n if (value > max || value < min) {\n throw new Error(`Value out of range: ${max} - ${min}, try a different uint type`);\n }\n};\nexport const fromHexString = (hexString) => {\n const cleanString = hexString.length % 2 === 1 ? `0${hexString}` : hexString;\n const arr = cleanString.replace(/^0x/, \"\").match(/.{1,2}/g);\n if (!arr)\n return new Uint8Array();\n return new Uint8Array(arr.map((byte) => parseInt(byte, 16)));\n};\nexport const toHexString = (bytes) => bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, \"0\"), \"\");\nexport function toBigInt(value) {\n return ethersToBigInt(value);\n}\nexport function toBeArray(value) {\n return ethersToBeArray(value);\n}\nexport function isAddress(address) {\n if (!_isAddress(address)) {\n throw new Error(`Address ${address} is not valid EVM address`);\n }\n}\nfunction _isAddress(value) {\n try {\n if (!value.startsWith(\"0x\")) {\n return false;\n }\n else if (value.length !== 42) {\n return false;\n }\n return true;\n }\n catch (error) {\n return false;\n }\n}\nconst Nibbles = \"0123456789abcdef\";\n// IEEE 754 support 53-bits of mantissa\nconst maxValue = 0x1fffffffffffff;\nconst BN_0 = BigInt(0);\n/*\n * Converts %%value%% to a BigInt. If %%value%% is a Uint8Array, it\n * is treated as Big Endian data.\n */\nfunction ethersToBigInt(value) {\n if (value instanceof Uint8Array) {\n let result = \"0x0\";\n for (const v of value) {\n result += Nibbles[v >> 4];\n result += Nibbles[v & 0x0f];\n }\n return BigInt(result);\n }\n return getBigInt(value);\n}\nfunction ethersToBeArray(_value) {\n const value = getUint(_value);\n if (value === BN_0) {\n return new Uint8Array([]);\n }\n let hex = value.toString(16);\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n const result = new Uint8Array(hex.length / 2);\n for (let i = 0; i < result.length; i++) {\n const offset = i * 2;\n result[i] = parseInt(hex.substring(offset, offset + 2), 16);\n }\n return result;\n}\n/**\n * Returns %%value%% as a bigint, validating it is valid as a bigint\n * value and that it is positive.\n */\nfunction getUint(value) {\n const result = getBigInt(value);\n assertArgument(result >= BN_0, \"unsigned value cannot be negative\");\n return result;\n}\n/**\n * Gets a BigInt from %%value%%. If it is an invalid value for\n * a BigInt, then an ArgumentError will be thrown for %%name%%.\n */\nfunction getBigInt(value) {\n switch (typeof value) {\n case \"bigint\":\n return value;\n case \"number\":\n assertArgument(Number.isInteger(value), \"underflow\");\n assertArgument(value >= -maxValue && value <= maxValue, \"overflow\");\n return BigInt(value);\n case \"string\":\n try {\n if (value === \"\") {\n throw new Error(\"empty string\");\n }\n if (value[0] === \"-\" && value[1] !== \"-\") {\n return -BigInt(value.substring(1));\n }\n return BigInt(value);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n catch (e) {\n assertArgument(false, `invalid BigNumberish string: ${e.message}`);\n }\n }\n assertArgument(false, \"invalid BigNumberish value\");\n}\nfunction assertArgument(check, message) {\n if (!check) {\n throw new Error(message);\n }\n}\nexport function toABIEncodedUint32(value) {\n // Ensure the number is a valid unsigned 32-bit integer\n if (value < 0 || value > 0xffffffff) {\n throw new RangeError(\"Number must be between 0 and 2^32 - 1.\");\n }\n // Convert the number to a hexadecimal string and pad it to 64 characters (32 bytes)\n return value.toString(16).padStart(64, \"0\");\n}\n// Uint8Array conversions\nexport const stringToUint8Array = (value) => {\n return new Uint8Array(value.split(\"\").map((c) => c.charCodeAt(0)));\n};\nexport const uint8ArrayToString = (value) => {\n return Array.from(value)\n .map((byte) => String.fromCharCode(byte))\n .join(\"\");\n};\nfunction bigintToUint8Array(bigNum) {\n const byteLength = 32;\n const byteArray = new Uint8Array(byteLength);\n // Create a BigInt mask for each byte\n const mask = BigInt(0xff);\n // Initialize an index to start from the end of the array\n for (let i = 0; i < byteLength; i++) {\n // Extract the last byte and assign it to the corresponding position in the array\n byteArray[byteLength - 1 - i] = Number(bigNum & mask);\n // Shift bigint right by 8 bits to process the next byte in the next iteration\n bigNum >>= BigInt(8);\n }\n return byteArray;\n}\n// HARDHAT MOCKS\n// Mock FHE operations are automatically injected on the hardhat network\n// The utility functions allow the client / sdk to interact with the mocked FHE ops\nexport const chainIsHardhat = (chainId) => {\n if (chainId == null)\n return false;\n return parseInt(chainId) === 31337;\n};\nexport const hardhatMockUnseal = (value) => {\n let result = BigInt(0);\n for (const byteArrayItem of stringToUint8Array(value)) {\n result = (result << BigInt(8)) + BigInt(byteArrayItem);\n }\n return result;\n};\nexport const hardhatMockEncrypt = (value, securityZone = 0) => ({\n data: bigintToUint8Array(BigInt(value)),\n securityZone: securityZone || 0,\n});\n//# sourceMappingURL=utils.js.map","/**\n * An enumeration of supported encryption types.\n * uint8, uint16, and uint32 represent the different sizes of integers that can be encrypted.\n */\nexport var EncryptionTypes;\n(function (EncryptionTypes) {\n EncryptionTypes[\"bool\"] = \"bool\";\n EncryptionTypes[\"uint8\"] = \"uint8\";\n EncryptionTypes[\"uint16\"] = \"uint16\";\n EncryptionTypes[\"uint32\"] = \"uint32\";\n EncryptionTypes[\"uint64\"] = \"uint64\";\n EncryptionTypes[\"uint128\"] = \"uint128\";\n EncryptionTypes[\"uint256\"] = \"uint256\";\n EncryptionTypes[\"address\"] = \"address\";\n})(EncryptionTypes || (EncryptionTypes = {}));\n/**\n * Determines the request method for a given provider.\n * Checks if the provider has a 'request' method typical for Eip1193Providers, or a 'send' method for others.\n * Throws an error if neither method is found.\n * @param {SupportedProvider} provider - The provider to determine the request method for.\n * @returns {Function} - The determined request function.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function determineRequestMethod(provider) {\n if (\"request\" in provider && typeof provider.request === \"function\") {\n return (p, method, params) => p.request({ method, params });\n }\n else if (\"send\" in provider && typeof provider.send === \"function\") {\n return (p, method, params) => p.send(method, params);\n }\n else {\n throw new Error(\"Received unsupported provider. 'send' or 'request' method not found\");\n }\n}\n/**\n * Determines the request signer function for a given provider.\n * Checks if the provider has a 'getSigner' method and returns it if available.\n * Throws an error if no 'getSigner' method is found.\n * @param {SupportedProvider} provider - The provider to determine the request signer for.\n * @returns {Function} - The determined request signer function.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function determineRequestSigner(provider) {\n if (\"getSigner\" in provider && typeof provider.getSigner === \"function\") {\n return (p) => p.getSigner();\n }\n else {\n throw new Error(\"The supplied provider cannot get a signer\");\n }\n}\n//# sourceMappingURL=types.js.map","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","// Written in 2014-2016 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n(function(root, f) {\n 'use strict';\n if (typeof module !== 'undefined' && module.exports) module.exports = f();\n else if (root.nacl) root.nacl.util = f();\n else {\n root.nacl = {};\n root.nacl.util = f();\n }\n}(this, function() {\n 'use strict';\n\n var util = {};\n\n function validateBase64(s) {\n if (!(/^(?:[A-Za-z0-9+\\/]{2}[A-Za-z0-9+\\/]{2})*(?:[A-Za-z0-9+\\/]{2}==|[A-Za-z0-9+\\/]{3}=)?$/.test(s))) {\n throw new TypeError('invalid encoding');\n }\n }\n\n util.decodeUTF8 = function(s) {\n if (typeof s !== 'string') throw new TypeError('expected string');\n var i, d = unescape(encodeURIComponent(s)), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n util.encodeUTF8 = function(arr) {\n var i, s = [];\n for (i = 0; i < arr.length; i++) s.push(String.fromCharCode(arr[i]));\n return decodeURIComponent(escape(s.join('')));\n };\n\n if (typeof atob === 'undefined') {\n // Node.js\n\n if (typeof Buffer.from !== 'undefined') {\n // Node v6 and later\n util.encodeBase64 = function (arr) { // v6 and later\n return Buffer.from(arr).toString('base64');\n };\n\n util.decodeBase64 = function (s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(Buffer.from(s, 'base64'), 0));\n };\n\n } else {\n // Node earlier than v6\n util.encodeBase64 = function (arr) { // v6 and later\n return (new Buffer(arr)).toString('base64');\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(new Buffer(s, 'base64'), 0));\n };\n }\n\n } else {\n // Browsers\n\n util.encodeBase64 = function(arr) {\n var i, s = [], len = arr.length;\n for (i = 0; i < len; i++) s.push(String.fromCharCode(arr[i]));\n return btoa(s.join(''));\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n var i, d = atob(s), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n }\n\n return util;\n\n}));\n","import { fromHexString, toBeArray, toBigInt, toHexString } from \"./utils.js\";\nimport * as nacl from \"tweetnacl\";\nimport * as naclUtil from \"tweetnacl-util\";\nimport { isBigIntOrNumber, isString } from \"./validation.js\";\nconst PRIVATE_KEY_LENGTH = 64;\nconst PUBLIC_KEY_LENGTH = 64;\n/**\n * A class representing a SealingKey which provides cryptographic sealing (encryption)\n * and unsealing (decryption) capabilities.\n */\nexport class SealingKey {\n /**\n * Constructs a SealingKey instance with the given private and public keys.\n *\n * @param {string} privateKey - The private key used for decryption.\n * @param {string} publicKey - The public key used for encryption.\n * @throws Will throw an error if the provided keys lengths do not match\n * the required lengths for private and public keys.\n */\n constructor(privateKey, publicKey) {\n /**\n * Unseals (decrypts) the provided ciphertext using the instance's private key.\n *\n * @param {string | Uint8Array} ciphertext - The encrypted data to be decrypted.\n * @returns BigInt - The decrypted message as a bigint.\n * @throws Will throw an error if the decryption process fails.\n */\n this.unseal = (ciphertext) => {\n let parsedData = undefined;\n try {\n if (typeof ciphertext === \"string\") {\n parsedData = JSON.parse(ciphertext);\n }\n }\n catch {\n // ignore errors\n }\n if (!parsedData) {\n const toDecrypt = typeof ciphertext === \"string\" ? fromHexString(ciphertext) : ciphertext;\n // decode json structure that gets returned from the chain\n const jsonString = Buffer.from(toDecrypt).toString(\"utf8\");\n parsedData = JSON.parse(jsonString);\n }\n if (!parsedData) {\n throw new Error(\"Failed to parse sealed data\");\n }\n // assemble decryption parameters\n const nonce = naclUtil.decodeBase64(parsedData.nonce);\n const ephemPublicKey = naclUtil.decodeBase64(parsedData.ephemPublicKey);\n const dataToDecrypt = naclUtil.decodeBase64(parsedData.ciphertext);\n // call the nacl box function to decrypt the data\n const decryptedMessage = nacl.box.open(dataToDecrypt, nonce, ephemPublicKey, fromHexString(this.privateKey));\n if (!decryptedMessage) {\n throw new Error(\"Failed to decrypt message\");\n }\n return toBigInt(decryptedMessage);\n };\n if (privateKey.length !== PRIVATE_KEY_LENGTH) {\n throw new Error(`Private key must be of length ${PRIVATE_KEY_LENGTH}`);\n }\n if (publicKey.length !== PUBLIC_KEY_LENGTH) {\n throw new Error(`Private key must be of length ${PUBLIC_KEY_LENGTH}`);\n }\n this.privateKey = privateKey;\n this.publicKey = publicKey;\n }\n}\n/**\n * Seals (encrypts) the provided message for a receiver with the specified public key.\n *\n * @param {bigint | number} value - The message to be encrypted.\n * @param {string} publicKey - The public key of the intended recipient.\n * @returns string - The encrypted message in hexadecimal format.\n * @static\n * @throws Will throw if the provided publicKey or value do not meet defined preconditions.\n */\nSealingKey.seal = (value, publicKey) => {\n isString(publicKey);\n isBigIntOrNumber(value);\n // generate ephemeral keypair\n const ephemeralKeyPair = nacl.box.keyPair();\n const nonce = nacl.randomBytes(nacl.box.nonceLength);\n const encryptedMessage = nacl.box(toBeArray(value), nonce, fromHexString(publicKey), ephemeralKeyPair.secretKey);\n // handle encrypted data\n const output = {\n version: \"x25519-xsalsa20-poly1305\",\n nonce: naclUtil.encodeBase64(nonce),\n ephemPublicKey: naclUtil.encodeBase64(ephemeralKeyPair.publicKey),\n ciphertext: naclUtil.encodeBase64(encryptedMessage),\n };\n // mimicking encoding from the chain\n return toHexString(Buffer.from(JSON.stringify(output)));\n};\n/**\n * Asynchronously generates a new SealingKey.\n * This function uses the 'nacl' library to create a new public/private key pair for sealing purposes.\n * A sealing key is used to encrypt data such that it can only be unsealed (decrypted) by the owner of the corresponding private key.\n * @returns {Promise} - A promise that resolves to a new SealingKey object containing the hexadecimal strings of the public and private keys.\n */\nexport const GenerateSealingKey = async () => {\n const sodiumKeypair = nacl.box.keyPair();\n return new SealingKey(toHexString(sodiumKeypair.secretKey), toHexString(sodiumKeypair.publicKey));\n};\n//# sourceMappingURL=sealing.js.map","import { isAddress } from \"../../../sdk/utils.js\";\nimport { determineRequestMethod, determineRequestSigner, } from \"../../../sdk/types.js\";\nimport { GenerateSealingKey, SealingKey } from \"../../../sdk/sealing.js\";\nconst PERMIT_PREFIX = \"Fhenix_saved_permit_\";\nconst parsePermit = (savedPermit) => {\n const o = JSON.parse(savedPermit);\n if (o) {\n return {\n contractAddress: o.contractAddress,\n sealingKey: new SealingKey(o.sealingKey.privateKey, o.sealingKey.publicKey),\n signature: o.signature,\n publicKey: `0x${o.sealingKey.publicKey}`,\n };\n }\n throw new Error(`Cannot parse permit`);\n};\nexport const getPermit = async (contract, provider, autoGenerate = true) => {\n isAddress(contract);\n if (!provider) {\n throw new Error(`Missing provider`);\n }\n const getSigner = determineRequestSigner(provider);\n const signer = await getSigner(provider);\n const savedPermit = getPermitFromLocalstorage(contract, await signer.getAddress());\n if (savedPermit != null)\n return savedPermit;\n return autoGenerate ? generatePermit(contract, provider) : null;\n};\nexport const getAllExistingPermits = (account) => {\n const permits = {};\n const search = new RegExp(`${PERMIT_PREFIX}(.*?)_${account}`);\n Object.keys(window.localStorage).forEach((key) => {\n const matchArray = key.match(search);\n if (matchArray == null)\n return;\n const contract = matchArray[1];\n const permitRaw = window.localStorage.getItem(key);\n if (permitRaw == null)\n return;\n try {\n const permit = parsePermit(permitRaw);\n permits[contract] = permit;\n }\n catch (err) {\n console.warn(err);\n }\n });\n return permits;\n};\nexport const getAllPermits = () => {\n const permits = new Map();\n for (let i = 0; i < window.localStorage.length; i++) {\n const key = window.localStorage.key(i);\n if (key && key.includes(PERMIT_PREFIX)) {\n const contract = key.replace(PERMIT_PREFIX, \"\");\n // Not sure if needed, code placeholder:\n // const noPrefixPermit = key.replace(PERMIT_PREFIX, \"\");\n // let contract = \"\";\n // if (noPrefixPermit.includes(\"_\")) {\n // const tmp = noPrefixPermit.split(\"_\");\n // contract = tmp[0];\n // } else {\n // contract = noPrefixPermit;\n // }\n try {\n const permit = parsePermit(window.localStorage.getItem(key));\n permits.set(contract, permit);\n }\n catch (err) {\n console.warn(err);\n }\n }\n }\n return permits;\n};\nconst sign = async (signer, domain, types, value) => {\n if (\"_signTypedData\" in signer &&\n typeof signer._signTypedData == \"function\") {\n return await signer._signTypedData(domain, types, value);\n }\n else if (\"signTypedData\" in signer &&\n typeof signer.signTypedData == \"function\") {\n return await signer.signTypedData(domain, types, value);\n }\n throw new Error(\"Unsupported signer\");\n};\nexport const generatePermit = async (contract, provider, customSigner) => {\n if (!provider) {\n throw new Error(\"Provider is undefined\");\n }\n const requestMethod = determineRequestMethod(provider);\n let signer;\n if (!customSigner) {\n const getSigner = determineRequestSigner(provider);\n signer = await getSigner(provider);\n }\n else {\n signer = customSigner;\n }\n const chainId = await requestMethod(provider, \"eth_chainId\", []);\n const keypair = await GenerateSealingKey();\n const msgParams = {\n types: {\n // This refers to the domain the contract is hosted on.\n EIP712Domain: [\n { name: \"name\", type: \"string\" },\n { name: \"version\", type: \"string\" },\n { name: \"chainId\", type: \"uint256\" },\n { name: \"verifyingContract\", type: \"address\" },\n ],\n // Refer to primaryType.\n Permissioned: [{ name: \"publicKey\", type: \"bytes32\" }],\n },\n // This defines the message you're proposing the user to sign, is dapp-specific, and contains\n // anything you want. There are no required fields. Be as explicit as possible when building out\n // the message schema.\n // This refers to the keys of the following types object.\n primaryType: \"Permissioned\",\n domain: {\n // Give a user-friendly name to the specific contract you're signing for.\n name: \"Fhenix Permission\", // params.name\n // This identifies the latest version.\n version: \"1.0\", //params.version ||\n // This defines the network, in this case, Mainnet.\n chainId: chainId,\n // // Add a verifying contract to make sure you're establishing contracts with the proper entity.\n verifyingContract: contract, //params.verifyingContract,\n },\n message: {\n publicKey: `0x${keypair.publicKey}`,\n },\n };\n const msgSig = await sign(signer, msgParams.domain, { Permissioned: msgParams.types.Permissioned }, msgParams.message);\n const permit = {\n contractAddress: contract,\n sealingKey: keypair,\n signature: msgSig,\n publicKey: `0x${keypair.publicKey}`,\n //permit: msgParams,\n //msgSig\n };\n storePermitInLocalStorage(permit, await signer.getAddress());\n return permit;\n};\nexport const removePermit = (contract, account) => {\n if (!account) {\n // Backward compatibility\n window.localStorage.removeItem(`${PERMIT_PREFIX}${contract}`);\n }\n else {\n window.localStorage.removeItem(`${PERMIT_PREFIX}${contract}_${account}`);\n }\n};\nexport const getPermitFromLocalstorage = (contract, account) => {\n let savedPermit = null;\n if (typeof window !== \"undefined\" && window.localStorage) {\n savedPermit = window.localStorage.getItem(`${PERMIT_PREFIX}${contract}_${account}`);\n if (!account) {\n // Backward compatibility\n savedPermit = window.localStorage.getItem(`${PERMIT_PREFIX}${contract}`);\n }\n else {\n savedPermit = window.localStorage.getItem(`${PERMIT_PREFIX}${contract}_${account}`);\n }\n }\n if (!savedPermit) {\n return undefined;\n }\n return parsePermit(savedPermit);\n};\nexport const storePermitInLocalStorage = (permit, account) => {\n if (typeof window !== \"undefined\" && window.localStorage) {\n // Sealing key is a class, and will include methods in the JSON\n const serialized = {\n contractAddress: permit.contractAddress,\n sealingKey: {\n publicKey: permit.sealingKey.publicKey,\n privateKey: permit.sealingKey.privateKey,\n },\n signature: permit.signature,\n };\n window.localStorage.setItem(`${PERMIT_PREFIX}${permit.contractAddress}_${account}`, JSON.stringify(serialized));\n }\n};\nexport const removePermitFromLocalstorage = (contract, account) => {\n if (typeof window !== \"undefined\" && window.localStorage) {\n window.localStorage.removeItem(`${PERMIT_PREFIX}${contract}_${account}`);\n }\n};\n//# sourceMappingURL=index.js.map","export const MAX_UINT8 = 255;\nexport const MAX_UINT16 = 65535;\nexport const MAX_UINT32 = 4294967295;\nexport const FheOpsAddress = \"0x0000000000000000000000000000000000000080\";\nexport const PUBLIC_KEY_LENGTH_MIN = 15000;\n//# sourceMappingURL=consts.js.map","import { CompactFheBool, CompactFheUint8, CompactFheUint16, CompactFheUint32, CompactFheUint64, CompactFheUint128, CompactFheUint160, CompactFheUint256, } from \"./fhe/fhe.js\";\nimport { EncryptionTypes, } from \"./types.js\";\nimport { fromHexString, toBigInt } from \"./utils.js\";\n/**\n * Encrypts a Uint8 value using TFHE (Fast Fully Homomorphic Encryption over the Torus).\n * @param {boolean} value - The Boolean value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedBool} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_bool = (value, publicKey, securityZone = 0) => {\n const encrypted = CompactFheBool.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Uint8 value using TFHE (Fast Fully Homomorphic Encryption over the Torus).\n * @param {number} value - The Uint8 value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedUint8} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_uint8 = (value, publicKey, securityZone = 0) => {\n const encrypted = CompactFheUint8.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Uint16 value using TFHE.\n * @param {number} value - The Uint16 value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedUint16} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_uint16 = (value, publicKey, securityZone = 0) => {\n const encrypted = CompactFheUint16.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Uint32 value using TFHE.\n * @param {number} value - The Uint32 value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedUint32} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_uint32 = (value, publicKey, securityZone = 0) => {\n const encrypted = CompactFheUint32.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Uint64 value using TFHE.\n * @param {number} value - The Uint64 value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedUint64} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_uint64 = (value, publicKey, securityZone = 0) => {\n if (typeof value === \"string\") {\n value = toBigInt(fromHexString(value));\n }\n else {\n value = value;\n }\n const encrypted = CompactFheUint64.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Uint128 value using TFHE.\n * @param {bigint} value - The Uint128 value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedUint128} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_uint128 = (value, publicKey, securityZone = 0) => {\n if (typeof value === \"string\") {\n value = toBigInt(fromHexString(value));\n }\n else {\n value = value;\n }\n const encrypted = CompactFheUint128.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Uint256 value using TFHE.\n * @param {bigint} value - The Uint256 value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedUint256} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_uint256 = (value, publicKey, securityZone = 0) => {\n if (typeof value === \"string\") {\n value = toBigInt(fromHexString(value));\n }\n else {\n value = value;\n }\n const encrypted = CompactFheUint256.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Address value using TFHE.\n * @param {bigint} value - The Address (Uint160) value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the address on.\n * @returns {EncryptedAddress} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_address = (value, publicKey, securityZone = 0) => {\n if (typeof value === \"string\") {\n value = toBigInt(fromHexString(value));\n }\n else {\n value = value;\n }\n const encrypted = CompactFheUint160.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a numeric value using TFHE according to the specified encryption type.\n * @param {number} value - The numeric value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param {EncryptionTypes} type - The encryption type (uint8, uint16, uint32).\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {Uint8Array} - The encrypted value serialized as Uint8Array.\n * @throws {Error} - Throws an error if an invalid type is specified.\n */\nexport const encrypt = (value, publicKey, type = EncryptionTypes.uint8, securityZone = 0) => {\n switch (type) {\n case EncryptionTypes.bool:\n return encrypt_bool(!!value, publicKey, securityZone);\n case EncryptionTypes.uint8:\n return encrypt_uint8(value, publicKey, securityZone);\n case EncryptionTypes.uint16:\n return encrypt_uint16(value, publicKey, securityZone);\n case EncryptionTypes.uint32:\n return encrypt_uint32(value, publicKey, securityZone);\n case EncryptionTypes.uint64:\n return encrypt_uint64(value.toString(16), publicKey, securityZone);\n case EncryptionTypes.uint128:\n return encrypt_uint128(value.toString(16), publicKey, securityZone);\n case EncryptionTypes.uint256:\n return encrypt_uint256(value.toString(16), publicKey, securityZone);\n case EncryptionTypes.address:\n return encrypt_address(value.toString(16), publicKey, securityZone);\n default:\n throw new Error(\"Invalid type\");\n }\n};\n//# sourceMappingURL=encrypt.js.map","import { asyncInitFhevm } from \"./fhe/fhe.js\";\n// INFO: The existing `GetFhePublicKey` function has been replaced with `InitFhevm`\n// `GetFhePublicKey` didn't allow security zones to be set, and was overloaded with initializing the Fhevm\n// Public key fetching has been moved to the Async and Sync FhenixClient constructors (they handle it slightly differently)\n// - arch 2024-08-28\nexport const InitFhevm = async () => {\n // `asyncInitFhevm` in `/sdk/fhe/fhe.ts` in node env (noop)\n // `asyncInitFhevm` in `/sdk/fhe/fhe-browser.ts` in browser env (init wasm)\n await asyncInitFhevm();\n};\n//# sourceMappingURL=init.js.map","import { TfheCompactPublicKey } from \"./fhe/fhe.js\";\nimport { fromHexString, isAddress, ValidateUintInRange, toABIEncodedUint32, } from \"./utils.js\";\nimport { determineRequestMethod, EncryptionTypes, } from \"./types.js\";\nimport { generatePermit, getAllExistingPermits, getPermitFromLocalstorage, removePermitFromLocalstorage, storePermitInLocalStorage, } from \"../extensions/access_control/index.js\";\nimport { FheOpsAddress, MAX_UINT16, MAX_UINT32, MAX_UINT8, PUBLIC_KEY_LENGTH_MIN, } from \"./consts.js\";\nimport * as tfheEncrypt from \"./encrypt.js\";\nimport { isBigIntOrHexString, isNumber, isPlainObject, isString, } from \"./validation.js\";\nimport { InitFhevm } from \"./init.js\";\nclass FhenixClientBase {\n /**\n * Creates an instance of FhenixClient.\n * Initializes the fhevm library if needed and retrieves the public key for encryption from the provider.\n * @param {InstanceParams} params - Parameters to initialize the client.\n */\n constructor(params) {\n this.permits = {};\n isPlainObject(params);\n const { provider } = params;\n this.provider = provider;\n if (!this.provider) {\n throw new Error(\"Failed to initialize Fhenix Client - must include a web3 provider\");\n }\n }\n // Unsealing Method\n /**\n * Unseals an encrypted message using the stored permit for a specific contract address.\n * @param {string} contractAddress - The address of the contract.\n * @param {string} ciphertext - The encrypted message to unseal.\n * @param {string} account - The account attached to existing permits.\n * @returns bigint - The unsealed message.\n */\n unseal(contractAddress, ciphertext, account) {\n isAddress(contractAddress);\n isString(ciphertext);\n const permit = this.getPermit(contractAddress, account);\n if (permit == null) {\n throw new Error(`Missing keypair for ${contractAddress}`);\n }\n return this.permits[contractAddress].sealingKey.unseal(ciphertext);\n }\n // Permit Management Methods\n /**\n * Creates a new permit for a specific contract address. Also saves the permit to localstorage (if available)\n * @param {string} contractAddress - The address of the contract.\n * @param {SupportedProvider} provider - The provider from which to sign the permit - must container a signer.\n * @param signer - the signer to use to sign the permit if provider does not support signing (e.g. hardhat)\n * @returns Permit - The permit associated with the contract address.\n *\n * @throws {Error} - If the provider does not contain a signer, or if a provider is not set\n */\n async generatePermit(contractAddress, provider, signer) {\n if (!provider && this.provider === undefined) {\n throw new Error(\"error getting provider\");\n }\n const permit = await generatePermit(contractAddress, provider || this.provider, signer);\n // Permit has already been put into local storage, it can be inserted directly into `this.permits`\n this.permits[contractAddress] = permit;\n return permit;\n }\n /**\n * Reusable permit loading and storing from local storage\n * @param {string} contractAddress - The address of the contract.\n * @param {string} account - The address of the user account.\n * @returns {Permit | undefined} - The permit loaded from local storage\n */\n _loadPermitFromLocalStorage(contractAddress, account) {\n const fromLs = getPermitFromLocalstorage(contractAddress, account);\n if (fromLs == null)\n return undefined;\n this.permits[contractAddress] = fromLs;\n return fromLs;\n }\n /**\n * Retrieves the stored permit for a specific contract address.\n * @param {string} contractAddress - The address of the contract.\n * @param {string} account - The address of the user account.\n * @returns {Permit} - The permit associated with the contract address.\n */\n getPermit(contractAddress, account) {\n const permitFromLs = this._loadPermitFromLocalStorage(contractAddress, account);\n if (permitFromLs != null)\n return permitFromLs;\n return this.permits[contractAddress];\n }\n /**\n * Retrieves all stored permits for a specific account.\n * @param {string} account - The address of the user account.\n * @returns {Record} - The permits associated with each contract address.\n */\n loadAllPermitsFromLocalStorage(account) {\n const existingPermits = getAllExistingPermits(account);\n Object.keys(existingPermits).forEach((contractAddress) => {\n this.permits[contractAddress] = existingPermits[contractAddress];\n });\n return this.permits;\n }\n /**\n * Stores a permit for a specific contract address. Will overwrite any existing permit for the same contract address.\n * Does not store the permit in localstorage (should it?)\n * @param {Permit} permit - The permit to store.\n */\n storePermit(permit, account) {\n storePermitInLocalStorage(permit, account);\n this.permits[permit.contractAddress] = permit;\n }\n /**\n * Removes a stored permit for a specific contract address.\n * @param {string} contractAddress - The address of the contract.\n * @param {string} account - The account address of the permit.\n */\n removePermit(contractAddress, account) {\n if (this.hasPermit(contractAddress, account)) {\n removePermitFromLocalstorage(contractAddress, account);\n delete this.permits[contractAddress];\n }\n }\n /**\n * Checks if a permit exists for a specific contract address.\n * @param {string} contractAddress - The address of the contract.\n * @param {string} account - The account address attached to the stored permits\n * @returns {boolean} - True if a permit exists, false otherwise.\n */\n hasPermit(contractAddress, account) {\n const permitFromLs = this._loadPermitFromLocalStorage(contractAddress, account);\n if (permitFromLs != null)\n return true;\n return this.permits[contractAddress] != null;\n }\n /**\n * Exports all stored permits.\n * @returns {ContractPermits} - All stored permits.\n */\n exportPermits() {\n return this.permits;\n }\n extractPermitPermission(permit) {\n return {\n signature: permit.signature,\n publicKey: permit.publicKey,\n };\n }\n // Private helper methods\n /**\n * Retrieves the FHE public key from the provider.\n * @param {SupportedProvider} provider - The provider from which to retrieve the key.\n * @param securityZone - The security zone for which to retrieve the key (default 0).\n * @returns {Promise} - The retrieved public key.\n */\n static async getFheKeyFromProvider(provider, securityZone = 0) {\n const requestMethod = determineRequestMethod(provider);\n const funcSig = \"0x1b1b484e\"; // cast sig \"getNetworkPublicKey(int32)\"\n const callData = funcSig + toABIEncodedUint32(securityZone);\n const callParams = [{ to: FheOpsAddress, data: callData }, \"latest\"];\n const publicKeyP = requestMethod(provider, \"eth_call\", callParams).catch((err) => {\n throw Error(`Error while requesting network public key from provider for security zone ${securityZone}: ${JSON.stringify(err)}`);\n });\n const publicKey = await publicKeyP;\n if (typeof publicKey !== \"string\") {\n throw new Error(\"Error using publicKey from provider: expected string\");\n }\n if (publicKey.length < PUBLIC_KEY_LENGTH_MIN) {\n throw new Error(`Error initializing fhenixjs; got shorter than expected public key: ${publicKey.length}`);\n }\n // magically know how to decode rlp or w/e returns from the evm json-rpc\n const buff = fromHexString(publicKey.slice(130));\n try {\n return TfheCompactPublicKey.deserialize(buff);\n }\n catch (err) {\n throw new Error(`Error deserializing public key ${err}`);\n }\n }\n}\n/**\n * The FhenixClient class provides functionalities to interact with a FHE (Fully Homomorphic Encryption) system.\n * It includes methods for encryption, unsealing, and managing permits.\n */\nexport class FhenixClient extends FhenixClientBase {\n /**\n * Creates an instance of FhenixClient.\n * Initializes the fhevm library if needed and retrieves the public key for encryption from the provider.\n * @param {InstanceParams} params - Parameters to initialize the client.\n */\n constructor(params) {\n super(params);\n this.defaultSecurityZone = 0;\n this.fhePublicKeys = [];\n InitFhevm().catch((err) => {\n if (params.ignoreErrors) {\n return undefined;\n }\n else {\n throw new Error(`Failed to initialize fhenixjs - is the network FHE-enabled? ${err}`);\n }\n });\n // In the future the default array can be updated to include additional security zones\n // This is not strictly necessary, as the pubKey for additional zones can also be fetched during an encryption.\n // By default, doesn't skip fetching the public key\n if (params.skipPubKeyFetch !== true) {\n this.fhePublicKeys = [this.defaultSecurityZone].map((securityZone) => FhenixClientBase.getFheKeyFromProvider(params.provider, securityZone));\n }\n }\n async _getPublicKey(securityZone) {\n let fhePublicKey = await this.fhePublicKeys[securityZone];\n if (!fhePublicKey) {\n this.fhePublicKeys[securityZone] = FhenixClientBase.getFheKeyFromProvider(this.provider, securityZone);\n fhePublicKey = await this.fhePublicKeys[securityZone];\n if (!fhePublicKey) {\n throw new Error(`Public key for security zone ${securityZone} somehow not initialized`);\n }\n }\n return fhePublicKey;\n }\n async encrypt_bool(value, securityZone = 0) {\n const fhePublicKey = await this._getPublicKey(securityZone);\n return tfheEncrypt.encrypt_bool(value, fhePublicKey, securityZone);\n }\n async encrypt_uint8(value, securityZone = 0) {\n isNumber(value);\n const fhePublicKey = await this._getPublicKey(securityZone);\n ValidateUintInRange(value, MAX_UINT8, 0);\n return tfheEncrypt.encrypt_uint8(value, fhePublicKey, securityZone);\n }\n async encrypt_uint16(value, securityZone = 0) {\n isNumber(value);\n const fhePublicKey = await this._getPublicKey(securityZone);\n ValidateUintInRange(value, MAX_UINT16, 0);\n return tfheEncrypt.encrypt_uint16(value, fhePublicKey, securityZone);\n }\n async encrypt_uint32(value, securityZone = 0) {\n isNumber(value);\n const fhePublicKey = await this._getPublicKey(securityZone);\n ValidateUintInRange(value, MAX_UINT32, 0);\n return tfheEncrypt.encrypt_uint32(value, fhePublicKey, securityZone);\n }\n async encrypt_uint64(value, securityZone = 0) {\n isBigIntOrHexString(value);\n const fhePublicKey = await this._getPublicKey(securityZone);\n // ValidateUintInRange(value, MAX_UINT64, 0);\n return tfheEncrypt.encrypt_uint64(value, fhePublicKey, securityZone);\n }\n async encrypt_uint128(value, securityZone = 0) {\n isBigIntOrHexString(value);\n const fhePublicKey = await this._getPublicKey(securityZone);\n // ValidateUintInRange(value, MAX_UINT64, 0);\n return tfheEncrypt.encrypt_uint128(value, fhePublicKey, securityZone);\n }\n async encrypt_uint256(value, securityZone = 0) {\n isBigIntOrHexString(value);\n const fhePublicKey = await this._getPublicKey(securityZone);\n // ValidateUintInRange(value, MAX_UINT64, 0);\n return tfheEncrypt.encrypt_uint256(value, fhePublicKey, securityZone);\n }\n async encrypt_address(value, securityZone = 0) {\n isBigIntOrHexString(value);\n const fhePublicKey = await this._getPublicKey(securityZone);\n // ValidateUintInRange(value, MAX_UINT64, 0);\n return tfheEncrypt.encrypt_address(value, fhePublicKey, securityZone);\n }\n async encrypt(value, type, securityZone = 0) {\n isNumber(value);\n let outputSize = type;\n const fhePublicKey = await this._getPublicKey(securityZone);\n // choose the most efficient ciphertext size if not selected\n if (!outputSize) {\n if (value < MAX_UINT8) {\n outputSize = EncryptionTypes.uint8;\n }\n else if (value < MAX_UINT16) {\n outputSize = EncryptionTypes.uint16;\n }\n else if (value < MAX_UINT32) {\n outputSize = EncryptionTypes.uint32;\n }\n else {\n throw new Error(`Encryption input must be smaller than ${MAX_UINT32}`);\n }\n }\n switch (outputSize) {\n case EncryptionTypes.uint8:\n ValidateUintInRange(value, MAX_UINT8, 0);\n break;\n case EncryptionTypes.uint16:\n ValidateUintInRange(value, MAX_UINT16, 0);\n break;\n case EncryptionTypes.uint32:\n ValidateUintInRange(value, MAX_UINT32, 0);\n break;\n default:\n }\n return tfheEncrypt.encrypt(value, fhePublicKey, type, securityZone);\n }\n}\n/**\n * The FhenixClientSync class provides functionalities to interact with a FHE (Fully Homomorphic Encryption) system.\n * It includes methods for encryption, unsealing, and managing permits.\n *\n * The Sync FhenixClient allows the `client.encrypt_()` functions to be performed synchronously\n *\n * @Note The Sync FhenixClient must be created using `await FhenixClientSync.create({provider})` instead of `new FhenixClient({provider})`\n */\nexport class FhenixClientSync extends FhenixClientBase {\n constructor(params) {\n super(params);\n this.fhePublicKeys = [];\n this.fhePublicKeys = params.fhePublicKeys;\n }\n static async create(params) {\n isPlainObject(params);\n if (params.skipPubKeyFetch === true) {\n console.warn(\"warning: FhenixClientSync doesn't support skipping public key fetching on creation\");\n }\n const { provider, ignoreErrors, securityZones = [0] } = params;\n if (!provider) {\n throw new Error(\"Failed to initialize Fhenix Client - must include a web3 provider\");\n }\n await InitFhevm().catch((err) => {\n if (ignoreErrors) {\n return undefined;\n }\n else {\n throw new Error(`Failed to initialize fhenixjs - is the network FHE-enabled? ${err}`);\n }\n });\n const fhePublicKeys = await Promise.all(securityZones.map((securityZone) => FhenixClientBase.getFheKeyFromProvider(params.provider, securityZone)));\n return new FhenixClientSync({ ...params, fhePublicKeys });\n }\n // Encryption Methods\n _getPublicKey(securityZone) {\n const fhePublicKey = this.fhePublicKeys[securityZone];\n if (!fhePublicKey) {\n throw new Error(`Public key for security zone ${securityZone} not initialized`);\n }\n return fhePublicKey;\n }\n encrypt_bool(value, securityZone = 0) {\n const fhePublicKey = this._getPublicKey(securityZone);\n return tfheEncrypt.encrypt_bool(value, fhePublicKey, securityZone);\n }\n encrypt_uint8(value, securityZone = 0) {\n isNumber(value);\n const fhePublicKey = this._getPublicKey(securityZone);\n ValidateUintInRange(value, MAX_UINT8, 0);\n return tfheEncrypt.encrypt_uint8(value, fhePublicKey, securityZone);\n }\n encrypt_uint16(value, securityZone = 0) {\n isNumber(value);\n const fhePublicKey = this._getPublicKey(securityZone);\n ValidateUintInRange(value, MAX_UINT16, 0);\n return tfheEncrypt.encrypt_uint16(value, fhePublicKey, securityZone);\n }\n encrypt_uint32(value, securityZone = 0) {\n isNumber(value);\n const fhePublicKey = this._getPublicKey(securityZone);\n ValidateUintInRange(value, MAX_UINT32, 0);\n return tfheEncrypt.encrypt_uint32(value, fhePublicKey, securityZone);\n }\n encrypt_uint64(value, securityZone = 0) {\n isBigIntOrHexString(value);\n const fhePublicKey = this._getPublicKey(securityZone);\n // ValidateUintInRange(value, MAX_UINT64, 0);\n return tfheEncrypt.encrypt_uint64(value, fhePublicKey, securityZone);\n }\n encrypt_uint128(value, securityZone = 0) {\n isBigIntOrHexString(value);\n const fhePublicKey = this._getPublicKey(securityZone);\n // ValidateUintInRange(value, MAX_UINT64, 0);\n return tfheEncrypt.encrypt_uint128(value, fhePublicKey, securityZone);\n }\n encrypt_uint256(value, securityZone = 0) {\n isBigIntOrHexString(value);\n const fhePublicKey = this._getPublicKey(securityZone);\n // ValidateUintInRange(value, MAX_UINT64, 0);\n return tfheEncrypt.encrypt_uint256(value, fhePublicKey, securityZone);\n }\n encrypt_address(value, securityZone = 0) {\n isBigIntOrHexString(value);\n const fhePublicKey = this._getPublicKey(securityZone);\n // ValidateUintInRange(value, MAX_UINT64, 0);\n return tfheEncrypt.encrypt_address(value, fhePublicKey, securityZone);\n }\n encrypt(value, type, securityZone = 0) {\n isNumber(value);\n let outputSize = type;\n const fhePublicKey = this._getPublicKey(securityZone);\n // choose the most efficient ciphertext size if not selected\n if (!outputSize) {\n if (value < MAX_UINT8) {\n outputSize = EncryptionTypes.uint8;\n }\n else if (value < MAX_UINT16) {\n outputSize = EncryptionTypes.uint16;\n }\n else if (value < MAX_UINT32) {\n outputSize = EncryptionTypes.uint32;\n }\n else {\n throw new Error(`Encryption input must be smaller than ${MAX_UINT32}`);\n }\n }\n switch (outputSize) {\n case EncryptionTypes.uint8:\n ValidateUintInRange(value, MAX_UINT8, 0);\n break;\n case EncryptionTypes.uint16:\n ValidateUintInRange(value, MAX_UINT16, 0);\n break;\n case EncryptionTypes.uint32:\n ValidateUintInRange(value, MAX_UINT32, 0);\n break;\n default:\n }\n return tfheEncrypt.encrypt(value, fhePublicKey, type, securityZone);\n }\n}\n//# sourceMappingURL=index.js.map","import { TfheClientKey, TfheConfigBuilder, TfheCompactPublicKey, } from \"./fhe/tfhe\";\nexport const createTfheKeypair = () => {\n // const block_params = new ShortintParameters(\n // ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS,\n // );\n const config = TfheConfigBuilder.default()\n //..(block_params)\n .build();\n const clientKey = TfheClientKey.generate(config);\n let publicKey = TfheCompactPublicKey.new(clientKey);\n publicKey = TfheCompactPublicKey.deserialize(publicKey.serialize());\n return { clientKey, publicKey };\n};\nexport const createTfhePublicKey = () => {\n const { publicKey } = createTfheKeypair();\n return toHexString(publicKey.serialize());\n};\nexport const toHexString = (bytes) => bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, \"0\"), \"\");\n//# sourceMappingURL=keygen.js.map","/* Do NOT modify this file; see /src.ts/_admin/update-version.ts */\n/**\n * The current version of Ethers.\n */\nexport const version = \"6.13.1\";\n//# sourceMappingURL=_version.js.map","/**\n * Property helper functions.\n *\n * @_subsection api/utils:Properties [about-properties]\n */\nfunction checkType(value, type, name) {\n const types = type.split(\"|\").map(t => t.trim());\n for (let i = 0; i < types.length; i++) {\n switch (type) {\n case \"any\":\n return;\n case \"bigint\":\n case \"boolean\":\n case \"number\":\n case \"string\":\n if (typeof (value) === type) {\n return;\n }\n }\n }\n const error = new Error(`invalid value for type ${type}`);\n error.code = \"INVALID_ARGUMENT\";\n error.argument = `value.${name}`;\n error.value = value;\n throw error;\n}\n/**\n * Resolves to a new object that is a copy of %%value%%, but with all\n * values resolved.\n */\nexport async function resolveProperties(value) {\n const keys = Object.keys(value);\n const results = await Promise.all(keys.map((k) => Promise.resolve(value[k])));\n return results.reduce((accum, v, index) => {\n accum[keys[index]] = v;\n return accum;\n }, {});\n}\n/**\n * Assigns the %%values%% to %%target%% as read-only values.\n *\n * It %%types%% is specified, the values are checked.\n */\nexport function defineProperties(target, values, types) {\n for (let key in values) {\n let value = values[key];\n const type = (types ? types[key] : null);\n if (type) {\n checkType(value, type, key);\n }\n Object.defineProperty(target, key, { enumerable: true, value, writable: false });\n }\n}\n//# sourceMappingURL=properties.js.map","/**\n * All errors in ethers include properties to ensure they are both\n * human-readable (i.e. ``.message``) and machine-readable (i.e. ``.code``).\n *\n * The [[isError]] function can be used to check the error ``code`` and\n * provide a type guard for the properties present on that error interface.\n *\n * @_section: api/utils/errors:Errors [about-errors]\n */\nimport { version } from \"../_version.js\";\nimport { defineProperties } from \"./properties.js\";\nfunction stringify(value) {\n if (value == null) {\n return \"null\";\n }\n if (Array.isArray(value)) {\n return \"[ \" + (value.map(stringify)).join(\", \") + \" ]\";\n }\n if (value instanceof Uint8Array) {\n const HEX = \"0123456789abcdef\";\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n result += HEX[value[i] >> 4];\n result += HEX[value[i] & 0xf];\n }\n return result;\n }\n if (typeof (value) === \"object\" && typeof (value.toJSON) === \"function\") {\n return stringify(value.toJSON());\n }\n switch (typeof (value)) {\n case \"boolean\":\n case \"symbol\":\n return value.toString();\n case \"bigint\":\n return BigInt(value).toString();\n case \"number\":\n return (value).toString();\n case \"string\":\n return JSON.stringify(value);\n case \"object\": {\n const keys = Object.keys(value);\n keys.sort();\n return \"{ \" + keys.map((k) => `${stringify(k)}: ${stringify(value[k])}`).join(\", \") + \" }\";\n }\n }\n return `[ COULD NOT SERIALIZE ]`;\n}\n/**\n * Returns true if the %%error%% matches an error thrown by ethers\n * that matches the error %%code%%.\n *\n * In TypeScript environments, this can be used to check that %%error%%\n * matches an EthersError type, which means the expected properties will\n * be set.\n *\n * @See [ErrorCodes](api:ErrorCode)\n * @example\n * try {\n * // code....\n * } catch (e) {\n * if (isError(e, \"CALL_EXCEPTION\")) {\n * // The Type Guard has validated this object\n * console.log(e.data);\n * }\n * }\n */\nexport function isError(error, code) {\n return (error && error.code === code);\n}\n/**\n * Returns true if %%error%% is a [[CallExceptionError].\n */\nexport function isCallException(error) {\n return isError(error, \"CALL_EXCEPTION\");\n}\n/**\n * Returns a new Error configured to the format ethers emits errors, with\n * the %%message%%, [[api:ErrorCode]] %%code%% and additional properties\n * for the corresponding EthersError.\n *\n * Each error in ethers includes the version of ethers, a\n * machine-readable [[ErrorCode]], and depending on %%code%%, additional\n * required properties. The error message will also include the %%message%%,\n * ethers version, %%code%% and all additional properties, serialized.\n */\nexport function makeError(message, code, info) {\n let shortMessage = message;\n {\n const details = [];\n if (info) {\n if (\"message\" in info || \"code\" in info || \"name\" in info) {\n throw new Error(`value will overwrite populated values: ${stringify(info)}`);\n }\n for (const key in info) {\n if (key === \"shortMessage\") {\n continue;\n }\n const value = (info[key]);\n // try {\n details.push(key + \"=\" + stringify(value));\n // } catch (error: any) {\n // console.log(\"MMM\", error.message);\n // details.push(key + \"=[could not serialize object]\");\n // }\n }\n }\n details.push(`code=${code}`);\n details.push(`version=${version}`);\n if (details.length) {\n message += \" (\" + details.join(\", \") + \")\";\n }\n }\n let error;\n switch (code) {\n case \"INVALID_ARGUMENT\":\n error = new TypeError(message);\n break;\n case \"NUMERIC_FAULT\":\n case \"BUFFER_OVERRUN\":\n error = new RangeError(message);\n break;\n default:\n error = new Error(message);\n }\n defineProperties(error, { code });\n if (info) {\n Object.assign(error, info);\n }\n if (error.shortMessage == null) {\n defineProperties(error, { shortMessage });\n }\n return error;\n}\n/**\n * Throws an EthersError with %%message%%, %%code%% and additional error\n * %%info%% when %%check%% is falsish..\n *\n * @see [[api:makeError]]\n */\nexport function assert(check, message, code, info) {\n if (!check) {\n throw makeError(message, code, info);\n }\n}\n/**\n * A simple helper to simply ensuring provided arguments match expected\n * constraints, throwing if not.\n *\n * In TypeScript environments, the %%check%% has been asserted true, so\n * any further code does not need additional compile-time checks.\n */\nexport function assertArgument(check, message, name, value) {\n assert(check, message, \"INVALID_ARGUMENT\", { argument: name, value: value });\n}\nexport function assertArgumentCount(count, expectedCount, message) {\n if (message == null) {\n message = \"\";\n }\n if (message) {\n message = \": \" + message;\n }\n assert(count >= expectedCount, \"missing arguemnt\" + message, \"MISSING_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n assert(count <= expectedCount, \"too many arguments\" + message, \"UNEXPECTED_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n}\nconst _normalizeForms = [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].reduce((accum, form) => {\n try {\n // General test for normalize\n /* c8 ignore start */\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad\");\n }\n ;\n /* c8 ignore stop */\n if (form === \"NFD\") {\n const check = String.fromCharCode(0xe9).normalize(\"NFD\");\n const expected = String.fromCharCode(0x65, 0x0301);\n /* c8 ignore start */\n if (check !== expected) {\n throw new Error(\"broken\");\n }\n /* c8 ignore stop */\n }\n accum.push(form);\n }\n catch (error) { }\n return accum;\n}, []);\n/**\n * Throws if the normalization %%form%% is not supported.\n */\nexport function assertNormalize(form) {\n assert(_normalizeForms.indexOf(form) >= 0, \"platform missing String.prototype.normalize\", \"UNSUPPORTED_OPERATION\", {\n operation: \"String.prototype.normalize\", info: { form }\n });\n}\n/**\n * Many classes use file-scoped values to guard the constructor,\n * making it effectively private. This facilitates that pattern\n * by ensuring the %%givenGaurd%% matches the file-scoped %%guard%%,\n * throwing if not, indicating the %%className%% if provided.\n */\nexport function assertPrivate(givenGuard, guard, className) {\n if (className == null) {\n className = \"\";\n }\n if (givenGuard !== guard) {\n let method = className, operation = \"new\";\n if (className) {\n method += \".\";\n operation += \" \" + className;\n }\n assert(false, `private constructor; use ${method}from* methods`, \"UNSUPPORTED_OPERATION\", {\n operation\n });\n }\n}\n//# sourceMappingURL=errors.js.map","/**\n * Some data helpers.\n *\n *\n * @_subsection api/utils:Data Helpers [about-data]\n */\nimport { assert, assertArgument } from \"./errors.js\";\nfunction _getBytes(value, name, copy) {\n if (value instanceof Uint8Array) {\n if (copy) {\n return new Uint8Array(value);\n }\n return value;\n }\n if (typeof (value) === \"string\" && value.match(/^0x(?:[0-9a-f][0-9a-f])*$/i)) {\n const result = new Uint8Array((value.length - 2) / 2);\n let offset = 2;\n for (let i = 0; i < result.length; i++) {\n result[i] = parseInt(value.substring(offset, offset + 2), 16);\n offset += 2;\n }\n return result;\n }\n assertArgument(false, \"invalid BytesLike value\", name || \"value\", value);\n}\n/**\n * Get a typed Uint8Array for %%value%%. If already a Uint8Array\n * the original %%value%% is returned; if a copy is required use\n * [[getBytesCopy]].\n *\n * @see: getBytesCopy\n */\nexport function getBytes(value, name) {\n return _getBytes(value, name, false);\n}\n/**\n * Get a typed Uint8Array for %%value%%, creating a copy if necessary\n * to prevent any modifications of the returned value from being\n * reflected elsewhere.\n *\n * @see: getBytes\n */\nexport function getBytesCopy(value, name) {\n return _getBytes(value, name, true);\n}\n/**\n * Returns true if %%value%% is a valid [[HexString]].\n *\n * If %%length%% is ``true`` or a //number//, it also checks that\n * %%value%% is a valid [[DataHexString]] of %%length%% (if a //number//)\n * bytes of data (e.g. ``0x1234`` is 2 bytes).\n */\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (typeof (length) === \"number\" && value.length !== 2 + 2 * length) {\n return false;\n }\n if (length === true && (value.length % 2) !== 0) {\n return false;\n }\n return true;\n}\n/**\n * Returns true if %%value%% is a valid representation of arbitrary\n * data (i.e. a valid [[DataHexString]] or a Uint8Array).\n */\nexport function isBytesLike(value) {\n return (isHexString(value, true) || (value instanceof Uint8Array));\n}\nconst HexCharacters = \"0123456789abcdef\";\n/**\n * Returns a [[DataHexString]] representation of %%data%%.\n */\nexport function hexlify(data) {\n const bytes = getBytes(data);\n let result = \"0x\";\n for (let i = 0; i < bytes.length; i++) {\n const v = bytes[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n}\n/**\n * Returns a [[DataHexString]] by concatenating all values\n * within %%data%%.\n */\nexport function concat(datas) {\n return \"0x\" + datas.map((d) => hexlify(d).substring(2)).join(\"\");\n}\n/**\n * Returns the length of %%data%%, in bytes.\n */\nexport function dataLength(data) {\n if (isHexString(data, true)) {\n return (data.length - 2) / 2;\n }\n return getBytes(data).length;\n}\n/**\n * Returns a [[DataHexString]] by slicing %%data%% from the %%start%%\n * offset to the %%end%% offset.\n *\n * By default %%start%% is 0 and %%end%% is the length of %%data%%.\n */\nexport function dataSlice(data, start, end) {\n const bytes = getBytes(data);\n if (end != null && end > bytes.length) {\n assert(false, \"cannot slice beyond data bounds\", \"BUFFER_OVERRUN\", {\n buffer: bytes, length: bytes.length, offset: end\n });\n }\n return hexlify(bytes.slice((start == null) ? 0 : start, (end == null) ? bytes.length : end));\n}\n/**\n * Return the [[DataHexString]] result by stripping all **leading**\n ** zero bytes from %%data%%.\n */\nexport function stripZerosLeft(data) {\n let bytes = hexlify(data).substring(2);\n while (bytes.startsWith(\"00\")) {\n bytes = bytes.substring(2);\n }\n return \"0x\" + bytes;\n}\nfunction zeroPad(data, length, left) {\n const bytes = getBytes(data);\n assert(length >= bytes.length, \"padding exceeds data length\", \"BUFFER_OVERRUN\", {\n buffer: new Uint8Array(bytes),\n length: length,\n offset: length + 1\n });\n const result = new Uint8Array(length);\n result.fill(0);\n if (left) {\n result.set(bytes, length - bytes.length);\n }\n else {\n result.set(bytes, 0);\n }\n return hexlify(result);\n}\n/**\n * Return the [[DataHexString]] of %%data%% padded on the **left**\n * to %%length%% bytes.\n *\n * If %%data%% already exceeds %%length%%, a [[BufferOverrunError]] is\n * thrown.\n *\n * This pads data the same as **values** are in Solidity\n * (e.g. ``uint128``).\n */\nexport function zeroPadValue(data, length) {\n return zeroPad(data, length, true);\n}\n/**\n * Return the [[DataHexString]] of %%data%% padded on the **right**\n * to %%length%% bytes.\n *\n * If %%data%% already exceeds %%length%%, a [[BufferOverrunError]] is\n * thrown.\n *\n * This pads data the same as **bytes** are in Solidity\n * (e.g. ``bytes16``).\n */\nexport function zeroPadBytes(data, length) {\n return zeroPad(data, length, false);\n}\n//# sourceMappingURL=data.js.map","/**\n * Using strings in Ethereum (or any security-basd system) requires\n * additional care. These utilities attempt to mitigate some of the\n * safety issues as well as provide the ability to recover and analyse\n * strings.\n *\n * @_subsection api/utils:Strings and UTF-8 [about-strings]\n */\nimport { getBytes } from \"./data.js\";\nimport { assertArgument, assertNormalize } from \"./errors.js\";\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n assertArgument(false, `invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === \"BAD_PREFIX\" || reason === \"UNEXPECTED_CONTINUE\") {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) {\n break;\n }\n i++;\n }\n return i;\n }\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === \"OVERRUN\") {\n return bytes.length - offset - 1;\n }\n // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === \"OVERLONG\") {\n assertArgument(typeof (badCodepoint) === \"number\", \"invalid bad code point for replacement\", \"badCodepoint\", badCodepoint);\n output.push(badCodepoint);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n/**\n * A handful of popular, built-in UTF-8 error handling strategies.\n *\n * **``\"error\"``** - throws on ANY illegal UTF-8 sequence or\n * non-canonical (overlong) codepoints (this is the default)\n *\n * **``\"ignore\"``** - silently drops any illegal UTF-8 sequence\n * and accepts non-canonical (overlong) codepoints\n *\n * **``\"replace\"``** - replace any illegal UTF-8 sequence with the\n * UTF-8 replacement character (i.e. ``\"\\\\ufffd\"``) and accepts\n * non-canonical (overlong) codepoints\n *\n * @returns: Record<\"error\" | \"ignore\" | \"replace\", Utf8ErrorFunc>\n */\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(_bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n const bytes = getBytes(_bytes, \"bytes\");\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n }\n else {\n if ((c & 0xc0) === 0x80) {\n i += onError(\"UNEXPECTED_CONTINUE\", i - 1, bytes, result);\n }\n else {\n i += onError(\"BAD_PREFIX\", i - 1, bytes, result);\n }\n continue;\n }\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(\"OVERRUN\", i - 1, bytes, result);\n continue;\n }\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(\"MISSING_CONTINUE\", i, bytes, result);\n res = null;\n break;\n }\n ;\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(\"OUT_OF_RANGE\", i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(\"UTF16_SURROGATE\", i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(\"OVERLONG\", i - 1 - extraLength, bytes, result, res);\n continue;\n }\n result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n/**\n * Returns the UTF-8 byte representation of %%str%%.\n *\n * If %%form%% is specified, the string is normalized.\n */\nexport function toUtf8Bytes(str, form) {\n assertArgument(typeof (str) === \"string\", \"invalid string value\", \"str\", str);\n if (form != null) {\n assertNormalize(form);\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 0x80) {\n result.push(c);\n }\n else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n }\n else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n assertArgument(i < str.length && ((c2 & 0xfc00) === 0xdc00), \"invalid surrogate pair\", \"str\", str);\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n }\n else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n return new Uint8Array(result);\n}\n;\n//export \nfunction _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\n/**\n * Returns the string represented by the UTF-8 data %%bytes%%.\n *\n * When %%onError%% function is specified, it is called on UTF-8\n * errors allowing recovery using the [[Utf8ErrorFunc]] API.\n * (default: [error](Utf8ErrorFuncs))\n */\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\n/**\n * Returns the UTF-8 code-points for %%str%%.\n *\n * If %%form%% is specified, the string is normalized.\n */\nexport function toUtf8CodePoints(str, form) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","function number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nfunction bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`Expected boolean, not ${b}`);\n}\nfunction bytes(b, ...lengths) {\n if (!(b instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\nfunction hash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\nfunction exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nfunction output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nexport { number, bool, bytes, hash, exists, output };\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n//# sourceMappingURL=_assert.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated, we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\nconst u8a = (a) => a instanceof Uint8Array;\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n if (!u8a(bytes))\n throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const len = hex.length;\n if (len % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + len);\n const array = new Uint8Array(len / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!u8a(data))\n throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n const r = new Uint8Array(arrays.reduce((sum, a) => sum + a.length, 0));\n let pad = 0; // walk through each item, ensure they have proper type\n arrays.forEach((a) => {\n if (!u8a(a))\n throw new Error('Uint8Array expected');\n r.set(a, pad);\n pad += a.length;\n });\n return r;\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nconst toStr = {}.toString;\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexport function wrapConstructor(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport function wrapXOFConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { fromBig, split, toBig, shrSH, shrSL, rotrSH, rotrSL, rotrBH, rotrBL, rotr32H, rotr32L, rotlSH, rotlSL, rotlBH, rotlBL, add, add3L, add3H, add4L, add4H, add5H, add5L, };\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","import { bytes, exists, number, output } from './_assert.js';\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from './_u64.js';\nimport { Hash, u32, toBytes, wrapConstructor, wrapXOFConstructorWithOpts, } from './utils.js';\n// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.\n// It's called a sponge function.\n// Various per round constants calculations\nconst [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []];\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nconst _7n = /* @__PURE__ */ BigInt(7);\nconst _256n = /* @__PURE__ */ BigInt(256);\nconst _0x71n = /* @__PURE__ */ BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n)\n t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s, rounds = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++)\n B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\nexport class Keccak extends Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n // Can be passed from user as dkLen\n number(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n keccak() {\n keccakP(this.state32, this.rounds);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n exists(this);\n const { blockLen, state } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n exists(this, false);\n bytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= blockLen)\n this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n number(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n output(out, this);\n if (this.finished)\n throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\nconst gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\nexport const sha3_224 = /* @__PURE__ */ gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = /* @__PURE__ */ gen(0x06, 136, 256 / 8);\nexport const sha3_384 = /* @__PURE__ */ gen(0x06, 104, 384 / 8);\nexport const sha3_512 = /* @__PURE__ */ gen(0x06, 72, 512 / 8);\nexport const keccak_224 = /* @__PURE__ */ gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexport const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8);\nexport const keccak_384 = /* @__PURE__ */ gen(0x01, 104, 384 / 8);\nexport const keccak_512 = /* @__PURE__ */ gen(0x01, 72, 512 / 8);\nconst genShake = (suffix, blockLen, outputLen) => wrapXOFConstructorWithOpts((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));\nexport const shake128 = /* @__PURE__ */ genShake(0x1f, 168, 128 / 8);\nexport const shake256 = /* @__PURE__ */ genShake(0x1f, 136, 256 / 8);\n//# sourceMappingURL=sha3.js.map","/**\n * Cryptographic hashing functions\n *\n * @_subsection: api/crypto:Hash Functions [about-crypto-hashing]\n */\nimport { keccak_256 } from \"@noble/hashes/sha3\";\nimport { getBytes, hexlify } from \"../utils/index.js\";\nlet locked = false;\nconst _keccak256 = function (data) {\n return keccak_256(data);\n};\nlet __keccak256 = _keccak256;\n/**\n * Compute the cryptographic KECCAK256 hash of %%data%%.\n *\n * The %%data%% **must** be a data representation, to compute the\n * hash of UTF-8 data use the [[id]] function.\n *\n * @returns DataHexstring\n * @example:\n * keccak256(\"0x\")\n * //_result:\n *\n * keccak256(\"0x1337\")\n * //_result:\n *\n * keccak256(new Uint8Array([ 0x13, 0x37 ]))\n * //_result:\n *\n * // Strings are assumed to be DataHexString, otherwise it will\n * // throw. To hash UTF-8 data, see the note above.\n * keccak256(\"Hello World\")\n * //_error:\n */\nexport function keccak256(_data) {\n const data = getBytes(_data, \"data\");\n return hexlify(__keccak256(data));\n}\nkeccak256._ = _keccak256;\nkeccak256.lock = function () { locked = true; };\nkeccak256.register = function (func) {\n if (locked) {\n throw new TypeError(\"keccak256 is locked\");\n }\n __keccak256 = func;\n};\nObject.freeze(keccak256);\n//# sourceMappingURL=keccak.js.map","/**\n * A constant for the zero address.\n *\n * (**i.e.** ``\"0x0000000000000000000000000000000000000000\"``)\n */\nexport const ZeroAddress = \"0x0000000000000000000000000000000000000000\";\n//# sourceMappingURL=addresses.js.map","import { keccak256 } from \"../crypto/index.js\";\nimport { getBytes, assertArgument } from \"../utils/index.js\";\nconst BN_0 = BigInt(0);\nconst BN_36 = BigInt(36);\nfunction getChecksumAddress(address) {\n // if (!isHexString(address, 20)) {\n // logger.throwArgumentError(\"invalid address\", \"address\", address);\n // }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = getBytes(keccak256(expanded));\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n return \"0x\" + chars.join(\"\");\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\n// i.e. Math.floor(Math.log10(Number.MAX_SAFE_INTEGER));\nconst safeDigits = 15;\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits) {\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nconst Base36 = (function () {\n ;\n const result = {};\n for (let i = 0; i < 36; i++) {\n const key = \"0123456789abcdefghijklmnopqrstuvwxyz\"[i];\n result[key] = BigInt(i);\n }\n return result;\n})();\nfunction fromBase36(value) {\n value = value.toLowerCase();\n let result = BN_0;\n for (let i = 0; i < value.length; i++) {\n result = result * BN_36 + Base36[value[i]];\n }\n return result;\n}\n/**\n * Returns a normalized and checksumed address for %%address%%.\n * This accepts non-checksum addresses, checksum addresses and\n * [[getIcapAddress]] formats.\n *\n * The checksum in Ethereum uses the capitalization (upper-case\n * vs lower-case) of the characters within an address to encode\n * its checksum, which offers, on average, a checksum of 15-bits.\n *\n * If %%address%% contains both upper-case and lower-case, it is\n * assumed to already be a checksum address and its checksum is\n * validated, and if the address fails its expected checksum an\n * error is thrown.\n *\n * If you wish the checksum of %%address%% to be ignore, it should\n * be converted to lower-case (i.e. ``.toLowercase()``) before\n * being passed in. This should be a very rare situation though,\n * that you wish to bypass the safegaurds in place to protect\n * against an address that has been incorrectly copied from another\n * source.\n *\n * @example:\n * // Adds the checksum (via upper-casing specific letters)\n * getAddress(\"0x8ba1f109551bd432803012645ac136ddd64dba72\")\n * //_result:\n *\n * // Converts ICAP address and adds checksum\n * getAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36\");\n * //_result:\n *\n * // Throws an error if an address contains mixed case,\n * // but the checksum fails\n * getAddress(\"0x8Ba1f109551bD432803012645Ac136ddd64DBA72\")\n * //_error:\n */\nexport function getAddress(address) {\n assertArgument(typeof (address) === \"string\", \"invalid address\", \"address\", address);\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (!address.startsWith(\"0x\")) {\n address = \"0x\" + address;\n }\n const result = getChecksumAddress(address);\n // It is a checksummed address with a bad checksum\n assertArgument(!address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) || result === address, \"bad address checksum\", \"address\", address);\n return result;\n }\n // Maybe ICAP? (we only support direct mode)\n if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n // It is an ICAP address with a bad checksum\n assertArgument(address.substring(2, 4) === ibanChecksum(address), \"bad icap checksum\", \"address\", address);\n let result = fromBase36(address.substring(4)).toString(16);\n while (result.length < 40) {\n result = \"0\" + result;\n }\n return getChecksumAddress(\"0x\" + result);\n }\n assertArgument(false, \"invalid address\", \"address\", address);\n}\n/**\n * The [ICAP Address format](link-icap) format is an early checksum\n * format which attempts to be compatible with the banking\n * industry [IBAN format](link-wiki-iban) for bank accounts.\n *\n * It is no longer common or a recommended format.\n *\n * @example:\n * getIcapAddress(\"0x8ba1f109551bd432803012645ac136ddd64dba72\");\n * //_result:\n *\n * getIcapAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36\");\n * //_result:\n *\n * // Throws an error if the ICAP checksum is wrong\n * getIcapAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK37\");\n * //_error:\n */\nexport function getIcapAddress(address) {\n //let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n let base36 = BigInt(getAddress(address)).toString(36).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n//# sourceMappingURL=address.js.map","import { assert, assertArgument } from \"../utils/index.js\";\nimport { getAddress } from \"./address.js\";\n/**\n * Returns true if %%value%% is an object which implements the\n * [[Addressable]] interface.\n *\n * @example:\n * // Wallets and AbstractSigner sub-classes\n * isAddressable(Wallet.createRandom())\n * //_result:\n *\n * // Contracts\n * contract = new Contract(\"dai.tokens.ethers.eth\", [ ], provider)\n * isAddressable(contract)\n * //_result:\n */\nexport function isAddressable(value) {\n return (value && typeof (value.getAddress) === \"function\");\n}\n/**\n * Returns true if %%value%% is a valid address.\n *\n * @example:\n * // Valid address\n * isAddress(\"0x8ba1f109551bD432803012645Ac136ddd64DBA72\")\n * //_result:\n *\n * // Valid ICAP address\n * isAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36\")\n * //_result:\n *\n * // Invalid checksum\n * isAddress(\"0x8Ba1f109551bD432803012645Ac136ddd64DBa72\")\n * //_result:\n *\n * // Invalid ICAP checksum\n * isAddress(\"0x8Ba1f109551bD432803012645Ac136ddd64DBA72\")\n * //_result:\n *\n * // Not an address (an ENS name requires a provided and an\n * // asynchronous API to access)\n * isAddress(\"ricmoo.eth\")\n * //_result:\n */\nexport function isAddress(value) {\n try {\n getAddress(value);\n return true;\n }\n catch (error) { }\n return false;\n}\nasync function checkAddress(target, promise) {\n const result = await promise;\n if (result == null || result === \"0x0000000000000000000000000000000000000000\") {\n assert(typeof (target) !== \"string\", \"unconfigured name\", \"UNCONFIGURED_NAME\", { value: target });\n assertArgument(false, \"invalid AddressLike value; did not resolve to a value address\", \"target\", target);\n }\n return getAddress(result);\n}\n/**\n * Resolves to an address for the %%target%%, which may be any\n * supported address type, an [[Addressable]] or a Promise which\n * resolves to an address.\n *\n * If an ENS name is provided, but that name has not been correctly\n * configured a [[UnconfiguredNameError]] is thrown.\n *\n * @example:\n * addr = \"0x6B175474E89094C44Da98b954EedeAC495271d0F\"\n *\n * // Addresses are return synchronously\n * resolveAddress(addr, provider)\n * //_result:\n *\n * // Address promises are resolved asynchronously\n * resolveAddress(Promise.resolve(addr))\n * //_result:\n *\n * // ENS names are resolved asynchronously\n * resolveAddress(\"dai.tokens.ethers.eth\", provider)\n * //_result:\n *\n * // Addressable objects are resolved asynchronously\n * contract = new Contract(addr, [ ])\n * resolveAddress(contract, provider)\n * //_result:\n *\n * // Unconfigured ENS names reject\n * resolveAddress(\"nothing-here.ricmoo.eth\", provider)\n * //_error:\n *\n * // ENS names require a NameResolver object passed in\n * // (notice the provider was omitted)\n * resolveAddress(\"nothing-here.ricmoo.eth\")\n * //_error:\n */\nexport function resolveAddress(target, resolver) {\n if (typeof (target) === \"string\") {\n if (target.match(/^0x[0-9a-f]{40}$/i)) {\n return getAddress(target);\n }\n assert(resolver != null, \"ENS resolution requires a provider\", \"UNSUPPORTED_OPERATION\", { operation: \"resolveName\" });\n return checkAddress(target, resolver.resolveName(target));\n }\n else if (isAddressable(target)) {\n return checkAddress(target, target.getAddress());\n }\n else if (target && typeof (target.then) === \"function\") {\n return checkAddress(target, target);\n }\n assertArgument(false, \"unsupported addressable value\", \"target\", target);\n}\n//# sourceMappingURL=checks.js.map","import { keccak256 } from \"../crypto/index.js\";\nimport { toUtf8Bytes } from \"../utils/index.js\";\n/**\n * A simple hashing function which operates on UTF-8 strings to\n * compute an 32-byte identifier.\n *\n * This simply computes the [UTF-8 bytes](toUtf8Bytes) and computes\n * the [[keccak256]].\n *\n * @example:\n * id(\"hello world\")\n * //_result:\n */\nexport function id(value) {\n return keccak256(toUtf8Bytes(value));\n}\n//# sourceMappingURL=id.js.map","export var FheUType;\n(function (FheUType) {\n FheUType[FheUType[\"bool\"] = 13] = \"bool\";\n FheUType[FheUType[\"uint8\"] = 0] = \"uint8\";\n FheUType[FheUType[\"uint16\"] = 1] = \"uint16\";\n FheUType[FheUType[\"uint32\"] = 2] = \"uint32\";\n FheUType[FheUType[\"uint64\"] = 3] = \"uint64\";\n FheUType[FheUType[\"uint128\"] = 4] = \"uint128\";\n FheUType[FheUType[\"uint256\"] = 5] = \"uint256\";\n FheUType[FheUType[\"address\"] = 12] = \"address\";\n})(FheUType || (FheUType = {}));\nexport const FheUintUTypes = [\n FheUType.uint8,\n FheUType.uint16,\n FheUType.uint32,\n FheUType.uint64,\n FheUType.uint128,\n FheUType.uint256,\n];\nexport const FheAllUTypes = [\n FheUType.bool,\n FheUType.uint8,\n FheUType.uint16,\n FheUType.uint32,\n FheUType.uint64,\n FheUType.uint128,\n FheUType.uint256,\n FheUType.address,\n];\nexport const Encryptable = {\n bool: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.bool }),\n uint8: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint8 }),\n uint16: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint16 }),\n uint32: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint32 }),\n uint64: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint64 }),\n uint128: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint128 }),\n uint256: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint256 }),\n address: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.address }),\n};\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isEncryptableItem(value) {\n return (typeof value === \"object\" &&\n value !== null &&\n [\"string\", \"number\", \"bigint\", \"boolean\"].includes(typeof value.data) &&\n typeof value.securityZone === \"number\" &&\n FheAllUTypes.includes(value.utype));\n}\n// Determine if `value` is an instance of a `sealedItem` { data: string, utype: 0-5 | 12 | 13 }\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getAsSealedItem(value) {\n if (Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === \"string\" &&\n FheAllUTypes.includes(parseInt(`${value[1]}`)))\n return {\n data: value[0],\n utype: value[1],\n };\n if (typeof value === \"object\" &&\n value !== null &&\n typeof value.data === \"string\" &&\n FheAllUTypes.includes(value.utype))\n return value;\n return undefined;\n}\nexport function isSealedBool(value) {\n return parseInt(`${value.utype}`) === FheUType.bool;\n}\nexport function isSealedUint(value) {\n return FheUintUTypes.includes(parseInt(`${value.utype}`));\n}\nexport function isSealedAddress(value) {\n return parseInt(`${value.utype}`) === FheUType.address;\n}\nexport const ResultErr = (error) => ({\n success: false,\n data: null,\n error,\n});\nexport const ResultOk = (data) => ({\n success: true,\n data,\n error: null,\n});\n//# sourceMappingURL=types.js.map","import { ZeroAddress } from \"ethers\";\nconst PermitV2SignatureAllFields = [\n { name: \"issuer\", type: \"address\" },\n { name: \"expiration\", type: \"uint64\" },\n { name: \"contracts\", type: \"address[]\" },\n { name: \"projects\", type: \"string[]\" },\n { name: \"recipient\", type: \"address\" },\n { name: \"validatorId\", type: \"uint256\" },\n { name: \"validatorContract\", type: \"address\" },\n { name: \"sealingKey\", type: \"bytes32\" },\n { name: \"issuerSignature\", type: \"bytes\" },\n];\nexport const SignatureTypes = {\n PermissionedV2IssuerSelf: [\n \"issuer\",\n \"expiration\",\n \"contracts\",\n \"projects\",\n \"recipient\",\n \"validatorId\",\n \"validatorContract\",\n \"sealingKey\",\n ],\n PermissionedV2IssuerShared: [\n \"issuer\",\n \"expiration\",\n \"contracts\",\n \"projects\",\n \"recipient\",\n \"validatorId\",\n \"validatorContract\",\n ],\n PermissionedV2Recipient: [\n \"sealingKey\",\n \"issuerSignature\",\n ],\n};\nexport const getSignatureTypesAndMessage = (primaryType, fields, values) => {\n const types = {\n [primaryType]: PermitV2SignatureAllFields.filter((fieldType) => fields.includes(fieldType.name)),\n };\n const message = {};\n fields.forEach((field) => {\n if (field in values) {\n message[field] = values[field];\n }\n });\n return { types, primaryType, message: message };\n};\nexport const getSignatureDomain = (chainId) => ({\n name: \"Fhenix Permission v2.0.0\",\n version: \"v2.0.0\",\n chainId: parseInt(chainId),\n verifyingContract: ZeroAddress,\n});\n//# sourceMappingURL=permit.generate.js.map","var util;\n(function (util) {\n util.assertEqual = (val) => val;\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array\n .map((val) => (typeof val === \"string\" ? `'${val}'` : val))\n .join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nvar objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nconst ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nconst getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then &&\n typeof data.then === \"function\" &&\n data.catch &&\n typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n\nconst ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nconst quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nclass ZodError extends Error {\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n get errors() {\n return this.issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `smaller than or equal to`\n : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\n\nlet overrideErrorMap = errorMap;\nfunction setErrorMap(map) {\n overrideErrorMap = map;\n}\nfunction getErrorMap() {\n return overrideErrorMap;\n}\n\nconst makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nconst EMPTY_PATH = [];\nfunction addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n overrideMap,\n overrideMap === errorMap ? undefined : errorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nclass ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" &&\n (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nconst INVALID = Object.freeze({\n status: \"aborted\",\n});\nconst DIRTY = (value) => ({ status: \"dirty\", value });\nconst OK = (value) => ({ status: \"valid\", value });\nconst isAborted = (x) => x.status === \"aborted\";\nconst isDirty = (x) => x.status === \"dirty\";\nconst isValid = (x) => x.status === \"valid\";\nconst isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nfunction __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nvar errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message === null || message === void 0 ? void 0 : message.message;\n})(errorUtil || (errorUtil = {}));\n\nvar _ZodEnum_cache, _ZodNativeEnum_cache;\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (this._key instanceof Array) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n var _a, _b;\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message !== null && message !== void 0 ? message : ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: (_a = message !== null && message !== void 0 ? message : required_error) !== null && _a !== void 0 ? _a : ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: (_b = message !== null && message !== void 0 ? message : invalid_type_error) !== null && _b !== void 0 ? _b : ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nclass ZodType {\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n }\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n var _a;\n const ctx = {\n common: {\n issues: [],\n async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false,\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n async: true,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult)\n ? maybeAsyncResult\n : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\"\n ? refinementData(val, ctx)\n : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this, this._def);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv6Regex = /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n // let regex = `\\\\d{2}:\\\\d{2}:\\\\d{2}`;\n let regex = `([01]\\\\d|2[0-3]):[0-5]\\\\d:[0-5]\\\\d`;\n if (args.precision) {\n regex = `${regex}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n regex = `${regex}(\\\\.\\\\d+)?`;\n }\n return regex;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nfunction datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nclass ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch (_a) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n var _a, _b;\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false,\n local: (_b = options === null || options === void 0 ? void 0 : options.local) !== null && _b !== void 0 ? _b : false,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options === null || options === void 0 ? void 0 : options.position,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * @deprecated Use z.string().min(1) instead.\n * @see {@link ZodString.min}\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n var _a;\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / Math.pow(10, decCount);\n}\nclass ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" ||\n (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null, min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" ||\n ch.kind === \"int\" ||\n ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = BigInt(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n var _a;\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\nclass ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nclass ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nclass ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nclass ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nclass ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nclass ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nclass ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nclass ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nclass ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nclass ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n return (this._cached = { shape, keys });\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever &&\n this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") ;\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n var _a, _b, _c, _d;\n const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: (_d = errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // (def: Def) =>\n // (\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge(\n // merging: Incoming\n // ): //ZodObject = (merging) => {\n // ZodObject<\n // extendShape>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n util.objectKeys(mask).forEach((key) => {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nclass ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nclass ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util\n .objectKeys(a)\n .filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date &&\n bType === ZodParsedType.date &&\n +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nclass ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\nclass ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nclass ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nclass ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nclass ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nclass ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args\n .parseAsync(args, params)\n .catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args\n ? args\n : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nclass ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nclass ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nclass ZodEnum extends ZodType {\n constructor() {\n super(...arguments);\n _ZodEnum_cache.set(this, void 0);\n }\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodEnum_cache, new Set(this._def.values), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\").has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\n_ZodEnum_cache = new WeakMap();\nZodEnum.create = createZodEnum;\nclass ZodNativeEnum extends ZodType {\n constructor() {\n super(...arguments);\n _ZodNativeEnum_cache.set(this, void 0);\n }\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string &&\n ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodNativeEnum_cache, new Set(util.getValidEnumValues(this._def.values)), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\").has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\n_ZodNativeEnum_cache = new WeakMap();\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nclass ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise &&\n ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise\n ? ctx.data\n : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nclass ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return base;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((base) => {\n if (!isValid(base))\n return base;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ status: status.value, value: result }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nclass ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nclass ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nclass ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\"\n ? params.default\n : () => params.default,\n ...processCreateParams(params),\n });\n};\nclass ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nclass ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nconst BRAND = Symbol(\"zod_brand\");\nclass ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nclass ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nclass ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result)\n ? result.then((data) => freeze(data))\n : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\nfunction custom(check, params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n var _a, _b;\n if (!check(data)) {\n const p = typeof params === \"function\"\n ? params(data)\n : typeof params === \"string\"\n ? { message: params }\n : params;\n const _fatal = (_b = (_a = p.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n ctx.addIssue({ code: \"custom\", ...p2, fatal: _fatal });\n }\n });\n return ZodAny.create();\n}\nconst late = {\n object: ZodObject.lazycreate,\n};\nvar ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\nconst instanceOfType = (\n// const instanceOfType = any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nconst coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nconst NEVER = INVALID;\n\nvar z = /*#__PURE__*/Object.freeze({\n __proto__: null,\n defaultErrorMap: errorMap,\n setErrorMap: setErrorMap,\n getErrorMap: getErrorMap,\n makeIssue: makeIssue,\n EMPTY_PATH: EMPTY_PATH,\n addIssueToContext: addIssueToContext,\n ParseStatus: ParseStatus,\n INVALID: INVALID,\n DIRTY: DIRTY,\n OK: OK,\n isAborted: isAborted,\n isDirty: isDirty,\n isValid: isValid,\n isAsync: isAsync,\n get util () { return util; },\n get objectUtil () { return objectUtil; },\n ZodParsedType: ZodParsedType,\n getParsedType: getParsedType,\n ZodType: ZodType,\n datetimeRegex: datetimeRegex,\n ZodString: ZodString,\n ZodNumber: ZodNumber,\n ZodBigInt: ZodBigInt,\n ZodBoolean: ZodBoolean,\n ZodDate: ZodDate,\n ZodSymbol: ZodSymbol,\n ZodUndefined: ZodUndefined,\n ZodNull: ZodNull,\n ZodAny: ZodAny,\n ZodUnknown: ZodUnknown,\n ZodNever: ZodNever,\n ZodVoid: ZodVoid,\n ZodArray: ZodArray,\n ZodObject: ZodObject,\n ZodUnion: ZodUnion,\n ZodDiscriminatedUnion: ZodDiscriminatedUnion,\n ZodIntersection: ZodIntersection,\n ZodTuple: ZodTuple,\n ZodRecord: ZodRecord,\n ZodMap: ZodMap,\n ZodSet: ZodSet,\n ZodFunction: ZodFunction,\n ZodLazy: ZodLazy,\n ZodLiteral: ZodLiteral,\n ZodEnum: ZodEnum,\n ZodNativeEnum: ZodNativeEnum,\n ZodPromise: ZodPromise,\n ZodEffects: ZodEffects,\n ZodTransformer: ZodEffects,\n ZodOptional: ZodOptional,\n ZodNullable: ZodNullable,\n ZodDefault: ZodDefault,\n ZodCatch: ZodCatch,\n ZodNaN: ZodNaN,\n BRAND: BRAND,\n ZodBranded: ZodBranded,\n ZodPipeline: ZodPipeline,\n ZodReadonly: ZodReadonly,\n custom: custom,\n Schema: ZodType,\n ZodSchema: ZodType,\n late: late,\n get ZodFirstPartyTypeKind () { return ZodFirstPartyTypeKind; },\n coerce: coerce,\n any: anyType,\n array: arrayType,\n bigint: bigIntType,\n boolean: booleanType,\n date: dateType,\n discriminatedUnion: discriminatedUnionType,\n effect: effectsType,\n 'enum': enumType,\n 'function': functionType,\n 'instanceof': instanceOfType,\n intersection: intersectionType,\n lazy: lazyType,\n literal: literalType,\n map: mapType,\n nan: nanType,\n nativeEnum: nativeEnumType,\n never: neverType,\n 'null': nullType,\n nullable: nullableType,\n number: numberType,\n object: objectType,\n oboolean: oboolean,\n onumber: onumber,\n optional: optionalType,\n ostring: ostring,\n pipeline: pipelineType,\n preprocess: preprocessType,\n promise: promiseType,\n record: recordType,\n set: setType,\n strictObject: strictObjectType,\n string: stringType,\n symbol: symbolType,\n transformer: effectsType,\n tuple: tupleType,\n 'undefined': undefinedType,\n union: unionType,\n unknown: unknownType,\n 'void': voidType,\n NEVER: NEVER,\n ZodIssueCode: ZodIssueCode,\n quotelessJson: quotelessJson,\n ZodError: ZodError\n});\n\nexport { BRAND, DIRTY, EMPTY_PATH, INVALID, NEVER, OK, ParseStatus, ZodType as Schema, ZodAny, ZodArray, ZodBigInt, ZodBoolean, ZodBranded, ZodCatch, ZodDate, ZodDefault, ZodDiscriminatedUnion, ZodEffects, ZodEnum, ZodError, ZodFirstPartyTypeKind, ZodFunction, ZodIntersection, ZodIssueCode, ZodLazy, ZodLiteral, ZodMap, ZodNaN, ZodNativeEnum, ZodNever, ZodNull, ZodNullable, ZodNumber, ZodObject, ZodOptional, ZodParsedType, ZodPipeline, ZodPromise, ZodReadonly, ZodRecord, ZodType as ZodSchema, ZodSet, ZodString, ZodSymbol, ZodEffects as ZodTransformer, ZodTuple, ZodType, ZodUndefined, ZodUnion, ZodUnknown, ZodVoid, addIssueToContext, anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, coerce, custom, dateType as date, datetimeRegex, z as default, errorMap as defaultErrorMap, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, getErrorMap, getParsedType, instanceOfType as instanceof, intersectionType as intersection, isAborted, isAsync, isDirty, isValid, late, lazyType as lazy, literalType as literal, makeIssue, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, objectUtil, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, quotelessJson, recordType as record, setType as set, setErrorMap, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, util, voidType as void, z };\n","import { isAddress, ZeroAddress } from \"ethers\";\nimport { z } from \"zod\";\nconst SerializedSealingPair = z.object({\n privateKey: z.string(),\n publicKey: z.string(),\n});\nconst zPermitV2WithDefaults = z.object({\n name: z.string().optional().default(\"Unnamed Permit\"),\n type: z.enum([\"self\", \"sharing\", \"recipient\"]),\n issuer: z\n .string()\n .refine((val) => isAddress(val), {\n message: \"PermitV2 issuer :: invalid address\",\n })\n .refine((val) => val !== ZeroAddress, {\n message: \"PermitV2 issuer :: must not be zeroAddress\",\n }),\n expiration: z.number().optional().default(1000000000000),\n contracts: z.array(z.string()).optional().default([]),\n projects: z.array(z.string()).optional().default([]),\n recipient: z\n .string()\n .optional()\n .default(ZeroAddress)\n .refine((val) => isAddress(val), {\n message: \"PermitV2 recipient :: invalid address\",\n }),\n validatorId: z.number().optional().default(0),\n validatorContract: z\n .string()\n .optional()\n .default(ZeroAddress)\n .refine((val) => isAddress(val), {\n message: \"PermitV2 validatorContract :: invalid address\",\n }),\n sealingPair: SerializedSealingPair.optional(),\n issuerSignature: z.string().optional().default(\"0x\"),\n recipientSignature: z.string().optional().default(\"0x\"),\n});\n/**\n * Ensures that this Permit will provide access to a non-zero amount of contracts\n * by ensuring that `contracts` and `projects` aren't both empty arrays.\n */\nconst PermitV2RefineAccess = [\n (data) => {\n return data.contracts.length + data.projects.length > 0;\n },\n {\n message: \"PermitV2 access :: at least one contract or project must be accessible.\",\n path: [\"contracts\", \"projects\"],\n },\n];\n/**\n * Permits allow a hook into an optional external validator contract,\n * this check ensures that IF an external validator is applied, that both `validatorId` and `validatorContract` are populated,\n * ELSE ensures that both `validatorId` and `validatorContract` are empty\n */\nconst PermitV2RefineValidator = [\n (data) => (data.validatorId !== 0 && data.validatorContract !== ZeroAddress) ||\n (data.validatorId === 0 && data.validatorContract === ZeroAddress),\n {\n message: \"PermitV2 external validator :: validatorId and validatorContract must either both be set or both be unset.\",\n path: [\"validatorId\", \"validatorContract\"],\n },\n];\n/**\n * SuperRefinement that checks a PermitV2s signatures\n * checkRecipient - whether to validate that `recipient` is empty for permit with type , and populated for \n * checkSealingPair - only the fully formed permit requires the sealing pair, it can be optional for permitV2 create params\n * checkExistingSignatures - not optional - checks that the permit's type matches the populated signature fields\n * checkSigned - checks that the active user's signature has been signed and added. -> issuerSignature, -> recipientSignature\n */\nconst PermitV2SignaturesSuperRefinement = (options) => {\n return (data, ctx) => {\n // Check Recipient\n // If type , `PermitV2.recipient` must be zeroAddress\n // If type , `PermitV2.recipient` must not be zeroAddress\n if (options.checkRecipient) {\n if (data.type === \"self\" && data.recipient !== ZeroAddress)\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"recipient\"],\n message: `PermitV2 (type '${data.type}') recipient :: must be empty (zeroAddress)`,\n });\n if ((data.type === \"recipient\" || data.type === \"sharing\") &&\n data.recipient === ZeroAddress) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"recipient\"],\n message: `PermitV2 (type '${data.type}') recipient :: must not be empty`,\n });\n }\n }\n // Check Sealing Pair\n if (options.checkSealingPair && data.sealingPair == null)\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"sealingPair\"],\n message: `PermitV2 sealingPair :: must not be empty`,\n });\n // Check existing signatures match type (not checking this user's signature, but the other signature)\n // If type , `PermitV2.recipientSignature` must be empty\n // If type , `PermitV2.issuerSignature` must not be empty\n if ((data.type === \"self\" || data.type === \"sharing\") &&\n data.recipientSignature !== \"0x\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"recipientSignature\"],\n message: `PermitV2 (type '${data.type}') recipientSignature :: should not be populated by the issuer`,\n });\n }\n if (data.type === \"recipient\" && data.issuerSignature === \"0x\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"issuerSignature\"],\n message: `PermitV2 (type 'recipient') issuerSignature :: \\`issuer\\` must sign the PermitV2 before sharing it with \\`recipient\\``,\n });\n }\n // Check Signed\n // If type , `PermitV2.issuerSignature` must not be empty\n // If type , `PermitV2.recipientSignature` must not be empty\n if (options.checkSigned) {\n if ((data.type === \"self\" || data.type === \"sharing\") &&\n data.issuerSignature === \"0x\")\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"issuerSignature\"],\n message: `PermitV2 (type '${data.type}') issuerSignature :: must be populated with issuer's signature. Use \\`PermitV2.sign\\` or create permit with \\`PermitV2.createAndSign\\``,\n });\n if (data.type === \"recipient\" && data.recipientSignature === \"0x\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"recipientSignature\"],\n message: `PermitV2 (type 'recipient') recipientSignature :: must be populated with recipient's signature. Use \\`PermitV2.sign\\` or create permit with \\`PermitV2.createAndSign\\``,\n });\n }\n }\n return;\n };\n};\n/**\n * Validator for the params used when creating a fresh PermitV2\n * Has defaults added that will be populated in the options object\n * Signatures superRefinement checks only the recipient, sealingPair and signatures are not necessary in the Permit params\n */\nexport const PermitV2ParamsValidator = zPermitV2WithDefaults\n .refine(...PermitV2RefineAccess)\n .refine(...PermitV2RefineValidator)\n .superRefine(PermitV2SignaturesSuperRefinement({\n checkRecipient: true,\n checkSealingPair: false, // SealingPair not required when creating a fresh permit\n checkSigned: false, // Signature not required when creating a fresh permit\n}));\n/**\n * Validator for a PermitV2 that is expected to be fully formed\n * Does not allow optional values or offer defaults\n * Validates that the correct signatures are populated\n * Validates sealingPair is populated\n */\nexport const FullyFormedPermitV2Validator = zPermitV2WithDefaults\n .required()\n .refine(...PermitV2RefineAccess)\n .refine(...PermitV2RefineValidator)\n .superRefine(PermitV2SignaturesSuperRefinement({\n checkRecipient: true,\n checkSealingPair: true,\n checkSigned: true,\n}));\n//# sourceMappingURL=permit.z.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { getAddress, id, keccak256, ZeroAddress } from \"ethers\";\nimport { isSealedAddress, isSealedBool, getAsSealedItem, isSealedUint, } from \"./types\";\nimport { getSignatureDomain, getSignatureTypesAndMessage, SignatureTypes, } from \"./permit.generate\";\nimport { FullyFormedPermitV2Validator, PermitV2ParamsValidator, } from \"./permit.z\";\nimport { GenerateSealingKey, SealingKey } from \"../sealing\";\nimport { chainIsHardhat, hardhatMockUnseal } from \"../utils\";\nexport class PermitV2 {\n constructor(options, metadata) {\n /**\n * Chain that this permit was signed on. In part used for mock encrypt/unseal on hardhat network.\n * Should not be set manually, included in metadata as part of serialization flows.\n */\n this._signedChainId = undefined;\n this.updateName = (name) => {\n this.name = name;\n };\n /**\n * Utility to extract the public data from a permit.\n * Used in `serialize`, `getPermission`, `getHash` etc\n */\n this.getInterface = () => {\n return {\n name: this.name,\n type: this.type,\n issuer: this.issuer,\n expiration: this.expiration,\n contracts: this.contracts,\n projects: this.projects,\n recipient: this.recipient,\n validatorId: this.validatorId,\n validatorContract: this.validatorContract,\n sealingPair: this.sealingPair,\n issuerSignature: this.issuerSignature,\n recipientSignature: this.recipientSignature,\n };\n };\n /**\n * Export the necessary permit data to share a permit with another user\n */\n this.export = () => {\n const cleanedPermit = {\n name: this.name,\n type: this.type,\n issuer: this.issuer,\n expiration: this.expiration,\n };\n if (this.contracts.length > 0)\n cleanedPermit.contracts = this.contracts;\n if (this.projects.length > 0)\n cleanedPermit.projects = this.projects;\n if (this.recipient !== ZeroAddress)\n cleanedPermit.recipient = this.recipient;\n if (this.validatorId !== 0)\n cleanedPermit.validatorId = this.validatorId;\n if (this.validatorContract !== ZeroAddress)\n cleanedPermit.validatorContract = this.validatorContract;\n if (this.type === \"sharing\" && this.issuerSignature !== \"0x\")\n cleanedPermit.issuerSignature = this.issuerSignature;\n return JSON.stringify(cleanedPermit, undefined, 2);\n };\n /**\n * Returns a serializable permit instance, removing classes and methods.\n * NOTE: Does not return a stringified permit\n */\n this.serialize = () => {\n const { sealingPair, ...permit } = this.getInterface();\n return {\n ...permit,\n _signedChainId: this._signedChainId,\n sealingPair: {\n publicKey: sealingPair.publicKey,\n privateKey: sealingPair.privateKey,\n },\n };\n };\n /**\n * Extracts a contract input ready permission from this permit.\n * The permission inherits most fields from the permit, however\n * `permit.sealingPair` is removed and replaced by `permit.sealingPair.publicKey` in the `sealingKey` field.\n *\n * @permit {boolean} skipValidation - Flag to prevent running validation on the permit before returning the extracted permission. Used internally.\n * @returns {PermissionV2}\n */\n this.getPermission = (skipValidation = false) => {\n const permitData = this.getInterface();\n if (!skipValidation) {\n const validationResult = FullyFormedPermitV2Validator.safeParse(permitData);\n if (!validationResult.success) {\n throw new Error(`PermitV2 :: getPermission :: permit validation failed - ${JSON.stringify(validationResult.error, null, 2)} ${JSON.stringify(permitData, null, 2)}`);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { name, type, sealingPair, ...permit } = permitData;\n return {\n ...permit,\n sealingKey: `0x${sealingPair.publicKey}`,\n };\n };\n /**\n * Returns a stable hash depending on the core data of the permit.\n * Is used in the store as each permit's key in the permit map.\n */\n this.getHash = () => keccak256(id(JSON.stringify({\n type: this.type,\n issuer: this.issuer,\n expiration: this.expiration,\n contracts: this.contracts,\n projects: this.projects,\n recipient: this.recipient,\n validatorId: this.validatorId,\n validatorContract: this.validatorContract,\n })));\n /**\n * Returns the domain, types, primaryType, and message fields required to request the user's signature\n * Primary type is returned to allow viem clients to more easily connect\n */\n this.getSignatureParams = (chainId, primaryType) => {\n return {\n domain: getSignatureDomain(chainId),\n ...getSignatureTypesAndMessage(primaryType, SignatureTypes[primaryType], this.getPermission(true)),\n };\n };\n /**\n * Determines the required signature type.\n * Creates the EIP712 types and message.\n * Prompts the user for their signature.\n * Inserts the signature into `issuerSignature` or `recipientSignature` as necessary.\n *\n * @param {string} chainId - Used as part of the EIP712 domain, throws if undefined\n * @param {AbstractSigner} signer - Signer responsible for signing the EIP712 permit signature, throws if undefined\n */\n this.sign = async (chainId, signer) => {\n if (chainId == null)\n throw new Error(\"PermitV2 :: sign - chainId undefined, cannot sign a permit with an unknown chainId\");\n if (signer == null)\n throw new Error(\"PermitV2 :: sign - signer undefined, you must pass in a `signer` for the connected user to create a permitV2 signature\");\n let primaryType = \"PermissionedV2IssuerSelf\";\n if (this.type === \"self\")\n primaryType = \"PermissionedV2IssuerSelf\";\n if (this.type === \"sharing\")\n primaryType = \"PermissionedV2IssuerShared\";\n if (this.type === \"recipient\")\n primaryType = \"PermissionedV2Recipient\";\n const { domain, types, message } = this.getSignatureParams(chainId, primaryType);\n const signature = await signer.signTypedData(domain, types, message);\n if (this.type === \"self\" || this.type === \"sharing\") {\n this.issuerSignature = signature;\n }\n if (this.type === \"recipient\") {\n this.recipientSignature = signature;\n }\n this._signedChainId = chainId;\n };\n /**\n * Use the privateKey of `permit.sealingPair` to unseal `ciphertext` returned from the Fhenix chain.\n * Useful when not using `SealedItem` structs and need to unseal an individual ciphertext.\n */\n this.unsealCiphertext = (ciphertext) => {\n // Early exit with mock unseal if interacting with hardhat network\n if (chainIsHardhat(this._signedChainId))\n return hardhatMockUnseal(ciphertext);\n return this.sealingPair.unseal(ciphertext);\n };\n /**\n * Check if permit satisfies the requirements param.\n * Permit must satisfy either the contracts list or the projects list\n *\n * @param {{contracts?: string[], projects?: string[]}} requirements - Lists of contract and project requirements.\n * @returns {satisfies: boolean, unsatisfiedContracts, unsatisfiedProjects} - satisfied if either req list is fulfilled.\n */\n this.getSatisfies = (requirements) => {\n let contractsSatisfied = true;\n const unsatisfiedContracts = [];\n for (const contract in requirements.contracts) {\n if (!this.contracts.includes(contract)) {\n contractsSatisfied = false;\n unsatisfiedContracts.push(contract);\n }\n }\n let projectsSatisfied = true;\n const unsatisfiedProjects = [];\n for (const project in requirements.projects) {\n if (!this.projects.includes(project)) {\n projectsSatisfied = false;\n unsatisfiedProjects.push(project);\n }\n }\n if (contractsSatisfied || projectsSatisfied)\n return {\n satisfies: true,\n unsatisfiedContracts: null,\n unsatisfiedProjects: null,\n };\n return {\n satisfies: false,\n unsatisfiedContracts,\n unsatisfiedProjects,\n };\n };\n /**\n * Returns whether the active party has created their signature.\n * If `permit.type` is self or sharing, the active party is `issuer`.\n * If `permit.type` is recipient, the active party is `recipient`\n *\n * @returns {boolean}\n */\n this.isSigned = () => {\n if (this.type === \"self\" || this.type === \"sharing\") {\n return this.issuerSignature !== \"0x\";\n }\n if (this.type === \"recipient\") {\n return this.recipientSignature != \"0x\";\n }\n return false;\n };\n /**\n * Returns whether this permit has expired due to `permit.expiration`\n *\n * @returns {boolean}\n */\n this.isExpired = () => {\n return this.expiration < Math.floor(Date.now() / 1000);\n };\n /**\n * Overall validity checker of a permit, checks the signatures and expirations\n *\n * @returns {{valid: boolean, error: string}} - If `valid`, `error` is null, else `error` indicates which validity check failed\n */\n this.isValid = () => {\n if (this.isExpired())\n return { valid: false, error: \"expired\" };\n if (!this.isSigned())\n return { valid: false, error: \"not-signed\" };\n return { valid: true, error: null };\n };\n this.name = options.name;\n this.type = options.type;\n this.issuer = options.issuer;\n this.expiration = options.expiration;\n this.contracts = options.contracts;\n this.projects = options.projects;\n this.recipient = options.recipient;\n this.validatorId = options.validatorId;\n this.validatorContract = options.validatorContract;\n this.sealingPair = options.sealingPair;\n this.issuerSignature = options.issuerSignature;\n this.recipientSignature = options.recipientSignature;\n this._signedChainId = metadata?._signedChainId;\n }\n static async create(options) {\n const { success, data: parsed, error, } = PermitV2ParamsValidator.safeParse(options);\n if (!success) {\n throw new Error(\"PermitV2 :: create :: Parsing PermitV2Options failed \" +\n JSON.stringify(error, null, 2));\n }\n const sealingPair = parsed.sealingPair != null\n ? new SealingKey(parsed.sealingPair.privateKey, parsed.sealingPair.publicKey)\n : await GenerateSealingKey();\n return new PermitV2({\n ...parsed,\n sealingPair,\n });\n }\n static async createAndSign(options, chainId, signer) {\n const permit = await PermitV2.create(options);\n await permit.sign(chainId, signer);\n return permit;\n }\n unseal(item) {\n // SealedItem\n const sealedItem = getAsSealedItem(item);\n if (sealedItem != null) {\n const bn = chainIsHardhat(this._signedChainId)\n ? hardhatMockUnseal(sealedItem.data)\n : this.sealingPair.unseal(sealedItem.data);\n if (isSealedBool(sealedItem)) {\n // Return a boolean for SealedBool\n return Boolean(bn).valueOf();\n }\n if (isSealedAddress(sealedItem)) {\n // Return a string for SealedAddress\n return getAddress(`0x${bn.toString(16).slice(-40)}`);\n }\n if (isSealedUint(sealedItem)) {\n // Return a bigint for SealedUint\n return bn;\n }\n }\n // Object | Array\n if (typeof item === \"object\" && item !== null) {\n if (Array.isArray(item)) {\n // Array - recurse\n return item.map((nestedItem) => this.unseal(nestedItem));\n }\n else {\n // Object - recurse\n const result = {};\n for (const key in item) {\n result[key] = this.unseal(item[key]);\n }\n return result;\n }\n }\n // Primitive\n return item;\n }\n}\n/**\n * Creates a `PermitV2` from a serialized permit, hydrating methods and classes\n * NOTE: Does not return a stringified permit\n *\n * @param {SerializedPermitV2} - Permit structure excluding classes\n * @returns {PermitV2} - New instance of PermitV2 class\n */\nPermitV2.deserialize = ({ _signedChainId, sealingPair, ...permit }) => {\n return new PermitV2({\n ...permit,\n sealingPair: new SealingKey(sealingPair.privateKey, sealingPair.publicKey),\n }, {\n _signedChainId,\n });\n};\nPermitV2.validate = (permit) => {\n return FullyFormedPermitV2Validator.safeParse(permit);\n};\n//# sourceMappingURL=permit.js.map","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\n\nexport { createStore };\n","const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...a) => api.dispatch(...a), ...initial };\n};\nconst redux = reduxImpl;\n\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n const api = trackedConnections.get(name);\n if (!api) return {};\n return Object.fromEntries(\n Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n if (store === void 0) {\n return {\n type: \"untracked\",\n connection: extensionConnector.connect(options)\n };\n }\n const existingConnection = trackedConnections.get(options.name);\n if (existingConnection) {\n return { type: \"tracked\", store, ...existingConnection };\n }\n const newConnection = {\n connection: extensionConnector.connect(options),\n stores: {}\n };\n trackedConnections.set(options.name, newConnection);\n return { type: \"tracked\", store, ...newConnection };\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (e) {\n }\n if (!extensionConnector) {\n return fn(set, get, api);\n }\n const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n let isRecording = true;\n api.setState = (state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording) return r;\n const action = nameOrAction === void 0 ? { type: anonymousActionType || \"anonymous\" } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n if (store === void 0) {\n connection == null ? void 0 : connection.send(action, get());\n return r;\n }\n connection == null ? void 0 : connection.send(\n {\n ...action,\n type: `${store}/${action.type}`\n },\n {\n ...getTrackedConnectionState(options.name),\n [store]: api.getState()\n }\n );\n return r;\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n if (connectionInformation.type === \"untracked\") {\n connection == null ? void 0 : connection.init(initialState);\n } else {\n connectionInformation.stores[connectionInformation.store] = api;\n connection == null ? void 0 : connection.init(\n Object.fromEntries(\n Object.entries(connectionInformation.stores).map(([key, store2]) => [\n key,\n key === connectionInformation.store ? initialState : store2.getState()\n ])\n )\n );\n }\n if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...a) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && a[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...a);\n };\n }\n connection.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n if (store === void 0) {\n setStateFromDevtools(action.state);\n return;\n }\n if (Object.keys(action.state).length !== 1) {\n console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format.\n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n }\n const stateFromDevtools = action.state[store];\n if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n setStateFromDevtools(stateFromDevtools);\n }\n return;\n }\n if (!api.dispatchFromDevtools) return;\n if (typeof api.dispatch !== \"function\") return;\n api.dispatch(action);\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n if (store === void 0) {\n return connection == null ? void 0 : connection.init(api.getState());\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"COMMIT\":\n if (store === void 0) {\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n setStateFromDevtools(state[store]);\n connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n setStateFromDevtools(state[store]);\n }\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState) return;\n if (store === void 0) {\n setStateFromDevtools(lastComputedState);\n } else {\n setStateFromDevtools(lastComputedState[store]);\n }\n connection == null ? void 0 : connection.send(\n null,\n // FIXME no-any\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, f) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0) f(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = (selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n };\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nconst combine = (initialState, create) => (...a) => Object.assign({}, initialState, create(...a));\n\nfunction createJSONStorage(getStorage, options) {\n let storage;\n try {\n storage = getStorage();\n } catch (e) {\n return;\n }\n const persistStorage = {\n getItem: (name) => {\n var _a;\n const parse = (str2) => {\n if (str2 === null) {\n return null;\n }\n return JSON.parse(str2, options == null ? void 0 : options.reviver);\n };\n const str = (_a = storage.getItem(name)) != null ? _a : null;\n if (str instanceof Promise) {\n return str.then(parse);\n }\n return parse(str);\n },\n setItem: (name, newValue) => storage.setItem(\n name,\n JSON.stringify(newValue, options == null ? void 0 : options.replacer)\n ),\n removeItem: (name) => storage.removeItem(name)\n };\n return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst persistImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n storage: createJSONStorage(() => localStorage),\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage = options.storage;\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const setItem = () => {\n const state = options.partialize({ ...get() });\n return storage.setItem(options.name, {\n state,\n version: options.version\n });\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n void setItem();\n },\n get,\n api\n );\n api.getInitialState = () => configResult;\n let stateFromStorage;\n const hydrate = () => {\n var _a, _b;\n if (!storage) return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => {\n var _a2;\n return cb((_a2 = get()) != null ? _a2 : configResult);\n });\n const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return [\n true,\n options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n )\n ];\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return [false, deserializedStorageValue.state];\n }\n }\n return [false, void 0];\n }).then((migrationResult) => {\n var _a2;\n const [migrated, migratedState] = migrationResult;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n if (migrated) {\n return setItem();\n }\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n stateFromStorage = get();\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.storage) {\n storage = newOptions.storage;\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n if (!options.skipHydration) {\n hydrate();\n }\n return stateFromStorage || configResult;\n};\nconst persist = persistImpl;\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector };\n","// src/utils/env.ts\nvar NOTHING = Symbol.for(\"immer-nothing\");\nvar DRAFTABLE = Symbol.for(\"immer-draftable\");\nvar DRAFT_STATE = Symbol.for(\"immer-state\");\n\n// src/utils/errors.ts\nvar errors = process.env.NODE_ENV !== \"production\" ? [\n // All error codes, starting by 0:\n function(plugin) {\n return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`;\n },\n function(thing) {\n return `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`;\n },\n \"This object has been frozen and should not be mutated\",\n function(data) {\n return \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + data;\n },\n \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n \"Immer forbids circular references\",\n \"The first or second argument to `produce` must be a function\",\n \"The third argument to `produce` must be a function or undefined\",\n \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n function(thing) {\n return `'current' expects a draft, got: ${thing}`;\n },\n \"Object.defineProperty() cannot be used on an Immer draft\",\n \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n \"Immer only supports deleting array indices\",\n \"Immer only supports setting array indices and the 'length' property\",\n function(thing) {\n return `'original' expects a draft, got: ${thing}`;\n }\n // Note: if more errors are added, the errorOffset in Patches.ts should be increased\n // See Patches.ts for additional errors\n] : [];\nfunction die(error, ...args) {\n if (process.env.NODE_ENV !== \"production\") {\n const e = errors[error];\n const msg = typeof e === \"function\" ? e.apply(null, args) : e;\n throw new Error(`[Immer] ${msg}`);\n }\n throw new Error(\n `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n );\n}\n\n// src/utils/common.ts\nvar getPrototypeOf = Object.getPrototypeOf;\nfunction isDraft(value) {\n return !!value && !!value[DRAFT_STATE];\n}\nfunction isDraftable(value) {\n if (!value)\n return false;\n return isPlainObject(value) || Array.isArray(value) || !!value[DRAFTABLE] || !!value.constructor?.[DRAFTABLE] || isMap(value) || isSet(value);\n}\nvar objectCtorString = Object.prototype.constructor.toString();\nfunction isPlainObject(value) {\n if (!value || typeof value !== \"object\")\n return false;\n const proto = getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n const Ctor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n if (Ctor === Object)\n return true;\n return typeof Ctor == \"function\" && Function.toString.call(Ctor) === objectCtorString;\n}\nfunction original(value) {\n if (!isDraft(value))\n die(15, value);\n return value[DRAFT_STATE].base_;\n}\nfunction each(obj, iter) {\n if (getArchtype(obj) === 0 /* Object */) {\n Reflect.ownKeys(obj).forEach((key) => {\n iter(key, obj[key], obj);\n });\n } else {\n obj.forEach((entry, index) => iter(index, entry, obj));\n }\n}\nfunction getArchtype(thing) {\n const state = thing[DRAFT_STATE];\n return state ? state.type_ : Array.isArray(thing) ? 1 /* Array */ : isMap(thing) ? 2 /* Map */ : isSet(thing) ? 3 /* Set */ : 0 /* Object */;\n}\nfunction has(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.has(prop) : Object.prototype.hasOwnProperty.call(thing, prop);\n}\nfunction get(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.get(prop) : thing[prop];\n}\nfunction set(thing, propOrOldValue, value) {\n const t = getArchtype(thing);\n if (t === 2 /* Map */)\n thing.set(propOrOldValue, value);\n else if (t === 3 /* Set */) {\n thing.add(value);\n } else\n thing[propOrOldValue] = value;\n}\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\nfunction isMap(target) {\n return target instanceof Map;\n}\nfunction isSet(target) {\n return target instanceof Set;\n}\nfunction latest(state) {\n return state.copy_ || state.base_;\n}\nfunction shallowCopy(base, strict) {\n if (isMap(base)) {\n return new Map(base);\n }\n if (isSet(base)) {\n return new Set(base);\n }\n if (Array.isArray(base))\n return Array.prototype.slice.call(base);\n const isPlain = isPlainObject(base);\n if (strict === true || strict === \"class_only\" && !isPlain) {\n const descriptors = Object.getOwnPropertyDescriptors(base);\n delete descriptors[DRAFT_STATE];\n let keys = Reflect.ownKeys(descriptors);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const desc = descriptors[key];\n if (desc.writable === false) {\n desc.writable = true;\n desc.configurable = true;\n }\n if (desc.get || desc.set)\n descriptors[key] = {\n configurable: true,\n writable: true,\n // could live with !!desc.set as well here...\n enumerable: desc.enumerable,\n value: base[key]\n };\n }\n return Object.create(getPrototypeOf(base), descriptors);\n } else {\n const proto = getPrototypeOf(base);\n if (proto !== null && isPlain) {\n return { ...base };\n }\n const obj = Object.create(proto);\n return Object.assign(obj, base);\n }\n}\nfunction freeze(obj, deep = false) {\n if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj))\n return obj;\n if (getArchtype(obj) > 1) {\n obj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections;\n }\n Object.freeze(obj);\n if (deep)\n Object.entries(obj).forEach(([key, value]) => freeze(value, true));\n return obj;\n}\nfunction dontMutateFrozenCollections() {\n die(2);\n}\nfunction isFrozen(obj) {\n return Object.isFrozen(obj);\n}\n\n// src/utils/plugins.ts\nvar plugins = {};\nfunction getPlugin(pluginKey) {\n const plugin = plugins[pluginKey];\n if (!plugin) {\n die(0, pluginKey);\n }\n return plugin;\n}\nfunction loadPlugin(pluginKey, implementation) {\n if (!plugins[pluginKey])\n plugins[pluginKey] = implementation;\n}\n\n// src/core/scope.ts\nvar currentScope;\nfunction getCurrentScope() {\n return currentScope;\n}\nfunction createScope(parent_, immer_) {\n return {\n drafts_: [],\n parent_,\n immer_,\n // Whenever the modified draft contains a draft from another scope, we\n // need to prevent auto-freezing so the unowned draft can be finalized.\n canAutoFreeze_: true,\n unfinalizedDrafts_: 0\n };\n}\nfunction usePatchesInScope(scope, patchListener) {\n if (patchListener) {\n getPlugin(\"Patches\");\n scope.patches_ = [];\n scope.inversePatches_ = [];\n scope.patchListener_ = patchListener;\n }\n}\nfunction revokeScope(scope) {\n leaveScope(scope);\n scope.drafts_.forEach(revokeDraft);\n scope.drafts_ = null;\n}\nfunction leaveScope(scope) {\n if (scope === currentScope) {\n currentScope = scope.parent_;\n }\n}\nfunction enterScope(immer2) {\n return currentScope = createScope(currentScope, immer2);\n}\nfunction revokeDraft(draft) {\n const state = draft[DRAFT_STATE];\n if (state.type_ === 0 /* Object */ || state.type_ === 1 /* Array */)\n state.revoke_();\n else\n state.revoked_ = true;\n}\n\n// src/core/finalize.ts\nfunction processResult(result, scope) {\n scope.unfinalizedDrafts_ = scope.drafts_.length;\n const baseDraft = scope.drafts_[0];\n const isReplaced = result !== void 0 && result !== baseDraft;\n if (isReplaced) {\n if (baseDraft[DRAFT_STATE].modified_) {\n revokeScope(scope);\n die(4);\n }\n if (isDraftable(result)) {\n result = finalize(scope, result);\n if (!scope.parent_)\n maybeFreeze(scope, result);\n }\n if (scope.patches_) {\n getPlugin(\"Patches\").generateReplacementPatches_(\n baseDraft[DRAFT_STATE].base_,\n result,\n scope.patches_,\n scope.inversePatches_\n );\n }\n } else {\n result = finalize(scope, baseDraft, []);\n }\n revokeScope(scope);\n if (scope.patches_) {\n scope.patchListener_(scope.patches_, scope.inversePatches_);\n }\n return result !== NOTHING ? result : void 0;\n}\nfunction finalize(rootScope, value, path) {\n if (isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n if (!state) {\n each(\n value,\n (key, childValue) => finalizeProperty(rootScope, state, value, key, childValue, path)\n );\n return value;\n }\n if (state.scope_ !== rootScope)\n return value;\n if (!state.modified_) {\n maybeFreeze(rootScope, state.base_, true);\n return state.base_;\n }\n if (!state.finalized_) {\n state.finalized_ = true;\n state.scope_.unfinalizedDrafts_--;\n const result = state.copy_;\n let resultEach = result;\n let isSet2 = false;\n if (state.type_ === 3 /* Set */) {\n resultEach = new Set(result);\n result.clear();\n isSet2 = true;\n }\n each(\n resultEach,\n (key, childValue) => finalizeProperty(rootScope, state, result, key, childValue, path, isSet2)\n );\n maybeFreeze(rootScope, result, false);\n if (path && rootScope.patches_) {\n getPlugin(\"Patches\").generatePatches_(\n state,\n path,\n rootScope.patches_,\n rootScope.inversePatches_\n );\n }\n }\n return state.copy_;\n}\nfunction finalizeProperty(rootScope, parentState, targetObject, prop, childValue, rootPath, targetIsSet) {\n if (process.env.NODE_ENV !== \"production\" && childValue === targetObject)\n die(5);\n if (isDraft(childValue)) {\n const path = rootPath && parentState && parentState.type_ !== 3 /* Set */ && // Set objects are atomic since they have no keys.\n !has(parentState.assigned_, prop) ? rootPath.concat(prop) : void 0;\n const res = finalize(rootScope, childValue, path);\n set(targetObject, prop, res);\n if (isDraft(res)) {\n rootScope.canAutoFreeze_ = false;\n } else\n return;\n } else if (targetIsSet) {\n targetObject.add(childValue);\n }\n if (isDraftable(childValue) && !isFrozen(childValue)) {\n if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n return;\n }\n finalize(rootScope, childValue);\n if ((!parentState || !parentState.scope_.parent_) && typeof prop !== \"symbol\" && Object.prototype.propertyIsEnumerable.call(targetObject, prop))\n maybeFreeze(rootScope, childValue);\n }\n}\nfunction maybeFreeze(scope, value, deep = false) {\n if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n freeze(value, deep);\n }\n}\n\n// src/core/proxy.ts\nfunction createProxyProxy(base, parent) {\n const isArray = Array.isArray(base);\n const state = {\n type_: isArray ? 1 /* Array */ : 0 /* Object */,\n // Track which produce call this is associated with.\n scope_: parent ? parent.scope_ : getCurrentScope(),\n // True for both shallow and deep changes.\n modified_: false,\n // Used during finalization.\n finalized_: false,\n // Track which properties have been assigned (true) or deleted (false).\n assigned_: {},\n // The parent draft state.\n parent_: parent,\n // The base state.\n base_: base,\n // The base proxy.\n draft_: null,\n // set below\n // The base copy with any updated values.\n copy_: null,\n // Called by the `produce` function.\n revoke_: null,\n isManual_: false\n };\n let target = state;\n let traps = objectTraps;\n if (isArray) {\n target = [state];\n traps = arrayTraps;\n }\n const { revoke, proxy } = Proxy.revocable(target, traps);\n state.draft_ = proxy;\n state.revoke_ = revoke;\n return proxy;\n}\nvar objectTraps = {\n get(state, prop) {\n if (prop === DRAFT_STATE)\n return state;\n const source = latest(state);\n if (!has(source, prop)) {\n return readPropFromProto(state, source, prop);\n }\n const value = source[prop];\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value === peek(state.base_, prop)) {\n prepareCopy(state);\n return state.copy_[prop] = createProxy(value, state);\n }\n return value;\n },\n has(state, prop) {\n return prop in latest(state);\n },\n ownKeys(state) {\n return Reflect.ownKeys(latest(state));\n },\n set(state, prop, value) {\n const desc = getDescriptorFromProto(latest(state), prop);\n if (desc?.set) {\n desc.set.call(state.draft_, value);\n return true;\n }\n if (!state.modified_) {\n const current2 = peek(latest(state), prop);\n const currentState = current2?.[DRAFT_STATE];\n if (currentState && currentState.base_ === value) {\n state.copy_[prop] = value;\n state.assigned_[prop] = false;\n return true;\n }\n if (is(value, current2) && (value !== void 0 || has(state.base_, prop)))\n return true;\n prepareCopy(state);\n markChanged(state);\n }\n if (state.copy_[prop] === value && // special case: handle new props with value 'undefined'\n (value !== void 0 || prop in state.copy_) || // special case: NaN\n Number.isNaN(value) && Number.isNaN(state.copy_[prop]))\n return true;\n state.copy_[prop] = value;\n state.assigned_[prop] = true;\n return true;\n },\n deleteProperty(state, prop) {\n if (peek(state.base_, prop) !== void 0 || prop in state.base_) {\n state.assigned_[prop] = false;\n prepareCopy(state);\n markChanged(state);\n } else {\n delete state.assigned_[prop];\n }\n if (state.copy_) {\n delete state.copy_[prop];\n }\n return true;\n },\n // Note: We never coerce `desc.value` into an Immer draft, because we can't make\n // the same guarantee in ES5 mode.\n getOwnPropertyDescriptor(state, prop) {\n const owner = latest(state);\n const desc = Reflect.getOwnPropertyDescriptor(owner, prop);\n if (!desc)\n return desc;\n return {\n writable: true,\n configurable: state.type_ !== 1 /* Array */ || prop !== \"length\",\n enumerable: desc.enumerable,\n value: owner[prop]\n };\n },\n defineProperty() {\n die(11);\n },\n getPrototypeOf(state) {\n return getPrototypeOf(state.base_);\n },\n setPrototypeOf() {\n die(12);\n }\n};\nvar arrayTraps = {};\neach(objectTraps, (key, fn) => {\n arrayTraps[key] = function() {\n arguments[0] = arguments[0][0];\n return fn.apply(this, arguments);\n };\n});\narrayTraps.deleteProperty = function(state, prop) {\n if (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop)))\n die(13);\n return arrayTraps.set.call(this, state, prop, void 0);\n};\narrayTraps.set = function(state, prop, value) {\n if (process.env.NODE_ENV !== \"production\" && prop !== \"length\" && isNaN(parseInt(prop)))\n die(14);\n return objectTraps.set.call(this, state[0], prop, value, state[0]);\n};\nfunction peek(draft, prop) {\n const state = draft[DRAFT_STATE];\n const source = state ? latest(state) : draft;\n return source[prop];\n}\nfunction readPropFromProto(state, source, prop) {\n const desc = getDescriptorFromProto(source, prop);\n return desc ? `value` in desc ? desc.value : (\n // This is a very special case, if the prop is a getter defined by the\n // prototype, we should invoke it with the draft as context!\n desc.get?.call(state.draft_)\n ) : void 0;\n}\nfunction getDescriptorFromProto(source, prop) {\n if (!(prop in source))\n return void 0;\n let proto = getPrototypeOf(source);\n while (proto) {\n const desc = Object.getOwnPropertyDescriptor(proto, prop);\n if (desc)\n return desc;\n proto = getPrototypeOf(proto);\n }\n return void 0;\n}\nfunction markChanged(state) {\n if (!state.modified_) {\n state.modified_ = true;\n if (state.parent_) {\n markChanged(state.parent_);\n }\n }\n}\nfunction prepareCopy(state) {\n if (!state.copy_) {\n state.copy_ = shallowCopy(\n state.base_,\n state.scope_.immer_.useStrictShallowCopy_\n );\n }\n}\n\n// src/core/immerClass.ts\nvar Immer2 = class {\n constructor(config) {\n this.autoFreeze_ = true;\n this.useStrictShallowCopy_ = false;\n /**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\n this.produce = (base, recipe, patchListener) => {\n if (typeof base === \"function\" && typeof recipe !== \"function\") {\n const defaultBase = recipe;\n recipe = base;\n const self = this;\n return function curriedProduce(base2 = defaultBase, ...args) {\n return self.produce(base2, (draft) => recipe.call(this, draft, ...args));\n };\n }\n if (typeof recipe !== \"function\")\n die(6);\n if (patchListener !== void 0 && typeof patchListener !== \"function\")\n die(7);\n let result;\n if (isDraftable(base)) {\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n let hasError = true;\n try {\n result = recipe(proxy);\n hasError = false;\n } finally {\n if (hasError)\n revokeScope(scope);\n else\n leaveScope(scope);\n }\n usePatchesInScope(scope, patchListener);\n return processResult(result, scope);\n } else if (!base || typeof base !== \"object\") {\n result = recipe(base);\n if (result === void 0)\n result = base;\n if (result === NOTHING)\n result = void 0;\n if (this.autoFreeze_)\n freeze(result, true);\n if (patchListener) {\n const p = [];\n const ip = [];\n getPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip);\n patchListener(p, ip);\n }\n return result;\n } else\n die(1, base);\n };\n this.produceWithPatches = (base, recipe) => {\n if (typeof base === \"function\") {\n return (state, ...args) => this.produceWithPatches(state, (draft) => base(draft, ...args));\n }\n let patches, inversePatches;\n const result = this.produce(base, recipe, (p, ip) => {\n patches = p;\n inversePatches = ip;\n });\n return [result, patches, inversePatches];\n };\n if (typeof config?.autoFreeze === \"boolean\")\n this.setAutoFreeze(config.autoFreeze);\n if (typeof config?.useStrictShallowCopy === \"boolean\")\n this.setUseStrictShallowCopy(config.useStrictShallowCopy);\n }\n createDraft(base) {\n if (!isDraftable(base))\n die(8);\n if (isDraft(base))\n base = current(base);\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n proxy[DRAFT_STATE].isManual_ = true;\n leaveScope(scope);\n return proxy;\n }\n finishDraft(draft, patchListener) {\n const state = draft && draft[DRAFT_STATE];\n if (!state || !state.isManual_)\n die(9);\n const { scope_: scope } = state;\n usePatchesInScope(scope, patchListener);\n return processResult(void 0, scope);\n }\n /**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * By default, auto-freezing is enabled.\n */\n setAutoFreeze(value) {\n this.autoFreeze_ = value;\n }\n /**\n * Pass true to enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\n setUseStrictShallowCopy(value) {\n this.useStrictShallowCopy_ = value;\n }\n applyPatches(base, patches) {\n let i;\n for (i = patches.length - 1; i >= 0; i--) {\n const patch = patches[i];\n if (patch.path.length === 0 && patch.op === \"replace\") {\n base = patch.value;\n break;\n }\n }\n if (i > -1) {\n patches = patches.slice(i + 1);\n }\n const applyPatchesImpl = getPlugin(\"Patches\").applyPatches_;\n if (isDraft(base)) {\n return applyPatchesImpl(base, patches);\n }\n return this.produce(\n base,\n (draft) => applyPatchesImpl(draft, patches)\n );\n }\n};\nfunction createProxy(value, parent) {\n const draft = isMap(value) ? getPlugin(\"MapSet\").proxyMap_(value, parent) : isSet(value) ? getPlugin(\"MapSet\").proxySet_(value, parent) : createProxyProxy(value, parent);\n const scope = parent ? parent.scope_ : getCurrentScope();\n scope.drafts_.push(draft);\n return draft;\n}\n\n// src/core/current.ts\nfunction current(value) {\n if (!isDraft(value))\n die(10, value);\n return currentImpl(value);\n}\nfunction currentImpl(value) {\n if (!isDraftable(value) || isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n let copy;\n if (state) {\n if (!state.modified_)\n return state.base_;\n state.finalized_ = true;\n copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_);\n } else {\n copy = shallowCopy(value, true);\n }\n each(copy, (key, childValue) => {\n set(copy, key, currentImpl(childValue));\n });\n if (state) {\n state.finalized_ = false;\n }\n return copy;\n}\n\n// src/plugins/patches.ts\nfunction enablePatches() {\n const errorOffset = 16;\n if (process.env.NODE_ENV !== \"production\") {\n errors.push(\n 'Sets cannot have \"replace\" patches.',\n function(op) {\n return \"Unsupported patch operation: \" + op;\n },\n function(path) {\n return \"Cannot apply patch, path doesn't resolve: \" + path;\n },\n \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n );\n }\n const REPLACE = \"replace\";\n const ADD = \"add\";\n const REMOVE = \"remove\";\n function generatePatches_(state, basePath, patches, inversePatches) {\n switch (state.type_) {\n case 0 /* Object */:\n case 2 /* Map */:\n return generatePatchesFromAssigned(\n state,\n basePath,\n patches,\n inversePatches\n );\n case 1 /* Array */:\n return generateArrayPatches(state, basePath, patches, inversePatches);\n case 3 /* Set */:\n return generateSetPatches(\n state,\n basePath,\n patches,\n inversePatches\n );\n }\n }\n function generateArrayPatches(state, basePath, patches, inversePatches) {\n let { base_, assigned_ } = state;\n let copy_ = state.copy_;\n if (copy_.length < base_.length) {\n ;\n [base_, copy_] = [copy_, base_];\n [patches, inversePatches] = [inversePatches, patches];\n }\n for (let i = 0; i < base_.length; i++) {\n if (assigned_[i] && copy_[i] !== base_[i]) {\n const path = basePath.concat([i]);\n patches.push({\n op: REPLACE,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n inversePatches.push({\n op: REPLACE,\n path,\n value: clonePatchValueIfNeeded(base_[i])\n });\n }\n }\n for (let i = base_.length; i < copy_.length; i++) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n }\n for (let i = copy_.length - 1; base_.length <= i; --i) {\n const path = basePath.concat([i]);\n inversePatches.push({\n op: REMOVE,\n path\n });\n }\n }\n function generatePatchesFromAssigned(state, basePath, patches, inversePatches) {\n const { base_, copy_ } = state;\n each(state.assigned_, (key, assignedValue) => {\n const origValue = get(base_, key);\n const value = get(copy_, key);\n const op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD;\n if (origValue === value && op === REPLACE)\n return;\n const path = basePath.concat(key);\n patches.push(op === REMOVE ? { op, path } : { op, path, value });\n inversePatches.push(\n op === ADD ? { op: REMOVE, path } : op === REMOVE ? { op: ADD, path, value: clonePatchValueIfNeeded(origValue) } : { op: REPLACE, path, value: clonePatchValueIfNeeded(origValue) }\n );\n });\n }\n function generateSetPatches(state, basePath, patches, inversePatches) {\n let { base_, copy_ } = state;\n let i = 0;\n base_.forEach((value) => {\n if (!copy_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: REMOVE,\n path,\n value\n });\n inversePatches.unshift({\n op: ADD,\n path,\n value\n });\n }\n i++;\n });\n i = 0;\n copy_.forEach((value) => {\n if (!base_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n value\n });\n inversePatches.unshift({\n op: REMOVE,\n path,\n value\n });\n }\n i++;\n });\n }\n function generateReplacementPatches_(baseValue, replacement, patches, inversePatches) {\n patches.push({\n op: REPLACE,\n path: [],\n value: replacement === NOTHING ? void 0 : replacement\n });\n inversePatches.push({\n op: REPLACE,\n path: [],\n value: baseValue\n });\n }\n function applyPatches_(draft, patches) {\n patches.forEach((patch) => {\n const { path, op } = patch;\n let base = draft;\n for (let i = 0; i < path.length - 1; i++) {\n const parentType = getArchtype(base);\n let p = path[i];\n if (typeof p !== \"string\" && typeof p !== \"number\") {\n p = \"\" + p;\n }\n if ((parentType === 0 /* Object */ || parentType === 1 /* Array */) && (p === \"__proto__\" || p === \"constructor\"))\n die(errorOffset + 3);\n if (typeof base === \"function\" && p === \"prototype\")\n die(errorOffset + 3);\n base = get(base, p);\n if (typeof base !== \"object\")\n die(errorOffset + 2, path.join(\"/\"));\n }\n const type = getArchtype(base);\n const value = deepClonePatchValue(patch.value);\n const key = path[path.length - 1];\n switch (op) {\n case REPLACE:\n switch (type) {\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n die(errorOffset);\n default:\n return base[key] = value;\n }\n case ADD:\n switch (type) {\n case 1 /* Array */:\n return key === \"-\" ? base.push(value) : base.splice(key, 0, value);\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n return base.add(value);\n default:\n return base[key] = value;\n }\n case REMOVE:\n switch (type) {\n case 1 /* Array */:\n return base.splice(key, 1);\n case 2 /* Map */:\n return base.delete(key);\n case 3 /* Set */:\n return base.delete(patch.value);\n default:\n return delete base[key];\n }\n default:\n die(errorOffset + 1, op);\n }\n });\n return draft;\n }\n function deepClonePatchValue(obj) {\n if (!isDraftable(obj))\n return obj;\n if (Array.isArray(obj))\n return obj.map(deepClonePatchValue);\n if (isMap(obj))\n return new Map(\n Array.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)])\n );\n if (isSet(obj))\n return new Set(Array.from(obj).map(deepClonePatchValue));\n const cloned = Object.create(getPrototypeOf(obj));\n for (const key in obj)\n cloned[key] = deepClonePatchValue(obj[key]);\n if (has(obj, DRAFTABLE))\n cloned[DRAFTABLE] = obj[DRAFTABLE];\n return cloned;\n }\n function clonePatchValueIfNeeded(obj) {\n if (isDraft(obj)) {\n return deepClonePatchValue(obj);\n } else\n return obj;\n }\n loadPlugin(\"Patches\", {\n applyPatches_,\n generatePatches_,\n generateReplacementPatches_\n });\n}\n\n// src/plugins/mapset.ts\nfunction enableMapSet() {\n class DraftMap extends Map {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 2 /* Map */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n assigned_: void 0,\n base_: target,\n draft_: this,\n isManual_: false,\n revoked_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(key) {\n return latest(this[DRAFT_STATE]).has(key);\n }\n set(key, value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!latest(state).has(key) || latest(state).get(key) !== value) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_.set(key, true);\n state.copy_.set(key, value);\n state.assigned_.set(key, true);\n }\n return this;\n }\n delete(key) {\n if (!this.has(key)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareMapCopy(state);\n markChanged(state);\n if (state.base_.has(key)) {\n state.assigned_.set(key, false);\n } else {\n state.assigned_.delete(key);\n }\n state.copy_.delete(key);\n return true;\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_ = /* @__PURE__ */ new Map();\n each(state.base_, (key) => {\n state.assigned_.set(key, false);\n });\n state.copy_.clear();\n }\n }\n forEach(cb, thisArg) {\n const state = this[DRAFT_STATE];\n latest(state).forEach((_value, key, _map) => {\n cb.call(thisArg, this.get(key), key, this);\n });\n }\n get(key) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n const value = latest(state).get(key);\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value !== state.base_.get(key)) {\n return value;\n }\n const draft = createProxy(value, state);\n prepareMapCopy(state);\n state.copy_.set(key, draft);\n return draft;\n }\n keys() {\n return latest(this[DRAFT_STATE]).keys();\n }\n values() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.values(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value\n };\n }\n };\n }\n entries() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.entries(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value: [r.value, value]\n };\n }\n };\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.entries();\n }\n }\n function proxyMap_(target, parent) {\n return new DraftMap(target, parent);\n }\n function prepareMapCopy(state) {\n if (!state.copy_) {\n state.assigned_ = /* @__PURE__ */ new Map();\n state.copy_ = new Map(state.base_);\n }\n }\n class DraftSet extends Set {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 3 /* Set */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n base_: target,\n draft_: this,\n drafts_: /* @__PURE__ */ new Map(),\n revoked_: false,\n isManual_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!state.copy_) {\n return state.base_.has(value);\n }\n if (state.copy_.has(value))\n return true;\n if (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value)))\n return true;\n return false;\n }\n add(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!this.has(value)) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.add(value);\n }\n return this;\n }\n delete(value) {\n if (!this.has(value)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n markChanged(state);\n return state.copy_.delete(value) || (state.drafts_.has(value) ? state.copy_.delete(state.drafts_.get(value)) : (\n /* istanbul ignore next */\n false\n ));\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.clear();\n }\n }\n values() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.values();\n }\n entries() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.entries();\n }\n keys() {\n return this.values();\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.values();\n }\n forEach(cb, thisArg) {\n const iterator = this.values();\n let result = iterator.next();\n while (!result.done) {\n cb.call(thisArg, result.value, result.value, this);\n result = iterator.next();\n }\n }\n }\n function proxySet_(target, parent) {\n return new DraftSet(target, parent);\n }\n function prepareSetCopy(state) {\n if (!state.copy_) {\n state.copy_ = /* @__PURE__ */ new Set();\n state.base_.forEach((value) => {\n if (isDraftable(value)) {\n const draft = createProxy(value, state);\n state.drafts_.set(value, draft);\n state.copy_.add(draft);\n } else {\n state.copy_.add(value);\n }\n });\n }\n }\n function assertUnrevoked(state) {\n if (state.revoked_)\n die(3, JSON.stringify(latest(state)));\n }\n loadPlugin(\"MapSet\", { proxyMap_, proxySet_ });\n}\n\n// src/immer.ts\nvar immer = new Immer2();\nvar produce = immer.produce;\nvar produceWithPatches = immer.produceWithPatches.bind(\n immer\n);\nvar setAutoFreeze = immer.setAutoFreeze.bind(immer);\nvar setUseStrictShallowCopy = immer.setUseStrictShallowCopy.bind(immer);\nvar applyPatches = immer.applyPatches.bind(immer);\nvar createDraft = immer.createDraft.bind(immer);\nvar finishDraft = immer.finishDraft.bind(immer);\nfunction castDraft(value) {\n return value;\n}\nfunction castImmutable(value) {\n return value;\n}\nexport {\n Immer2 as Immer,\n applyPatches,\n castDraft,\n castImmutable,\n createDraft,\n current,\n enableMapSet,\n enablePatches,\n finishDraft,\n freeze,\n DRAFTABLE as immerable,\n isDraft,\n isDraftable,\n NOTHING as nothing,\n original,\n produce,\n produceWithPatches,\n setAutoFreeze,\n setUseStrictShallowCopy\n};\n//# sourceMappingURL=immer.mjs.map","import { createStore } from \"zustand/vanilla\";\nimport { persist } from \"zustand/middleware\";\nimport { produce } from \"immer\";\nimport { PermitV2 } from \"./permit\";\n// Stores generated permits for each user, a hash indicating the active permit for each user, and a list of fheKeys as a cache\n// Can be used to create reactive hooks\nexport const _permitStore = createStore()(persist(() => ({\n permits: {},\n activePermitHash: {},\n}), { name: \"fhenixjs-permits\" }));\n// Permit V2\nexport const getPermit = (account, hash) => {\n if (account == null || hash == null)\n return;\n const savedPermit = _permitStore.getState().permits[account]?.[hash];\n if (savedPermit == null)\n return;\n return PermitV2.deserialize(savedPermit);\n};\nexport const getActivePermit = (account) => {\n if (account == null)\n return;\n const activePermitHash = _permitStore.getState().activePermitHash[account];\n return getPermit(account, activePermitHash);\n};\nexport const getPermits = (account) => {\n if (account == null)\n return {};\n return Object.entries(_permitStore.getState().permits[account] ?? {}).reduce((acc, [hash, permit]) => {\n if (permit == undefined)\n return acc;\n return { ...acc, [hash]: PermitV2.deserialize(permit) };\n }, {});\n};\nexport const setPermit = (account, permitV2) => {\n _permitStore.setState(produce((state) => {\n if (state.permits[account] == null)\n state.permits[account] = {};\n state.permits[account][permitV2.getHash()] = permitV2.serialize();\n }));\n};\nexport const removePermit = (account, hash) => {\n _permitStore.setState(produce((state) => {\n state.permits[account][hash] = undefined;\n }));\n};\n// Active Permit Hash\nexport const getActivePermitHash = (account) => {\n if (account == null)\n return undefined;\n return _permitStore.getState().activePermitHash[account];\n};\nexport const setActivePermitHash = (account, hash) => {\n _permitStore.setState(produce((state) => {\n state.activePermitHash[account] = hash;\n }));\n};\nexport const removeActivePermitHash = (account) => {\n _permitStore.setState(produce((state) => {\n state.activePermitHash[account] = undefined;\n }));\n};\nexport const permitStore = {\n store: _permitStore,\n getPermit,\n getActivePermit,\n getPermits,\n setPermit,\n removePermit,\n getActivePermitHash,\n setActivePermitHash,\n removeActivePermitHash,\n};\n//# sourceMappingURL=permit.store.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createStore } from \"zustand/vanilla\";\nimport { produce } from \"immer\";\nimport { TfheCompactPublicKey } from \"../fhe/fhe\";\nimport { chainIsHardhat, fromHexString, toABIEncodedUint32 } from \"../utils\";\nimport { FheOpsAddress, PUBLIC_KEY_LENGTH_MIN } from \"../consts\";\nexport const _sdkStore = createStore(() => ({\n fheKeysInitialized: false,\n securityZones: [0],\n fheKeys: {},\n accessRequirements: {\n contracts: [],\n projects: [],\n },\n providerInitialized: false,\n provider: undefined,\n chainId: undefined,\n signerInitialized: false,\n signer: undefined,\n account: undefined,\n}));\n// Store getters / setters\nexport const _store_chainId = () => _sdkStore.getState().chainId;\nexport const _store_getFheKey = (chainId, securityZone = 0) => {\n if (chainId == null || securityZone == null)\n return undefined;\n const serialized = _sdkStore.getState().fheKeys[chainId]?.[securityZone];\n if (serialized == null)\n return undefined;\n return TfheCompactPublicKey.deserialize(serialized);\n};\nexport const _store_getConnectedChainFheKey = (securityZone = 0) => {\n const state = _sdkStore.getState();\n if (securityZone == null)\n return undefined;\n if (state.chainId == null)\n return undefined;\n const serialized = state.fheKeys[state.chainId]?.[securityZone];\n if (serialized == null)\n return undefined;\n return TfheCompactPublicKey.deserialize(serialized);\n};\nexport const _store_setFheKey = (chainId, securityZone, fheKey) => {\n if (chainId == null || securityZone == null)\n return;\n _sdkStore.setState(produce((state) => {\n if (state.fheKeys[chainId] == null)\n state.fheKeys[chainId] = {};\n state.fheKeys[chainId][securityZone] = fheKey?.serialize();\n }));\n};\nconst getChainIdFromProvider = async (provider) => {\n const chainId = await provider.getChainId();\n if (chainId == null)\n throw new Error(\"sdk :: getChainIdFromProvider :: provider.getChainId returned a null result, ensure that your provider is connected to a network\");\n return chainId;\n};\nexport const _store_initialize = async (params) => {\n const { provider, signer, securityZones = [0], contracts: contractRequirements = [], projects: projectRequirements = [], } = params;\n _sdkStore.setState({\n providerInitialized: false,\n signerInitialized: false,\n accessRequirements: {\n contracts: contractRequirements,\n projects: projectRequirements,\n },\n });\n // PROVIDER\n // Fetch chain Id from provider\n const chainId = await getChainIdFromProvider(provider);\n const chainIdChanged = chainId != null && chainId !== _sdkStore.getState().chainId;\n if (chainId != null && provider != null) {\n _sdkStore.setState({ providerInitialized: true, provider, chainId });\n }\n // SIGNER\n // Account is fetched and stored here, the `account` field in the store is used to index which permits belong to which users\n // In sdk functions, `state.account != null` is validated, this is a check to ensure that a valid signer has been provided\n // which is necessary to interact with permits\n const account = await signer?.getAddress();\n if (account != null && signer != null) {\n _sdkStore.setState({ signerInitialized: true, account, signer });\n }\n else {\n _sdkStore.setState({\n signerInitialized: false,\n account: undefined,\n signer: undefined,\n });\n }\n // If chainId or securityZones changes, update the store and update fheKeys for re-initialization\n const securityZonesChanged = securityZones !== _sdkStore.getState().securityZones;\n if (chainIdChanged || securityZonesChanged) {\n _sdkStore.setState({\n securityZones,\n fheKeysInitialized: false,\n });\n }\n // Fetch FHE keys (skipped if hardhat)\n if (!chainIsHardhat(chainId) && !_sdkStore.getState().fheKeysInitialized) {\n await Promise.all(securityZones.map((securityZone) => _store_fetchFheKey(chainId, provider, securityZone)));\n }\n _sdkStore.setState({ fheKeysInitialized: true });\n};\n/**\n * Retrieves the FHE public key from the provider.\n * If the key already exists in the store it is returned, else it is fetched, stored, and returned\n * @param {string} chainId - The chain to fetch the FHE key for, if no chainId provided, undefined is returned\n * @param {Provider} provider - EthersV6 Provider that performs the key fetch.\n * @param securityZone - The security zone for which to retrieve the key (default 0).\n * @returns {Promise} - The retrieved public key.\n */\nexport const _store_fetchFheKey = async (chainId, provider, securityZone = 0) => {\n const storedKey = _store_getFheKey(chainId, securityZone);\n if (storedKey != null)\n return storedKey;\n const funcSig = \"0x1b1b484e\"; // cast sig \"getNetworkPublicKey(int32)\"\n const callData = funcSig + toABIEncodedUint32(securityZone);\n const publicKey = await provider.call({ to: FheOpsAddress, data: callData });\n if (typeof publicKey !== \"string\") {\n throw new Error(\"Error initializing fhenixjs; FHE publicKey fetched from provider invalid: not a string\");\n }\n if (publicKey === \"0x\") {\n throw new Error(\"Error initializing fhenixjs; provided chain is not FHE enabled, no FHE publicKey found\");\n }\n if (publicKey.length < PUBLIC_KEY_LENGTH_MIN) {\n throw new Error(`Error initializing fhenixjs; got shorter than expected FHE publicKey: ${publicKey.length}. Expected length >= ${PUBLIC_KEY_LENGTH_MIN}`);\n }\n // todo (eshel) verify this\n // magically know how to decode rlp or w/e returns from the evm json-rpc\n const buff = fromHexString(publicKey.slice(130));\n try {\n const key = TfheCompactPublicKey.deserialize(buff);\n _store_setFheKey(chainId, securityZone, key);\n return key;\n }\n catch (err) {\n throw new Error(`Error deserializing public key ${err}`);\n }\n};\n//# sourceMappingURL=sdk.store.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { MAX_UINT16, MAX_UINT32, MAX_UINT8 } from \"../consts.js\";\nimport { chainIsHardhat, hardhatMockEncrypt, ValidateUintInRange, } from \"../utils.js\";\nimport { PermitV2 } from \"./permit.js\";\nimport { FheUType, isEncryptableItem, ResultErr, ResultOk, } from \"./types.js\";\nimport { permitStore } from \"./permit.store.js\";\nimport { isString } from \"../validation.js\";\nimport { _sdkStore, _store_chainId, _store_getConnectedChainFheKey, _store_getFheKey, _store_initialize, } from \"./sdk.store.js\";\nimport { encrypt as tfhe_encrypt, encrypt_bool as tfhe_encrypt_bool, encrypt_uint8 as tfhe_encrypt_uint8, encrypt_uint16 as tfhe_encrypt_uint16, encrypt_uint32 as tfhe_encrypt_uint32, encrypt_uint64 as tfhe_encrypt_uint64, encrypt_uint128 as tfhe_encrypt_uint128, encrypt_uint256 as tfhe_encrypt_uint256, encrypt_address as tfhe_encrypt_address, } from \"../encrypt.js\";\nimport { InitFhevm } from \"../init.js\";\nimport { PermitV2ParamsValidator } from \"./permit.z.js\";\nimport { EncryptionTypes } from \"../types.js\";\n/**\n * Initializes the `fhenixsdk` to enable encrypting input data, creating permits / permissions, and decrypting sealed outputs.\n * Initializes `fhevm` client FHE wasm module and fetches the provided chain's FHE publicKey.\n * If a valid signer is provided, a `permit/permission` is generated automatically\n */\nconst initialize = async (params) => {\n // Initialize the fhevm\n await InitFhevm().catch((err) => {\n if (params.ignoreErrors) {\n return undefined;\n }\n else {\n return ResultErr(`initialize :: failed to initialize fhenixjs - is the network FHE-enabled? ${err}`);\n }\n });\n if (params.provider == null)\n return ResultErr(\"initialize :: missing provider - Please provide an AbstractProvider interface\");\n if (params.securityZones != null && params.securityZones.length === 0)\n return ResultErr(\"initialize :: a list of securityZones was provided, but it is empty\");\n await _store_initialize(params);\n // `generatePermit` must set to `false` to early exit here\n if (params.generatePermit === false)\n return ResultOk(undefined);\n // Return the existing active permit\n const userActivePermit = getPermit();\n if (userActivePermit.success)\n return userActivePermit;\n // Create permit and return it\n return createPermit();\n};\n/**\n * Internal reusable initialization checker\n */\nconst _checkInitialized = (state, options) => {\n if (options?.fheKeys !== false && !state.fheKeysInitialized) {\n return ResultErr(\"fhenixsdk not initialized. Use `fhenixsdk.initialize(...)`.\");\n }\n if (options?.provider !== false && !state.providerInitialized)\n return ResultErr(\"fhenixsdk not initialized with valid provider. Use `fhenixsdk.initialize(...)` with a valid provider that satisfies `AbstractProvider`.\");\n if (options?.signer !== false && !state.signerInitialized)\n return ResultErr(\"fhenixsdk not initialized with a valid signer. Use `fhenixsdk.initialize(...)` with a valid signer that satisfies `AbstractSigner`.\");\n return ResultOk(null);\n};\n// Permit\n/**\n * Creates a new permit with options, prompts user for signature.\n * Handles all `permit.type`s, and prompts for the correct signature type.\n * The created PermitV2 will be inserted into the store and marked as the active permit.\n * NOTE: This is a wrapper around `PermitV2.create` and `PermitV2.sign`\n *\n * @param {PermitV2Options} options - Partial PermitV2 fields to create the Permit with, if no options provided will be filled with the defaults:\n * { type: \"self\", issuer: initializedUserAddress, projects: initializedProjects, contracts: initializedContracts }\n * @returns {Result} - Newly created PermitV2 as a Result object\n */\nconst createPermit = async (options) => {\n const state = _sdkStore.getState();\n const initialized = _checkInitialized(state);\n if (!initialized.success)\n return ResultErr(`${createPermit.name} :: ${initialized.error}`);\n const optionsWithDefaults = {\n type: \"self\",\n issuer: state.account,\n contracts: state.accessRequirements.contracts,\n projects: state.accessRequirements.projects,\n ...options,\n };\n let permit;\n try {\n permit = await PermitV2.createAndSign(optionsWithDefaults, state.chainId, state.signer);\n }\n catch (e) {\n return ResultErr(`${createPermit.name} :: ${e}`);\n }\n permitStore.setPermit(state.account, permit);\n permitStore.setActivePermitHash(state.account, permit.getHash());\n return ResultOk(permit);\n};\n/**\n * Imports a fully formed existing permit, expected to be valid.\n * Does not ask for user signature, expects to already be populated.\n * Will throw an error if the imported permit is invalid, see `PermitV2.isValid`.\n * The imported PermitV2 will be inserted into the store and marked as the active permit.\n *\n * @param {string | PermitV2Interface} imported - Permit to import as a text string or PermitV2Interface\n */\nconst importPermit = async (imported) => {\n const state = _sdkStore.getState();\n const initialized = _checkInitialized(state);\n if (!initialized.success)\n return ResultErr(`${createPermit.name} :: ${initialized.error}`);\n // Import validation\n if (typeof imported === \"string\") {\n try {\n imported = JSON.parse(imported);\n }\n catch (e) {\n return ResultErr(`importPermit :: json parsing failed - ${e}`);\n }\n }\n const { success, data: parsedPermit, error: permitParsingError, } = PermitV2ParamsValidator.safeParse(imported);\n if (!success) {\n const errorString = Object.entries(permitParsingError.flatten().fieldErrors)\n .map(([field, err]) => `- ${field}: ${err}`)\n .join(\"\\n\");\n return ResultErr(`importPermit :: invalid permit data - ${errorString}`);\n }\n if (parsedPermit.type !== \"self\") {\n if (parsedPermit.issuer === state.account)\n parsedPermit.type = \"sharing\";\n else if (parsedPermit.recipient === state.account)\n parsedPermit.type = \"recipient\";\n else {\n return ResultErr(`importPermit :: invalid Permit - connected account <${state.account}> is not issuer or recipient`);\n }\n }\n let permit;\n try {\n permit = await PermitV2.create(parsedPermit);\n }\n catch (e) {\n return ResultErr(`importPermit :: ${e}`);\n }\n const { valid, error } = permit.isValid();\n if (!valid) {\n return ResultErr(`importPermit :: newly imported permit is invalid - ${error}`);\n }\n permitStore.setPermit(state.account, permit);\n permitStore.setActivePermitHash(state.account, permit.getHash());\n return ResultOk(permit);\n};\n/**\n * Selects the active permit using its hash.\n * If the hash is not found in the stored permits store, throws an error.\n * The matched permit will be marked as the active permit.\n *\n * @param {string} hash - The `PermitV2.getHash` of the target permit.\n */\nconst selectActivePermit = (hash) => {\n const state = _sdkStore.getState();\n const initialized = _checkInitialized(state);\n if (!initialized.success)\n return ResultErr(`${selectActivePermit.name} :: ${initialized.error}`);\n const permit = permitStore.getPermit(state.account, hash);\n if (permit == null)\n return ResultErr(`${selectActivePermit.name} :: Permit with hash <${hash}> not found`);\n permitStore.setActivePermitHash(state.account, permit.getHash());\n return ResultOk(permit);\n};\n/**\n * Retrieves a stored permit based on its hash.\n * If no hash is provided, the currently active permit will be retrieved.\n *\n * @param {string} hash - Optional `PermitV2.getHash` of the permit.\n * @returns {Result} - The active permit or permit associated with `hash` as a Result object.\n */\nconst getPermit = (hash) => {\n const state = _sdkStore.getState();\n const initialized = _checkInitialized(state);\n if (!initialized.success)\n return ResultErr(`${getPermit.name} :: ${initialized.error}`);\n if (hash == null) {\n const permit = permitStore.getActivePermit(state.account);\n if (permit == null)\n return ResultErr(`getPermit :: active permit not found`);\n return ResultOk(permit);\n }\n const permit = permitStore.getPermit(state.account, hash);\n if (permit == null)\n return ResultErr(`getPermit :: permit with hash <${hash}> not found`);\n return ResultOk(permit);\n};\n/**\n * Retrieves a stored permission based on the permit's hash.\n * If no hash is provided, the currently active permit will be used.\n * The `PermissionV2` is extracted from the permit.\n *\n * @param {string} hash - Optional hash of the permission to get, defaults to active permit's permission\n * @returns {Result} - The active permission or permission associated with `hash`, as a result object.\n */\nconst getPermission = (hash) => {\n const permitResult = getPermit(hash);\n if (!permitResult.success)\n return ResultErr(`${getPermission.name} :: ${permitResult.error}`);\n return ResultOk(permitResult.data.getPermission());\n};\n/**\n * Exports all stored permits.\n * @returns {Result>} - All stored permits.\n */\nconst getAllPermits = () => {\n const state = _sdkStore.getState();\n const initialized = _checkInitialized(state);\n if (!initialized.success)\n return ResultErr(`${getAllPermits.name} :: ${initialized.error}`);\n return ResultOk(permitStore.getPermits(state.account));\n};\n// Encrypt\n/**\n * Encrypts a numeric value according to the specified encryption type or the most efficient one based on the value.\n * Useful when not using `Encryptable` utility structures.\n * @param {number} value - The numeric value to encrypt.\n * @param {EncryptionTypes} type - Optional. The encryption type (uint8, uint16, uint32).\n * @param securityZone - The security zone for which to encrypt the value (default 0).\n * @returns {EncryptedNumber} - The encrypted value serialized as Uint8Array. Use the .data property to access the Uint8Array.\n */\nconst encryptValue = (value, type, securityZone = 0) => {\n const state = _sdkStore.getState();\n // Only need to check `fheKeysInitialized`, signer and provider not needed for encryption\n const initialized = _checkInitialized(state, {\n provider: false,\n signer: false,\n });\n if (!initialized.success)\n return ResultErr(`${encryptValue.name} :: ${initialized.error}`);\n // Early exit with mock encrypted value if chain is hardhat\n if (chainIsHardhat(state.chainId))\n return ResultOk(hardhatMockEncrypt(BigInt(value)));\n const fhePublicKey = _store_getFheKey(state.chainId, securityZone);\n if (fhePublicKey == null)\n return ResultErr(`encryptValue :: FHE publicKey not found for chain <${state.chainId}> and securityZone <${securityZone}>`);\n let outputSize = type;\n // choose the most efficient ciphertext size if not selected\n if (!outputSize) {\n if (value < MAX_UINT8) {\n outputSize = EncryptionTypes.uint8;\n }\n else if (value < MAX_UINT16) {\n outputSize = EncryptionTypes.uint16;\n }\n else if (value < MAX_UINT32) {\n outputSize = EncryptionTypes.uint32;\n }\n else {\n return ResultErr(`encryptValue :: Encryption input must be smaller than ${MAX_UINT32}`);\n }\n }\n try {\n switch (outputSize) {\n case EncryptionTypes.uint8:\n ValidateUintInRange(value, MAX_UINT8, 0);\n break;\n case EncryptionTypes.uint16:\n ValidateUintInRange(value, MAX_UINT16, 0);\n break;\n case EncryptionTypes.uint32:\n ValidateUintInRange(value, MAX_UINT32, 0);\n break;\n default:\n }\n }\n catch (e) {\n return ResultErr(`encryptValue :: outputSize :: ${e}`);\n }\n let encrypted;\n try {\n encrypted = tfhe_encrypt(value, fhePublicKey, type, securityZone);\n }\n catch (e) {\n return ResultErr(`encryptValue :: tfhe_encrypt :: ${e}`);\n }\n return ResultOk(encrypted);\n};\nfunction encrypt(item) {\n const state = _sdkStore.getState();\n // Only need to check `fheKeysInitialized`, signer and provider not needed for encryption\n const initialized = _checkInitialized(state, {\n provider: false,\n signer: false,\n });\n if (!initialized.success)\n return ResultErr(`${encrypt.name} :: ${initialized.error}`);\n // Permission\n if (item === \"permission\") {\n return getPermission();\n }\n // EncryptableItem\n if (isEncryptableItem(item)) {\n // Early exit with mock encrypted value if chain is hardhat\n if (chainIsHardhat(_store_chainId()))\n return ResultOk(hardhatMockEncrypt(BigInt(item.data)));\n const fhePublicKey = _store_getConnectedChainFheKey(item.securityZone ?? 0);\n if (fhePublicKey == null)\n return ResultErr(\"encrypt :: fheKey for current chain not found\");\n // prettier-ignore\n try {\n switch (item.utype) {\n case FheUType.bool: return ResultOk(tfhe_encrypt_bool(item.data, fhePublicKey, item.securityZone));\n case FheUType.uint8: return ResultOk(tfhe_encrypt_uint8(item.data, fhePublicKey, item.securityZone));\n case FheUType.uint16: return ResultOk(tfhe_encrypt_uint16(item.data, fhePublicKey, item.securityZone));\n case FheUType.uint32: return ResultOk(tfhe_encrypt_uint32(item.data, fhePublicKey, item.securityZone));\n case FheUType.uint64: return ResultOk(tfhe_encrypt_uint64(item.data, fhePublicKey, item.securityZone));\n case FheUType.uint128: return ResultOk(tfhe_encrypt_uint128(item.data, fhePublicKey, item.securityZone));\n case FheUType.uint256: return ResultOk(tfhe_encrypt_uint256(item.data, fhePublicKey, item.securityZone));\n case FheUType.address: return ResultOk(tfhe_encrypt_address(item.data, fhePublicKey, item.securityZone));\n }\n }\n catch (e) {\n return ResultErr(`encrypt :: tfhe_encrypt_xxxx :: ${e}`);\n }\n }\n // Object | Array\n if (typeof item === \"object\" && item !== null) {\n if (Array.isArray(item)) {\n // Array - recurse\n const nestedItems = item.map((nestedItem) => encrypt(nestedItem));\n // Any nested error break out\n const nestedItemResultErr = nestedItems.find((nestedItem) => !nestedItem.success);\n if (nestedItemResultErr)\n return nestedItemResultErr;\n return ResultOk(nestedItems.map((nestedItem) => nestedItem.data));\n }\n else {\n // Object - recurse\n const result = {};\n for (const key in item) {\n const encryptedResult = encrypt(item[key]);\n if (!encryptedResult.success)\n return encryptedResult;\n result[key] = encryptedResult.data;\n }\n return ResultOk(result);\n }\n }\n // Primitive\n return ResultOk(item);\n}\n// Unseal\n/**\n * Unseals an encrypted message using the stored permit for a specific contract address.\n * NOTE: Wrapper around `PermitV2.unseal`\n *\n * @param {string} ciphertext - The encrypted message to unseal.\n * @param {string} account - Users address, defaults to store.account\n * @param {string} hash - The hash of the permit to use for this operation, defaults to active permitV2 hash\n * @returns bigint - The unsealed message.\n */\nconst unsealCiphertext = (ciphertext, account, hash) => {\n const state = _sdkStore.getState();\n const initialized = _checkInitialized(state);\n if (!initialized.success)\n return ResultErr(`${getAllPermits.name} :: ${initialized.error}`);\n isString(ciphertext);\n const resolvedAccount = account ?? state.account;\n const resolvedHash = hash ?? permitStore.getActivePermitHash(resolvedAccount);\n if (resolvedAccount == null || resolvedHash == null) {\n return ResultErr(`unsealCiphertext :: PermitV2 hash not provided and active PermitV2 not found`);\n }\n const permit = permitStore.getPermit(resolvedAccount, resolvedHash);\n if (permit == null) {\n return ResultErr(`unsealCiphertext :: PermitV2 with account <${account}> and hash <${hash}> not found`);\n }\n let unsealed;\n try {\n unsealed = permit.unsealCiphertext(ciphertext);\n }\n catch (e) {\n return ResultErr(`unsealCiphertext :: ${e}`);\n }\n return ResultOk(unsealed);\n};\n/**\n * Uses the privateKey of `permit.sealingPair` to recursively unseal any contained `SealedItems`.\n * If `item` is a single `SealedItem` it will be individually.\n * NOTE: Only unseals typed `SealedItem`s returned from `FHE.sealoutputTyped` and the FHE bindings' `e____.sealTyped`.\n *\n * @param {any | any[]} item - Array, object, or item. Any nested `SealedItems` will be unsealed.\n * @returns - Recursively unsealed data in the target type, SealedBool -> boolean, SealedAddress -> string, etc.\n */\nfunction unseal(item, account, hash) {\n const resolvedAccount = account ?? _sdkStore.getState().account;\n const resolvedHash = hash ?? permitStore.getActivePermitHash(resolvedAccount);\n if (resolvedAccount == null || resolvedHash == null) {\n return ResultErr(`unseal :: PermitV2 hash not provided and active PermitV2 not found`);\n }\n const permit = permitStore.getPermit(resolvedAccount, resolvedHash);\n if (permit == null) {\n return ResultErr(`unseal :: PermitV2 with account <${account}> and hash <${hash}> not found`);\n }\n let unsealed;\n try {\n unsealed = permit.unseal(item);\n }\n catch (e) {\n return ResultErr(`unseal :: ${e}`);\n }\n return ResultOk(unsealed);\n}\n// Export\nexport const fhenixsdk = {\n store: _sdkStore,\n initialize,\n createPermit,\n importPermit,\n selectActivePermit,\n getPermit,\n getPermission,\n getAllPermits,\n encryptValue,\n encrypt,\n unsealCiphertext,\n unseal,\n};\n//# sourceMappingURL=sdk.js.map","// for mobile\n// if (typeof BigInt === \"undefined\") {\n// global.BigInt = require(\"big-integer\");\n// }\nexport { FhenixClient, FhenixClientSync } from \"./sdk/index.js\";\nexport { EncryptionTypes, } from \"./sdk/types.js\";\nexport * from \"./extensions/access_control/index.js\";\nexport { SealingKey, GenerateSealingKey } from \"./sdk/sealing.js\";\nexport { createTfheKeypair, createTfhePublicKey } from \"./sdk/keygen.js\";\nexport * from \"./sdk/v2\";\n//# sourceMappingURL=fhenix.js.map"],"names":["initSDK","wasm","isPlainObject","toHexString","isAddress","BN_0","assertArgument","require","this","naclUtil.decodeBase64","nacl.box","nacl.randomBytes","naclUtil.encodeBase64","getPermit","getAllPermits","removePermit","encrypt","tfheEncrypt.encrypt_bool","tfheEncrypt.encrypt_uint8","tfheEncrypt.encrypt_uint16","tfheEncrypt.encrypt_uint32","tfheEncrypt.encrypt_uint64","tfheEncrypt.encrypt_uint128","tfheEncrypt.encrypt_uint256","tfheEncrypt.encrypt_address","tfheEncrypt.encrypt","tfhe_encrypt","tfhe_encrypt_bool","tfhe_encrypt_uint8","tfhe_encrypt_uint16","tfhe_encrypt_uint32","tfhe_encrypt_uint64","tfhe_encrypt_uint128","tfhe_encrypt_uint256","tfhe_encrypt_address"],"mappings":"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,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CA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zB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;GACE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;GACzB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;GACE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;GACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;GACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;GACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;GACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;GACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;GACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;GACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;GACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;GACE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;GACE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;GACE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;GACE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;GACE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;GACE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;GAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;EAC3B;AACD;CACA,SAAS,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAChC,GAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,OAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;AACvF;AACA,GAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG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AE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,GAAE,GAAG,IAAI,CAAC,GAAG,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AAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB;AACA;GACE,CAAC,GAAG,CAAC,CAAC;AACR,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,GAAE,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB;AACA,GAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;AACb,GAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;AACb,GAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;AACb,GAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;AACb,GAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;AACb,GAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;AACb,GAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;AACb,GAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;AACb,GAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;AACb,GAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;AACb,GAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AACd,GAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AACd,GAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AACd,GAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AACd,GAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AACd,GAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EACb;AACD;AACA,CAAA,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;GACf,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EACZ;AACD;AACA,CAAA,SAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;AACxB,GAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;GACb,IAAI,CAAC,CAAC;GACN,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;GACrC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7B,KAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACZ,KAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC;GACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACtC;AACD;AACA,CAAA,SAAS,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE;AACvB,GAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;GACb,IAAI,CAAC,CAAC;GACN,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;GACrC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7B,OAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACd,OAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1B;GACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACtC;AACD;AACA,CAAA,SAAS,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;GAClC,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AAC7B,GAAE,IAAI,CAAC,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACrC,GAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;AAClC,OAAM,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;GACjC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,GAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;AACvB,GAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;AACZ,GAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;GACjB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;KACvB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClB;GACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;GACZ,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;AACzB,KAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KACvB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAChB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAChB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACT,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACT,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACT,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACb,KAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,KAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACP,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACT,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACT,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACT,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACb,KAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACP,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACT,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;KACf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACT,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACT,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACT,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACb,KAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACP,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAChB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjB;GACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;KACvB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACb,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACb,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACb,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACd;GACD,IAAI,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;GACzB,IAAI,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3B,GAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;GAClB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACjB,GAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;GACjB,OAAO,CAAC,CAAC;EACV;AACD;AACA,CAAA,SAAS,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE;GACpC,OAAO,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;EACpC;AACD;AACA,CAAA,SAAS,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE;AAClC,GAAE,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACrB,GAAE,OAAO,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACrC;AACD;AACA,CAAA,SAAS,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;GACpC,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;GAC3B,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;GAC3B,OAAO,oBAAoB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;EAC9C;AACD;CACA,IAAI,kBAAkB,GAAG,gBAAgB,CAAC;CAC1C,IAAI,uBAAuB,GAAG,qBAAqB,CAAC;AACpD;AACA,CAAA,SAAS,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;GACpC,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;GAC3B,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/B,GAAE,OAAO,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAC1C;AACD;AACA,CAAA,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;GACzC,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;GAC3B,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/B,GAAE,OAAO,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAC/C;AACD;AACA,CAAA,IAAI,CAAC,GAAG;AACR,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAC,CAAC;AACF;CACA,SAAS,oBAAo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","x_google_ignoreList":[5,6,14,15,16,17,18,19,20,21,22,23,24,25,26,27,30,33,34,35]} \ No newline at end of file diff --git a/dist/fhenix.esm.min.js b/dist/fhenix.esm.min.js deleted file mode 100644 index 00784e5..0000000 --- a/dist/fhenix.esm.min.js +++ /dev/null @@ -1 +0,0 @@ -function _loadWasmModule(sync,filepath,src,imports){function _instantiateOrCompile(source,imports,stream){var instantiateFunc=WebAssembly.instantiate;var compileFunc=WebAssembly.compile;if(imports){return instantiateFunc(source,imports)}else{return compileFunc(source)}}var buf=null;var isNode=typeof process!=="undefined"&&process.versions!=null&&process.versions.node!=null;if(isNode){buf=Buffer.from(src,"base64")}else{var raw=globalThis.atob(src);var rawLength=raw.length;buf=new Uint8Array(new ArrayBuffer(rawLength));for(var i=0;i{throw Error("TextDecoder not available")}};if(typeof TextDecoder!=="undefined"){cachedTextDecoder.decode()}let cachedUint8Memory0=null;function getUint8Memory0(){if(cachedUint8Memory0===null||cachedUint8Memory0.byteLength===0){cachedUint8Memory0=new Uint8Array(wasm.memory.buffer)}return cachedUint8Memory0}function getStringFromWasm0(ptr,len){ptr=ptr>>>0;return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr,ptr+len))}function isLikeNone(x){return x===undefined||x===null}let cachedBigInt64Memory0=null;function getBigInt64Memory0(){if(cachedBigInt64Memory0===null||cachedBigInt64Memory0.byteLength===0){cachedBigInt64Memory0=new BigInt64Array(wasm.memory.buffer)}return cachedBigInt64Memory0}let cachedInt32Memory0=null;function getInt32Memory0(){if(cachedInt32Memory0===null||cachedInt32Memory0.byteLength===0){cachedInt32Memory0=new Int32Array(wasm.memory.buffer)}return cachedInt32Memory0}function debugString(val){const type=typeof val;if(type=="number"||type=="boolean"||val==null){return`${val}`}if(type=="string"){return`"${val}"`}if(type=="symbol"){const description=val.description;if(description==null){return"Symbol"}else{return`Symbol(${description})`}}if(type=="function"){const name=val.name;if(typeof name=="string"&&name.length>0){return`Function(${name})`}else{return"Function"}}if(Array.isArray(val)){const length=val.length;let debug="[";if(length>0){debug+=debugString(val[0])}for(let i=1;i1){className=builtInMatches[1]}else{return toString.call(val)}if(className=="Object"){try{return"Object("+JSON.stringify(val)+")"}catch(_){return"Object"}}if(val instanceof Error){return`${val.name}: ${val.message}\n${val.stack}`}return className}let WASM_VECTOR_LEN=0;const cachedTextEncoder=typeof TextEncoder!=="undefined"?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}};const encodeString=typeof cachedTextEncoder.encodeInto==="function"?function(arg,view){return cachedTextEncoder.encodeInto(arg,view)}:function(arg,view){const buf=cachedTextEncoder.encode(arg);view.set(buf);return{read:arg.length,written:buf.length}};function passStringToWasm0(arg,malloc,realloc){if(realloc===undefined){const buf=cachedTextEncoder.encode(arg);const ptr=malloc(buf.length,1)>>>0;getUint8Memory0().subarray(ptr,ptr+buf.length).set(buf);WASM_VECTOR_LEN=buf.length;return ptr}let len=arg.length;let ptr=malloc(len,1)>>>0;const mem=getUint8Memory0();let offset=0;for(;offset127)break;mem[ptr+offset]=code}if(offset!==len){if(offset!==0){arg=arg.slice(offset)}ptr=realloc(ptr,len,len=offset+arg.length*3,1)>>>0;const view=getUint8Memory0().subarray(ptr+offset,ptr+len);const ret=encodeString(arg,view);offset+=ret.written}WASM_VECTOR_LEN=offset;return ptr}function _assertClass(instance,klass){if(!(instance instanceof klass)){throw new Error(`expected instance of ${klass.name}`)}return instance.ptr}function getArrayU8FromWasm0(ptr,len){ptr=ptr>>>0;return getUint8Memory0().subarray(ptr/1,ptr/1+len)}function passArray8ToWasm0(arg,malloc){const ptr=malloc(arg.length*1,1)>>>0;getUint8Memory0().set(arg,ptr/1);WASM_VECTOR_LEN=arg.length;return ptr}function handleError(f,args){try{return f.apply(this,args)}catch(e){wasm.__wbindgen_exn_store(addHeapObject(e))}}class CompactFheBool{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheBool.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_compactfhebool_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm.compactfhebool_encrypt_with_compact_public_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheBool.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfhebool_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfhebool_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfhebool_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheBool.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfhebool_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfhebool_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheBool.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint128{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint128.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_compactfheuint128_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm.compactfheuint128_encrypt_with_compact_public_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint128_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint128_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint128_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint128_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint16{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint16.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_compactfheuint16_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm.compactfheuint16_encrypt_with_compact_public_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint16_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint16_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint16_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint16_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint160{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint160.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_compactfheuint160_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm.compactfheuint160_encrypt_with_compact_public_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint160_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint160_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint160_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint160_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint256{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint256.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_compactfheuint256_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm.compactfheuint256_encrypt_with_compact_public_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint256_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint256_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint256_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint256_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint32{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint32.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_compactfheuint32_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm.compactfheuint32_encrypt_with_compact_public_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint32_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint32_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint32_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint32_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint64{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint64.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_compactfheuint64_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm.compactfheuint64_encrypt_with_compact_public_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint64_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint64_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint64_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint64_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint8{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint8.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_compactfheuint8_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm.compactfheuint8_encrypt_with_compact_public_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint8_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint8_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint8_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint8_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheBool{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheBool.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fhebool_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fhebool_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fhebool_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fhebool_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fhebool_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fhebool_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0!==0}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fhebool_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fhebool_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fhebool_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fhebool_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheInt128{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt128.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheint128_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint128_encrypt_with_client_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheint128_encrypt_with_public_key(retptr,addHeapObject(value),public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheint128_encrypt_with_compressed_public_key(retptr,addHeapObject(value),compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheint128_encrypt_with_compact_public_key(retptr,addHeapObject(value),compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint128_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return takeObject(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint128_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint128_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint128_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint128_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheInt16{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt16.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheint16_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint16_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheint16_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheint16_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheint16_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint16_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint16_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint16_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint16_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint16_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheInt160{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt160.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheint160_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint160_encrypt_with_client_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheint160_encrypt_with_public_key(retptr,addHeapObject(value),public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheint160_encrypt_with_compressed_public_key(retptr,addHeapObject(value),compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheint160_encrypt_with_compact_public_key(retptr,addHeapObject(value),compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint160_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return takeObject(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint160_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint160_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint160_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint160_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheInt256{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt256.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheint256_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint256_encrypt_with_client_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheint256_encrypt_with_public_key(retptr,addHeapObject(value),public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheint256_encrypt_with_compressed_public_key(retptr,addHeapObject(value),compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheint256_encrypt_with_compact_public_key(retptr,addHeapObject(value),compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint256_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return takeObject(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint256_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint256_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint256_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint256_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheInt32{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt32.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheint32_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint32_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheint32_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheint32_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheint32_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint32_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint32_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint32_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint32_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint32_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheInt64{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt64.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheint64_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint64_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheint64_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheint64_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheint64_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint64_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getBigInt64Memory0()[retptr/8+0];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}return r0}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint64_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint64_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint64_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint64_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheInt8{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt8.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheint8_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint8_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheint8_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheint8_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheint8_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint8_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint8_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint8_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint8_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint8_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheUint128{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint128.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheuint128_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint128_encrypt_with_client_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheuint128_encrypt_with_public_key(retptr,addHeapObject(value),public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheuint128_encrypt_with_compressed_public_key(retptr,addHeapObject(value),compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheuint128_encrypt_with_compact_public_key(retptr,addHeapObject(value),compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint128_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return takeObject(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint128_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint128_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint128_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint128_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheUint16{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint16.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheuint16_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint16_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheuint16_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheuint16_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheuint16_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint16_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint16_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint16_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint16_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint16_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheUint160{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint160.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheuint160_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint160_encrypt_with_client_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheuint160_encrypt_with_public_key(retptr,addHeapObject(value),public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheuint160_encrypt_with_compressed_public_key(retptr,addHeapObject(value),compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheuint160_encrypt_with_compact_public_key(retptr,addHeapObject(value),compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint160_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return takeObject(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint160_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint160_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint160_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint160_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheUint256{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint256.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheuint256_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint256_encrypt_with_client_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheuint256_encrypt_with_public_key(retptr,addHeapObject(value),public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheuint256_encrypt_with_compressed_public_key(retptr,addHeapObject(value),compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheuint256_encrypt_with_compact_public_key(retptr,addHeapObject(value),compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint256_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return takeObject(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint256_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint256_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint256_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint256_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheUint32{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint32.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheuint32_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint32_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheuint32_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheuint32_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheuint32_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint32_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0>>>0}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint32_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint32_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint32_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint32_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheUint64{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint64.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheuint64_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint64_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheuint64_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheuint64_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheuint64_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint64_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getBigInt64Memory0()[retptr/8+0];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}return BigInt.asUintN(64,r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint64_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint64_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint64_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint64_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheUint8{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint8.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheuint8_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint8_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheuint8_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheuint8_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheuint8_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint8_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint8_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint8_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint8_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint8_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class TfheClientKey{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(TfheClientKey.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_tfheclientkey_free(ptr)}static generate(config){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(config,TfheConfig);wasm.tfheclientkey_generate(retptr,config.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheClientKey.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static generate_with_seed(config,seed){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(config,TfheConfig);wasm.tfheclientkey_generate_with_seed(retptr,config.__wbg_ptr,addHeapObject(seed));var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheClientKey.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.tfheclientkey_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.tfheclientkey_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheClientKey.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class TfheCompactPublicKey{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(TfheCompactPublicKey.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_tfhecompactpublickey_free(ptr)}static new(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.tfhecompactpublickey_new(retptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheCompactPublicKey.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.tfhecompactpublickey_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.tfhecompactpublickey_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheCompactPublicKey.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class TfheCompressedPublicKey{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(TfheCompressedPublicKey.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_tfhecompressedpublickey_free(ptr)}static new(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.tfhecompressedpublickey_new(retptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheCompressedPublicKey.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decompress(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.tfhecompressedpublickey_decompress(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfhePublicKey.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.tfhecompressedpublickey_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.tfhecompressedpublickey_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheCompressedPublicKey.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class TfheConfig{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(TfheConfig.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_tfheconfig_free(ptr)}}class TfheConfigBuilder{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(TfheConfigBuilder.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_tfheconfigbuilder_free(ptr)}static default(){const ret=wasm.tfheconfigbuilder_default();return TfheConfigBuilder.__wrap(ret)}static default_with_small_encryption(){const ret=wasm.tfheconfigbuilder_default_with_small_encryption();return TfheConfigBuilder.__wrap(ret)}static default_with_big_encryption(){const ret=wasm.tfheconfigbuilder_default();return TfheConfigBuilder.__wrap(ret)}build(){const ptr=this.__destroy_into_raw();const ret=wasm.tfheconfigbuilder_build(ptr);return TfheConfig.__wrap(ret)}}class TfhePublicKey{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(TfhePublicKey.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_tfhepublickey_free(ptr)}static new(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.tfhepublickey_new(retptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfhePublicKey.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.tfhepublickey_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.tfhepublickey_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfhePublicKey.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}async function __wbg_load(module,imports){if(typeof Response==="function"&&module instanceof Response){if(typeof WebAssembly.instantiateStreaming==="function"){try{return await WebAssembly.instantiateStreaming(module,imports)}catch(e){if(module.headers.get("Content-Type")!="application/wasm"){console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",e)}else{throw e}}}const bytes=await module.arrayBuffer();return await WebAssembly.instantiate(bytes,imports)}else{const instance=await WebAssembly.instantiate(module,imports);if(instance instanceof WebAssembly.Instance){return{instance:instance,module:module}}else{return instance}}}function __wbg_get_imports(){const imports={};imports.wbg={};imports.wbg.__wbindgen_bigint_from_u64=function(arg0){const ret=BigInt.asUintN(64,arg0);return addHeapObject(ret)};imports.wbg.__wbindgen_shr=function(arg0,arg1){const ret=getObject(arg0)>>getObject(arg1);return addHeapObject(ret)};imports.wbg.__wbindgen_object_drop_ref=function(arg0){takeObject(arg0)};imports.wbg.__wbindgen_bigint_from_i64=function(arg0){const ret=arg0;return addHeapObject(ret)};imports.wbg.__wbindgen_jsval_eq=function(arg0,arg1){const ret=getObject(arg0)===getObject(arg1);return ret};imports.wbg.__wbindgen_error_new=function(arg0,arg1){const ret=new Error(getStringFromWasm0(arg0,arg1));return addHeapObject(ret)};imports.wbg.__wbindgen_bigint_from_i128=function(arg0,arg1){const ret=arg0<>>0,arg2>>>0);return addHeapObject(ret)};imports.wbg.__wbg_new_bc5d9aad3f9ac80e=function(arg0){const ret=new Uint8Array(getObject(arg0));return addHeapObject(ret)};imports.wbg.__wbg_set_4b3aa8445ac1e91c=function(arg0,arg1,arg2){getObject(arg0).set(getObject(arg1),arg2>>>0)};imports.wbg.__wbg_newwithlength_89eca18f2603a999=function(arg0){const ret=new Uint8Array(arg0>>>0);return addHeapObject(ret)};imports.wbg.__wbg_subarray_7649d027b2b141b3=function(arg0,arg1,arg2){const ret=getObject(arg0).subarray(arg1>>>0,arg2>>>0);return addHeapObject(ret)};imports.wbg.__wbindgen_object_clone_ref=function(arg0){const ret=getObject(arg0);return addHeapObject(ret)};imports.wbg.__wbindgen_bigint_get_as_i64=function(arg0,arg1){const v=getObject(arg1);const ret=typeof v==="bigint"?v:undefined;getBigInt64Memory0()[arg0/8+1]=isLikeNone(ret)?BigInt(0):ret;getInt32Memory0()[arg0/4+0]=!isLikeNone(ret)};imports.wbg.__wbindgen_debug_string=function(arg0,arg1){const ret=debugString(getObject(arg1));const ptr1=passStringToWasm0(ret,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len1=WASM_VECTOR_LEN;getInt32Memory0()[arg0/4+1]=len1;getInt32Memory0()[arg0/4+0]=ptr1};imports.wbg.__wbindgen_throw=function(arg0,arg1){throw new Error(getStringFromWasm0(arg0,arg1))};imports.wbg.__wbindgen_memory=function(){const ret=wasm.memory;return addHeapObject(ret)};return imports}function __wbg_finalize_init(instance,module){wasm=instance.exports;__wbg_init.__wbindgen_wasm_module=module;cachedBigInt64Memory0=null;cachedInt32Memory0=null;cachedUint8Memory0=null;return wasm}async function __wbg_init(input){if(wasm!==undefined)return wasm;const imports=__wbg_get_imports();if(typeof input==="string"||typeof Request==="function"&&input instanceof Request||typeof URL==="function"&&input instanceof URL){input=fetch(input)}const{instance,module}=await __wbg_load(await input,imports);return __wbg_finalize_init(instance,module)}let initialized;const initFhevm=async()=>{if(!initialized){try{initialized=await __wbg_init(wasm$1)}catch(_){initialized=await __wbg_init(wasm$1())}}return initialized};const asyncInitFhevm=async()=>{try{await initFhevm()}catch(err){throw new Error(`Error initializing FhenixClient ${err}`)}};function assertIs(is,expected,value){if(!is){throw new Error(`Expected value which is \`${expected}\`, received value of type \`${typeof value}\`.`)}}function isString(value){const is=typeof value==="string";assertIs(is,"string",value)}function isPlainObject$1(value){if(typeof value!=="object"||value===null){return false}const prototype=Object.getPrototypeOf(value);const is=(prototype===null||prototype===Object.prototype||Object.getPrototypeOf(prototype)===null)&&!(Symbol.toStringTag in value)&&!(Symbol.iterator in value);assertIs(is,"plain object",value);return true}function isBigIntOrHexString(value){const is=typeof value==="bigint"||typeof value==="string";assertIs(is,"bigint or hex string",value)}function isNumber(value){const is=typeof value==="number"&&!Number.isNaN(value);assertIs(is,"number",value)}function isBigIntOrNumber(value){const is=typeof value==="bigint";if(!is){try{isNumber(value)}catch(e){throw new Error(`Value ${value} is not a number or bigint: ${typeof value}`)}}}const ValidateUintInRange=(value,max,min)=>{isNumber(value);if(value>max||value{const cleanString=hexString.length%2===1?`0${hexString}`:hexString;const arr=cleanString.replace(/^0x/,"").match(/.{1,2}/g);if(!arr)return new Uint8Array;return new Uint8Array(arr.map(byte=>parseInt(byte,16)))};const toHexString$1=bytes=>bytes.reduce((str,byte)=>str+byte.toString(16).padStart(2,"0"),"");function toBigInt(value){return ethersToBigInt(value)}function toBeArray(value){return ethersToBeArray(value)}function isAddress$1(address){if(!_isAddress(address)){throw new Error(`Address ${address} is not valid EVM address`)}}function _isAddress(value){try{if(!value.startsWith("0x")){return false}else if(value.length!==42){return false}return true}catch(error){return false}}const Nibbles="0123456789abcdef";const maxValue=9007199254740991;const BN_0$1=BigInt(0);function ethersToBigInt(value){if(value instanceof Uint8Array){let result="0x0";for(const v of value){result+=Nibbles[v>>4];result+=Nibbles[v&15]}return BigInt(result)}return getBigInt(value)}function ethersToBeArray(_value){const value=getUint(_value);if(value===BN_0$1){return new Uint8Array([])}let hex=value.toString(16);if(hex.length%2){hex="0"+hex}const result=new Uint8Array(hex.length/2);for(let i=0;i=BN_0$1,"unsigned value cannot be negative");return result}function getBigInt(value){switch(typeof value){case"bigint":return value;case"number":assertArgument$1(Number.isInteger(value),"underflow");assertArgument$1(value>=-maxValue&&value<=maxValue,"overflow");return BigInt(value);case"string":try{if(value===""){throw new Error("empty string")}if(value[0]==="-"&&value[1]!=="-"){return-BigInt(value.substring(1))}return BigInt(value)}catch(e){assertArgument$1(false,`invalid BigNumberish string: ${e.message}`)}}assertArgument$1(false,"invalid BigNumberish value")}function assertArgument$1(check,message){if(!check){throw new Error(message)}}function toABIEncodedUint32(value){if(value<0||value>4294967295){throw new RangeError("Number must be between 0 and 2^32 - 1.")}return value.toString(16).padStart(64,"0")}const stringToUint8Array=value=>{return new Uint8Array(value.split("").map(c=>c.charCodeAt(0)))};function bigintToUint8Array(bigNum){const byteLength=32;const byteArray=new Uint8Array(byteLength);const mask=BigInt(255);for(let i=0;i>=BigInt(8)}return byteArray}const chainIsHardhat=chainId=>{if(chainId==null)return false;return parseInt(chainId)===31337};const hardhatMockUnseal=value=>{let result=BigInt(0);for(const byteArrayItem of stringToUint8Array(value)){result=(result<({data:bigintToUint8Array(BigInt(value)),securityZone:securityZone||0});var EncryptionTypes;(function(EncryptionTypes){EncryptionTypes["bool"]="bool";EncryptionTypes["uint8"]="uint8";EncryptionTypes["uint16"]="uint16";EncryptionTypes["uint32"]="uint32";EncryptionTypes["uint64"]="uint64";EncryptionTypes["uint128"]="uint128";EncryptionTypes["uint256"]="uint256";EncryptionTypes["address"]="address"})(EncryptionTypes||(EncryptionTypes={}));function determineRequestMethod(provider){if("request"in provider&&typeof provider.request==="function"){return(p,method,params)=>p.request({method:method,params:params})}else if("send"in provider&&typeof provider.send==="function"){return(p,method,params)=>p.send(method,params)}else{throw new Error("Received unsupported provider. 'send' or 'request' method not found")}}function determineRequestSigner(provider){if("getSigner"in provider&&typeof provider.getSigner==="function"){return p=>p.getSigner()}else{throw new Error("The supplied provider cannot get a signer")}}var commonjsGlobal=typeof globalThis!=="undefined"?globalThis:typeof window!=="undefined"?window:typeof global!=="undefined"?global:typeof self!=="undefined"?self:{};function getAugmentedNamespace(n){if(n.__esModule)return n;var f=n.default;if(typeof f=="function"){var a=function a(){if(this instanceof a){return Reflect.construct(f,arguments,this.constructor)}return f.apply(this,arguments)};a.prototype=f.prototype}else a={};Object.defineProperty(a,"__esModule",{value:true});Object.keys(n).forEach(function(k){var d=Object.getOwnPropertyDescriptor(n,k);Object.defineProperty(a,k,d.get?d:{enumerable:true,get:function(){return n[k]}})});return a}function commonjsRequire(path){throw new Error('Could not dynamically require "'+path+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var naclFast={exports:{}};var _nodeResolve_empty={};var _nodeResolve_empty$1=Object.freeze({__proto__:null,default:_nodeResolve_empty});var require$$0=getAugmentedNamespace(_nodeResolve_empty$1);(function(module){(function(nacl){var gf=function(init){var i,r=new Float64Array(16);if(init)for(i=0;i>24&255;x[i+1]=h>>16&255;x[i+2]=h>>8&255;x[i+3]=h&255;x[i+4]=l>>24&255;x[i+5]=l>>16&255;x[i+6]=l>>8&255;x[i+7]=l&255}function vn(x,xi,y,yi,n){var i,d=0;for(i=0;i>>8)-1}function crypto_verify_16(x,xi,y,yi){return vn(x,xi,y,yi,16)}function crypto_verify_32(x,xi,y,yi){return vn(x,xi,y,yi,32)}function core_salsa20(o,p,k,c){var j0=c[0]&255|(c[1]&255)<<8|(c[2]&255)<<16|(c[3]&255)<<24,j1=k[0]&255|(k[1]&255)<<8|(k[2]&255)<<16|(k[3]&255)<<24,j2=k[4]&255|(k[5]&255)<<8|(k[6]&255)<<16|(k[7]&255)<<24,j3=k[8]&255|(k[9]&255)<<8|(k[10]&255)<<16|(k[11]&255)<<24,j4=k[12]&255|(k[13]&255)<<8|(k[14]&255)<<16|(k[15]&255)<<24,j5=c[4]&255|(c[5]&255)<<8|(c[6]&255)<<16|(c[7]&255)<<24,j6=p[0]&255|(p[1]&255)<<8|(p[2]&255)<<16|(p[3]&255)<<24,j7=p[4]&255|(p[5]&255)<<8|(p[6]&255)<<16|(p[7]&255)<<24,j8=p[8]&255|(p[9]&255)<<8|(p[10]&255)<<16|(p[11]&255)<<24,j9=p[12]&255|(p[13]&255)<<8|(p[14]&255)<<16|(p[15]&255)<<24,j10=c[8]&255|(c[9]&255)<<8|(c[10]&255)<<16|(c[11]&255)<<24,j11=k[16]&255|(k[17]&255)<<8|(k[18]&255)<<16|(k[19]&255)<<24,j12=k[20]&255|(k[21]&255)<<8|(k[22]&255)<<16|(k[23]&255)<<24,j13=k[24]&255|(k[25]&255)<<8|(k[26]&255)<<16|(k[27]&255)<<24,j14=k[28]&255|(k[29]&255)<<8|(k[30]&255)<<16|(k[31]&255)<<24,j15=c[12]&255|(c[13]&255)<<8|(c[14]&255)<<16|(c[15]&255)<<24;var x0=j0,x1=j1,x2=j2,x3=j3,x4=j4,x5=j5,x6=j6,x7=j7,x8=j8,x9=j9,x10=j10,x11=j11,x12=j12,x13=j13,x14=j14,x15=j15,u;for(var i=0;i<20;i+=2){u=x0+x12|0;x4^=u<<7|u>>>32-7;u=x4+x0|0;x8^=u<<9|u>>>32-9;u=x8+x4|0;x12^=u<<13|u>>>32-13;u=x12+x8|0;x0^=u<<18|u>>>32-18;u=x5+x1|0;x9^=u<<7|u>>>32-7;u=x9+x5|0;x13^=u<<9|u>>>32-9;u=x13+x9|0;x1^=u<<13|u>>>32-13;u=x1+x13|0;x5^=u<<18|u>>>32-18;u=x10+x6|0;x14^=u<<7|u>>>32-7;u=x14+x10|0;x2^=u<<9|u>>>32-9;u=x2+x14|0;x6^=u<<13|u>>>32-13;u=x6+x2|0;x10^=u<<18|u>>>32-18;u=x15+x11|0;x3^=u<<7|u>>>32-7;u=x3+x15|0;x7^=u<<9|u>>>32-9;u=x7+x3|0;x11^=u<<13|u>>>32-13;u=x11+x7|0;x15^=u<<18|u>>>32-18;u=x0+x3|0;x1^=u<<7|u>>>32-7;u=x1+x0|0;x2^=u<<9|u>>>32-9;u=x2+x1|0;x3^=u<<13|u>>>32-13;u=x3+x2|0;x0^=u<<18|u>>>32-18;u=x5+x4|0;x6^=u<<7|u>>>32-7;u=x6+x5|0;x7^=u<<9|u>>>32-9;u=x7+x6|0;x4^=u<<13|u>>>32-13;u=x4+x7|0;x5^=u<<18|u>>>32-18;u=x10+x9|0;x11^=u<<7|u>>>32-7;u=x11+x10|0;x8^=u<<9|u>>>32-9;u=x8+x11|0;x9^=u<<13|u>>>32-13;u=x9+x8|0;x10^=u<<18|u>>>32-18;u=x15+x14|0;x12^=u<<7|u>>>32-7;u=x12+x15|0;x13^=u<<9|u>>>32-9;u=x13+x12|0;x14^=u<<13|u>>>32-13;u=x14+x13|0;x15^=u<<18|u>>>32-18}x0=x0+j0|0;x1=x1+j1|0;x2=x2+j2|0;x3=x3+j3|0;x4=x4+j4|0;x5=x5+j5|0;x6=x6+j6|0;x7=x7+j7|0;x8=x8+j8|0;x9=x9+j9|0;x10=x10+j10|0;x11=x11+j11|0;x12=x12+j12|0;x13=x13+j13|0;x14=x14+j14|0;x15=x15+j15|0;o[0]=x0>>>0&255;o[1]=x0>>>8&255;o[2]=x0>>>16&255;o[3]=x0>>>24&255;o[4]=x1>>>0&255;o[5]=x1>>>8&255;o[6]=x1>>>16&255;o[7]=x1>>>24&255;o[8]=x2>>>0&255;o[9]=x2>>>8&255;o[10]=x2>>>16&255;o[11]=x2>>>24&255;o[12]=x3>>>0&255;o[13]=x3>>>8&255;o[14]=x3>>>16&255;o[15]=x3>>>24&255;o[16]=x4>>>0&255;o[17]=x4>>>8&255;o[18]=x4>>>16&255;o[19]=x4>>>24&255;o[20]=x5>>>0&255;o[21]=x5>>>8&255;o[22]=x5>>>16&255;o[23]=x5>>>24&255;o[24]=x6>>>0&255;o[25]=x6>>>8&255;o[26]=x6>>>16&255;o[27]=x6>>>24&255;o[28]=x7>>>0&255;o[29]=x7>>>8&255;o[30]=x7>>>16&255;o[31]=x7>>>24&255;o[32]=x8>>>0&255;o[33]=x8>>>8&255;o[34]=x8>>>16&255;o[35]=x8>>>24&255;o[36]=x9>>>0&255;o[37]=x9>>>8&255;o[38]=x9>>>16&255;o[39]=x9>>>24&255;o[40]=x10>>>0&255;o[41]=x10>>>8&255;o[42]=x10>>>16&255;o[43]=x10>>>24&255;o[44]=x11>>>0&255;o[45]=x11>>>8&255;o[46]=x11>>>16&255;o[47]=x11>>>24&255;o[48]=x12>>>0&255;o[49]=x12>>>8&255;o[50]=x12>>>16&255;o[51]=x12>>>24&255;o[52]=x13>>>0&255;o[53]=x13>>>8&255;o[54]=x13>>>16&255;o[55]=x13>>>24&255;o[56]=x14>>>0&255;o[57]=x14>>>8&255;o[58]=x14>>>16&255;o[59]=x14>>>24&255;o[60]=x15>>>0&255;o[61]=x15>>>8&255;o[62]=x15>>>16&255;o[63]=x15>>>24&255}function core_hsalsa20(o,p,k,c){var j0=c[0]&255|(c[1]&255)<<8|(c[2]&255)<<16|(c[3]&255)<<24,j1=k[0]&255|(k[1]&255)<<8|(k[2]&255)<<16|(k[3]&255)<<24,j2=k[4]&255|(k[5]&255)<<8|(k[6]&255)<<16|(k[7]&255)<<24,j3=k[8]&255|(k[9]&255)<<8|(k[10]&255)<<16|(k[11]&255)<<24,j4=k[12]&255|(k[13]&255)<<8|(k[14]&255)<<16|(k[15]&255)<<24,j5=c[4]&255|(c[5]&255)<<8|(c[6]&255)<<16|(c[7]&255)<<24,j6=p[0]&255|(p[1]&255)<<8|(p[2]&255)<<16|(p[3]&255)<<24,j7=p[4]&255|(p[5]&255)<<8|(p[6]&255)<<16|(p[7]&255)<<24,j8=p[8]&255|(p[9]&255)<<8|(p[10]&255)<<16|(p[11]&255)<<24,j9=p[12]&255|(p[13]&255)<<8|(p[14]&255)<<16|(p[15]&255)<<24,j10=c[8]&255|(c[9]&255)<<8|(c[10]&255)<<16|(c[11]&255)<<24,j11=k[16]&255|(k[17]&255)<<8|(k[18]&255)<<16|(k[19]&255)<<24,j12=k[20]&255|(k[21]&255)<<8|(k[22]&255)<<16|(k[23]&255)<<24,j13=k[24]&255|(k[25]&255)<<8|(k[26]&255)<<16|(k[27]&255)<<24,j14=k[28]&255|(k[29]&255)<<8|(k[30]&255)<<16|(k[31]&255)<<24,j15=c[12]&255|(c[13]&255)<<8|(c[14]&255)<<16|(c[15]&255)<<24;var x0=j0,x1=j1,x2=j2,x3=j3,x4=j4,x5=j5,x6=j6,x7=j7,x8=j8,x9=j9,x10=j10,x11=j11,x12=j12,x13=j13,x14=j14,x15=j15,u;for(var i=0;i<20;i+=2){u=x0+x12|0;x4^=u<<7|u>>>32-7;u=x4+x0|0;x8^=u<<9|u>>>32-9;u=x8+x4|0;x12^=u<<13|u>>>32-13;u=x12+x8|0;x0^=u<<18|u>>>32-18;u=x5+x1|0;x9^=u<<7|u>>>32-7;u=x9+x5|0;x13^=u<<9|u>>>32-9;u=x13+x9|0;x1^=u<<13|u>>>32-13;u=x1+x13|0;x5^=u<<18|u>>>32-18;u=x10+x6|0;x14^=u<<7|u>>>32-7;u=x14+x10|0;x2^=u<<9|u>>>32-9;u=x2+x14|0;x6^=u<<13|u>>>32-13;u=x6+x2|0;x10^=u<<18|u>>>32-18;u=x15+x11|0;x3^=u<<7|u>>>32-7;u=x3+x15|0;x7^=u<<9|u>>>32-9;u=x7+x3|0;x11^=u<<13|u>>>32-13;u=x11+x7|0;x15^=u<<18|u>>>32-18;u=x0+x3|0;x1^=u<<7|u>>>32-7;u=x1+x0|0;x2^=u<<9|u>>>32-9;u=x2+x1|0;x3^=u<<13|u>>>32-13;u=x3+x2|0;x0^=u<<18|u>>>32-18;u=x5+x4|0;x6^=u<<7|u>>>32-7;u=x6+x5|0;x7^=u<<9|u>>>32-9;u=x7+x6|0;x4^=u<<13|u>>>32-13;u=x4+x7|0;x5^=u<<18|u>>>32-18;u=x10+x9|0;x11^=u<<7|u>>>32-7;u=x11+x10|0;x8^=u<<9|u>>>32-9;u=x8+x11|0;x9^=u<<13|u>>>32-13;u=x9+x8|0;x10^=u<<18|u>>>32-18;u=x15+x14|0;x12^=u<<7|u>>>32-7;u=x12+x15|0;x13^=u<<9|u>>>32-9;u=x13+x12|0;x14^=u<<13|u>>>32-13;u=x14+x13|0;x15^=u<<18|u>>>32-18}o[0]=x0>>>0&255;o[1]=x0>>>8&255;o[2]=x0>>>16&255;o[3]=x0>>>24&255;o[4]=x5>>>0&255;o[5]=x5>>>8&255;o[6]=x5>>>16&255;o[7]=x5>>>24&255;o[8]=x10>>>0&255;o[9]=x10>>>8&255;o[10]=x10>>>16&255;o[11]=x10>>>24&255;o[12]=x15>>>0&255;o[13]=x15>>>8&255;o[14]=x15>>>16&255;o[15]=x15>>>24&255;o[16]=x6>>>0&255;o[17]=x6>>>8&255;o[18]=x6>>>16&255;o[19]=x6>>>24&255;o[20]=x7>>>0&255;o[21]=x7>>>8&255;o[22]=x7>>>16&255;o[23]=x7>>>24&255;o[24]=x8>>>0&255;o[25]=x8>>>8&255;o[26]=x8>>>16&255;o[27]=x8>>>24&255;o[28]=x9>>>0&255;o[29]=x9>>>8&255;o[30]=x9>>>16&255;o[31]=x9>>>24&255}function crypto_core_salsa20(out,inp,k,c){core_salsa20(out,inp,k,c)}function crypto_core_hsalsa20(out,inp,k,c){core_hsalsa20(out,inp,k,c)}var sigma=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k){var z=new Uint8Array(16),x=new Uint8Array(64);var u,i;for(i=0;i<16;i++)z[i]=0;for(i=0;i<8;i++)z[i]=n[i];while(b>=64){crypto_core_salsa20(x,z,k,sigma);for(i=0;i<64;i++)c[cpos+i]=m[mpos+i]^x[i];u=1;for(i=8;i<16;i++){u=u+(z[i]&255)|0;z[i]=u&255;u>>>=8}b-=64;cpos+=64;mpos+=64}if(b>0){crypto_core_salsa20(x,z,k,sigma);for(i=0;i=64){crypto_core_salsa20(x,z,k,sigma);for(i=0;i<64;i++)c[cpos+i]=x[i];u=1;for(i=8;i<16;i++){u=u+(z[i]&255)|0;z[i]=u&255;u>>>=8}b-=64;cpos+=64}if(b>0){crypto_core_salsa20(x,z,k,sigma);for(i=0;i>>13|t1<<3)&8191;t2=key[4]&255|(key[5]&255)<<8;this.r[2]=(t1>>>10|t2<<6)&7939;t3=key[6]&255|(key[7]&255)<<8;this.r[3]=(t2>>>7|t3<<9)&8191;t4=key[8]&255|(key[9]&255)<<8;this.r[4]=(t3>>>4|t4<<12)&255;this.r[5]=t4>>>1&8190;t5=key[10]&255|(key[11]&255)<<8;this.r[6]=(t4>>>14|t5<<2)&8191;t6=key[12]&255|(key[13]&255)<<8;this.r[7]=(t5>>>11|t6<<5)&8065;t7=key[14]&255|(key[15]&255)<<8;this.r[8]=(t6>>>8|t7<<8)&8191;this.r[9]=t7>>>5&127;this.pad[0]=key[16]&255|(key[17]&255)<<8;this.pad[1]=key[18]&255|(key[19]&255)<<8;this.pad[2]=key[20]&255|(key[21]&255)<<8;this.pad[3]=key[22]&255|(key[23]&255)<<8;this.pad[4]=key[24]&255|(key[25]&255)<<8;this.pad[5]=key[26]&255|(key[27]&255)<<8;this.pad[6]=key[28]&255|(key[29]&255)<<8;this.pad[7]=key[30]&255|(key[31]&255)<<8};poly1305.prototype.blocks=function(m,mpos,bytes){var hibit=this.fin?0:1<<11;var t0,t1,t2,t3,t4,t5,t6,t7,c;var d0,d1,d2,d3,d4,d5,d6,d7,d8,d9;var h0=this.h[0],h1=this.h[1],h2=this.h[2],h3=this.h[3],h4=this.h[4],h5=this.h[5],h6=this.h[6],h7=this.h[7],h8=this.h[8],h9=this.h[9];var r0=this.r[0],r1=this.r[1],r2=this.r[2],r3=this.r[3],r4=this.r[4],r5=this.r[5],r6=this.r[6],r7=this.r[7],r8=this.r[8],r9=this.r[9];while(bytes>=16){t0=m[mpos+0]&255|(m[mpos+1]&255)<<8;h0+=t0&8191;t1=m[mpos+2]&255|(m[mpos+3]&255)<<8;h1+=(t0>>>13|t1<<3)&8191;t2=m[mpos+4]&255|(m[mpos+5]&255)<<8;h2+=(t1>>>10|t2<<6)&8191;t3=m[mpos+6]&255|(m[mpos+7]&255)<<8;h3+=(t2>>>7|t3<<9)&8191;t4=m[mpos+8]&255|(m[mpos+9]&255)<<8;h4+=(t3>>>4|t4<<12)&8191;h5+=t4>>>1&8191;t5=m[mpos+10]&255|(m[mpos+11]&255)<<8;h6+=(t4>>>14|t5<<2)&8191;t6=m[mpos+12]&255|(m[mpos+13]&255)<<8;h7+=(t5>>>11|t6<<5)&8191;t7=m[mpos+14]&255|(m[mpos+15]&255)<<8;h8+=(t6>>>8|t7<<8)&8191;h9+=t7>>>5|hibit;c=0;d0=c;d0+=h0*r0;d0+=h1*(5*r9);d0+=h2*(5*r8);d0+=h3*(5*r7);d0+=h4*(5*r6);c=d0>>>13;d0&=8191;d0+=h5*(5*r5);d0+=h6*(5*r4);d0+=h7*(5*r3);d0+=h8*(5*r2);d0+=h9*(5*r1);c+=d0>>>13;d0&=8191;d1=c;d1+=h0*r1;d1+=h1*r0;d1+=h2*(5*r9);d1+=h3*(5*r8);d1+=h4*(5*r7);c=d1>>>13;d1&=8191;d1+=h5*(5*r6);d1+=h6*(5*r5);d1+=h7*(5*r4);d1+=h8*(5*r3);d1+=h9*(5*r2);c+=d1>>>13;d1&=8191;d2=c;d2+=h0*r2;d2+=h1*r1;d2+=h2*r0;d2+=h3*(5*r9);d2+=h4*(5*r8);c=d2>>>13;d2&=8191;d2+=h5*(5*r7);d2+=h6*(5*r6);d2+=h7*(5*r5);d2+=h8*(5*r4);d2+=h9*(5*r3);c+=d2>>>13;d2&=8191;d3=c;d3+=h0*r3;d3+=h1*r2;d3+=h2*r1;d3+=h3*r0;d3+=h4*(5*r9);c=d3>>>13;d3&=8191;d3+=h5*(5*r8);d3+=h6*(5*r7);d3+=h7*(5*r6);d3+=h8*(5*r5);d3+=h9*(5*r4);c+=d3>>>13;d3&=8191;d4=c;d4+=h0*r4;d4+=h1*r3;d4+=h2*r2;d4+=h3*r1;d4+=h4*r0;c=d4>>>13;d4&=8191;d4+=h5*(5*r9);d4+=h6*(5*r8);d4+=h7*(5*r7);d4+=h8*(5*r6);d4+=h9*(5*r5);c+=d4>>>13;d4&=8191;d5=c;d5+=h0*r5;d5+=h1*r4;d5+=h2*r3;d5+=h3*r2;d5+=h4*r1;c=d5>>>13;d5&=8191;d5+=h5*r0;d5+=h6*(5*r9);d5+=h7*(5*r8);d5+=h8*(5*r7);d5+=h9*(5*r6);c+=d5>>>13;d5&=8191;d6=c;d6+=h0*r6;d6+=h1*r5;d6+=h2*r4;d6+=h3*r3;d6+=h4*r2;c=d6>>>13;d6&=8191;d6+=h5*r1;d6+=h6*r0;d6+=h7*(5*r9);d6+=h8*(5*r8);d6+=h9*(5*r7);c+=d6>>>13;d6&=8191;d7=c;d7+=h0*r7;d7+=h1*r6;d7+=h2*r5;d7+=h3*r4;d7+=h4*r3;c=d7>>>13;d7&=8191;d7+=h5*r2;d7+=h6*r1;d7+=h7*r0;d7+=h8*(5*r9);d7+=h9*(5*r8);c+=d7>>>13;d7&=8191;d8=c;d8+=h0*r8;d8+=h1*r7;d8+=h2*r6;d8+=h3*r5;d8+=h4*r4;c=d8>>>13;d8&=8191;d8+=h5*r3;d8+=h6*r2;d8+=h7*r1;d8+=h8*r0;d8+=h9*(5*r9);c+=d8>>>13;d8&=8191;d9=c;d9+=h0*r9;d9+=h1*r8;d9+=h2*r7;d9+=h3*r6;d9+=h4*r5;c=d9>>>13;d9&=8191;d9+=h5*r4;d9+=h6*r3;d9+=h7*r2;d9+=h8*r1;d9+=h9*r0;c+=d9>>>13;d9&=8191;c=(c<<2)+c|0;c=c+d0|0;d0=c&8191;c=c>>>13;d1+=c;h0=d0;h1=d1;h2=d2;h3=d3;h4=d4;h5=d5;h6=d6;h7=d7;h8=d8;h9=d9;mpos+=16;bytes-=16}this.h[0]=h0;this.h[1]=h1;this.h[2]=h2;this.h[3]=h3;this.h[4]=h4;this.h[5]=h5;this.h[6]=h6;this.h[7]=h7;this.h[8]=h8;this.h[9]=h9};poly1305.prototype.finish=function(mac,macpos){var g=new Uint16Array(10);var c,mask,f,i;if(this.leftover){i=this.leftover;this.buffer[i++]=1;for(;i<16;i++)this.buffer[i]=0;this.fin=1;this.blocks(this.buffer,0,16)}c=this.h[1]>>>13;this.h[1]&=8191;for(i=2;i<10;i++){this.h[i]+=c;c=this.h[i]>>>13;this.h[i]&=8191}this.h[0]+=c*5;c=this.h[0]>>>13;this.h[0]&=8191;this.h[1]+=c;c=this.h[1]>>>13;this.h[1]&=8191;this.h[2]+=c;g[0]=this.h[0]+5;c=g[0]>>>13;g[0]&=8191;for(i=1;i<10;i++){g[i]=this.h[i]+c;c=g[i]>>>13;g[i]&=8191}g[9]-=1<<13;mask=(c^1)-1;for(i=0;i<10;i++)g[i]&=mask;mask=~mask;for(i=0;i<10;i++)this.h[i]=this.h[i]&mask|g[i];this.h[0]=(this.h[0]|this.h[1]<<13)&65535;this.h[1]=(this.h[1]>>>3|this.h[2]<<10)&65535;this.h[2]=(this.h[2]>>>6|this.h[3]<<7)&65535;this.h[3]=(this.h[3]>>>9|this.h[4]<<4)&65535;this.h[4]=(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14)&65535;this.h[5]=(this.h[6]>>>2|this.h[7]<<11)&65535;this.h[6]=(this.h[7]>>>5|this.h[8]<<8)&65535;this.h[7]=(this.h[8]>>>8|this.h[9]<<5)&65535;f=this.h[0]+this.pad[0];this.h[0]=f&65535;for(i=1;i<8;i++){f=(this.h[i]+this.pad[i]|0)+(f>>>16)|0;this.h[i]=f&65535}mac[macpos+0]=this.h[0]>>>0&255;mac[macpos+1]=this.h[0]>>>8&255;mac[macpos+2]=this.h[1]>>>0&255;mac[macpos+3]=this.h[1]>>>8&255;mac[macpos+4]=this.h[2]>>>0&255;mac[macpos+5]=this.h[2]>>>8&255;mac[macpos+6]=this.h[3]>>>0&255;mac[macpos+7]=this.h[3]>>>8&255;mac[macpos+8]=this.h[4]>>>0&255;mac[macpos+9]=this.h[4]>>>8&255;mac[macpos+10]=this.h[5]>>>0&255;mac[macpos+11]=this.h[5]>>>8&255;mac[macpos+12]=this.h[6]>>>0&255;mac[macpos+13]=this.h[6]>>>8&255;mac[macpos+14]=this.h[7]>>>0&255;mac[macpos+15]=this.h[7]>>>8&255};poly1305.prototype.update=function(m,mpos,bytes){var i,want;if(this.leftover){want=16-this.leftover;if(want>bytes)want=bytes;for(i=0;i=16){want=bytes-bytes%16;this.blocks(m,mpos,want);mpos+=want;bytes-=want}if(bytes){for(i=0;i>16&1);m[i-1]&=65535}m[15]=t[15]-32767-(m[14]>>16&1);b=m[15]>>16&1;m[14]&=65535;sel25519(t,m,1-b)}for(i=0;i<16;i++){o[2*i]=t[i]&255;o[2*i+1]=t[i]>>8}}function neq25519(a,b){var c=new Uint8Array(32),d=new Uint8Array(32);pack25519(c,a);pack25519(d,b);return crypto_verify_32(c,0,d,0)}function par25519(a){var d=new Uint8Array(32);pack25519(d,a);return d[0]&1}function unpack25519(o,n){var i;for(i=0;i<16;i++)o[i]=n[2*i]+(n[2*i+1]<<8);o[15]&=32767}function A(o,a,b){for(var i=0;i<16;i++)o[i]=a[i]+b[i]}function Z(o,a,b){for(var i=0;i<16;i++)o[i]=a[i]-b[i]}function M(o,a,b){var v,c,t0=0,t1=0,t2=0,t3=0,t4=0,t5=0,t6=0,t7=0,t8=0,t9=0,t10=0,t11=0,t12=0,t13=0,t14=0,t15=0,t16=0,t17=0,t18=0,t19=0,t20=0,t21=0,t22=0,t23=0,t24=0,t25=0,t26=0,t27=0,t28=0,t29=0,t30=0,b0=b[0],b1=b[1],b2=b[2],b3=b[3],b4=b[4],b5=b[5],b6=b[6],b7=b[7],b8=b[8],b9=b[9],b10=b[10],b11=b[11],b12=b[12],b13=b[13],b14=b[14],b15=b[15];v=a[0];t0+=v*b0;t1+=v*b1;t2+=v*b2;t3+=v*b3;t4+=v*b4;t5+=v*b5;t6+=v*b6;t7+=v*b7;t8+=v*b8;t9+=v*b9;t10+=v*b10;t11+=v*b11;t12+=v*b12;t13+=v*b13;t14+=v*b14;t15+=v*b15;v=a[1];t1+=v*b0;t2+=v*b1;t3+=v*b2;t4+=v*b3;t5+=v*b4;t6+=v*b5;t7+=v*b6;t8+=v*b7;t9+=v*b8;t10+=v*b9;t11+=v*b10;t12+=v*b11;t13+=v*b12;t14+=v*b13;t15+=v*b14;t16+=v*b15;v=a[2];t2+=v*b0;t3+=v*b1;t4+=v*b2;t5+=v*b3;t6+=v*b4;t7+=v*b5;t8+=v*b6;t9+=v*b7;t10+=v*b8;t11+=v*b9;t12+=v*b10;t13+=v*b11;t14+=v*b12;t15+=v*b13;t16+=v*b14;t17+=v*b15;v=a[3];t3+=v*b0;t4+=v*b1;t5+=v*b2;t6+=v*b3;t7+=v*b4;t8+=v*b5;t9+=v*b6;t10+=v*b7;t11+=v*b8;t12+=v*b9;t13+=v*b10;t14+=v*b11;t15+=v*b12;t16+=v*b13;t17+=v*b14;t18+=v*b15;v=a[4];t4+=v*b0;t5+=v*b1;t6+=v*b2;t7+=v*b3;t8+=v*b4;t9+=v*b5;t10+=v*b6;t11+=v*b7;t12+=v*b8;t13+=v*b9;t14+=v*b10;t15+=v*b11;t16+=v*b12;t17+=v*b13;t18+=v*b14;t19+=v*b15;v=a[5];t5+=v*b0;t6+=v*b1;t7+=v*b2;t8+=v*b3;t9+=v*b4;t10+=v*b5;t11+=v*b6;t12+=v*b7;t13+=v*b8;t14+=v*b9;t15+=v*b10;t16+=v*b11;t17+=v*b12;t18+=v*b13;t19+=v*b14;t20+=v*b15;v=a[6];t6+=v*b0;t7+=v*b1;t8+=v*b2;t9+=v*b3;t10+=v*b4;t11+=v*b5;t12+=v*b6;t13+=v*b7;t14+=v*b8;t15+=v*b9;t16+=v*b10;t17+=v*b11;t18+=v*b12;t19+=v*b13;t20+=v*b14;t21+=v*b15;v=a[7];t7+=v*b0;t8+=v*b1;t9+=v*b2;t10+=v*b3;t11+=v*b4;t12+=v*b5;t13+=v*b6;t14+=v*b7;t15+=v*b8;t16+=v*b9;t17+=v*b10;t18+=v*b11;t19+=v*b12;t20+=v*b13;t21+=v*b14;t22+=v*b15;v=a[8];t8+=v*b0;t9+=v*b1;t10+=v*b2;t11+=v*b3;t12+=v*b4;t13+=v*b5;t14+=v*b6;t15+=v*b7;t16+=v*b8;t17+=v*b9;t18+=v*b10;t19+=v*b11;t20+=v*b12;t21+=v*b13;t22+=v*b14;t23+=v*b15;v=a[9];t9+=v*b0;t10+=v*b1;t11+=v*b2;t12+=v*b3;t13+=v*b4;t14+=v*b5;t15+=v*b6;t16+=v*b7;t17+=v*b8;t18+=v*b9;t19+=v*b10;t20+=v*b11;t21+=v*b12;t22+=v*b13;t23+=v*b14;t24+=v*b15;v=a[10];t10+=v*b0;t11+=v*b1;t12+=v*b2;t13+=v*b3;t14+=v*b4;t15+=v*b5;t16+=v*b6;t17+=v*b7;t18+=v*b8;t19+=v*b9;t20+=v*b10;t21+=v*b11;t22+=v*b12;t23+=v*b13;t24+=v*b14;t25+=v*b15;v=a[11];t11+=v*b0;t12+=v*b1;t13+=v*b2;t14+=v*b3;t15+=v*b4;t16+=v*b5;t17+=v*b6;t18+=v*b7;t19+=v*b8;t20+=v*b9;t21+=v*b10;t22+=v*b11;t23+=v*b12;t24+=v*b13;t25+=v*b14;t26+=v*b15;v=a[12];t12+=v*b0;t13+=v*b1;t14+=v*b2;t15+=v*b3;t16+=v*b4;t17+=v*b5;t18+=v*b6;t19+=v*b7;t20+=v*b8;t21+=v*b9;t22+=v*b10;t23+=v*b11;t24+=v*b12;t25+=v*b13;t26+=v*b14;t27+=v*b15;v=a[13];t13+=v*b0;t14+=v*b1;t15+=v*b2;t16+=v*b3;t17+=v*b4;t18+=v*b5;t19+=v*b6;t20+=v*b7;t21+=v*b8;t22+=v*b9;t23+=v*b10;t24+=v*b11;t25+=v*b12;t26+=v*b13;t27+=v*b14;t28+=v*b15;v=a[14];t14+=v*b0;t15+=v*b1;t16+=v*b2;t17+=v*b3;t18+=v*b4;t19+=v*b5;t20+=v*b6;t21+=v*b7;t22+=v*b8;t23+=v*b9;t24+=v*b10;t25+=v*b11;t26+=v*b12;t27+=v*b13;t28+=v*b14;t29+=v*b15;v=a[15];t15+=v*b0;t16+=v*b1;t17+=v*b2;t18+=v*b3;t19+=v*b4;t20+=v*b5;t21+=v*b6;t22+=v*b7;t23+=v*b8;t24+=v*b9;t25+=v*b10;t26+=v*b11;t27+=v*b12;t28+=v*b13;t29+=v*b14;t30+=v*b15;t0+=38*t16;t1+=38*t17;t2+=38*t18;t3+=38*t19;t4+=38*t20;t5+=38*t21;t6+=38*t22;t7+=38*t23;t8+=38*t24;t9+=38*t25;t10+=38*t26;t11+=38*t27;t12+=38*t28;t13+=38*t29;t14+=38*t30;c=1;v=t0+c+65535;c=Math.floor(v/65536);t0=v-c*65536;v=t1+c+65535;c=Math.floor(v/65536);t1=v-c*65536;v=t2+c+65535;c=Math.floor(v/65536);t2=v-c*65536;v=t3+c+65535;c=Math.floor(v/65536);t3=v-c*65536;v=t4+c+65535;c=Math.floor(v/65536);t4=v-c*65536;v=t5+c+65535;c=Math.floor(v/65536);t5=v-c*65536;v=t6+c+65535;c=Math.floor(v/65536);t6=v-c*65536;v=t7+c+65535;c=Math.floor(v/65536);t7=v-c*65536;v=t8+c+65535;c=Math.floor(v/65536);t8=v-c*65536;v=t9+c+65535;c=Math.floor(v/65536);t9=v-c*65536;v=t10+c+65535;c=Math.floor(v/65536);t10=v-c*65536;v=t11+c+65535;c=Math.floor(v/65536);t11=v-c*65536;v=t12+c+65535;c=Math.floor(v/65536);t12=v-c*65536;v=t13+c+65535;c=Math.floor(v/65536);t13=v-c*65536;v=t14+c+65535;c=Math.floor(v/65536);t14=v-c*65536;v=t15+c+65535;c=Math.floor(v/65536);t15=v-c*65536;t0+=c-1+37*(c-1);c=1;v=t0+c+65535;c=Math.floor(v/65536);t0=v-c*65536;v=t1+c+65535;c=Math.floor(v/65536);t1=v-c*65536;v=t2+c+65535;c=Math.floor(v/65536);t2=v-c*65536;v=t3+c+65535;c=Math.floor(v/65536);t3=v-c*65536;v=t4+c+65535;c=Math.floor(v/65536);t4=v-c*65536;v=t5+c+65535;c=Math.floor(v/65536);t5=v-c*65536;v=t6+c+65535;c=Math.floor(v/65536);t6=v-c*65536;v=t7+c+65535;c=Math.floor(v/65536);t7=v-c*65536;v=t8+c+65535;c=Math.floor(v/65536);t8=v-c*65536;v=t9+c+65535;c=Math.floor(v/65536);t9=v-c*65536;v=t10+c+65535;c=Math.floor(v/65536);t10=v-c*65536;v=t11+c+65535;c=Math.floor(v/65536);t11=v-c*65536;v=t12+c+65535;c=Math.floor(v/65536);t12=v-c*65536;v=t13+c+65535;c=Math.floor(v/65536);t13=v-c*65536;v=t14+c+65535;c=Math.floor(v/65536);t14=v-c*65536;v=t15+c+65535;c=Math.floor(v/65536);t15=v-c*65536;t0+=c-1+37*(c-1);o[0]=t0;o[1]=t1;o[2]=t2;o[3]=t3;o[4]=t4;o[5]=t5;o[6]=t6;o[7]=t7;o[8]=t8;o[9]=t9;o[10]=t10;o[11]=t11;o[12]=t12;o[13]=t13;o[14]=t14;o[15]=t15}function S(o,a){M(o,a,a)}function inv25519(o,i){var c=gf();var a;for(a=0;a<16;a++)c[a]=i[a];for(a=253;a>=0;a--){S(c,c);if(a!==2&&a!==4)M(c,c,i)}for(a=0;a<16;a++)o[a]=c[a]}function pow2523(o,i){var c=gf();var a;for(a=0;a<16;a++)c[a]=i[a];for(a=250;a>=0;a--){S(c,c);if(a!==1)M(c,c,i)}for(a=0;a<16;a++)o[a]=c[a]}function crypto_scalarmult(q,n,p){var z=new Uint8Array(32);var x=new Float64Array(80),r,i;var a=gf(),b=gf(),c=gf(),d=gf(),e=gf(),f=gf();for(i=0;i<31;i++)z[i]=n[i];z[31]=n[31]&127|64;z[0]&=248;unpack25519(x,p);for(i=0;i<16;i++){b[i]=x[i];d[i]=a[i]=c[i]=0}a[0]=d[0]=1;for(i=254;i>=0;--i){r=z[i>>>3]>>>(i&7)&1;sel25519(a,b,r);sel25519(c,d,r);A(e,a,c);Z(a,a,c);A(c,b,d);Z(b,b,d);S(d,e);S(f,a);M(a,c,a);M(c,b,e);A(e,a,c);Z(a,a,c);S(b,a);Z(c,d,f);M(a,c,_121665);A(a,a,d);M(c,c,a);M(a,d,f);M(d,b,x);S(b,e);sel25519(a,b,r);sel25519(c,d,r)}for(i=0;i<16;i++){x[i+16]=a[i];x[i+32]=c[i];x[i+48]=b[i];x[i+64]=d[i]}var x32=x.subarray(32);var x16=x.subarray(16);inv25519(x32,x32);M(x16,x16,x32);pack25519(q,x16);return 0}function crypto_scalarmult_base(q,n){return crypto_scalarmult(q,n,_9)}function crypto_box_keypair(y,x){randombytes(x,32);return crypto_scalarmult_base(y,x)}function crypto_box_beforenm(k,y,x){var s=new Uint8Array(32);crypto_scalarmult(s,x,y);return crypto_core_hsalsa20(k,_0,s,sigma)}var crypto_box_afternm=crypto_secretbox;var crypto_box_open_afternm=crypto_secretbox_open;function crypto_box(c,m,d,n,y,x){var k=new Uint8Array(32);crypto_box_beforenm(k,y,x);return crypto_box_afternm(c,m,d,n,k)}function crypto_box_open(m,c,d,n,y,x){var k=new Uint8Array(32);crypto_box_beforenm(k,y,x);return crypto_box_open_afternm(m,c,d,n,k)}var K=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function crypto_hashblocks_hl(hh,hl,m,n){var wh=new Int32Array(16),wl=new Int32Array(16),bh0,bh1,bh2,bh3,bh4,bh5,bh6,bh7,bl0,bl1,bl2,bl3,bl4,bl5,bl6,bl7,th,tl,i,j,h,l,a,b,c,d;var ah0=hh[0],ah1=hh[1],ah2=hh[2],ah3=hh[3],ah4=hh[4],ah5=hh[5],ah6=hh[6],ah7=hh[7],al0=hl[0],al1=hl[1],al2=hl[2],al3=hl[3],al4=hl[4],al5=hl[5],al6=hl[6],al7=hl[7];var pos=0;while(n>=128){for(i=0;i<16;i++){j=8*i+pos;wh[i]=m[j+0]<<24|m[j+1]<<16|m[j+2]<<8|m[j+3];wl[i]=m[j+4]<<24|m[j+5]<<16|m[j+6]<<8|m[j+7]}for(i=0;i<80;i++){bh0=ah0;bh1=ah1;bh2=ah2;bh3=ah3;bh4=ah4;bh5=ah5;bh6=ah6;bh7=ah7;bl0=al0;bl1=al1;bl2=al2;bl3=al3;bl4=al4;bl5=al5;bl6=al6;bl7=al7;h=ah7;l=al7;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=(ah4>>>14|al4<<32-14)^(ah4>>>18|al4<<32-18)^(al4>>>41-32|ah4<<32-(41-32));l=(al4>>>14|ah4<<32-14)^(al4>>>18|ah4<<32-18)^(ah4>>>41-32|al4<<32-(41-32));a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;h=ah4&ah5^~ah4&ah6;l=al4&al5^~al4&al6;a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;h=K[i*2];l=K[i*2+1];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;h=wh[i%16];l=wl[i%16];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;th=c&65535|d<<16;tl=a&65535|b<<16;h=th;l=tl;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=(ah0>>>28|al0<<32-28)^(al0>>>34-32|ah0<<32-(34-32))^(al0>>>39-32|ah0<<32-(39-32));l=(al0>>>28|ah0<<32-28)^(ah0>>>34-32|al0<<32-(34-32))^(ah0>>>39-32|al0<<32-(39-32));a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;h=ah0&ah1^ah0&ah2^ah1&ah2;l=al0&al1^al0&al2^al1&al2;a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;bh7=c&65535|d<<16;bl7=a&65535|b<<16;h=bh3;l=bl3;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=th;l=tl;a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;bh3=c&65535|d<<16;bl3=a&65535|b<<16;ah1=bh0;ah2=bh1;ah3=bh2;ah4=bh3;ah5=bh4;ah6=bh5;ah7=bh6;ah0=bh7;al1=bl0;al2=bl1;al3=bl2;al4=bl3;al5=bl4;al6=bl5;al7=bl6;al0=bl7;if(i%16===15){for(j=0;j<16;j++){h=wh[j];l=wl[j];a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=wh[(j+9)%16];l=wl[(j+9)%16];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;th=wh[(j+1)%16];tl=wl[(j+1)%16];h=(th>>>1|tl<<32-1)^(th>>>8|tl<<32-8)^th>>>7;l=(tl>>>1|th<<32-1)^(tl>>>8|th<<32-8)^(tl>>>7|th<<32-7);a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;th=wh[(j+14)%16];tl=wl[(j+14)%16];h=(th>>>19|tl<<32-19)^(tl>>>61-32|th<<32-(61-32))^th>>>6;l=(tl>>>19|th<<32-19)^(th>>>61-32|tl<<32-(61-32))^(tl>>>6|th<<32-6);a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;wh[j]=c&65535|d<<16;wl[j]=a&65535|b<<16}}}h=ah0;l=al0;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[0];l=hl[0];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[0]=ah0=c&65535|d<<16;hl[0]=al0=a&65535|b<<16;h=ah1;l=al1;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[1];l=hl[1];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[1]=ah1=c&65535|d<<16;hl[1]=al1=a&65535|b<<16;h=ah2;l=al2;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[2];l=hl[2];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[2]=ah2=c&65535|d<<16;hl[2]=al2=a&65535|b<<16;h=ah3;l=al3;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[3];l=hl[3];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[3]=ah3=c&65535|d<<16;hl[3]=al3=a&65535|b<<16;h=ah4;l=al4;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[4];l=hl[4];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[4]=ah4=c&65535|d<<16;hl[4]=al4=a&65535|b<<16;h=ah5;l=al5;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[5];l=hl[5];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[5]=ah5=c&65535|d<<16;hl[5]=al5=a&65535|b<<16;h=ah6;l=al6;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[6];l=hl[6];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[6]=ah6=c&65535|d<<16;hl[6]=al6=a&65535|b<<16;h=ah7;l=al7;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[7];l=hl[7];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[7]=ah7=c&65535|d<<16;hl[7]=al7=a&65535|b<<16;pos+=128;n-=128}return n}function crypto_hash(out,m,n){var hh=new Int32Array(8),hl=new Int32Array(8),x=new Uint8Array(256),i,b=n;hh[0]=1779033703;hh[1]=3144134277;hh[2]=1013904242;hh[3]=2773480762;hh[4]=1359893119;hh[5]=2600822924;hh[6]=528734635;hh[7]=1541459225;hl[0]=4089235720;hl[1]=2227873595;hl[2]=4271175723;hl[3]=1595750129;hl[4]=2917565137;hl[5]=725511199;hl[6]=4215389547;hl[7]=327033209;crypto_hashblocks_hl(hh,hl,m,n);n%=128;for(i=0;i=0;--i){b=s[i/8|0]>>(i&7)&1;cswap(p,q,b);add(q,p);add(p,p);cswap(p,q,b)}}function scalarbase(p,s){var q=[gf(),gf(),gf(),gf()];set25519(q[0],X);set25519(q[1],Y);set25519(q[2],gf1);M(q[3],X,Y);scalarmult(p,q,s)}function crypto_sign_keypair(pk,sk,seeded){var d=new Uint8Array(64);var p=[gf(),gf(),gf(),gf()];var i;if(!seeded)randombytes(sk,32);crypto_hash(d,sk,32);d[0]&=248;d[31]&=127;d[31]|=64;scalarbase(p,d);pack(pk,p);for(i=0;i<32;i++)sk[i+32]=pk[i];return 0}var L=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function modL(r,x){var carry,i,j,k;for(i=63;i>=32;--i){carry=0;for(j=i-32,k=i-12;j>4)*L[j];carry=x[j]>>8;x[j]&=255}for(j=0;j<32;j++)x[j]-=carry*L[j];for(i=0;i<32;i++){x[i+1]+=x[i]>>8;r[i]=x[i]&255}}function reduce(r){var x=new Float64Array(64),i;for(i=0;i<64;i++)x[i]=r[i];for(i=0;i<64;i++)r[i]=0;modL(r,x)}function crypto_sign(sm,m,n,sk){var d=new Uint8Array(64),h=new Uint8Array(64),r=new Uint8Array(64);var i,j,x=new Float64Array(64);var p=[gf(),gf(),gf(),gf()];crypto_hash(d,sk,32);d[0]&=248;d[31]&=127;d[31]|=64;var smlen=n+64;for(i=0;i>7)Z(r[0],gf0,r[0]);M(r[3],r[0],r[1]);return 0}function crypto_sign_open(m,sm,n,pk){var i;var t=new Uint8Array(32),h=new Uint8Array(64);var p=[gf(),gf(),gf(),gf()],q=[gf(),gf(),gf(),gf()];if(n<64)return-1;if(unpackneg(q,pk))return-1;for(i=0;i=0};nacl.sign.keyPair=function(){var pk=new Uint8Array(crypto_sign_PUBLICKEYBYTES);var sk=new Uint8Array(crypto_sign_SECRETKEYBYTES);crypto_sign_keypair(pk,sk);return{publicKey:pk,secretKey:sk}};nacl.sign.keyPair.fromSecretKey=function(secretKey){checkArrayTypes(secretKey);if(secretKey.length!==crypto_sign_SECRETKEYBYTES)throw new Error("bad secret key size");var pk=new Uint8Array(crypto_sign_PUBLICKEYBYTES);for(var i=0;i{let parsedData=undefined;try{if(typeof ciphertext==="string"){parsedData=JSON.parse(ciphertext)}}catch{}if(!parsedData){const toDecrypt=typeof ciphertext==="string"?fromHexString(ciphertext):ciphertext;const jsonString=Buffer.from(toDecrypt).toString("utf8");parsedData=JSON.parse(jsonString)}if(!parsedData){throw new Error("Failed to parse sealed data")}const nonce=naclUtilExports.decodeBase64(parsedData.nonce);const ephemPublicKey=naclUtilExports.decodeBase64(parsedData.ephemPublicKey);const dataToDecrypt=naclUtilExports.decodeBase64(parsedData.ciphertext);const decryptedMessage=naclFastExports.box.open(dataToDecrypt,nonce,ephemPublicKey,fromHexString(this.privateKey));if(!decryptedMessage){throw new Error("Failed to decrypt message")}return toBigInt(decryptedMessage)};if(privateKey.length!==PRIVATE_KEY_LENGTH){throw new Error(`Private key must be of length ${PRIVATE_KEY_LENGTH}`)}if(publicKey.length!==PUBLIC_KEY_LENGTH){throw new Error(`Private key must be of length ${PUBLIC_KEY_LENGTH}`)}this.privateKey=privateKey;this.publicKey=publicKey}}SealingKey.seal=(value,publicKey)=>{isString(publicKey);isBigIntOrNumber(value);const ephemeralKeyPair=naclFastExports.box.keyPair();const nonce=naclFastExports.randomBytes(naclFastExports.box.nonceLength);const encryptedMessage=naclFastExports.box(toBeArray(value),nonce,fromHexString(publicKey),ephemeralKeyPair.secretKey);const output={version:"x25519-xsalsa20-poly1305",nonce:naclUtilExports.encodeBase64(nonce),ephemPublicKey:naclUtilExports.encodeBase64(ephemeralKeyPair.publicKey),ciphertext:naclUtilExports.encodeBase64(encryptedMessage)};return toHexString$1(Buffer.from(JSON.stringify(output)))};const GenerateSealingKey=async()=>{const sodiumKeypair=naclFastExports.box.keyPair();return new SealingKey(toHexString$1(sodiumKeypair.secretKey),toHexString$1(sodiumKeypair.publicKey))};const PERMIT_PREFIX="Fhenix_saved_permit_";const parsePermit=savedPermit=>{const o=JSON.parse(savedPermit);if(o){return{contractAddress:o.contractAddress,sealingKey:new SealingKey(o.sealingKey.privateKey,o.sealingKey.publicKey),signature:o.signature,publicKey:`0x${o.sealingKey.publicKey}`}}throw new Error(`Cannot parse permit`)};const getPermit$2=async(contract,provider,autoGenerate=true)=>{isAddress$1(contract);if(!provider){throw new Error(`Missing provider`)}const getSigner=determineRequestSigner(provider);const signer=await getSigner(provider);const savedPermit=getPermitFromLocalstorage(contract,await signer.getAddress());if(savedPermit!=null)return savedPermit;return autoGenerate?generatePermit(contract,provider):null};const getAllExistingPermits=account=>{const permits={};const search=new RegExp(`${PERMIT_PREFIX}(.*?)_${account}`);Object.keys(window.localStorage).forEach(key=>{const matchArray=key.match(search);if(matchArray==null)return;const contract=matchArray[1];const permitRaw=window.localStorage.getItem(key);if(permitRaw==null)return;try{const permit=parsePermit(permitRaw);permits[contract]=permit}catch(err){console.warn(err)}});return permits};const getAllPermits$1=()=>{const permits=new Map;for(let i=0;i{if("_signTypedData"in signer&&typeof signer._signTypedData=="function"){return await signer._signTypedData(domain,types,value)}else if("signTypedData"in signer&&typeof signer.signTypedData=="function"){return await signer.signTypedData(domain,types,value)}throw new Error("Unsupported signer")};const generatePermit=async(contract,provider,customSigner)=>{if(!provider){throw new Error("Provider is undefined")}const requestMethod=determineRequestMethod(provider);let signer;if(!customSigner){const getSigner=determineRequestSigner(provider);signer=await getSigner(provider)}else{signer=customSigner}const chainId=await requestMethod(provider,"eth_chainId",[]);const keypair=await GenerateSealingKey();const msgParams={types:{EIP712Domain:[{name:"name",type:"string"},{name:"version",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"}],Permissioned:[{name:"publicKey",type:"bytes32"}]},primaryType:"Permissioned",domain:{name:"Fhenix Permission",version:"1.0",chainId:chainId,verifyingContract:contract},message:{publicKey:`0x${keypair.publicKey}`}};const msgSig=await sign(signer,msgParams.domain,{Permissioned:msgParams.types.Permissioned},msgParams.message);const permit={contractAddress:contract,sealingKey:keypair,signature:msgSig,publicKey:`0x${keypair.publicKey}`};storePermitInLocalStorage(permit,await signer.getAddress());return permit};const removePermit$1=(contract,account)=>{if(!account){window.localStorage.removeItem(`${PERMIT_PREFIX}${contract}`)}else{window.localStorage.removeItem(`${PERMIT_PREFIX}${contract}_${account}`)}};const getPermitFromLocalstorage=(contract,account)=>{let savedPermit=null;if(typeof window!=="undefined"&&window.localStorage){savedPermit=window.localStorage.getItem(`${PERMIT_PREFIX}${contract}_${account}`);if(!account){savedPermit=window.localStorage.getItem(`${PERMIT_PREFIX}${contract}`)}else{savedPermit=window.localStorage.getItem(`${PERMIT_PREFIX}${contract}_${account}`)}}if(!savedPermit){return undefined}return parsePermit(savedPermit)};const storePermitInLocalStorage=(permit,account)=>{if(typeof window!=="undefined"&&window.localStorage){const serialized={contractAddress:permit.contractAddress,sealingKey:{publicKey:permit.sealingKey.publicKey,privateKey:permit.sealingKey.privateKey},signature:permit.signature};window.localStorage.setItem(`${PERMIT_PREFIX}${permit.contractAddress}_${account}`,JSON.stringify(serialized))}};const removePermitFromLocalstorage=(contract,account)=>{if(typeof window!=="undefined"&&window.localStorage){window.localStorage.removeItem(`${PERMIT_PREFIX}${contract}_${account}`)}};const MAX_UINT8=255;const MAX_UINT16=65535;const MAX_UINT32=4294967295;const FheOpsAddress="0x0000000000000000000000000000000000000080";const PUBLIC_KEY_LENGTH_MIN=15e3;const encrypt_bool=(value,publicKey,securityZone=0)=>{const encrypted=CompactFheBool.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_uint8=(value,publicKey,securityZone=0)=>{const encrypted=CompactFheUint8.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_uint16=(value,publicKey,securityZone=0)=>{const encrypted=CompactFheUint16.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_uint32=(value,publicKey,securityZone=0)=>{const encrypted=CompactFheUint32.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_uint64=(value,publicKey,securityZone=0)=>{if(typeof value==="string"){value=toBigInt(fromHexString(value))}else{value=value}const encrypted=CompactFheUint64.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_uint128=(value,publicKey,securityZone=0)=>{if(typeof value==="string"){value=toBigInt(fromHexString(value))}else{value=value}const encrypted=CompactFheUint128.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_uint256=(value,publicKey,securityZone=0)=>{if(typeof value==="string"){value=toBigInt(fromHexString(value))}else{value=value}const encrypted=CompactFheUint256.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_address=(value,publicKey,securityZone=0)=>{if(typeof value==="string"){value=toBigInt(fromHexString(value))}else{value=value}const encrypted=CompactFheUint160.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt$1=(value,publicKey,type=EncryptionTypes.uint8,securityZone=0)=>{switch(type){case EncryptionTypes.bool:return encrypt_bool(!!value,publicKey,securityZone);case EncryptionTypes.uint8:return encrypt_uint8(value,publicKey,securityZone);case EncryptionTypes.uint16:return encrypt_uint16(value,publicKey,securityZone);case EncryptionTypes.uint32:return encrypt_uint32(value,publicKey,securityZone);case EncryptionTypes.uint64:return encrypt_uint64(value.toString(16),publicKey,securityZone);case EncryptionTypes.uint128:return encrypt_uint128(value.toString(16),publicKey,securityZone);case EncryptionTypes.uint256:return encrypt_uint256(value.toString(16),publicKey,securityZone);case EncryptionTypes.address:return encrypt_address(value.toString(16),publicKey,securityZone);default:throw new Error("Invalid type")}};const InitFhevm=async()=>{await asyncInitFhevm()};class FhenixClientBase{constructor(params){this.permits={};isPlainObject$1(params);const{provider}=params;this.provider=provider;if(!this.provider){throw new Error("Failed to initialize Fhenix Client - must include a web3 provider")}}unseal(contractAddress,ciphertext,account){isAddress$1(contractAddress);isString(ciphertext);const permit=this.getPermit(contractAddress,account);if(permit==null){throw new Error(`Missing keypair for ${contractAddress}`)}return this.permits[contractAddress].sealingKey.unseal(ciphertext)}async generatePermit(contractAddress,provider,signer){if(!provider&&this.provider===undefined){throw new Error("error getting provider")}const permit=await generatePermit(contractAddress,provider||this.provider,signer);this.permits[contractAddress]=permit;return permit}_loadPermitFromLocalStorage(contractAddress,account){const fromLs=getPermitFromLocalstorage(contractAddress,account);if(fromLs==null)return undefined;this.permits[contractAddress]=fromLs;return fromLs}getPermit(contractAddress,account){const permitFromLs=this._loadPermitFromLocalStorage(contractAddress,account);if(permitFromLs!=null)return permitFromLs;return this.permits[contractAddress]}loadAllPermitsFromLocalStorage(account){const existingPermits=getAllExistingPermits(account);Object.keys(existingPermits).forEach(contractAddress=>{this.permits[contractAddress]=existingPermits[contractAddress]});return this.permits}storePermit(permit,account){storePermitInLocalStorage(permit,account);this.permits[permit.contractAddress]=permit}removePermit(contractAddress,account){if(this.hasPermit(contractAddress,account)){removePermitFromLocalstorage(contractAddress,account);delete this.permits[contractAddress]}}hasPermit(contractAddress,account){const permitFromLs=this._loadPermitFromLocalStorage(contractAddress,account);if(permitFromLs!=null)return true;return this.permits[contractAddress]!=null}exportPermits(){return this.permits}extractPermitPermission(permit){return{signature:permit.signature,publicKey:permit.publicKey}}static async getFheKeyFromProvider(provider,securityZone=0){const requestMethod=determineRequestMethod(provider);const funcSig="0x1b1b484e";const callData=funcSig+toABIEncodedUint32(securityZone);const callParams=[{to:FheOpsAddress,data:callData},"latest"];const publicKeyP=requestMethod(provider,"eth_call",callParams).catch(err=>{throw Error(`Error while requesting network public key from provider for security zone ${securityZone}: ${JSON.stringify(err)}`)});const publicKey=await publicKeyP;if(typeof publicKey!=="string"){throw new Error("Error using publicKey from provider: expected string")}if(publicKey.length{if(params.ignoreErrors){return undefined}else{throw new Error(`Failed to initialize fhenixjs - is the network FHE-enabled? ${err}`)}});if(params.skipPubKeyFetch!==true){this.fhePublicKeys=[this.defaultSecurityZone].map(securityZone=>FhenixClientBase.getFheKeyFromProvider(params.provider,securityZone))}}async _getPublicKey(securityZone){let fhePublicKey=await this.fhePublicKeys[securityZone];if(!fhePublicKey){this.fhePublicKeys[securityZone]=FhenixClientBase.getFheKeyFromProvider(this.provider,securityZone);fhePublicKey=await this.fhePublicKeys[securityZone];if(!fhePublicKey){throw new Error(`Public key for security zone ${securityZone} somehow not initialized`)}}return fhePublicKey}async encrypt_bool(value,securityZone=0){const fhePublicKey=await this._getPublicKey(securityZone);return encrypt_bool(value,fhePublicKey,securityZone)}async encrypt_uint8(value,securityZone=0){isNumber(value);const fhePublicKey=await this._getPublicKey(securityZone);ValidateUintInRange(value,MAX_UINT8,0);return encrypt_uint8(value,fhePublicKey,securityZone)}async encrypt_uint16(value,securityZone=0){isNumber(value);const fhePublicKey=await this._getPublicKey(securityZone);ValidateUintInRange(value,MAX_UINT16,0);return encrypt_uint16(value,fhePublicKey,securityZone)}async encrypt_uint32(value,securityZone=0){isNumber(value);const fhePublicKey=await this._getPublicKey(securityZone);ValidateUintInRange(value,MAX_UINT32,0);return encrypt_uint32(value,fhePublicKey,securityZone)}async encrypt_uint64(value,securityZone=0){isBigIntOrHexString(value);const fhePublicKey=await this._getPublicKey(securityZone);return encrypt_uint64(value,fhePublicKey,securityZone)}async encrypt_uint128(value,securityZone=0){isBigIntOrHexString(value);const fhePublicKey=await this._getPublicKey(securityZone);return encrypt_uint128(value,fhePublicKey,securityZone)}async encrypt_uint256(value,securityZone=0){isBigIntOrHexString(value);const fhePublicKey=await this._getPublicKey(securityZone);return encrypt_uint256(value,fhePublicKey,securityZone)}async encrypt_address(value,securityZone=0){isBigIntOrHexString(value);const fhePublicKey=await this._getPublicKey(securityZone);return encrypt_address(value,fhePublicKey,securityZone)}async encrypt(value,type,securityZone=0){isNumber(value);let outputSize=type;const fhePublicKey=await this._getPublicKey(securityZone);if(!outputSize){if(value{if(ignoreErrors){return undefined}else{throw new Error(`Failed to initialize fhenixjs - is the network FHE-enabled? ${err}`)}});const fhePublicKeys=await Promise.all(securityZones.map(securityZone=>FhenixClientBase.getFheKeyFromProvider(params.provider,securityZone)));return new FhenixClientSync({...params,fhePublicKeys:fhePublicKeys})}_getPublicKey(securityZone){const fhePublicKey=this.fhePublicKeys[securityZone];if(!fhePublicKey){throw new Error(`Public key for security zone ${securityZone} not initialized`)}return fhePublicKey}encrypt_bool(value,securityZone=0){const fhePublicKey=this._getPublicKey(securityZone);return encrypt_bool(value,fhePublicKey,securityZone)}encrypt_uint8(value,securityZone=0){isNumber(value);const fhePublicKey=this._getPublicKey(securityZone);ValidateUintInRange(value,MAX_UINT8,0);return encrypt_uint8(value,fhePublicKey,securityZone)}encrypt_uint16(value,securityZone=0){isNumber(value);const fhePublicKey=this._getPublicKey(securityZone);ValidateUintInRange(value,MAX_UINT16,0);return encrypt_uint16(value,fhePublicKey,securityZone)}encrypt_uint32(value,securityZone=0){isNumber(value);const fhePublicKey=this._getPublicKey(securityZone);ValidateUintInRange(value,MAX_UINT32,0);return encrypt_uint32(value,fhePublicKey,securityZone)}encrypt_uint64(value,securityZone=0){isBigIntOrHexString(value);const fhePublicKey=this._getPublicKey(securityZone);return encrypt_uint64(value,fhePublicKey,securityZone)}encrypt_uint128(value,securityZone=0){isBigIntOrHexString(value);const fhePublicKey=this._getPublicKey(securityZone);return encrypt_uint128(value,fhePublicKey,securityZone)}encrypt_uint256(value,securityZone=0){isBigIntOrHexString(value);const fhePublicKey=this._getPublicKey(securityZone);return encrypt_uint256(value,fhePublicKey,securityZone)}encrypt_address(value,securityZone=0){isBigIntOrHexString(value);const fhePublicKey=this._getPublicKey(securityZone);return encrypt_address(value,fhePublicKey,securityZone)}encrypt(value,type,securityZone=0){isNumber(value);let outputSize=type;const fhePublicKey=this._getPublicKey(securityZone);if(!outputSize){if(value{const config=TfheConfigBuilder.default().build();const clientKey=TfheClientKey.generate(config);let publicKey=TfheCompactPublicKey.new(clientKey);publicKey=TfheCompactPublicKey.deserialize(publicKey.serialize());return{clientKey:clientKey,publicKey:publicKey}};const createTfhePublicKey=()=>{const{publicKey}=createTfheKeypair();return toHexString(publicKey.serialize())};const toHexString=bytes=>bytes.reduce((str,byte)=>str+byte.toString(16).padStart(2,"0"),"");const version="6.13.1";function defineProperties(target,values,types){for(let key in values){let value=values[key];Object.defineProperty(target,key,{enumerable:true,value:value,writable:false})}}function stringify(value){if(value==null){return"null"}if(Array.isArray(value)){return"[ "+value.map(stringify).join(", ")+" ]"}if(value instanceof Uint8Array){const HEX="0123456789abcdef";let result="0x";for(let i=0;i>4];result+=HEX[value[i]&15]}return result}if(typeof value==="object"&&typeof value.toJSON==="function"){return stringify(value.toJSON())}switch(typeof value){case"boolean":case"symbol":return value.toString();case"bigint":return BigInt(value).toString();case"number":return value.toString();case"string":return JSON.stringify(value);case"object":{const keys=Object.keys(value);keys.sort();return"{ "+keys.map(k=>`${stringify(k)}: ${stringify(value[k])}`).join(", ")+" }"}}return`[ COULD NOT SERIALIZE ]`}function makeError(message,code,info){let shortMessage=message;{const details=[];if(info){if("message"in info||"code"in info||"name"in info){throw new Error(`value will overwrite populated values: ${stringify(info)}`)}for(const key in info){if(key==="shortMessage"){continue}const value=info[key];details.push(key+"="+stringify(value))}}details.push(`code=${code}`);details.push(`version=${version}`);if(details.length){message+=" ("+details.join(", ")+")"}}let error;switch(code){case"INVALID_ARGUMENT":error=new TypeError(message);break;case"NUMERIC_FAULT":case"BUFFER_OVERRUN":error=new RangeError(message);break;default:error=new Error(message)}defineProperties(error,{code:code});if(info){Object.assign(error,info)}if(error.shortMessage==null){defineProperties(error,{shortMessage:shortMessage})}return error}function assert(check,message,code,info){if(!check){throw makeError(message,code,info)}}function assertArgument(check,message,name,value){assert(check,message,"INVALID_ARGUMENT",{argument:name,value:value})}["NFD","NFC","NFKD","NFKC"].reduce((accum,form)=>{try{if("test".normalize(form)!=="test"){throw new Error("bad")}if(form==="NFD"){const check=String.fromCharCode(233).normalize("NFD");const expected=String.fromCharCode(101,769);if(check!==expected){throw new Error("broken")}}accum.push(form)}catch(error){}return accum},[]);function _getBytes(value,name,copy){if(value instanceof Uint8Array){return value}if(typeof value==="string"&&value.match(/^0x(?:[0-9a-f][0-9a-f])*$/i)){const result=new Uint8Array((value.length-2)/2);let offset=2;for(let i=0;i>4]+HexCharacters[v&15]}return result}function toUtf8Bytes(str,form){assertArgument(typeof str==="string","invalid string value","str",str);let result=[];for(let i=0;i>6|192);result.push(c&63|128)}else if((c&64512)==55296){i++;const c2=str.charCodeAt(i);assertArgument(i>18|240);result.push(pair>>12&63|128);result.push(pair>>6&63|128);result.push(pair&63|128)}else{result.push(c>>12|224);result.push(c>>6&63|128);result.push(c&63|128)}}return new Uint8Array(result)}function number(n){if(!Number.isSafeInteger(n)||n<0)throw new Error(`Wrong positive integer: ${n}`)}function bytes(b,...lengths){if(!(b instanceof Uint8Array))throw new Error("Expected Uint8Array");if(lengths.length>0&&!lengths.includes(b.length))throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`)}function exists(instance,checkFinished=true){if(instance.destroyed)throw new Error("Hash instance has been destroyed");if(checkFinished&&instance.finished)throw new Error("Hash#digest() has already been called")}function output(out,instance){bytes(out);const min=instance.outputLen;if(out.lengtha instanceof Uint8Array;const u32=arr=>new Uint32Array(arr.buffer,arr.byteOffset,Math.floor(arr.byteLength/4));const isLE=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!isLE)throw new Error("Non little-endian hardware is not supported");function utf8ToBytes(str){if(typeof str!=="string")throw new Error(`utf8ToBytes expected string, got ${typeof str}`);return new Uint8Array((new TextEncoder).encode(str))}function toBytes(data){if(typeof data==="string")data=utf8ToBytes(data);if(!u8a(data))throw new Error(`expected Uint8Array, got ${typeof data}`);return data}class Hash{clone(){return this._cloneInto()}}function wrapConstructor(hashCons){const hashC=msg=>hashCons().update(toBytes(msg)).digest();const tmp=hashCons();hashC.outputLen=tmp.outputLen;hashC.blockLen=tmp.blockLen;hashC.create=()=>hashCons();return hashC}const U32_MASK64=BigInt(2**32-1);const _32n=BigInt(32);function fromBig(n,le=false){if(le)return{h:Number(n&U32_MASK64),l:Number(n>>_32n&U32_MASK64)};return{h:Number(n>>_32n&U32_MASK64)|0,l:Number(n&U32_MASK64)|0}}function split(lst,le=false){let Ah=new Uint32Array(lst.length);let Al=new Uint32Array(lst.length);for(let i=0;ih<>>32-s;const rotlSL=(h,l,s)=>l<>>32-s;const rotlBH=(h,l,s)=>l<>>64-s;const rotlBL=(h,l,s)=>h<>>64-s;const[SHA3_PI,SHA3_ROTL,_SHA3_IOTA]=[[],[],[]];const _0n=BigInt(0);const _1n=BigInt(1);const _2n=BigInt(2);const _7n=BigInt(7);const _256n=BigInt(256);const _0x71n=BigInt(113);for(let round=0,R=_1n,x=1,y=0;round<24;round++){[x,y]=[y,(2*x+3*y)%5];SHA3_PI.push(2*(5*y+x));SHA3_ROTL.push((round+1)*(round+2)/2%64);let t=_0n;for(let j=0;j<7;j++){R=(R<<_1n^(R>>_7n)*_0x71n)%_256n;if(R&_2n)t^=_1n<<(_1n<s>32?rotlBH(h,l,s):rotlSH(h,l,s);const rotlL=(h,l,s)=>s>32?rotlBL(h,l,s):rotlSL(h,l,s);function keccakP(s,rounds=24){const B=new Uint32Array(5*2);for(let round=24-rounds;round<24;round++){for(let x=0;x<10;x++)B[x]=s[x]^s[x+10]^s[x+20]^s[x+30]^s[x+40];for(let x=0;x<10;x+=2){const idx1=(x+8)%10;const idx0=(x+2)%10;const B0=B[idx0];const B1=B[idx0+1];const Th=rotlH(B0,B1,1)^B[idx1];const Tl=rotlL(B0,B1,1)^B[idx1+1];for(let y=0;y<50;y+=10){s[x+y]^=Th;s[x+y+1]^=Tl}}let curH=s[2];let curL=s[3];for(let t=0;t<24;t++){const shift=SHA3_ROTL[t];const Th=rotlH(curH,curL,shift);const Tl=rotlL(curH,curL,shift);const PI=SHA3_PI[t];curH=s[PI];curL=s[PI+1];s[PI]=Th;s[PI+1]=Tl}for(let y=0;y<50;y+=10){for(let x=0;x<10;x++)B[x]=s[y+x];for(let x=0;x<10;x++)s[y+x]^=~B[(x+2)%10]&B[(x+4)%10]}s[0]^=SHA3_IOTA_H[round];s[1]^=SHA3_IOTA_L[round]}B.fill(0)}class Keccak extends Hash{constructor(blockLen,suffix,outputLen,enableXOF=false,rounds=24){super();this.blockLen=blockLen;this.suffix=suffix;this.outputLen=outputLen;this.enableXOF=enableXOF;this.rounds=rounds;this.pos=0;this.posOut=0;this.finished=false;this.destroyed=false;number(outputLen);if(0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200);this.state32=u32(this.state)}keccak(){keccakP(this.state32,this.rounds);this.posOut=0;this.pos=0}update(data){exists(this);const{blockLen,state}=this;data=toBytes(data);const len=data.length;for(let pos=0;pos=blockLen)this.keccak();const take=Math.min(blockLen-this.posOut,len-pos);out.set(bufferOut.subarray(this.posOut,this.posOut+take),pos);this.posOut+=take;pos+=take}return out}xofInto(out){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(out)}xof(bytes){number(bytes);return this.xofInto(new Uint8Array(bytes))}digestInto(out){output(out,this);if(this.finished)throw new Error("digest() was already called");this.writeInto(out);this.destroy();return out}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=true;this.state.fill(0)}_cloneInto(to){const{blockLen,suffix,outputLen,rounds,enableXOF}=this;to||(to=new Keccak(blockLen,suffix,outputLen,enableXOF,rounds));to.state32.set(this.state32);to.pos=this.pos;to.posOut=this.posOut;to.finished=this.finished;to.rounds=rounds;to.suffix=suffix;to.outputLen=outputLen;to.enableXOF=enableXOF;to.destroyed=this.destroyed;return to}}const gen=(suffix,blockLen,outputLen)=>wrapConstructor(()=>new Keccak(blockLen,suffix,outputLen));const keccak_256=gen(1,136,256/8);let locked=false;const _keccak256=function(data){return keccak_256(data)};let __keccak256=_keccak256;function keccak256(_data){const data=getBytes(_data,"data");return hexlify(__keccak256(data))}keccak256._=_keccak256;keccak256.lock=function(){locked=true};keccak256.register=function(func){if(locked){throw new TypeError("keccak256 is locked")}__keccak256=func};Object.freeze(keccak256);const ZeroAddress="0x0000000000000000000000000000000000000000";const BN_0=BigInt(0);const BN_36=BigInt(36);function getChecksumAddress(address){address=address.toLowerCase();const chars=address.substring(2).split("");const expanded=new Uint8Array(40);for(let i=0;i<40;i++){expanded[i]=chars[i].charCodeAt(0)}const hashed=getBytes(keccak256(expanded));for(let i=0;i<40;i+=2){if(hashed[i>>1]>>4>=8){chars[i]=chars[i].toUpperCase()}if((hashed[i>>1]&15)>=8){chars[i+1]=chars[i+1].toUpperCase()}}return"0x"+chars.join("")}const ibanLookup={};for(let i=0;i<10;i++){ibanLookup[String(i)]=String(i)}for(let i=0;i<26;i++){ibanLookup[String.fromCharCode(65+i)]=String(10+i)}const safeDigits=15;function ibanChecksum(address){address=address.toUpperCase();address=address.substring(4)+address.substring(0,2)+"00";let expanded=address.split("").map(c=>{return ibanLookup[c]}).join("");while(expanded.length>=safeDigits){let block=expanded.substring(0,safeDigits);expanded=parseInt(block,10)%97+expanded.substring(block.length)}let checksum=String(98-parseInt(expanded,10)%97);while(checksum.length<2){checksum="0"+checksum}return checksum}const Base36=function(){const result={};for(let i=0;i<36;i++){const key="0123456789abcdefghijklmnopqrstuvwxyz"[i];result[key]=BigInt(i)}return result}();function fromBase36(value){value=value.toLowerCase();let result=BN_0;for(let i=0;i({data:data,securityZone:securityZone,utype:FheUType.bool}),uint8:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:FheUType.uint8}),uint16:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:FheUType.uint16}),uint32:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:FheUType.uint32}),uint64:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:FheUType.uint64}),uint128:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:FheUType.uint128}),uint256:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:FheUType.uint256}),address:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:FheUType.address})};function isEncryptableItem(value){return typeof value==="object"&&value!==null&&["string","number","bigint","boolean"].includes(typeof value.data)&&typeof value.securityZone==="number"&&FheAllUTypes.includes(value.utype)}function getAsSealedItem(value){if(Array.isArray(value)&&value.length===2&&typeof value[0]==="string"&&FheAllUTypes.includes(parseInt(`${value[1]}`)))return{data:value[0],utype:value[1]};if(typeof value==="object"&&value!==null&&typeof value.data==="string"&&FheAllUTypes.includes(value.utype))return value;return undefined}function isSealedBool(value){return parseInt(`${value.utype}`)===FheUType.bool}function isSealedUint(value){return FheUintUTypes.includes(parseInt(`${value.utype}`))}function isSealedAddress(value){return parseInt(`${value.utype}`)===FheUType.address}const ResultErr=error=>({success:false,data:null,error:error});const ResultOk=data=>({success:true,data:data,error:null});const PermitV2SignatureAllFields=[{name:"issuer",type:"address"},{name:"expiration",type:"uint64"},{name:"contracts",type:"address[]"},{name:"projects",type:"string[]"},{name:"recipient",type:"address"},{name:"validatorId",type:"uint256"},{name:"validatorContract",type:"address"},{name:"sealingKey",type:"bytes32"},{name:"issuerSignature",type:"bytes"}];const SignatureTypes={PermissionedV2IssuerSelf:["issuer","expiration","contracts","projects","recipient","validatorId","validatorContract","sealingKey"],PermissionedV2IssuerShared:["issuer","expiration","contracts","projects","recipient","validatorId","validatorContract"],PermissionedV2Recipient:["sealingKey","issuerSignature"]};const getSignatureTypesAndMessage=(primaryType,fields,values)=>{const types={[primaryType]:PermitV2SignatureAllFields.filter(fieldType=>fields.includes(fieldType.name))};const message={};fields.forEach(field=>{if(field in values){message[field]=values[field]}});return{types:types,primaryType:primaryType,message:message}};const getSignatureDomain=chainId=>({name:"Fhenix Permission v2.0.0",version:"v2.0.0",chainId:parseInt(chainId),verifyingContract:ZeroAddress});var util;(function(util){util.assertEqual=val=>val;function assertIs(_arg){}util.assertIs=assertIs;function assertNever(_x){throw new Error}util.assertNever=assertNever;util.arrayToEnum=items=>{const obj={};for(const item of items){obj[item]=item}return obj};util.getValidEnumValues=obj=>{const validKeys=util.objectKeys(obj).filter(k=>typeof obj[obj[k]]!=="number");const filtered={};for(const k of validKeys){filtered[k]=obj[k]}return util.objectValues(filtered)};util.objectValues=obj=>{return util.objectKeys(obj).map(function(e){return obj[e]})};util.objectKeys=typeof Object.keys==="function"?obj=>Object.keys(obj):object=>{const keys=[];for(const key in object){if(Object.prototype.hasOwnProperty.call(object,key)){keys.push(key)}}return keys};util.find=(arr,checker)=>{for(const item of arr){if(checker(item))return item}return undefined};util.isInteger=typeof Number.isInteger==="function"?val=>Number.isInteger(val):val=>typeof val==="number"&&isFinite(val)&&Math.floor(val)===val;function joinValues(array,separator=" | "){return array.map(val=>typeof val==="string"?`'${val}'`:val).join(separator)}util.joinValues=joinValues;util.jsonStringifyReplacer=(_,value)=>{if(typeof value==="bigint"){return value.toString()}return value}})(util||(util={}));var objectUtil;(function(objectUtil){objectUtil.mergeShapes=(first,second)=>{return{...first,...second}}})(objectUtil||(objectUtil={}));const ZodParsedType=util.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]);const getParsedType=data=>{const t=typeof data;switch(t){case"undefined":return ZodParsedType.undefined;case"string":return ZodParsedType.string;case"number":return isNaN(data)?ZodParsedType.nan:ZodParsedType.number;case"boolean":return ZodParsedType.boolean;case"function":return ZodParsedType.function;case"bigint":return ZodParsedType.bigint;case"symbol":return ZodParsedType.symbol;case"object":if(Array.isArray(data)){return ZodParsedType.array}if(data===null){return ZodParsedType.null}if(data.then&&typeof data.then==="function"&&data.catch&&typeof data.catch==="function"){return ZodParsedType.promise}if(typeof Map!=="undefined"&&data instanceof Map){return ZodParsedType.map}if(typeof Set!=="undefined"&&data instanceof Set){return ZodParsedType.set}if(typeof Date!=="undefined"&&data instanceof Date){return ZodParsedType.date}return ZodParsedType.object;default:return ZodParsedType.unknown}};const ZodIssueCode=util.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);const quotelessJson=obj=>{const json=JSON.stringify(obj,null,2);return json.replace(/"([^"]+)":/g,"$1:")};class ZodError extends Error{constructor(issues){super();this.issues=[];this.addIssue=sub=>{this.issues=[...this.issues,sub]};this.addIssues=(subs=[])=>{this.issues=[...this.issues,...subs]};const actualProto=new.target.prototype;if(Object.setPrototypeOf){Object.setPrototypeOf(this,actualProto)}else{this.__proto__=actualProto}this.name="ZodError";this.issues=issues}get errors(){return this.issues}format(_mapper){const mapper=_mapper||function(issue){return issue.message};const fieldErrors={_errors:[]};const processError=error=>{for(const issue of error.issues){if(issue.code==="invalid_union"){issue.unionErrors.map(processError)}else if(issue.code==="invalid_return_type"){processError(issue.returnTypeError)}else if(issue.code==="invalid_arguments"){processError(issue.argumentsError)}else if(issue.path.length===0){fieldErrors._errors.push(mapper(issue))}else{let curr=fieldErrors;let i=0;while(iissue.message){const fieldErrors={};const formErrors=[];for(const sub of this.issues){if(sub.path.length>0){fieldErrors[sub.path[0]]=fieldErrors[sub.path[0]]||[];fieldErrors[sub.path[0]].push(mapper(sub))}else{formErrors.push(mapper(sub))}}return{formErrors:formErrors,fieldErrors:fieldErrors}}get formErrors(){return this.flatten()}}ZodError.create=issues=>{const error=new ZodError(issues);return error};const errorMap=(issue,_ctx)=>{let message;switch(issue.code){case ZodIssueCode.invalid_type:if(issue.received===ZodParsedType.undefined){message="Required"}else{message=`Expected ${issue.expected}, received ${issue.received}`}break;case ZodIssueCode.invalid_literal:message=`Invalid literal value, expected ${JSON.stringify(issue.expected,util.jsonStringifyReplacer)}`;break;case ZodIssueCode.unrecognized_keys:message=`Unrecognized key(s) in object: ${util.joinValues(issue.keys,", ")}`;break;case ZodIssueCode.invalid_union:message=`Invalid input`;break;case ZodIssueCode.invalid_union_discriminator:message=`Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;break;case ZodIssueCode.invalid_enum_value:message=`Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;break;case ZodIssueCode.invalid_arguments:message=`Invalid function arguments`;break;case ZodIssueCode.invalid_return_type:message=`Invalid function return type`;break;case ZodIssueCode.invalid_date:message=`Invalid date`;break;case ZodIssueCode.invalid_string:if(typeof issue.validation==="object"){if("includes"in issue.validation){message=`Invalid input: must include "${issue.validation.includes}"`;if(typeof issue.validation.position==="number"){message=`${message} at one or more positions greater than or equal to ${issue.validation.position}`}}else if("startsWith"in issue.validation){message=`Invalid input: must start with "${issue.validation.startsWith}"`}else if("endsWith"in issue.validation){message=`Invalid input: must end with "${issue.validation.endsWith}"`}else{util.assertNever(issue.validation)}}else if(issue.validation!=="regex"){message=`Invalid ${issue.validation}`}else{message="Invalid"}break;case ZodIssueCode.too_small:if(issue.type==="array")message=`Array must contain ${issue.exact?"exactly":issue.inclusive?`at least`:`more than`} ${issue.minimum} element(s)`;else if(issue.type==="string")message=`String must contain ${issue.exact?"exactly":issue.inclusive?`at least`:`over`} ${issue.minimum} character(s)`;else if(issue.type==="number")message=`Number must be ${issue.exact?`exactly equal to `:issue.inclusive?`greater than or equal to `:`greater than `}${issue.minimum}`;else if(issue.type==="date")message=`Date must be ${issue.exact?`exactly equal to `:issue.inclusive?`greater than or equal to `:`greater than `}${new Date(Number(issue.minimum))}`;else message="Invalid input";break;case ZodIssueCode.too_big:if(issue.type==="array")message=`Array must contain ${issue.exact?`exactly`:issue.inclusive?`at most`:`less than`} ${issue.maximum} element(s)`;else if(issue.type==="string")message=`String must contain ${issue.exact?`exactly`:issue.inclusive?`at most`:`under`} ${issue.maximum} character(s)`;else if(issue.type==="number")message=`Number must be ${issue.exact?`exactly`:issue.inclusive?`less than or equal to`:`less than`} ${issue.maximum}`;else if(issue.type==="bigint")message=`BigInt must be ${issue.exact?`exactly`:issue.inclusive?`less than or equal to`:`less than`} ${issue.maximum}`;else if(issue.type==="date")message=`Date must be ${issue.exact?`exactly`:issue.inclusive?`smaller than or equal to`:`smaller than`} ${new Date(Number(issue.maximum))}`;else message="Invalid input";break;case ZodIssueCode.custom:message=`Invalid input`;break;case ZodIssueCode.invalid_intersection_types:message=`Intersection results could not be merged`;break;case ZodIssueCode.not_multiple_of:message=`Number must be a multiple of ${issue.multipleOf}`;break;case ZodIssueCode.not_finite:message="Number must be finite";break;default:message=_ctx.defaultError;util.assertNever(issue)}return{message:message}};let overrideErrorMap=errorMap;function setErrorMap(map){overrideErrorMap=map}function getErrorMap(){return overrideErrorMap}const makeIssue=params=>{const{data,path,errorMaps,issueData}=params;const fullPath=[...path,...issueData.path||[]];const fullIssue={...issueData,path:fullPath};if(issueData.message!==undefined){return{...issueData,path:fullPath,message:issueData.message}}let errorMessage="";const maps=errorMaps.filter(m=>!!m).slice().reverse();for(const map of maps){errorMessage=map(fullIssue,{data:data,defaultError:errorMessage}).message}return{...issueData,path:fullPath,message:errorMessage}};const EMPTY_PATH=[];function addIssueToContext(ctx,issueData){const overrideMap=getErrorMap();const issue=makeIssue({issueData:issueData,data:ctx.data,path:ctx.path,errorMaps:[ctx.common.contextualErrorMap,ctx.schemaErrorMap,overrideMap,overrideMap===errorMap?undefined:errorMap].filter(x=>!!x)});ctx.common.issues.push(issue)}class ParseStatus{constructor(){this.value="valid"}dirty(){if(this.value==="valid")this.value="dirty"}abort(){if(this.value!=="aborted")this.value="aborted"}static mergeArray(status,results){const arrayValue=[];for(const s of results){if(s.status==="aborted")return INVALID;if(s.status==="dirty")status.dirty();arrayValue.push(s.value)}return{status:status.value,value:arrayValue}}static async mergeObjectAsync(status,pairs){const syncPairs=[];for(const pair of pairs){const key=await pair.key;const value=await pair.value;syncPairs.push({key:key,value:value})}return ParseStatus.mergeObjectSync(status,syncPairs)}static mergeObjectSync(status,pairs){const finalObject={};for(const pair of pairs){const{key,value}=pair;if(key.status==="aborted")return INVALID;if(value.status==="aborted")return INVALID;if(key.status==="dirty")status.dirty();if(value.status==="dirty")status.dirty();if(key.value!=="__proto__"&&(typeof value.value!=="undefined"||pair.alwaysSet)){finalObject[key.value]=value.value}}return{status:status.value,value:finalObject}}}const INVALID=Object.freeze({status:"aborted"});const DIRTY=value=>({status:"dirty",value:value});const OK=value=>({status:"valid",value:value});const isAborted=x=>x.status==="aborted";const isDirty=x=>x.status==="dirty";const isValid=x=>x.status==="valid";const isAsync=x=>typeof Promise!=="undefined"&&x instanceof Promise;function __classPrivateFieldGet(receiver,state,kind,f){if(typeof state==="function"?receiver!==state||!f:!state.has(receiver))throw new TypeError("Cannot read private member from an object whose class did not declare it");return state.get(receiver)}function __classPrivateFieldSet(receiver,state,value,kind,f){if(typeof state==="function"?receiver!==state||!f:!state.has(receiver))throw new TypeError("Cannot write private member to an object whose class did not declare it");return state.set(receiver,value),value}typeof SuppressedError==="function"?SuppressedError:function(error,suppressed,message){var e=new Error(message);return e.name="SuppressedError",e.error=error,e.suppressed=suppressed,e};var errorUtil;(function(errorUtil){errorUtil.errToObj=message=>typeof message==="string"?{message:message}:message||{};errorUtil.toString=message=>typeof message==="string"?message:message===null||message===void 0?void 0:message.message})(errorUtil||(errorUtil={}));var _ZodEnum_cache,_ZodNativeEnum_cache;class ParseInputLazyPath{constructor(parent,value,path,key){this._cachedPath=[];this.parent=parent;this.data=value;this._path=path;this._key=key}get path(){if(!this._cachedPath.length){if(this._key instanceof Array){this._cachedPath.push(...this._path,...this._key)}else{this._cachedPath.push(...this._path,this._key)}}return this._cachedPath}}const handleResult=(ctx,result)=>{if(isValid(result)){return{success:true,data:result.value}}else{if(!ctx.common.issues.length){throw new Error("Validation failed but no issues detected.")}return{success:false,get error(){if(this._error)return this._error;const error=new ZodError(ctx.common.issues);this._error=error;return this._error}}}};function processCreateParams(params){if(!params)return{};const{errorMap,invalid_type_error,required_error,description}=params;if(errorMap&&(invalid_type_error||required_error)){throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`)}if(errorMap)return{errorMap:errorMap,description:description};const customMap=(iss,ctx)=>{var _a,_b;const{message}=params;if(iss.code==="invalid_enum_value"){return{message:message!==null&&message!==void 0?message:ctx.defaultError}}if(typeof ctx.data==="undefined"){return{message:(_a=message!==null&&message!==void 0?message:required_error)!==null&&_a!==void 0?_a:ctx.defaultError}}if(iss.code!=="invalid_type")return{message:ctx.defaultError};return{message:(_b=message!==null&&message!==void 0?message:invalid_type_error)!==null&&_b!==void 0?_b:ctx.defaultError}};return{errorMap:customMap,description:description}}class ZodType{constructor(def){this.spa=this.safeParseAsync;this._def=def;this.parse=this.parse.bind(this);this.safeParse=this.safeParse.bind(this);this.parseAsync=this.parseAsync.bind(this);this.safeParseAsync=this.safeParseAsync.bind(this);this.spa=this.spa.bind(this);this.refine=this.refine.bind(this);this.refinement=this.refinement.bind(this);this.superRefine=this.superRefine.bind(this);this.optional=this.optional.bind(this);this.nullable=this.nullable.bind(this);this.nullish=this.nullish.bind(this);this.array=this.array.bind(this);this.promise=this.promise.bind(this);this.or=this.or.bind(this);this.and=this.and.bind(this);this.transform=this.transform.bind(this);this.brand=this.brand.bind(this);this.default=this.default.bind(this);this.catch=this.catch.bind(this);this.describe=this.describe.bind(this);this.pipe=this.pipe.bind(this);this.readonly=this.readonly.bind(this);this.isNullable=this.isNullable.bind(this);this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(input){return getParsedType(input.data)}_getOrReturnCtx(input,ctx){return ctx||{common:input.parent.common,data:input.data,parsedType:getParsedType(input.data),schemaErrorMap:this._def.errorMap,path:input.path,parent:input.parent}}_processInputParams(input){return{status:new ParseStatus,ctx:{common:input.parent.common,data:input.data,parsedType:getParsedType(input.data),schemaErrorMap:this._def.errorMap,path:input.path,parent:input.parent}}}_parseSync(input){const result=this._parse(input);if(isAsync(result)){throw new Error("Synchronous parse encountered promise.")}return result}_parseAsync(input){const result=this._parse(input);return Promise.resolve(result)}parse(data,params){const result=this.safeParse(data,params);if(result.success)return result.data;throw result.error}safeParse(data,params){var _a;const ctx={common:{issues:[],async:(_a=params===null||params===void 0?void 0:params.async)!==null&&_a!==void 0?_a:false,contextualErrorMap:params===null||params===void 0?void 0:params.errorMap},path:(params===null||params===void 0?void 0:params.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:data,parsedType:getParsedType(data)};const result=this._parseSync({data:data,path:ctx.path,parent:ctx});return handleResult(ctx,result)}async parseAsync(data,params){const result=await this.safeParseAsync(data,params);if(result.success)return result.data;throw result.error}async safeParseAsync(data,params){const ctx={common:{issues:[],contextualErrorMap:params===null||params===void 0?void 0:params.errorMap,async:true},path:(params===null||params===void 0?void 0:params.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:data,parsedType:getParsedType(data)};const maybeAsyncResult=this._parse({data:data,path:ctx.path,parent:ctx});const result=await(isAsync(maybeAsyncResult)?maybeAsyncResult:Promise.resolve(maybeAsyncResult));return handleResult(ctx,result)}refine(check,message){const getIssueProperties=val=>{if(typeof message==="string"||typeof message==="undefined"){return{message:message}}else if(typeof message==="function"){return message(val)}else{return message}};return this._refinement((val,ctx)=>{const result=check(val);const setError=()=>ctx.addIssue({code:ZodIssueCode.custom,...getIssueProperties(val)});if(typeof Promise!=="undefined"&&result instanceof Promise){return result.then(data=>{if(!data){setError();return false}else{return true}})}if(!result){setError();return false}else{return true}})}refinement(check,refinementData){return this._refinement((val,ctx)=>{if(!check(val)){ctx.addIssue(typeof refinementData==="function"?refinementData(val,ctx):refinementData);return false}else{return true}})}_refinement(refinement){return new ZodEffects({schema:this,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:{type:"refinement",refinement:refinement}})}superRefine(refinement){return this._refinement(refinement)}optional(){return ZodOptional.create(this,this._def)}nullable(){return ZodNullable.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return ZodArray.create(this,this._def)}promise(){return ZodPromise.create(this,this._def)}or(option){return ZodUnion.create([this,option],this._def)}and(incoming){return ZodIntersection.create(this,incoming,this._def)}transform(transform){return new ZodEffects({...processCreateParams(this._def),schema:this,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:{type:"transform",transform:transform}})}default(def){const defaultValueFunc=typeof def==="function"?def:()=>def;return new ZodDefault({...processCreateParams(this._def),innerType:this,defaultValue:defaultValueFunc,typeName:ZodFirstPartyTypeKind.ZodDefault})}brand(){return new ZodBranded({typeName:ZodFirstPartyTypeKind.ZodBranded,type:this,...processCreateParams(this._def)})}catch(def){const catchValueFunc=typeof def==="function"?def:()=>def;return new ZodCatch({...processCreateParams(this._def),innerType:this,catchValue:catchValueFunc,typeName:ZodFirstPartyTypeKind.ZodCatch})}describe(description){const This=this.constructor;return new This({...this._def,description:description})}pipe(target){return ZodPipeline.create(this,target)}readonly(){return ZodReadonly.create(this)}isOptional(){return this.safeParse(undefined).success}isNullable(){return this.safeParse(null).success}}const cuidRegex=/^c[^\s-]{8,}$/i;const cuid2Regex=/^[0-9a-z]+$/;const ulidRegex=/^[0-9A-HJKMNP-TV-Z]{26}$/;const uuidRegex=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i;const nanoidRegex=/^[a-z0-9_-]{21}$/i;const durationRegex=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/;const emailRegex=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i;const _emojiRegex=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;let emojiRegex;const ipv4Regex=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;const ipv6Regex=/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;const base64Regex=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;const dateRegexSource=`((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`;const dateRegex=new RegExp(`^${dateRegexSource}$`);function timeRegexSource(args){let regex=`([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d`;if(args.precision){regex=`${regex}\\.\\d{${args.precision}}`}else if(args.precision==null){regex=`${regex}(\\.\\d+)?`}return regex}function timeRegex(args){return new RegExp(`^${timeRegexSource(args)}$`)}function datetimeRegex(args){let regex=`${dateRegexSource}T${timeRegexSource(args)}`;const opts=[];opts.push(args.local?`Z?`:`Z`);if(args.offset)opts.push(`([+-]\\d{2}:?\\d{2})`);regex=`${regex}(${opts.join("|")})`;return new RegExp(`^${regex}$`)}function isValidIP(ip,version){if((version==="v4"||!version)&&ipv4Regex.test(ip)){return true}if((version==="v6"||!version)&&ipv6Regex.test(ip)){return true}return false}class ZodString extends ZodType{_parse(input){if(this._def.coerce){input.data=String(input.data)}const parsedType=this._getType(input);if(parsedType!==ZodParsedType.string){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.string,received:ctx.parsedType});return INVALID}const status=new ParseStatus;let ctx=undefined;for(const check of this._def.checks){if(check.kind==="min"){if(input.data.lengthcheck.value){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:check.value,type:"string",inclusive:true,exact:false,message:check.message});status.dirty()}}else if(check.kind==="length"){const tooBig=input.data.length>check.value;const tooSmall=input.data.lengthregex.test(data),{validation:validation,code:ZodIssueCode.invalid_string,...errorUtil.errToObj(message)})}_addCheck(check){return new ZodString({...this._def,checks:[...this._def.checks,check]})}email(message){return this._addCheck({kind:"email",...errorUtil.errToObj(message)})}url(message){return this._addCheck({kind:"url",...errorUtil.errToObj(message)})}emoji(message){return this._addCheck({kind:"emoji",...errorUtil.errToObj(message)})}uuid(message){return this._addCheck({kind:"uuid",...errorUtil.errToObj(message)})}nanoid(message){return this._addCheck({kind:"nanoid",...errorUtil.errToObj(message)})}cuid(message){return this._addCheck({kind:"cuid",...errorUtil.errToObj(message)})}cuid2(message){return this._addCheck({kind:"cuid2",...errorUtil.errToObj(message)})}ulid(message){return this._addCheck({kind:"ulid",...errorUtil.errToObj(message)})}base64(message){return this._addCheck({kind:"base64",...errorUtil.errToObj(message)})}ip(options){return this._addCheck({kind:"ip",...errorUtil.errToObj(options)})}datetime(options){var _a,_b;if(typeof options==="string"){return this._addCheck({kind:"datetime",precision:null,offset:false,local:false,message:options})}return this._addCheck({kind:"datetime",precision:typeof(options===null||options===void 0?void 0:options.precision)==="undefined"?null:options===null||options===void 0?void 0:options.precision,offset:(_a=options===null||options===void 0?void 0:options.offset)!==null&&_a!==void 0?_a:false,local:(_b=options===null||options===void 0?void 0:options.local)!==null&&_b!==void 0?_b:false,...errorUtil.errToObj(options===null||options===void 0?void 0:options.message)})}date(message){return this._addCheck({kind:"date",message:message})}time(options){if(typeof options==="string"){return this._addCheck({kind:"time",precision:null,message:options})}return this._addCheck({kind:"time",precision:typeof(options===null||options===void 0?void 0:options.precision)==="undefined"?null:options===null||options===void 0?void 0:options.precision,...errorUtil.errToObj(options===null||options===void 0?void 0:options.message)})}duration(message){return this._addCheck({kind:"duration",...errorUtil.errToObj(message)})}regex(regex,message){return this._addCheck({kind:"regex",regex:regex,...errorUtil.errToObj(message)})}includes(value,options){return this._addCheck({kind:"includes",value:value,position:options===null||options===void 0?void 0:options.position,...errorUtil.errToObj(options===null||options===void 0?void 0:options.message)})}startsWith(value,message){return this._addCheck({kind:"startsWith",value:value,...errorUtil.errToObj(message)})}endsWith(value,message){return this._addCheck({kind:"endsWith",value:value,...errorUtil.errToObj(message)})}min(minLength,message){return this._addCheck({kind:"min",value:minLength,...errorUtil.errToObj(message)})}max(maxLength,message){return this._addCheck({kind:"max",value:maxLength,...errorUtil.errToObj(message)})}length(len,message){return this._addCheck({kind:"length",value:len,...errorUtil.errToObj(message)})}nonempty(message){return this.min(1,errorUtil.errToObj(message))}trim(){return new ZodString({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new ZodString({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new ZodString({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(ch=>ch.kind==="datetime")}get isDate(){return!!this._def.checks.find(ch=>ch.kind==="date")}get isTime(){return!!this._def.checks.find(ch=>ch.kind==="time")}get isDuration(){return!!this._def.checks.find(ch=>ch.kind==="duration")}get isEmail(){return!!this._def.checks.find(ch=>ch.kind==="email")}get isURL(){return!!this._def.checks.find(ch=>ch.kind==="url")}get isEmoji(){return!!this._def.checks.find(ch=>ch.kind==="emoji")}get isUUID(){return!!this._def.checks.find(ch=>ch.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(ch=>ch.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(ch=>ch.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(ch=>ch.kind==="cuid2")}get isULID(){return!!this._def.checks.find(ch=>ch.kind==="ulid")}get isIP(){return!!this._def.checks.find(ch=>ch.kind==="ip")}get isBase64(){return!!this._def.checks.find(ch=>ch.kind==="base64")}get minLength(){let min=null;for(const ch of this._def.checks){if(ch.kind==="min"){if(min===null||ch.value>min)min=ch.value}}return min}get maxLength(){let max=null;for(const ch of this._def.checks){if(ch.kind==="max"){if(max===null||ch.value{var _a;return new ZodString({checks:[],typeName:ZodFirstPartyTypeKind.ZodString,coerce:(_a=params===null||params===void 0?void 0:params.coerce)!==null&&_a!==void 0?_a:false,...processCreateParams(params)})};function floatSafeRemainder(val,step){const valDecCount=(val.toString().split(".")[1]||"").length;const stepDecCount=(step.toString().split(".")[1]||"").length;const decCount=valDecCount>stepDecCount?valDecCount:stepDecCount;const valInt=parseInt(val.toFixed(decCount).replace(".",""));const stepInt=parseInt(step.toFixed(decCount).replace(".",""));return valInt%stepInt/Math.pow(10,decCount)}class ZodNumber extends ZodType{constructor(){super(...arguments);this.min=this.gte;this.max=this.lte;this.step=this.multipleOf}_parse(input){if(this._def.coerce){input.data=Number(input.data)}const parsedType=this._getType(input);if(parsedType!==ZodParsedType.number){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.number,received:ctx.parsedType});return INVALID}let ctx=undefined;const status=new ParseStatus;for(const check of this._def.checks){if(check.kind==="int"){if(!util.isInteger(input.data)){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:"integer",received:"float",message:check.message});status.dirty()}}else if(check.kind==="min"){const tooSmall=check.inclusive?input.datacheck.value:input.data>=check.value;if(tooBig){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:check.value,type:"number",inclusive:check.inclusive,exact:false,message:check.message});status.dirty()}}else if(check.kind==="multipleOf"){if(floatSafeRemainder(input.data,check.value)!==0){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.not_multiple_of,multipleOf:check.value,message:check.message});status.dirty()}}else if(check.kind==="finite"){if(!Number.isFinite(input.data)){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.not_finite,message:check.message});status.dirty()}}else{util.assertNever(check)}}return{status:status.value,value:input.data}}gte(value,message){return this.setLimit("min",value,true,errorUtil.toString(message))}gt(value,message){return this.setLimit("min",value,false,errorUtil.toString(message))}lte(value,message){return this.setLimit("max",value,true,errorUtil.toString(message))}lt(value,message){return this.setLimit("max",value,false,errorUtil.toString(message))}setLimit(kind,value,inclusive,message){return new ZodNumber({...this._def,checks:[...this._def.checks,{kind:kind,value:value,inclusive:inclusive,message:errorUtil.toString(message)}]})}_addCheck(check){return new ZodNumber({...this._def,checks:[...this._def.checks,check]})}int(message){return this._addCheck({kind:"int",message:errorUtil.toString(message)})}positive(message){return this._addCheck({kind:"min",value:0,inclusive:false,message:errorUtil.toString(message)})}negative(message){return this._addCheck({kind:"max",value:0,inclusive:false,message:errorUtil.toString(message)})}nonpositive(message){return this._addCheck({kind:"max",value:0,inclusive:true,message:errorUtil.toString(message)})}nonnegative(message){return this._addCheck({kind:"min",value:0,inclusive:true,message:errorUtil.toString(message)})}multipleOf(value,message){return this._addCheck({kind:"multipleOf",value:value,message:errorUtil.toString(message)})}finite(message){return this._addCheck({kind:"finite",message:errorUtil.toString(message)})}safe(message){return this._addCheck({kind:"min",inclusive:true,value:Number.MIN_SAFE_INTEGER,message:errorUtil.toString(message)})._addCheck({kind:"max",inclusive:true,value:Number.MAX_SAFE_INTEGER,message:errorUtil.toString(message)})}get minValue(){let min=null;for(const ch of this._def.checks){if(ch.kind==="min"){if(min===null||ch.value>min)min=ch.value}}return min}get maxValue(){let max=null;for(const ch of this._def.checks){if(ch.kind==="max"){if(max===null||ch.valuech.kind==="int"||ch.kind==="multipleOf"&&util.isInteger(ch.value))}get isFinite(){let max=null,min=null;for(const ch of this._def.checks){if(ch.kind==="finite"||ch.kind==="int"||ch.kind==="multipleOf"){return true}else if(ch.kind==="min"){if(min===null||ch.value>min)min=ch.value}else if(ch.kind==="max"){if(max===null||ch.value{return new ZodNumber({checks:[],typeName:ZodFirstPartyTypeKind.ZodNumber,coerce:(params===null||params===void 0?void 0:params.coerce)||false,...processCreateParams(params)})};class ZodBigInt extends ZodType{constructor(){super(...arguments);this.min=this.gte;this.max=this.lte}_parse(input){if(this._def.coerce){input.data=BigInt(input.data)}const parsedType=this._getType(input);if(parsedType!==ZodParsedType.bigint){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.bigint,received:ctx.parsedType});return INVALID}let ctx=undefined;const status=new ParseStatus;for(const check of this._def.checks){if(check.kind==="min"){const tooSmall=check.inclusive?input.datacheck.value:input.data>=check.value;if(tooBig){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.too_big,type:"bigint",maximum:check.value,inclusive:check.inclusive,message:check.message});status.dirty()}}else if(check.kind==="multipleOf"){if(input.data%check.value!==BigInt(0)){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.not_multiple_of,multipleOf:check.value,message:check.message});status.dirty()}}else{util.assertNever(check)}}return{status:status.value,value:input.data}}gte(value,message){return this.setLimit("min",value,true,errorUtil.toString(message))}gt(value,message){return this.setLimit("min",value,false,errorUtil.toString(message))}lte(value,message){return this.setLimit("max",value,true,errorUtil.toString(message))}lt(value,message){return this.setLimit("max",value,false,errorUtil.toString(message))}setLimit(kind,value,inclusive,message){return new ZodBigInt({...this._def,checks:[...this._def.checks,{kind:kind,value:value,inclusive:inclusive,message:errorUtil.toString(message)}]})}_addCheck(check){return new ZodBigInt({...this._def,checks:[...this._def.checks,check]})}positive(message){return this._addCheck({kind:"min",value:BigInt(0),inclusive:false,message:errorUtil.toString(message)})}negative(message){return this._addCheck({kind:"max",value:BigInt(0),inclusive:false,message:errorUtil.toString(message)})}nonpositive(message){return this._addCheck({kind:"max",value:BigInt(0),inclusive:true,message:errorUtil.toString(message)})}nonnegative(message){return this._addCheck({kind:"min",value:BigInt(0),inclusive:true,message:errorUtil.toString(message)})}multipleOf(value,message){return this._addCheck({kind:"multipleOf",value:value,message:errorUtil.toString(message)})}get minValue(){let min=null;for(const ch of this._def.checks){if(ch.kind==="min"){if(min===null||ch.value>min)min=ch.value}}return min}get maxValue(){let max=null;for(const ch of this._def.checks){if(ch.kind==="max"){if(max===null||ch.value{var _a;return new ZodBigInt({checks:[],typeName:ZodFirstPartyTypeKind.ZodBigInt,coerce:(_a=params===null||params===void 0?void 0:params.coerce)!==null&&_a!==void 0?_a:false,...processCreateParams(params)})};class ZodBoolean extends ZodType{_parse(input){if(this._def.coerce){input.data=Boolean(input.data)}const parsedType=this._getType(input);if(parsedType!==ZodParsedType.boolean){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.boolean,received:ctx.parsedType});return INVALID}return OK(input.data)}}ZodBoolean.create=params=>{return new ZodBoolean({typeName:ZodFirstPartyTypeKind.ZodBoolean,coerce:(params===null||params===void 0?void 0:params.coerce)||false,...processCreateParams(params)})};class ZodDate extends ZodType{_parse(input){if(this._def.coerce){input.data=new Date(input.data)}const parsedType=this._getType(input);if(parsedType!==ZodParsedType.date){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.date,received:ctx.parsedType});return INVALID}if(isNaN(input.data.getTime())){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_date});return INVALID}const status=new ParseStatus;let ctx=undefined;for(const check of this._def.checks){if(check.kind==="min"){if(input.data.getTime()check.value){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.too_big,message:check.message,inclusive:true,exact:false,maximum:check.value,type:"date"});status.dirty()}}else{util.assertNever(check)}}return{status:status.value,value:new Date(input.data.getTime())}}_addCheck(check){return new ZodDate({...this._def,checks:[...this._def.checks,check]})}min(minDate,message){return this._addCheck({kind:"min",value:minDate.getTime(),message:errorUtil.toString(message)})}max(maxDate,message){return this._addCheck({kind:"max",value:maxDate.getTime(),message:errorUtil.toString(message)})}get minDate(){let min=null;for(const ch of this._def.checks){if(ch.kind==="min"){if(min===null||ch.value>min)min=ch.value}}return min!=null?new Date(min):null}get maxDate(){let max=null;for(const ch of this._def.checks){if(ch.kind==="max"){if(max===null||ch.value{return new ZodDate({checks:[],coerce:(params===null||params===void 0?void 0:params.coerce)||false,typeName:ZodFirstPartyTypeKind.ZodDate,...processCreateParams(params)})};class ZodSymbol extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType!==ZodParsedType.symbol){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.symbol,received:ctx.parsedType});return INVALID}return OK(input.data)}}ZodSymbol.create=params=>{return new ZodSymbol({typeName:ZodFirstPartyTypeKind.ZodSymbol,...processCreateParams(params)})};class ZodUndefined extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType!==ZodParsedType.undefined){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.undefined,received:ctx.parsedType});return INVALID}return OK(input.data)}}ZodUndefined.create=params=>{return new ZodUndefined({typeName:ZodFirstPartyTypeKind.ZodUndefined,...processCreateParams(params)})};class ZodNull extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType!==ZodParsedType.null){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.null,received:ctx.parsedType});return INVALID}return OK(input.data)}}ZodNull.create=params=>{return new ZodNull({typeName:ZodFirstPartyTypeKind.ZodNull,...processCreateParams(params)})};class ZodAny extends ZodType{constructor(){super(...arguments);this._any=true}_parse(input){return OK(input.data)}}ZodAny.create=params=>{return new ZodAny({typeName:ZodFirstPartyTypeKind.ZodAny,...processCreateParams(params)})};class ZodUnknown extends ZodType{constructor(){super(...arguments);this._unknown=true}_parse(input){return OK(input.data)}}ZodUnknown.create=params=>{return new ZodUnknown({typeName:ZodFirstPartyTypeKind.ZodUnknown,...processCreateParams(params)})};class ZodNever extends ZodType{_parse(input){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.never,received:ctx.parsedType});return INVALID}}ZodNever.create=params=>{return new ZodNever({typeName:ZodFirstPartyTypeKind.ZodNever,...processCreateParams(params)})};class ZodVoid extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType!==ZodParsedType.undefined){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.void,received:ctx.parsedType});return INVALID}return OK(input.data)}}ZodVoid.create=params=>{return new ZodVoid({typeName:ZodFirstPartyTypeKind.ZodVoid,...processCreateParams(params)})};class ZodArray extends ZodType{_parse(input){const{ctx,status}=this._processInputParams(input);const def=this._def;if(ctx.parsedType!==ZodParsedType.array){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.array,received:ctx.parsedType});return INVALID}if(def.exactLength!==null){const tooBig=ctx.data.length>def.exactLength.value;const tooSmall=ctx.data.lengthdef.maxLength.value){addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:def.maxLength.value,type:"array",inclusive:true,exact:false,message:def.maxLength.message});status.dirty()}}if(ctx.common.async){return Promise.all([...ctx.data].map((item,i)=>{return def.type._parseAsync(new ParseInputLazyPath(ctx,item,ctx.path,i))})).then(result=>{return ParseStatus.mergeArray(status,result)})}const result=[...ctx.data].map((item,i)=>{return def.type._parseSync(new ParseInputLazyPath(ctx,item,ctx.path,i))});return ParseStatus.mergeArray(status,result)}get element(){return this._def.type}min(minLength,message){return new ZodArray({...this._def,minLength:{value:minLength,message:errorUtil.toString(message)}})}max(maxLength,message){return new ZodArray({...this._def,maxLength:{value:maxLength,message:errorUtil.toString(message)}})}length(len,message){return new ZodArray({...this._def,exactLength:{value:len,message:errorUtil.toString(message)}})}nonempty(message){return this.min(1,message)}}ZodArray.create=(schema,params)=>{return new ZodArray({type:schema,minLength:null,maxLength:null,exactLength:null,typeName:ZodFirstPartyTypeKind.ZodArray,...processCreateParams(params)})};function deepPartialify(schema){if(schema instanceof ZodObject){const newShape={};for(const key in schema.shape){const fieldSchema=schema.shape[key];newShape[key]=ZodOptional.create(deepPartialify(fieldSchema))}return new ZodObject({...schema._def,shape:()=>newShape})}else if(schema instanceof ZodArray){return new ZodArray({...schema._def,type:deepPartialify(schema.element)})}else if(schema instanceof ZodOptional){return ZodOptional.create(deepPartialify(schema.unwrap()))}else if(schema instanceof ZodNullable){return ZodNullable.create(deepPartialify(schema.unwrap()))}else if(schema instanceof ZodTuple){return ZodTuple.create(schema.items.map(item=>deepPartialify(item)))}else{return schema}}class ZodObject extends ZodType{constructor(){super(...arguments);this._cached=null;this.nonstrict=this.passthrough;this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const shape=this._def.shape();const keys=util.objectKeys(shape);return this._cached={shape:shape,keys:keys}}_parse(input){const parsedType=this._getType(input);if(parsedType!==ZodParsedType.object){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:ctx.parsedType});return INVALID}const{status,ctx}=this._processInputParams(input);const{shape,keys:shapeKeys}=this._getCached();const extraKeys=[];if(!(this._def.catchall instanceof ZodNever&&this._def.unknownKeys==="strip")){for(const key in ctx.data){if(!shapeKeys.includes(key)){extraKeys.push(key)}}}const pairs=[];for(const key of shapeKeys){const keyValidator=shape[key];const value=ctx.data[key];pairs.push({key:{status:"valid",value:key},value:keyValidator._parse(new ParseInputLazyPath(ctx,value,ctx.path,key)),alwaysSet:key in ctx.data})}if(this._def.catchall instanceof ZodNever){const unknownKeys=this._def.unknownKeys;if(unknownKeys==="passthrough"){for(const key of extraKeys){pairs.push({key:{status:"valid",value:key},value:{status:"valid",value:ctx.data[key]}})}}else if(unknownKeys==="strict"){if(extraKeys.length>0){addIssueToContext(ctx,{code:ZodIssueCode.unrecognized_keys,keys:extraKeys});status.dirty()}}else if(unknownKeys==="strip");else{throw new Error(`Internal ZodObject error: invalid unknownKeys value.`)}}else{const catchall=this._def.catchall;for(const key of extraKeys){const value=ctx.data[key];pairs.push({key:{status:"valid",value:key},value:catchall._parse(new ParseInputLazyPath(ctx,value,ctx.path,key)),alwaysSet:key in ctx.data})}}if(ctx.common.async){return Promise.resolve().then(async()=>{const syncPairs=[];for(const pair of pairs){const key=await pair.key;const value=await pair.value;syncPairs.push({key:key,value:value,alwaysSet:pair.alwaysSet})}return syncPairs}).then(syncPairs=>{return ParseStatus.mergeObjectSync(status,syncPairs)})}else{return ParseStatus.mergeObjectSync(status,pairs)}}get shape(){return this._def.shape()}strict(message){errorUtil.errToObj;return new ZodObject({...this._def,unknownKeys:"strict",...message!==undefined?{errorMap:(issue,ctx)=>{var _a,_b,_c,_d;const defaultError=(_c=(_b=(_a=this._def).errorMap)===null||_b===void 0?void 0:_b.call(_a,issue,ctx).message)!==null&&_c!==void 0?_c:ctx.defaultError;if(issue.code==="unrecognized_keys")return{message:(_d=errorUtil.errToObj(message).message)!==null&&_d!==void 0?_d:defaultError};return{message:defaultError}}}:{}})}strip(){return new ZodObject({...this._def,unknownKeys:"strip"})}passthrough(){return new ZodObject({...this._def,unknownKeys:"passthrough"})}extend(augmentation){return new ZodObject({...this._def,shape:()=>({...this._def.shape(),...augmentation})})}merge(merging){const merged=new ZodObject({unknownKeys:merging._def.unknownKeys,catchall:merging._def.catchall,shape:()=>({...this._def.shape(),...merging._def.shape()}),typeName:ZodFirstPartyTypeKind.ZodObject});return merged}setKey(key,schema){return this.augment({[key]:schema})}catchall(index){return new ZodObject({...this._def,catchall:index})}pick(mask){const shape={};util.objectKeys(mask).forEach(key=>{if(mask[key]&&this.shape[key]){shape[key]=this.shape[key]}});return new ZodObject({...this._def,shape:()=>shape})}omit(mask){const shape={};util.objectKeys(this.shape).forEach(key=>{if(!mask[key]){shape[key]=this.shape[key]}});return new ZodObject({...this._def,shape:()=>shape})}deepPartial(){return deepPartialify(this)}partial(mask){const newShape={};util.objectKeys(this.shape).forEach(key=>{const fieldSchema=this.shape[key];if(mask&&!mask[key]){newShape[key]=fieldSchema}else{newShape[key]=fieldSchema.optional()}});return new ZodObject({...this._def,shape:()=>newShape})}required(mask){const newShape={};util.objectKeys(this.shape).forEach(key=>{if(mask&&!mask[key]){newShape[key]=this.shape[key]}else{const fieldSchema=this.shape[key];let newField=fieldSchema;while(newField instanceof ZodOptional){newField=newField._def.innerType}newShape[key]=newField}});return new ZodObject({...this._def,shape:()=>newShape})}keyof(){return createZodEnum(util.objectKeys(this.shape))}}ZodObject.create=(shape,params)=>{return new ZodObject({shape:()=>shape,unknownKeys:"strip",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(params)})};ZodObject.strictCreate=(shape,params)=>{return new ZodObject({shape:()=>shape,unknownKeys:"strict",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(params)})};ZodObject.lazycreate=(shape,params)=>{return new ZodObject({shape:shape,unknownKeys:"strip",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(params)})};class ZodUnion extends ZodType{_parse(input){const{ctx}=this._processInputParams(input);const options=this._def.options;function handleResults(results){for(const result of results){if(result.result.status==="valid"){return result.result}}for(const result of results){if(result.result.status==="dirty"){ctx.common.issues.push(...result.ctx.common.issues);return result.result}}const unionErrors=results.map(result=>new ZodError(result.ctx.common.issues));addIssueToContext(ctx,{code:ZodIssueCode.invalid_union,unionErrors:unionErrors});return INVALID}if(ctx.common.async){return Promise.all(options.map(async option=>{const childCtx={...ctx,common:{...ctx.common,issues:[]},parent:null};return{result:await option._parseAsync({data:ctx.data,path:ctx.path,parent:childCtx}),ctx:childCtx}})).then(handleResults)}else{let dirty=undefined;const issues=[];for(const option of options){const childCtx={...ctx,common:{...ctx.common,issues:[]},parent:null};const result=option._parseSync({data:ctx.data,path:ctx.path,parent:childCtx});if(result.status==="valid"){return result}else if(result.status==="dirty"&&!dirty){dirty={result:result,ctx:childCtx}}if(childCtx.common.issues.length){issues.push(childCtx.common.issues)}}if(dirty){ctx.common.issues.push(...dirty.ctx.common.issues);return dirty.result}const unionErrors=issues.map(issues=>new ZodError(issues));addIssueToContext(ctx,{code:ZodIssueCode.invalid_union,unionErrors:unionErrors});return INVALID}}get options(){return this._def.options}}ZodUnion.create=(types,params)=>{return new ZodUnion({options:types,typeName:ZodFirstPartyTypeKind.ZodUnion,...processCreateParams(params)})};const getDiscriminator=type=>{if(type instanceof ZodLazy){return getDiscriminator(type.schema)}else if(type instanceof ZodEffects){return getDiscriminator(type.innerType())}else if(type instanceof ZodLiteral){return[type.value]}else if(type instanceof ZodEnum){return type.options}else if(type instanceof ZodNativeEnum){return util.objectValues(type.enum)}else if(type instanceof ZodDefault){return getDiscriminator(type._def.innerType)}else if(type instanceof ZodUndefined){return[undefined]}else if(type instanceof ZodNull){return[null]}else if(type instanceof ZodOptional){return[undefined,...getDiscriminator(type.unwrap())]}else if(type instanceof ZodNullable){return[null,...getDiscriminator(type.unwrap())]}else if(type instanceof ZodBranded){return getDiscriminator(type.unwrap())}else if(type instanceof ZodReadonly){return getDiscriminator(type.unwrap())}else if(type instanceof ZodCatch){return getDiscriminator(type._def.innerType)}else{return[]}};class ZodDiscriminatedUnion extends ZodType{_parse(input){const{ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.object){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:ctx.parsedType});return INVALID}const discriminator=this.discriminator;const discriminatorValue=ctx.data[discriminator];const option=this.optionsMap.get(discriminatorValue);if(!option){addIssueToContext(ctx,{code:ZodIssueCode.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[discriminator]});return INVALID}if(ctx.common.async){return option._parseAsync({data:ctx.data,path:ctx.path,parent:ctx})}else{return option._parseSync({data:ctx.data,path:ctx.path,parent:ctx})}}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(discriminator,options,params){const optionsMap=new Map;for(const type of options){const discriminatorValues=getDiscriminator(type.shape[discriminator]);if(!discriminatorValues.length){throw new Error(`A discriminator value for key \`${discriminator}\` could not be extracted from all schema options`)}for(const value of discriminatorValues){if(optionsMap.has(value)){throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`)}optionsMap.set(value,type)}}return new ZodDiscriminatedUnion({typeName:ZodFirstPartyTypeKind.ZodDiscriminatedUnion,discriminator:discriminator,options:options,optionsMap:optionsMap,...processCreateParams(params)})}}function mergeValues(a,b){const aType=getParsedType(a);const bType=getParsedType(b);if(a===b){return{valid:true,data:a}}else if(aType===ZodParsedType.object&&bType===ZodParsedType.object){const bKeys=util.objectKeys(b);const sharedKeys=util.objectKeys(a).filter(key=>bKeys.indexOf(key)!==-1);const newObj={...a,...b};for(const key of sharedKeys){const sharedValue=mergeValues(a[key],b[key]);if(!sharedValue.valid){return{valid:false}}newObj[key]=sharedValue.data}return{valid:true,data:newObj}}else if(aType===ZodParsedType.array&&bType===ZodParsedType.array){if(a.length!==b.length){return{valid:false}}const newArray=[];for(let index=0;index{if(isAborted(parsedLeft)||isAborted(parsedRight)){return INVALID}const merged=mergeValues(parsedLeft.value,parsedRight.value);if(!merged.valid){addIssueToContext(ctx,{code:ZodIssueCode.invalid_intersection_types});return INVALID}if(isDirty(parsedLeft)||isDirty(parsedRight)){status.dirty()}return{status:status.value,value:merged.data}};if(ctx.common.async){return Promise.all([this._def.left._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}),this._def.right._parseAsync({data:ctx.data,path:ctx.path,parent:ctx})]).then(([left,right])=>handleParsed(left,right))}else{return handleParsed(this._def.left._parseSync({data:ctx.data,path:ctx.path,parent:ctx}),this._def.right._parseSync({data:ctx.data,path:ctx.path,parent:ctx}))}}}ZodIntersection.create=(left,right,params)=>{return new ZodIntersection({left:left,right:right,typeName:ZodFirstPartyTypeKind.ZodIntersection,...processCreateParams(params)})};class ZodTuple extends ZodType{_parse(input){const{status,ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.array){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.array,received:ctx.parsedType});return INVALID}if(ctx.data.lengththis._def.items.length){addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:this._def.items.length,inclusive:true,exact:false,type:"array"});status.dirty()}const items=[...ctx.data].map((item,itemIndex)=>{const schema=this._def.items[itemIndex]||this._def.rest;if(!schema)return null;return schema._parse(new ParseInputLazyPath(ctx,item,ctx.path,itemIndex))}).filter(x=>!!x);if(ctx.common.async){return Promise.all(items).then(results=>{return ParseStatus.mergeArray(status,results)})}else{return ParseStatus.mergeArray(status,items)}}get items(){return this._def.items}rest(rest){return new ZodTuple({...this._def,rest:rest})}}ZodTuple.create=(schemas,params)=>{if(!Array.isArray(schemas)){throw new Error("You must pass an array of schemas to z.tuple([ ... ])")}return new ZodTuple({items:schemas,typeName:ZodFirstPartyTypeKind.ZodTuple,rest:null,...processCreateParams(params)})};class ZodRecord extends ZodType{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(input){const{status,ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.object){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:ctx.parsedType});return INVALID}const pairs=[];const keyType=this._def.keyType;const valueType=this._def.valueType;for(const key in ctx.data){pairs.push({key:keyType._parse(new ParseInputLazyPath(ctx,key,ctx.path,key)),value:valueType._parse(new ParseInputLazyPath(ctx,ctx.data[key],ctx.path,key)),alwaysSet:key in ctx.data})}if(ctx.common.async){return ParseStatus.mergeObjectAsync(status,pairs)}else{return ParseStatus.mergeObjectSync(status,pairs)}}get element(){return this._def.valueType}static create(first,second,third){if(second instanceof ZodType){return new ZodRecord({keyType:first,valueType:second,typeName:ZodFirstPartyTypeKind.ZodRecord,...processCreateParams(third)})}return new ZodRecord({keyType:ZodString.create(),valueType:first,typeName:ZodFirstPartyTypeKind.ZodRecord,...processCreateParams(second)})}}class ZodMap extends ZodType{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(input){const{status,ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.map){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.map,received:ctx.parsedType});return INVALID}const keyType=this._def.keyType;const valueType=this._def.valueType;const pairs=[...ctx.data.entries()].map(([key,value],index)=>{return{key:keyType._parse(new ParseInputLazyPath(ctx,key,ctx.path,[index,"key"])),value:valueType._parse(new ParseInputLazyPath(ctx,value,ctx.path,[index,"value"]))}});if(ctx.common.async){const finalMap=new Map;return Promise.resolve().then(async()=>{for(const pair of pairs){const key=await pair.key;const value=await pair.value;if(key.status==="aborted"||value.status==="aborted"){return INVALID}if(key.status==="dirty"||value.status==="dirty"){status.dirty()}finalMap.set(key.value,value.value)}return{status:status.value,value:finalMap}})}else{const finalMap=new Map;for(const pair of pairs){const key=pair.key;const value=pair.value;if(key.status==="aborted"||value.status==="aborted"){return INVALID}if(key.status==="dirty"||value.status==="dirty"){status.dirty()}finalMap.set(key.value,value.value)}return{status:status.value,value:finalMap}}}}ZodMap.create=(keyType,valueType,params)=>{return new ZodMap({valueType:valueType,keyType:keyType,typeName:ZodFirstPartyTypeKind.ZodMap,...processCreateParams(params)})};class ZodSet extends ZodType{_parse(input){const{status,ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.set){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.set,received:ctx.parsedType});return INVALID}const def=this._def;if(def.minSize!==null){if(ctx.data.sizedef.maxSize.value){addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:def.maxSize.value,type:"set",inclusive:true,exact:false,message:def.maxSize.message});status.dirty()}}const valueType=this._def.valueType;function finalizeSet(elements){const parsedSet=new Set;for(const element of elements){if(element.status==="aborted")return INVALID;if(element.status==="dirty")status.dirty();parsedSet.add(element.value)}return{status:status.value,value:parsedSet}}const elements=[...ctx.data.values()].map((item,i)=>valueType._parse(new ParseInputLazyPath(ctx,item,ctx.path,i)));if(ctx.common.async){return Promise.all(elements).then(elements=>finalizeSet(elements))}else{return finalizeSet(elements)}}min(minSize,message){return new ZodSet({...this._def,minSize:{value:minSize,message:errorUtil.toString(message)}})}max(maxSize,message){return new ZodSet({...this._def,maxSize:{value:maxSize,message:errorUtil.toString(message)}})}size(size,message){return this.min(size,message).max(size,message)}nonempty(message){return this.min(1,message)}}ZodSet.create=(valueType,params)=>{return new ZodSet({valueType:valueType,minSize:null,maxSize:null,typeName:ZodFirstPartyTypeKind.ZodSet,...processCreateParams(params)})};class ZodFunction extends ZodType{constructor(){super(...arguments);this.validate=this.implement}_parse(input){const{ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.function){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.function,received:ctx.parsedType});return INVALID}function makeArgsIssue(args,error){return makeIssue({data:args,path:ctx.path,errorMaps:[ctx.common.contextualErrorMap,ctx.schemaErrorMap,getErrorMap(),errorMap].filter(x=>!!x),issueData:{code:ZodIssueCode.invalid_arguments,argumentsError:error}})}function makeReturnsIssue(returns,error){return makeIssue({data:returns,path:ctx.path,errorMaps:[ctx.common.contextualErrorMap,ctx.schemaErrorMap,getErrorMap(),errorMap].filter(x=>!!x),issueData:{code:ZodIssueCode.invalid_return_type,returnTypeError:error}})}const params={errorMap:ctx.common.contextualErrorMap};const fn=ctx.data;if(this._def.returns instanceof ZodPromise){const me=this;return OK(async function(...args){const error=new ZodError([]);const parsedArgs=await me._def.args.parseAsync(args,params).catch(e=>{error.addIssue(makeArgsIssue(args,e));throw error});const result=await Reflect.apply(fn,this,parsedArgs);const parsedReturns=await me._def.returns._def.type.parseAsync(result,params).catch(e=>{error.addIssue(makeReturnsIssue(result,e));throw error});return parsedReturns})}else{const me=this;return OK(function(...args){const parsedArgs=me._def.args.safeParse(args,params);if(!parsedArgs.success){throw new ZodError([makeArgsIssue(args,parsedArgs.error)])}const result=Reflect.apply(fn,this,parsedArgs.data);const parsedReturns=me._def.returns.safeParse(result,params);if(!parsedReturns.success){throw new ZodError([makeReturnsIssue(result,parsedReturns.error)])}return parsedReturns.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...items){return new ZodFunction({...this._def,args:ZodTuple.create(items).rest(ZodUnknown.create())})}returns(returnType){return new ZodFunction({...this._def,returns:returnType})}implement(func){const validatedFunc=this.parse(func);return validatedFunc}strictImplement(func){const validatedFunc=this.parse(func);return validatedFunc}static create(args,returns,params){return new ZodFunction({args:args?args:ZodTuple.create([]).rest(ZodUnknown.create()),returns:returns||ZodUnknown.create(),typeName:ZodFirstPartyTypeKind.ZodFunction,...processCreateParams(params)})}}class ZodLazy extends ZodType{get schema(){return this._def.getter()}_parse(input){const{ctx}=this._processInputParams(input);const lazySchema=this._def.getter();return lazySchema._parse({data:ctx.data,path:ctx.path,parent:ctx})}}ZodLazy.create=(getter,params)=>{return new ZodLazy({getter:getter,typeName:ZodFirstPartyTypeKind.ZodLazy,...processCreateParams(params)})};class ZodLiteral extends ZodType{_parse(input){if(input.data!==this._def.value){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{received:ctx.data,code:ZodIssueCode.invalid_literal,expected:this._def.value});return INVALID}return{status:"valid",value:input.data}}get value(){return this._def.value}}ZodLiteral.create=(value,params)=>{return new ZodLiteral({value:value,typeName:ZodFirstPartyTypeKind.ZodLiteral,...processCreateParams(params)})};function createZodEnum(values,params){return new ZodEnum({values:values,typeName:ZodFirstPartyTypeKind.ZodEnum,...processCreateParams(params)})}class ZodEnum extends ZodType{constructor(){super(...arguments);_ZodEnum_cache.set(this,void 0)}_parse(input){if(typeof input.data!=="string"){const ctx=this._getOrReturnCtx(input);const expectedValues=this._def.values;addIssueToContext(ctx,{expected:util.joinValues(expectedValues),received:ctx.parsedType,code:ZodIssueCode.invalid_type});return INVALID}if(!__classPrivateFieldGet(this,_ZodEnum_cache)){__classPrivateFieldSet(this,_ZodEnum_cache,new Set(this._def.values))}if(!__classPrivateFieldGet(this,_ZodEnum_cache).has(input.data)){const ctx=this._getOrReturnCtx(input);const expectedValues=this._def.values;addIssueToContext(ctx,{received:ctx.data,code:ZodIssueCode.invalid_enum_value,options:expectedValues});return INVALID}return OK(input.data)}get options(){return this._def.values}get enum(){const enumValues={};for(const val of this._def.values){enumValues[val]=val}return enumValues}get Values(){const enumValues={};for(const val of this._def.values){enumValues[val]=val}return enumValues}get Enum(){const enumValues={};for(const val of this._def.values){enumValues[val]=val}return enumValues}extract(values,newDef=this._def){return ZodEnum.create(values,{...this._def,...newDef})}exclude(values,newDef=this._def){return ZodEnum.create(this.options.filter(opt=>!values.includes(opt)),{...this._def,...newDef})}}_ZodEnum_cache=new WeakMap;ZodEnum.create=createZodEnum;class ZodNativeEnum extends ZodType{constructor(){super(...arguments);_ZodNativeEnum_cache.set(this,void 0)}_parse(input){const nativeEnumValues=util.getValidEnumValues(this._def.values);const ctx=this._getOrReturnCtx(input);if(ctx.parsedType!==ZodParsedType.string&&ctx.parsedType!==ZodParsedType.number){const expectedValues=util.objectValues(nativeEnumValues);addIssueToContext(ctx,{expected:util.joinValues(expectedValues),received:ctx.parsedType,code:ZodIssueCode.invalid_type});return INVALID}if(!__classPrivateFieldGet(this,_ZodNativeEnum_cache)){__classPrivateFieldSet(this,_ZodNativeEnum_cache,new Set(util.getValidEnumValues(this._def.values)))}if(!__classPrivateFieldGet(this,_ZodNativeEnum_cache).has(input.data)){const expectedValues=util.objectValues(nativeEnumValues);addIssueToContext(ctx,{received:ctx.data,code:ZodIssueCode.invalid_enum_value,options:expectedValues});return INVALID}return OK(input.data)}get enum(){return this._def.values}}_ZodNativeEnum_cache=new WeakMap;ZodNativeEnum.create=(values,params)=>{return new ZodNativeEnum({values:values,typeName:ZodFirstPartyTypeKind.ZodNativeEnum,...processCreateParams(params)})};class ZodPromise extends ZodType{unwrap(){return this._def.type}_parse(input){const{ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.promise&&ctx.common.async===false){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.promise,received:ctx.parsedType});return INVALID}const promisified=ctx.parsedType===ZodParsedType.promise?ctx.data:Promise.resolve(ctx.data);return OK(promisified.then(data=>{return this._def.type.parseAsync(data,{path:ctx.path,errorMap:ctx.common.contextualErrorMap})}))}}ZodPromise.create=(schema,params)=>{return new ZodPromise({type:schema,typeName:ZodFirstPartyTypeKind.ZodPromise,...processCreateParams(params)})};class ZodEffects extends ZodType{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===ZodFirstPartyTypeKind.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(input){const{status,ctx}=this._processInputParams(input);const effect=this._def.effect||null;const checkCtx={addIssue:arg=>{addIssueToContext(ctx,arg);if(arg.fatal){status.abort()}else{status.dirty()}},get path(){return ctx.path}};checkCtx.addIssue=checkCtx.addIssue.bind(checkCtx);if(effect.type==="preprocess"){const processed=effect.transform(ctx.data,checkCtx);if(ctx.common.async){return Promise.resolve(processed).then(async processed=>{if(status.value==="aborted")return INVALID;const result=await this._def.schema._parseAsync({data:processed,path:ctx.path,parent:ctx});if(result.status==="aborted")return INVALID;if(result.status==="dirty")return DIRTY(result.value);if(status.value==="dirty")return DIRTY(result.value);return result})}else{if(status.value==="aborted")return INVALID;const result=this._def.schema._parseSync({data:processed,path:ctx.path,parent:ctx});if(result.status==="aborted")return INVALID;if(result.status==="dirty")return DIRTY(result.value);if(status.value==="dirty")return DIRTY(result.value);return result}}if(effect.type==="refinement"){const executeRefinement=acc=>{const result=effect.refinement(acc,checkCtx);if(ctx.common.async){return Promise.resolve(result)}if(result instanceof Promise){throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.")}return acc};if(ctx.common.async===false){const inner=this._def.schema._parseSync({data:ctx.data,path:ctx.path,parent:ctx});if(inner.status==="aborted")return INVALID;if(inner.status==="dirty")status.dirty();executeRefinement(inner.value);return{status:status.value,value:inner.value}}else{return this._def.schema._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}).then(inner=>{if(inner.status==="aborted")return INVALID;if(inner.status==="dirty")status.dirty();return executeRefinement(inner.value).then(()=>{return{status:status.value,value:inner.value}})})}}if(effect.type==="transform"){if(ctx.common.async===false){const base=this._def.schema._parseSync({data:ctx.data,path:ctx.path,parent:ctx});if(!isValid(base))return base;const result=effect.transform(base.value,checkCtx);if(result instanceof Promise){throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`)}return{status:status.value,value:result}}else{return this._def.schema._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}).then(base=>{if(!isValid(base))return base;return Promise.resolve(effect.transform(base.value,checkCtx)).then(result=>({status:status.value,value:result}))})}}util.assertNever(effect)}}ZodEffects.create=(schema,effect,params)=>{return new ZodEffects({schema:schema,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:effect,...processCreateParams(params)})};ZodEffects.createWithPreprocess=(preprocess,schema,params)=>{return new ZodEffects({schema:schema,effect:{type:"preprocess",transform:preprocess},typeName:ZodFirstPartyTypeKind.ZodEffects,...processCreateParams(params)})};class ZodOptional extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType===ZodParsedType.undefined){return OK(undefined)}return this._def.innerType._parse(input)}unwrap(){return this._def.innerType}}ZodOptional.create=(type,params)=>{return new ZodOptional({innerType:type,typeName:ZodFirstPartyTypeKind.ZodOptional,...processCreateParams(params)})};class ZodNullable extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType===ZodParsedType.null){return OK(null)}return this._def.innerType._parse(input)}unwrap(){return this._def.innerType}}ZodNullable.create=(type,params)=>{return new ZodNullable({innerType:type,typeName:ZodFirstPartyTypeKind.ZodNullable,...processCreateParams(params)})};class ZodDefault extends ZodType{_parse(input){const{ctx}=this._processInputParams(input);let data=ctx.data;if(ctx.parsedType===ZodParsedType.undefined){data=this._def.defaultValue()}return this._def.innerType._parse({data:data,path:ctx.path,parent:ctx})}removeDefault(){return this._def.innerType}}ZodDefault.create=(type,params)=>{return new ZodDefault({innerType:type,typeName:ZodFirstPartyTypeKind.ZodDefault,defaultValue:typeof params.default==="function"?params.default:()=>params.default,...processCreateParams(params)})};class ZodCatch extends ZodType{_parse(input){const{ctx}=this._processInputParams(input);const newCtx={...ctx,common:{...ctx.common,issues:[]}};const result=this._def.innerType._parse({data:newCtx.data,path:newCtx.path,parent:{...newCtx}});if(isAsync(result)){return result.then(result=>{return{status:"valid",value:result.status==="valid"?result.value:this._def.catchValue({get error(){return new ZodError(newCtx.common.issues)},input:newCtx.data})}})}else{return{status:"valid",value:result.status==="valid"?result.value:this._def.catchValue({get error(){return new ZodError(newCtx.common.issues)},input:newCtx.data})}}}removeCatch(){return this._def.innerType}}ZodCatch.create=(type,params)=>{return new ZodCatch({innerType:type,typeName:ZodFirstPartyTypeKind.ZodCatch,catchValue:typeof params.catch==="function"?params.catch:()=>params.catch,...processCreateParams(params)})};class ZodNaN extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType!==ZodParsedType.nan){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.nan,received:ctx.parsedType});return INVALID}return{status:"valid",value:input.data}}}ZodNaN.create=params=>{return new ZodNaN({typeName:ZodFirstPartyTypeKind.ZodNaN,...processCreateParams(params)})};const BRAND=Symbol("zod_brand");class ZodBranded extends ZodType{_parse(input){const{ctx}=this._processInputParams(input);const data=ctx.data;return this._def.type._parse({data:data,path:ctx.path,parent:ctx})}unwrap(){return this._def.type}}class ZodPipeline extends ZodType{_parse(input){const{status,ctx}=this._processInputParams(input);if(ctx.common.async){const handleAsync=async()=>{const inResult=await this._def.in._parseAsync({data:ctx.data,path:ctx.path,parent:ctx});if(inResult.status==="aborted")return INVALID;if(inResult.status==="dirty"){status.dirty();return DIRTY(inResult.value)}else{return this._def.out._parseAsync({data:inResult.value,path:ctx.path,parent:ctx})}};return handleAsync()}else{const inResult=this._def.in._parseSync({data:ctx.data,path:ctx.path,parent:ctx});if(inResult.status==="aborted")return INVALID;if(inResult.status==="dirty"){status.dirty();return{status:"dirty",value:inResult.value}}else{return this._def.out._parseSync({data:inResult.value,path:ctx.path,parent:ctx})}}}static create(a,b){return new ZodPipeline({in:a,out:b,typeName:ZodFirstPartyTypeKind.ZodPipeline})}}class ZodReadonly extends ZodType{_parse(input){const result=this._def.innerType._parse(input);const freeze=data=>{if(isValid(data)){data.value=Object.freeze(data.value)}return data};return isAsync(result)?result.then(data=>freeze(data)):freeze(result)}unwrap(){return this._def.innerType}}ZodReadonly.create=(type,params)=>{return new ZodReadonly({innerType:type,typeName:ZodFirstPartyTypeKind.ZodReadonly,...processCreateParams(params)})};function custom(check,params={},fatal){if(check)return ZodAny.create().superRefine((data,ctx)=>{var _a,_b;if(!check(data)){const p=typeof params==="function"?params(data):typeof params==="string"?{message:params}:params;const _fatal=(_b=(_a=p.fatal)!==null&&_a!==void 0?_a:fatal)!==null&&_b!==void 0?_b:true;const p2=typeof p==="string"?{message:p}:p;ctx.addIssue({code:"custom",...p2,fatal:_fatal})}});return ZodAny.create()}const late={object:ZodObject.lazycreate};var ZodFirstPartyTypeKind;(function(ZodFirstPartyTypeKind){ZodFirstPartyTypeKind["ZodString"]="ZodString";ZodFirstPartyTypeKind["ZodNumber"]="ZodNumber";ZodFirstPartyTypeKind["ZodNaN"]="ZodNaN";ZodFirstPartyTypeKind["ZodBigInt"]="ZodBigInt";ZodFirstPartyTypeKind["ZodBoolean"]="ZodBoolean";ZodFirstPartyTypeKind["ZodDate"]="ZodDate";ZodFirstPartyTypeKind["ZodSymbol"]="ZodSymbol";ZodFirstPartyTypeKind["ZodUndefined"]="ZodUndefined";ZodFirstPartyTypeKind["ZodNull"]="ZodNull";ZodFirstPartyTypeKind["ZodAny"]="ZodAny";ZodFirstPartyTypeKind["ZodUnknown"]="ZodUnknown";ZodFirstPartyTypeKind["ZodNever"]="ZodNever";ZodFirstPartyTypeKind["ZodVoid"]="ZodVoid";ZodFirstPartyTypeKind["ZodArray"]="ZodArray";ZodFirstPartyTypeKind["ZodObject"]="ZodObject";ZodFirstPartyTypeKind["ZodUnion"]="ZodUnion";ZodFirstPartyTypeKind["ZodDiscriminatedUnion"]="ZodDiscriminatedUnion";ZodFirstPartyTypeKind["ZodIntersection"]="ZodIntersection";ZodFirstPartyTypeKind["ZodTuple"]="ZodTuple";ZodFirstPartyTypeKind["ZodRecord"]="ZodRecord";ZodFirstPartyTypeKind["ZodMap"]="ZodMap";ZodFirstPartyTypeKind["ZodSet"]="ZodSet";ZodFirstPartyTypeKind["ZodFunction"]="ZodFunction";ZodFirstPartyTypeKind["ZodLazy"]="ZodLazy";ZodFirstPartyTypeKind["ZodLiteral"]="ZodLiteral";ZodFirstPartyTypeKind["ZodEnum"]="ZodEnum";ZodFirstPartyTypeKind["ZodEffects"]="ZodEffects";ZodFirstPartyTypeKind["ZodNativeEnum"]="ZodNativeEnum";ZodFirstPartyTypeKind["ZodOptional"]="ZodOptional";ZodFirstPartyTypeKind["ZodNullable"]="ZodNullable";ZodFirstPartyTypeKind["ZodDefault"]="ZodDefault";ZodFirstPartyTypeKind["ZodCatch"]="ZodCatch";ZodFirstPartyTypeKind["ZodPromise"]="ZodPromise";ZodFirstPartyTypeKind["ZodBranded"]="ZodBranded";ZodFirstPartyTypeKind["ZodPipeline"]="ZodPipeline";ZodFirstPartyTypeKind["ZodReadonly"]="ZodReadonly"})(ZodFirstPartyTypeKind||(ZodFirstPartyTypeKind={}));const instanceOfType=(cls,params={message:`Input not instance of ${cls.name}`})=>custom(data=>data instanceof cls,params);const stringType=ZodString.create;const numberType=ZodNumber.create;const nanType=ZodNaN.create;const bigIntType=ZodBigInt.create;const booleanType=ZodBoolean.create;const dateType=ZodDate.create;const symbolType=ZodSymbol.create;const undefinedType=ZodUndefined.create;const nullType=ZodNull.create;const anyType=ZodAny.create;const unknownType=ZodUnknown.create;const neverType=ZodNever.create;const voidType=ZodVoid.create;const arrayType=ZodArray.create;const objectType=ZodObject.create;const strictObjectType=ZodObject.strictCreate;const unionType=ZodUnion.create;const discriminatedUnionType=ZodDiscriminatedUnion.create;const intersectionType=ZodIntersection.create;const tupleType=ZodTuple.create;const recordType=ZodRecord.create;const mapType=ZodMap.create;const setType=ZodSet.create;const functionType=ZodFunction.create;const lazyType=ZodLazy.create;const literalType=ZodLiteral.create;const enumType=ZodEnum.create;const nativeEnumType=ZodNativeEnum.create;const promiseType=ZodPromise.create;const effectsType=ZodEffects.create;const optionalType=ZodOptional.create;const nullableType=ZodNullable.create;const preprocessType=ZodEffects.createWithPreprocess;const pipelineType=ZodPipeline.create;const ostring=()=>stringType().optional();const onumber=()=>numberType().optional();const oboolean=()=>booleanType().optional();const coerce={string:arg=>ZodString.create({...arg,coerce:true}),number:arg=>ZodNumber.create({...arg,coerce:true}),boolean:arg=>ZodBoolean.create({...arg,coerce:true}),bigint:arg=>ZodBigInt.create({...arg,coerce:true}),date:arg=>ZodDate.create({...arg,coerce:true})};const NEVER=INVALID;var z=Object.freeze({__proto__:null,defaultErrorMap:errorMap,setErrorMap:setErrorMap,getErrorMap:getErrorMap,makeIssue:makeIssue,EMPTY_PATH:EMPTY_PATH,addIssueToContext:addIssueToContext,ParseStatus:ParseStatus,INVALID:INVALID,DIRTY:DIRTY,OK:OK,isAborted:isAborted,isDirty:isDirty,isValid:isValid,isAsync:isAsync,get util(){return util},get objectUtil(){return objectUtil},ZodParsedType:ZodParsedType,getParsedType:getParsedType,ZodType:ZodType,datetimeRegex:datetimeRegex,ZodString:ZodString,ZodNumber:ZodNumber,ZodBigInt:ZodBigInt,ZodBoolean:ZodBoolean,ZodDate:ZodDate,ZodSymbol:ZodSymbol,ZodUndefined:ZodUndefined,ZodNull:ZodNull,ZodAny:ZodAny,ZodUnknown:ZodUnknown,ZodNever:ZodNever,ZodVoid:ZodVoid,ZodArray:ZodArray,ZodObject:ZodObject,ZodUnion:ZodUnion,ZodDiscriminatedUnion:ZodDiscriminatedUnion,ZodIntersection:ZodIntersection,ZodTuple:ZodTuple,ZodRecord:ZodRecord,ZodMap:ZodMap,ZodSet:ZodSet,ZodFunction:ZodFunction,ZodLazy:ZodLazy,ZodLiteral:ZodLiteral,ZodEnum:ZodEnum,ZodNativeEnum:ZodNativeEnum,ZodPromise:ZodPromise,ZodEffects:ZodEffects,ZodTransformer:ZodEffects,ZodOptional:ZodOptional,ZodNullable:ZodNullable,ZodDefault:ZodDefault,ZodCatch:ZodCatch,ZodNaN:ZodNaN,BRAND:BRAND,ZodBranded:ZodBranded,ZodPipeline:ZodPipeline,ZodReadonly:ZodReadonly,custom:custom,Schema:ZodType,ZodSchema:ZodType,late:late,get ZodFirstPartyTypeKind(){return ZodFirstPartyTypeKind},coerce:coerce,any:anyType,array:arrayType,bigint:bigIntType,boolean:booleanType,date:dateType,discriminatedUnion:discriminatedUnionType,effect:effectsType,enum:enumType,function:functionType,instanceof:instanceOfType,intersection:intersectionType,lazy:lazyType,literal:literalType,map:mapType,nan:nanType,nativeEnum:nativeEnumType,never:neverType,null:nullType,nullable:nullableType,number:numberType,object:objectType,oboolean:oboolean,onumber:onumber,optional:optionalType,ostring:ostring,pipeline:pipelineType,preprocess:preprocessType,promise:promiseType,record:recordType,set:setType,strictObject:strictObjectType,string:stringType,symbol:symbolType,transformer:effectsType,tuple:tupleType,undefined:undefinedType,union:unionType,unknown:unknownType,void:voidType,NEVER:NEVER,ZodIssueCode:ZodIssueCode,quotelessJson:quotelessJson,ZodError:ZodError});const SerializedSealingPair=z.object({privateKey:z.string(),publicKey:z.string()});const zPermitV2WithDefaults=z.object({name:z.string().optional().default("Unnamed Permit"),type:z.enum(["self","sharing","recipient"]),issuer:z.string().refine(val=>isAddress(val),{message:"PermitV2 issuer :: invalid address"}).refine(val=>val!==ZeroAddress,{message:"PermitV2 issuer :: must not be zeroAddress"}),expiration:z.number().optional().default(1e12),contracts:z.array(z.string()).optional().default([]),projects:z.array(z.string()).optional().default([]),recipient:z.string().optional().default(ZeroAddress).refine(val=>isAddress(val),{message:"PermitV2 recipient :: invalid address"}),validatorId:z.number().optional().default(0),validatorContract:z.string().optional().default(ZeroAddress).refine(val=>isAddress(val),{message:"PermitV2 validatorContract :: invalid address"}),sealingPair:SerializedSealingPair.optional(),issuerSignature:z.string().optional().default("0x"),recipientSignature:z.string().optional().default("0x")});const PermitV2RefineAccess=[data=>{return data.contracts.length+data.projects.length>0},{message:"PermitV2 access :: at least one contract or project must be accessible.",path:["contracts","projects"]}];const PermitV2RefineValidator=[data=>data.validatorId!==0&&data.validatorContract!==ZeroAddress||data.validatorId===0&&data.validatorContract===ZeroAddress,{message:"PermitV2 external validator :: validatorId and validatorContract must either both be set or both be unset.",path:["validatorId","validatorContract"]}];const PermitV2SignaturesSuperRefinement=options=>{return(data,ctx)=>{if(options.checkRecipient){if(data.type==="self"&&data.recipient!==ZeroAddress)ctx.addIssue({code:z.ZodIssueCode.custom,path:["recipient"],message:`PermitV2 (type '${data.type}') recipient :: must be empty (zeroAddress)`});if((data.type==="recipient"||data.type==="sharing")&&data.recipient===ZeroAddress){ctx.addIssue({code:z.ZodIssueCode.custom,path:["recipient"],message:`PermitV2 (type '${data.type}') recipient :: must not be empty`})}}if(options.checkSealingPair&&data.sealingPair==null)ctx.addIssue({code:z.ZodIssueCode.custom,path:["sealingPair"],message:`PermitV2 sealingPair :: must not be empty`});if((data.type==="self"||data.type==="sharing")&&data.recipientSignature!=="0x"){ctx.addIssue({code:z.ZodIssueCode.custom,path:["recipientSignature"],message:`PermitV2 (type '${data.type}') recipientSignature :: should not be populated by the issuer`})}if(data.type==="recipient"&&data.issuerSignature==="0x"){ctx.addIssue({code:z.ZodIssueCode.custom,path:["issuerSignature"],message:`PermitV2 (type 'recipient') issuerSignature :: \`issuer\` must sign the PermitV2 before sharing it with \`recipient\``})}if(options.checkSigned){if((data.type==="self"||data.type==="sharing")&&data.issuerSignature==="0x")ctx.addIssue({code:z.ZodIssueCode.custom,path:["issuerSignature"],message:`PermitV2 (type '${data.type}') issuerSignature :: must be populated with issuer's signature. Use \`PermitV2.sign\` or create permit with \`PermitV2.createAndSign\``});if(data.type==="recipient"&&data.recipientSignature==="0x"){ctx.addIssue({code:z.ZodIssueCode.custom,path:["recipientSignature"],message:`PermitV2 (type 'recipient') recipientSignature :: must be populated with recipient's signature. Use \`PermitV2.sign\` or create permit with \`PermitV2.createAndSign\``})}}return}};const PermitV2ParamsValidator=zPermitV2WithDefaults.refine(...PermitV2RefineAccess).refine(...PermitV2RefineValidator).superRefine(PermitV2SignaturesSuperRefinement({checkRecipient:true,checkSealingPair:false,checkSigned:false}));const FullyFormedPermitV2Validator=zPermitV2WithDefaults.required().refine(...PermitV2RefineAccess).refine(...PermitV2RefineValidator).superRefine(PermitV2SignaturesSuperRefinement({checkRecipient:true,checkSealingPair:true,checkSigned:true}));class PermitV2{constructor(options,metadata){this._signedChainId=undefined;this.updateName=name=>{this.name=name};this.getInterface=()=>{return{name:this.name,type:this.type,issuer:this.issuer,expiration:this.expiration,contracts:this.contracts,projects:this.projects,recipient:this.recipient,validatorId:this.validatorId,validatorContract:this.validatorContract,sealingPair:this.sealingPair,issuerSignature:this.issuerSignature,recipientSignature:this.recipientSignature}};this.export=()=>{const cleanedPermit={name:this.name,type:this.type,issuer:this.issuer,expiration:this.expiration};if(this.contracts.length>0)cleanedPermit.contracts=this.contracts;if(this.projects.length>0)cleanedPermit.projects=this.projects;if(this.recipient!==ZeroAddress)cleanedPermit.recipient=this.recipient;if(this.validatorId!==0)cleanedPermit.validatorId=this.validatorId;if(this.validatorContract!==ZeroAddress)cleanedPermit.validatorContract=this.validatorContract;if(this.type==="sharing"&&this.issuerSignature!=="0x")cleanedPermit.issuerSignature=this.issuerSignature;return JSON.stringify(cleanedPermit,undefined,2)};this.serialize=()=>{const{sealingPair,...permit}=this.getInterface();return{...permit,_signedChainId:this._signedChainId,sealingPair:{publicKey:sealingPair.publicKey,privateKey:sealingPair.privateKey}}};this.getPermission=(skipValidation=false)=>{const permitData=this.getInterface();if(!skipValidation){const validationResult=FullyFormedPermitV2Validator.safeParse(permitData);if(!validationResult.success){throw new Error(`PermitV2 :: getPermission :: permit validation failed - ${JSON.stringify(validationResult.error,null,2)} ${JSON.stringify(permitData,null,2)}`)}}const{name,type,sealingPair,...permit}=permitData;return{...permit,sealingKey:`0x${sealingPair.publicKey}`}};this.getHash=()=>keccak256(id(JSON.stringify({type:this.type,issuer:this.issuer,expiration:this.expiration,contracts:this.contracts,projects:this.projects,recipient:this.recipient,validatorId:this.validatorId,validatorContract:this.validatorContract})));this.getSignatureParams=(chainId,primaryType)=>{return{domain:getSignatureDomain(chainId),...getSignatureTypesAndMessage(primaryType,SignatureTypes[primaryType],this.getPermission(true))}};this.sign=async(chainId,signer)=>{if(chainId==null)throw new Error("PermitV2 :: sign - chainId undefined, cannot sign a permit with an unknown chainId");if(signer==null)throw new Error("PermitV2 :: sign - signer undefined, you must pass in a `signer` for the connected user to create a permitV2 signature");let primaryType="PermissionedV2IssuerSelf";if(this.type==="self")primaryType="PermissionedV2IssuerSelf";if(this.type==="sharing")primaryType="PermissionedV2IssuerShared";if(this.type==="recipient")primaryType="PermissionedV2Recipient";const{domain,types,message}=this.getSignatureParams(chainId,primaryType);const signature=await signer.signTypedData(domain,types,message);if(this.type==="self"||this.type==="sharing"){this.issuerSignature=signature}if(this.type==="recipient"){this.recipientSignature=signature}this._signedChainId=chainId};this.unsealCiphertext=ciphertext=>{if(chainIsHardhat(this._signedChainId))return hardhatMockUnseal(ciphertext);return this.sealingPair.unseal(ciphertext)};this.getSatisfies=requirements=>{let contractsSatisfied=true;const unsatisfiedContracts=[];for(const contract in requirements.contracts){if(!this.contracts.includes(contract)){contractsSatisfied=false;unsatisfiedContracts.push(contract)}}let projectsSatisfied=true;const unsatisfiedProjects=[];for(const project in requirements.projects){if(!this.projects.includes(project)){projectsSatisfied=false;unsatisfiedProjects.push(project)}}if(contractsSatisfied||projectsSatisfied)return{satisfies:true,unsatisfiedContracts:null,unsatisfiedProjects:null};return{satisfies:false,unsatisfiedContracts:unsatisfiedContracts,unsatisfiedProjects:unsatisfiedProjects}};this.isSigned=()=>{if(this.type==="self"||this.type==="sharing"){return this.issuerSignature!=="0x"}if(this.type==="recipient"){return this.recipientSignature!="0x"}return false};this.isExpired=()=>{return this.expiration{if(this.isExpired())return{valid:false,error:"expired"};if(!this.isSigned())return{valid:false,error:"not-signed"};return{valid:true,error:null}};this.name=options.name;this.type=options.type;this.issuer=options.issuer;this.expiration=options.expiration;this.contracts=options.contracts;this.projects=options.projects;this.recipient=options.recipient;this.validatorId=options.validatorId;this.validatorContract=options.validatorContract;this.sealingPair=options.sealingPair;this.issuerSignature=options.issuerSignature;this.recipientSignature=options.recipientSignature;this._signedChainId=metadata?._signedChainId}static async create(options){const{success,data:parsed,error}=PermitV2ParamsValidator.safeParse(options);if(!success){throw new Error("PermitV2 :: create :: Parsing PermitV2Options failed "+JSON.stringify(error,null,2))}const sealingPair=parsed.sealingPair!=null?new SealingKey(parsed.sealingPair.privateKey,parsed.sealingPair.publicKey):await GenerateSealingKey();return new PermitV2({...parsed,sealingPair:sealingPair})}static async createAndSign(options,chainId,signer){const permit=await PermitV2.create(options);await permit.sign(chainId,signer);return permit}unseal(item){const sealedItem=getAsSealedItem(item);if(sealedItem!=null){const bn=chainIsHardhat(this._signedChainId)?hardhatMockUnseal(sealedItem.data):this.sealingPair.unseal(sealedItem.data);if(isSealedBool(sealedItem)){return Boolean(bn).valueOf()}if(isSealedAddress(sealedItem)){return getAddress(`0x${bn.toString(16).slice(-40)}`)}if(isSealedUint(sealedItem)){return bn}}if(typeof item==="object"&&item!==null){if(Array.isArray(item)){return item.map(nestedItem=>this.unseal(nestedItem))}else{const result={};for(const key in item){result[key]=this.unseal(item[key])}return result}}return item}}PermitV2.deserialize=({_signedChainId,sealingPair,...permit})=>{return new PermitV2({...permit,sealingPair:new SealingKey(sealingPair.privateKey,sealingPair.publicKey)},{_signedChainId:_signedChainId})};PermitV2.validate=permit=>{return FullyFormedPermitV2Validator.safeParse(permit)};const createStoreImpl=createState=>{let state;const listeners=new Set;const setState=(partial,replace)=>{const nextState=typeof partial==="function"?partial(state):partial;if(!Object.is(nextState,state)){const previousState=state;state=(replace!=null?replace:typeof nextState!=="object"||nextState===null)?nextState:Object.assign({},state,nextState);listeners.forEach(listener=>listener(state,previousState))}};const getState=()=>state;const getInitialState=()=>initialState;const subscribe=listener=>{listeners.add(listener);return()=>listeners.delete(listener)};const api={setState:setState,getState:getState,getInitialState:getInitialState,subscribe:subscribe};const initialState=state=createState(setState,getState,api);return api};const createStore=createState=>createState?createStoreImpl(createState):createStoreImpl;function createJSONStorage(getStorage,options){let storage;try{storage=getStorage()}catch(e){return}const persistStorage={getItem:name=>{var _a;const parse=str2=>{if(str2===null){return null}return JSON.parse(str2,void 0)};const str=(_a=storage.getItem(name))!=null?_a:null;if(str instanceof Promise){return str.then(parse)}return parse(str)},setItem:(name,newValue)=>storage.setItem(name,JSON.stringify(newValue,void 0)),removeItem:name=>storage.removeItem(name)};return persistStorage}const toThenable=fn=>input=>{try{const result=fn(input);if(result instanceof Promise){return result}return{then(onFulfilled){return toThenable(onFulfilled)(result)},catch(_onRejected){return this}}}catch(e){return{then(_onFulfilled){return this},catch(onRejected){return toThenable(onRejected)(e)}}}};const persistImpl=(config,baseOptions)=>(set,get,api)=>{let options={storage:createJSONStorage(()=>localStorage),partialize:state=>state,version:0,merge:(persistedState,currentState)=>({...currentState,...persistedState}),...baseOptions};let hasHydrated=false;const hydrationListeners=new Set;const finishHydrationListeners=new Set;let storage=options.storage;if(!storage){return config((...args)=>{console.warn(`[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`);set(...args)},get,api)}const setItem=()=>{const state=options.partialize({...get()});return storage.setItem(options.name,{state:state,version:options.version})};const savedSetState=api.setState;api.setState=(state,replace)=>{savedSetState(state,replace);void setItem()};const configResult=config((...args)=>{set(...args);void setItem()},get,api);api.getInitialState=()=>configResult;let stateFromStorage;const hydrate=()=>{var _a,_b;if(!storage)return;hasHydrated=false;hydrationListeners.forEach(cb=>{var _a2;return cb((_a2=get())!=null?_a2:configResult)});const postRehydrationCallback=((_b=options.onRehydrateStorage)==null?void 0:_b.call(options,(_a=get())!=null?_a:configResult))||void 0;return toThenable(storage.getItem.bind(storage))(options.name).then(deserializedStorageValue=>{if(deserializedStorageValue){if(typeof deserializedStorageValue.version==="number"&&deserializedStorageValue.version!==options.version){if(options.migrate){return[true,options.migrate(deserializedStorageValue.state,deserializedStorageValue.version)]}console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`)}else{return[false,deserializedStorageValue.state]}}return[false,void 0]}).then(migrationResult=>{var _a2;const[migrated,migratedState]=migrationResult;stateFromStorage=options.merge(migratedState,(_a2=get())!=null?_a2:configResult);set(stateFromStorage,true);if(migrated){return setItem()}}).then(()=>{postRehydrationCallback==null?void 0:postRehydrationCallback(stateFromStorage,void 0);stateFromStorage=get();hasHydrated=true;finishHydrationListeners.forEach(cb=>cb(stateFromStorage))}).catch(e=>{postRehydrationCallback==null?void 0:postRehydrationCallback(void 0,e)})};api.persist={setOptions:newOptions=>{options={...options,...newOptions};if(newOptions.storage){storage=newOptions.storage}},clearStorage:()=>{storage==null?void 0:storage.removeItem(options.name)},getOptions:()=>options,rehydrate:()=>hydrate(),hasHydrated:()=>hasHydrated,onHydrate:cb=>{hydrationListeners.add(cb);return()=>{hydrationListeners.delete(cb)}},onFinishHydration:cb=>{finishHydrationListeners.add(cb);return()=>{finishHydrationListeners.delete(cb)}}};if(!options.skipHydration){hydrate()}return stateFromStorage||configResult};const persist=persistImpl;var NOTHING=Symbol.for("immer-nothing");var DRAFTABLE=Symbol.for("immer-draftable");var DRAFT_STATE=Symbol.for("immer-state");var errors=process.env.NODE_ENV!=="production"?[function(plugin){return`The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \`enable${plugin}()\` when initializing your application.`},function(thing){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`},"This object has been frozen and should not be mutated",function(data){return"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? "+data},"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.","Immer forbids circular references","The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(thing){return`'current' expects a draft, got: ${thing}`},"Object.defineProperty() cannot be used on an Immer draft","Object.setPrototypeOf() cannot be used on an Immer draft","Immer only supports deleting array indices","Immer only supports setting array indices and the 'length' property",function(thing){return`'original' expects a draft, got: ${thing}`}]:[];function die(error,...args){if(process.env.NODE_ENV!=="production"){const e=errors[error];const msg=typeof e==="function"?e.apply(null,args):e;throw new Error(`[Immer] ${msg}`)}throw new Error(`[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`)}var getPrototypeOf=Object.getPrototypeOf;function isDraft(value){return!!value&&!!value[DRAFT_STATE]}function isDraftable(value){if(!value)return false;return isPlainObject(value)||Array.isArray(value)||!!value[DRAFTABLE]||!!value.constructor?.[DRAFTABLE]||isMap(value)||isSet(value)}var objectCtorString=Object.prototype.constructor.toString();function isPlainObject(value){if(!value||typeof value!=="object")return false;const proto=getPrototypeOf(value);if(proto===null){return true}const Ctor=Object.hasOwnProperty.call(proto,"constructor")&&proto.constructor;if(Ctor===Object)return true;return typeof Ctor=="function"&&Function.toString.call(Ctor)===objectCtorString}function each(obj,iter){if(getArchtype(obj)===0){Reflect.ownKeys(obj).forEach(key=>{iter(key,obj[key],obj)})}else{obj.forEach((entry,index)=>iter(index,entry,obj))}}function getArchtype(thing){const state=thing[DRAFT_STATE];return state?state.type_:Array.isArray(thing)?1:isMap(thing)?2:isSet(thing)?3:0}function has(thing,prop){return getArchtype(thing)===2?thing.has(prop):Object.prototype.hasOwnProperty.call(thing,prop)}function set(thing,propOrOldValue,value){const t=getArchtype(thing);if(t===2)thing.set(propOrOldValue,value);else if(t===3){thing.add(value)}else thing[propOrOldValue]=value}function is(x,y){if(x===y){return x!==0||1/x===1/y}else{return x!==x&&y!==y}}function isMap(target){return target instanceof Map}function isSet(target){return target instanceof Set}function latest(state){return state.copy_||state.base_}function shallowCopy(base,strict){if(isMap(base)){return new Map(base)}if(isSet(base)){return new Set(base)}if(Array.isArray(base))return Array.prototype.slice.call(base);const isPlain=isPlainObject(base);if(strict===true||strict==="class_only"&&!isPlain){const descriptors=Object.getOwnPropertyDescriptors(base);delete descriptors[DRAFT_STATE];let keys=Reflect.ownKeys(descriptors);for(let i=0;i1){obj.set=obj.add=obj.clear=obj.delete=dontMutateFrozenCollections}Object.freeze(obj);if(deep)Object.entries(obj).forEach(([key,value])=>freeze(value,true));return obj}function dontMutateFrozenCollections(){die(2)}function isFrozen(obj){return Object.isFrozen(obj)}var plugins={};function getPlugin(pluginKey){const plugin=plugins[pluginKey];if(!plugin){die(0,pluginKey)}return plugin}var currentScope;function getCurrentScope(){return currentScope}function createScope(parent_,immer_){return{drafts_:[],parent_:parent_,immer_:immer_,canAutoFreeze_:true,unfinalizedDrafts_:0}}function usePatchesInScope(scope,patchListener){if(patchListener){getPlugin("Patches");scope.patches_=[];scope.inversePatches_=[];scope.patchListener_=patchListener}}function revokeScope(scope){leaveScope(scope);scope.drafts_.forEach(revokeDraft);scope.drafts_=null}function leaveScope(scope){if(scope===currentScope){currentScope=scope.parent_}}function enterScope(immer2){return currentScope=createScope(currentScope,immer2)}function revokeDraft(draft){const state=draft[DRAFT_STATE];if(state.type_===0||state.type_===1)state.revoke_();else state.revoked_=true}function processResult(result,scope){scope.unfinalizedDrafts_=scope.drafts_.length;const baseDraft=scope.drafts_[0];const isReplaced=result!==void 0&&result!==baseDraft;if(isReplaced){if(baseDraft[DRAFT_STATE].modified_){revokeScope(scope);die(4)}if(isDraftable(result)){result=finalize(scope,result);if(!scope.parent_)maybeFreeze(scope,result)}if(scope.patches_){getPlugin("Patches").generateReplacementPatches_(baseDraft[DRAFT_STATE].base_,result,scope.patches_,scope.inversePatches_)}}else{result=finalize(scope,baseDraft,[])}revokeScope(scope);if(scope.patches_){scope.patchListener_(scope.patches_,scope.inversePatches_)}return result!==NOTHING?result:void 0}function finalize(rootScope,value,path){if(isFrozen(value))return value;const state=value[DRAFT_STATE];if(!state){each(value,(key,childValue)=>finalizeProperty(rootScope,state,value,key,childValue,path));return value}if(state.scope_!==rootScope)return value;if(!state.modified_){maybeFreeze(rootScope,state.base_,true);return state.base_}if(!state.finalized_){state.finalized_=true;state.scope_.unfinalizedDrafts_--;const result=state.copy_;let resultEach=result;let isSet2=false;if(state.type_===3){resultEach=new Set(result);result.clear();isSet2=true}each(resultEach,(key,childValue)=>finalizeProperty(rootScope,state,result,key,childValue,path,isSet2));maybeFreeze(rootScope,result,false);if(path&&rootScope.patches_){getPlugin("Patches").generatePatches_(state,path,rootScope.patches_,rootScope.inversePatches_)}}return state.copy_}function finalizeProperty(rootScope,parentState,targetObject,prop,childValue,rootPath,targetIsSet){if(process.env.NODE_ENV!=="production"&&childValue===targetObject)die(5);if(isDraft(childValue)){const path=rootPath&&parentState&&parentState.type_!==3&&!has(parentState.assigned_,prop)?rootPath.concat(prop):void 0;const res=finalize(rootScope,childValue,path);set(targetObject,prop,res);if(isDraft(res)){rootScope.canAutoFreeze_=false}else return}else if(targetIsSet){targetObject.add(childValue)}if(isDraftable(childValue)&&!isFrozen(childValue)){if(!rootScope.immer_.autoFreeze_&&rootScope.unfinalizedDrafts_<1){return}finalize(rootScope,childValue);if((!parentState||!parentState.scope_.parent_)&&typeof prop!=="symbol"&&Object.prototype.propertyIsEnumerable.call(targetObject,prop))maybeFreeze(rootScope,childValue)}}function maybeFreeze(scope,value,deep=false){if(!scope.parent_&&scope.immer_.autoFreeze_&&scope.canAutoFreeze_){freeze(value,deep)}}function createProxyProxy(base,parent){const isArray=Array.isArray(base);const state={type_:isArray?1:0,scope_:parent?parent.scope_:getCurrentScope(),modified_:false,finalized_:false,assigned_:{},parent_:parent,base_:base,draft_:null,copy_:null,revoke_:null,isManual_:false};let target=state;let traps=objectTraps;if(isArray){target=[state];traps=arrayTraps}const{revoke,proxy}=Proxy.revocable(target,traps);state.draft_=proxy;state.revoke_=revoke;return proxy}var objectTraps={get(state,prop){if(prop===DRAFT_STATE)return state;const source=latest(state);if(!has(source,prop)){return readPropFromProto(state,source,prop)}const value=source[prop];if(state.finalized_||!isDraftable(value)){return value}if(value===peek(state.base_,prop)){prepareCopy(state);return state.copy_[prop]=createProxy(value,state)}return value},has(state,prop){return prop in latest(state)},ownKeys(state){return Reflect.ownKeys(latest(state))},set(state,prop,value){const desc=getDescriptorFromProto(latest(state),prop);if(desc?.set){desc.set.call(state.draft_,value);return true}if(!state.modified_){const current2=peek(latest(state),prop);const currentState=current2?.[DRAFT_STATE];if(currentState&¤tState.base_===value){state.copy_[prop]=value;state.assigned_[prop]=false;return true}if(is(value,current2)&&(value!==void 0||has(state.base_,prop)))return true;prepareCopy(state);markChanged(state)}if(state.copy_[prop]===value&&(value!==void 0||prop in state.copy_)||Number.isNaN(value)&&Number.isNaN(state.copy_[prop]))return true;state.copy_[prop]=value;state.assigned_[prop]=true;return true},deleteProperty(state,prop){if(peek(state.base_,prop)!==void 0||prop in state.base_){state.assigned_[prop]=false;prepareCopy(state);markChanged(state)}else{delete state.assigned_[prop]}if(state.copy_){delete state.copy_[prop]}return true},getOwnPropertyDescriptor(state,prop){const owner=latest(state);const desc=Reflect.getOwnPropertyDescriptor(owner,prop);if(!desc)return desc;return{writable:true,configurable:state.type_!==1||prop!=="length",enumerable:desc.enumerable,value:owner[prop]}},defineProperty(){die(11)},getPrototypeOf(state){return getPrototypeOf(state.base_)},setPrototypeOf(){die(12)}};var arrayTraps={};each(objectTraps,(key,fn)=>{arrayTraps[key]=function(){arguments[0]=arguments[0][0];return fn.apply(this,arguments)}});arrayTraps.deleteProperty=function(state,prop){if(process.env.NODE_ENV!=="production"&&isNaN(parseInt(prop)))die(13);return arrayTraps.set.call(this,state,prop,void 0)};arrayTraps.set=function(state,prop,value){if(process.env.NODE_ENV!=="production"&&prop!=="length"&&isNaN(parseInt(prop)))die(14);return objectTraps.set.call(this,state[0],prop,value,state[0])};function peek(draft,prop){const state=draft[DRAFT_STATE];const source=state?latest(state):draft;return source[prop]}function readPropFromProto(state,source,prop){const desc=getDescriptorFromProto(source,prop);return desc?`value`in desc?desc.value:desc.get?.call(state.draft_):void 0}function getDescriptorFromProto(source,prop){if(!(prop in source))return void 0;let proto=getPrototypeOf(source);while(proto){const desc=Object.getOwnPropertyDescriptor(proto,prop);if(desc)return desc;proto=getPrototypeOf(proto)}return void 0}function markChanged(state){if(!state.modified_){state.modified_=true;if(state.parent_){markChanged(state.parent_)}}}function prepareCopy(state){if(!state.copy_){state.copy_=shallowCopy(state.base_,state.scope_.immer_.useStrictShallowCopy_)}}var Immer2=class{constructor(config){this.autoFreeze_=true;this.useStrictShallowCopy_=false;this.produce=(base,recipe,patchListener)=>{if(typeof base==="function"&&typeof recipe!=="function"){const defaultBase=recipe;recipe=base;const self=this;return function curriedProduce(base2=defaultBase,...args){return self.produce(base2,draft=>recipe.call(this,draft,...args))}}if(typeof recipe!=="function")die(6);if(patchListener!==void 0&&typeof patchListener!=="function")die(7);let result;if(isDraftable(base)){const scope=enterScope(this);const proxy=createProxy(base,void 0);let hasError=true;try{result=recipe(proxy);hasError=false}finally{if(hasError)revokeScope(scope);else leaveScope(scope)}usePatchesInScope(scope,patchListener);return processResult(result,scope)}else if(!base||typeof base!=="object"){result=recipe(base);if(result===void 0)result=base;if(result===NOTHING)result=void 0;if(this.autoFreeze_)freeze(result,true);if(patchListener){const p=[];const ip=[];getPlugin("Patches").generateReplacementPatches_(base,result,p,ip);patchListener(p,ip)}return result}else die(1,base)};this.produceWithPatches=(base,recipe)=>{if(typeof base==="function"){return(state,...args)=>this.produceWithPatches(state,draft=>base(draft,...args))}let patches,inversePatches;const result=this.produce(base,recipe,(p,ip)=>{patches=p;inversePatches=ip});return[result,patches,inversePatches]};if(typeof config?.autoFreeze==="boolean")this.setAutoFreeze(config.autoFreeze);if(typeof config?.useStrictShallowCopy==="boolean")this.setUseStrictShallowCopy(config.useStrictShallowCopy)}createDraft(base){if(!isDraftable(base))die(8);if(isDraft(base))base=current(base);const scope=enterScope(this);const proxy=createProxy(base,void 0);proxy[DRAFT_STATE].isManual_=true;leaveScope(scope);return proxy}finishDraft(draft,patchListener){const state=draft&&draft[DRAFT_STATE];if(!state||!state.isManual_)die(9);const{scope_:scope}=state;usePatchesInScope(scope,patchListener);return processResult(void 0,scope)}setAutoFreeze(value){this.autoFreeze_=value}setUseStrictShallowCopy(value){this.useStrictShallowCopy_=value}applyPatches(base,patches){let i;for(i=patches.length-1;i>=0;i--){const patch=patches[i];if(patch.path.length===0&&patch.op==="replace"){base=patch.value;break}}if(i>-1){patches=patches.slice(i+1)}const applyPatchesImpl=getPlugin("Patches").applyPatches_;if(isDraft(base)){return applyPatchesImpl(base,patches)}return this.produce(base,draft=>applyPatchesImpl(draft,patches))}};function createProxy(value,parent){const draft=isMap(value)?getPlugin("MapSet").proxyMap_(value,parent):isSet(value)?getPlugin("MapSet").proxySet_(value,parent):createProxyProxy(value,parent);const scope=parent?parent.scope_:getCurrentScope();scope.drafts_.push(draft);return draft}function current(value){if(!isDraft(value))die(10,value);return currentImpl(value)}function currentImpl(value){if(!isDraftable(value)||isFrozen(value))return value;const state=value[DRAFT_STATE];let copy;if(state){if(!state.modified_)return state.base_;state.finalized_=true;copy=shallowCopy(value,state.scope_.immer_.useStrictShallowCopy_)}else{copy=shallowCopy(value,true)}each(copy,(key,childValue)=>{set(copy,key,currentImpl(childValue))});if(state){state.finalized_=false}return copy}var immer=new Immer2;var produce=immer.produce;immer.produceWithPatches.bind(immer);immer.setAutoFreeze.bind(immer);immer.setUseStrictShallowCopy.bind(immer);immer.applyPatches.bind(immer);immer.createDraft.bind(immer);immer.finishDraft.bind(immer);const _permitStore=createStore()(persist(()=>({permits:{},activePermitHash:{}}),{name:"fhenixjs-permits"}));const getPermit$1=(account,hash)=>{if(account==null||hash==null)return;const savedPermit=_permitStore.getState().permits[account]?.[hash];if(savedPermit==null)return;return PermitV2.deserialize(savedPermit)};const getActivePermit=account=>{if(account==null)return;const activePermitHash=_permitStore.getState().activePermitHash[account];return getPermit$1(account,activePermitHash)};const getPermits=account=>{if(account==null)return{};return Object.entries(_permitStore.getState().permits[account]??{}).reduce((acc,[hash,permit])=>{if(permit==undefined)return acc;return{...acc,[hash]:PermitV2.deserialize(permit)}},{})};const setPermit=(account,permitV2)=>{_permitStore.setState(produce(state=>{if(state.permits[account]==null)state.permits[account]={};state.permits[account][permitV2.getHash()]=permitV2.serialize()}))};const removePermit=(account,hash)=>{_permitStore.setState(produce(state=>{state.permits[account][hash]=undefined}))};const getActivePermitHash=account=>{if(account==null)return undefined;return _permitStore.getState().activePermitHash[account]};const setActivePermitHash=(account,hash)=>{_permitStore.setState(produce(state=>{state.activePermitHash[account]=hash}))};const removeActivePermitHash=account=>{_permitStore.setState(produce(state=>{state.activePermitHash[account]=undefined}))};const permitStore={store:_permitStore,getPermit:getPermit$1,getActivePermit:getActivePermit,getPermits:getPermits,setPermit:setPermit,removePermit:removePermit,getActivePermitHash:getActivePermitHash,setActivePermitHash:setActivePermitHash,removeActivePermitHash:removeActivePermitHash};const _sdkStore=createStore(()=>({fheKeysInitialized:false,securityZones:[0],fheKeys:{},accessRequirements:{contracts:[],projects:[]},providerInitialized:false,provider:undefined,chainId:undefined,signerInitialized:false,signer:undefined,account:undefined}));const _store_chainId=()=>_sdkStore.getState().chainId;const _store_getFheKey=(chainId,securityZone=0)=>{if(chainId==null||securityZone==null)return undefined;const serialized=_sdkStore.getState().fheKeys[chainId]?.[securityZone];if(serialized==null)return undefined;return TfheCompactPublicKey.deserialize(serialized)};const _store_getConnectedChainFheKey=(securityZone=0)=>{const state=_sdkStore.getState();if(securityZone==null)return undefined;if(state.chainId==null)return undefined;const serialized=state.fheKeys[state.chainId]?.[securityZone];if(serialized==null)return undefined;return TfheCompactPublicKey.deserialize(serialized)};const _store_setFheKey=(chainId,securityZone,fheKey)=>{if(chainId==null||securityZone==null)return;_sdkStore.setState(produce(state=>{if(state.fheKeys[chainId]==null)state.fheKeys[chainId]={};state.fheKeys[chainId][securityZone]=fheKey?.serialize()}))};const getChainIdFromProvider=async provider=>{const chainId=await provider.getChainId();if(chainId==null)throw new Error("sdk :: getChainIdFromProvider :: provider.getChainId returned a null result, ensure that your provider is connected to a network");return chainId};const _store_initialize=async params=>{const{provider,signer,securityZones=[0],contracts:contractRequirements=[],projects:projectRequirements=[]}=params;_sdkStore.setState({providerInitialized:false,signerInitialized:false,accessRequirements:{contracts:contractRequirements,projects:projectRequirements}});const chainId=await getChainIdFromProvider(provider);const chainIdChanged=chainId!=null&&chainId!==_sdkStore.getState().chainId;if(chainId!=null&&provider!=null){_sdkStore.setState({providerInitialized:true,provider:provider,chainId:chainId})}const account=await signer?.getAddress();if(account!=null&&signer!=null){_sdkStore.setState({signerInitialized:true,account:account,signer:signer})}else{_sdkStore.setState({signerInitialized:false,account:undefined,signer:undefined})}const securityZonesChanged=securityZones!==_sdkStore.getState().securityZones;if(chainIdChanged||securityZonesChanged){_sdkStore.setState({securityZones:securityZones,fheKeysInitialized:false})}if(!chainIsHardhat(chainId)&&!_sdkStore.getState().fheKeysInitialized){await Promise.all(securityZones.map(securityZone=>_store_fetchFheKey(chainId,provider,securityZone)))}_sdkStore.setState({fheKeysInitialized:true})};const _store_fetchFheKey=async(chainId,provider,securityZone=0)=>{const storedKey=_store_getFheKey(chainId,securityZone);if(storedKey!=null)return storedKey;const funcSig="0x1b1b484e";const callData=funcSig+toABIEncodedUint32(securityZone);const publicKey=await provider.call({to:FheOpsAddress,data:callData});if(typeof publicKey!=="string"){throw new Error("Error initializing fhenixjs; FHE publicKey fetched from provider invalid: not a string")}if(publicKey==="0x"){throw new Error("Error initializing fhenixjs; provided chain is not FHE enabled, no FHE publicKey found")}if(publicKey.length= ${PUBLIC_KEY_LENGTH_MIN}`)}const buff=fromHexString(publicKey.slice(130));try{const key=TfheCompactPublicKey.deserialize(buff);_store_setFheKey(chainId,securityZone,key);return key}catch(err){throw new Error(`Error deserializing public key ${err}`)}};const initialize=async params=>{await InitFhevm().catch(err=>{if(params.ignoreErrors){return undefined}else{return ResultErr(`initialize :: failed to initialize fhenixjs - is the network FHE-enabled? ${err}`)}});if(params.provider==null)return ResultErr("initialize :: missing provider - Please provide an AbstractProvider interface");if(params.securityZones!=null&¶ms.securityZones.length===0)return ResultErr("initialize :: a list of securityZones was provided, but it is empty");await _store_initialize(params);if(params.generatePermit===false)return ResultOk(undefined);const userActivePermit=getPermit();if(userActivePermit.success)return userActivePermit;return createPermit()};const _checkInitialized=(state,options)=>{if(options?.fheKeys!==false&&!state.fheKeysInitialized){return ResultErr("fhenixsdk not initialized. Use `fhenixsdk.initialize(...)`.")}if(options?.provider!==false&&!state.providerInitialized)return ResultErr("fhenixsdk not initialized with valid provider. Use `fhenixsdk.initialize(...)` with a valid provider that satisfies `AbstractProvider`.");if(options?.signer!==false&&!state.signerInitialized)return ResultErr("fhenixsdk not initialized with a valid signer. Use `fhenixsdk.initialize(...)` with a valid signer that satisfies `AbstractSigner`.");return ResultOk(null)};const createPermit=async options=>{const state=_sdkStore.getState();const initialized=_checkInitialized(state);if(!initialized.success)return ResultErr(`${createPermit.name} :: ${initialized.error}`);const optionsWithDefaults={type:"self",issuer:state.account,contracts:state.accessRequirements.contracts,projects:state.accessRequirements.projects,...options};let permit;try{permit=await PermitV2.createAndSign(optionsWithDefaults,state.chainId,state.signer)}catch(e){return ResultErr(`${createPermit.name} :: ${e}`)}permitStore.setPermit(state.account,permit);permitStore.setActivePermitHash(state.account,permit.getHash());return ResultOk(permit)};const importPermit=async imported=>{const state=_sdkStore.getState();const initialized=_checkInitialized(state);if(!initialized.success)return ResultErr(`${createPermit.name} :: ${initialized.error}`);if(typeof imported==="string"){try{imported=JSON.parse(imported)}catch(e){return ResultErr(`importPermit :: json parsing failed - ${e}`)}}const{success,data:parsedPermit,error:permitParsingError}=PermitV2ParamsValidator.safeParse(imported);if(!success){const errorString=Object.entries(permitParsingError.flatten().fieldErrors).map(([field,err])=>`- ${field}: ${err}`).join("\n");return ResultErr(`importPermit :: invalid permit data - ${errorString}`)}if(parsedPermit.type!=="self"){if(parsedPermit.issuer===state.account)parsedPermit.type="sharing";else if(parsedPermit.recipient===state.account)parsedPermit.type="recipient";else{return ResultErr(`importPermit :: invalid Permit - connected account <${state.account}> is not issuer or recipient`)}}let permit;try{permit=await PermitV2.create(parsedPermit)}catch(e){return ResultErr(`importPermit :: ${e}`)}const{valid,error}=permit.isValid();if(!valid){return ResultErr(`importPermit :: newly imported permit is invalid - ${error}`)}permitStore.setPermit(state.account,permit);permitStore.setActivePermitHash(state.account,permit.getHash());return ResultOk(permit)};const selectActivePermit=hash=>{const state=_sdkStore.getState();const initialized=_checkInitialized(state);if(!initialized.success)return ResultErr(`${selectActivePermit.name} :: ${initialized.error}`);const permit=permitStore.getPermit(state.account,hash);if(permit==null)return ResultErr(`${selectActivePermit.name} :: Permit with hash <${hash}> not found`);permitStore.setActivePermitHash(state.account,permit.getHash());return ResultOk(permit)};const getPermit=hash=>{const state=_sdkStore.getState();const initialized=_checkInitialized(state);if(!initialized.success)return ResultErr(`${getPermit.name} :: ${initialized.error}`);if(hash==null){const permit=permitStore.getActivePermit(state.account);if(permit==null)return ResultErr(`getPermit :: active permit not found`);return ResultOk(permit)}const permit=permitStore.getPermit(state.account,hash);if(permit==null)return ResultErr(`getPermit :: permit with hash <${hash}> not found`);return ResultOk(permit)};const getPermission=hash=>{const permitResult=getPermit(hash);if(!permitResult.success)return ResultErr(`${getPermission.name} :: ${permitResult.error}`);return ResultOk(permitResult.data.getPermission())};const getAllPermits=()=>{const state=_sdkStore.getState();const initialized=_checkInitialized(state);if(!initialized.success)return ResultErr(`${getAllPermits.name} :: ${initialized.error}`);return ResultOk(permitStore.getPermits(state.account))};const encryptValue=(value,type,securityZone=0)=>{const state=_sdkStore.getState();const initialized=_checkInitialized(state,{provider:false,signer:false});if(!initialized.success)return ResultErr(`${encryptValue.name} :: ${initialized.error}`);if(chainIsHardhat(state.chainId))return ResultOk(hardhatMockEncrypt(BigInt(value)));const fhePublicKey=_store_getFheKey(state.chainId,securityZone);if(fhePublicKey==null)return ResultErr(`encryptValue :: FHE publicKey not found for chain <${state.chainId}> and securityZone <${securityZone}>`);let outputSize=type;if(!outputSize){if(valueencrypt(nestedItem));const nestedItemResultErr=nestedItems.find(nestedItem=>!nestedItem.success);if(nestedItemResultErr)return nestedItemResultErr;return ResultOk(nestedItems.map(nestedItem=>nestedItem.data))}else{const result={};for(const key in item){const encryptedResult=encrypt(item[key]);if(!encryptedResult.success)return encryptedResult;result[key]=encryptedResult.data}return ResultOk(result)}}return ResultOk(item)}const unsealCiphertext=(ciphertext,account,hash)=>{const state=_sdkStore.getState();const initialized=_checkInitialized(state);if(!initialized.success)return ResultErr(`${getAllPermits.name} :: ${initialized.error}`);isString(ciphertext);const resolvedAccount=account??state.account;const resolvedHash=hash??permitStore.getActivePermitHash(resolvedAccount);if(resolvedAccount==null||resolvedHash==null){return ResultErr(`unsealCiphertext :: PermitV2 hash not provided and active PermitV2 not found`)}const permit=permitStore.getPermit(resolvedAccount,resolvedHash);if(permit==null){return ResultErr(`unsealCiphertext :: PermitV2 with account <${account}> and hash <${hash}> not found`)}let unsealed;try{unsealed=permit.unsealCiphertext(ciphertext)}catch(e){return ResultErr(`unsealCiphertext :: ${e}`)}return ResultOk(unsealed)};function unseal(item,account,hash){const resolvedAccount=account??_sdkStore.getState().account;const resolvedHash=hash??permitStore.getActivePermitHash(resolvedAccount);if(resolvedAccount==null||resolvedHash==null){return ResultErr(`unseal :: PermitV2 hash not provided and active PermitV2 not found`)}const permit=permitStore.getPermit(resolvedAccount,resolvedHash);if(permit==null){return ResultErr(`unseal :: PermitV2 with account <${account}> and hash <${hash}> not found`)}let unsealed;try{unsealed=permit.unseal(item)}catch(e){return ResultErr(`unseal :: ${e}`)}return ResultOk(unsealed)}const fhenixsdk={store:_sdkStore,initialize:initialize,createPermit:createPermit,importPermit:importPermit,selectActivePermit:selectActivePermit,getPermit:getPermit,getPermission:getPermission,getAllPermits:getAllPermits,encryptValue:encryptValue,encrypt:encrypt,unsealCiphertext:unsealCiphertext,unseal:unseal};var fhenix=Object.freeze({__proto__:null,Encryptable:Encryptable,get EncryptionTypes(){return EncryptionTypes},FhenixClient:FhenixClient,FhenixClientSync:FhenixClientSync,GenerateSealingKey:GenerateSealingKey,PermitV2:PermitV2,SealingKey:SealingKey,createTfheKeypair:createTfheKeypair,createTfhePublicKey:createTfhePublicKey,fhenixsdk:fhenixsdk,generatePermit:generatePermit,getAllExistingPermits:getAllExistingPermits,getAllPermits:getAllPermits$1,getPermit:getPermit$2,getPermitFromLocalstorage:getPermitFromLocalstorage,permitStore:permitStore,removePermit:removePermit$1,removePermitFromLocalstorage:removePermitFromLocalstorage,storePermitInLocalStorage:storePermitInLocalStorage});export{Encryptable,EncryptionTypes,FhenixClient,FhenixClientSync,GenerateSealingKey,PermitV2,SealingKey,createTfheKeypair,createTfhePublicKey,fhenix as fhenixjs,fhenixsdk,generatePermit,getAllExistingPermits,getAllPermits$1 as getAllPermits,getPermit$2 as getPermit,getPermitFromLocalstorage,permitStore,removePermit$1 as removePermit,removePermitFromLocalstorage,storePermitInLocalStorage}; \ No newline at end of file diff --git a/dist/fhenix.umd.js.map b/dist/fhenix.umd.js.map deleted file mode 100644 index 57b77cf..0000000 --- a/dist/fhenix.umd.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fhenix.umd.js","sources":["../lib/esm/sdk/fhe/tfhe-browser.js","../lib/esm/sdk/fhe/fhe-browser.js","../lib/esm/sdk/validation.js","../lib/esm/sdk/utils.js","../lib/esm/sdk/types.js","../node_modules/.pnpm/tweetnacl@1.0.3/node_modules/tweetnacl/nacl-fast.js","../node_modules/.pnpm/tweetnacl-util@0.15.1/node_modules/tweetnacl-util/nacl-util.js","../lib/esm/sdk/sealing.js","../lib/esm/extensions/access_control/permit/index.js","../lib/esm/sdk/consts.js","../lib/esm/sdk/encrypt.js","../lib/esm/sdk/init.js","../lib/esm/sdk/index.js","../lib/esm/sdk/keygen.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/_version.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/utils/properties.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/utils/errors.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/utils/data.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/utils/utf8.js","../node_modules/.pnpm/@noble+hashes@1.3.2/node_modules/@noble/hashes/esm/_assert.js","../node_modules/.pnpm/@noble+hashes@1.3.2/node_modules/@noble/hashes/esm/utils.js","../node_modules/.pnpm/@noble+hashes@1.3.2/node_modules/@noble/hashes/esm/_u64.js","../node_modules/.pnpm/@noble+hashes@1.3.2/node_modules/@noble/hashes/esm/sha3.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/crypto/keccak.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/constants/addresses.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/address/address.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/address/checks.js","../node_modules/.pnpm/ethers@6.13.1/node_modules/ethers/lib.esm/hash/id.js","../lib/esm/sdk/v2/types.js","../lib/esm/sdk/v2/permit.generate.js","../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/index.mjs","../lib/esm/sdk/v2/permit.z.js","../lib/esm/sdk/v2/permit.js","../node_modules/.pnpm/zustand@5.0.1_immer@10.1.1/node_modules/zustand/esm/vanilla.mjs","../node_modules/.pnpm/zustand@5.0.1_immer@10.1.1/node_modules/zustand/esm/middleware.mjs","../node_modules/.pnpm/immer@10.1.1/node_modules/immer/dist/immer.mjs","../lib/esm/sdk/v2/permit.store.js","../lib/esm/sdk/v2/sdk.store.js","../lib/esm/sdk/v2/sdk.js","../lib/esm/fhenix.js"],"sourcesContent":["let wasm;\nconst heap = new Array(128).fill(undefined);\nheap.push(undefined, null, true, false);\nlet heap_next = heap.length;\nfunction addHeapObject(obj) {\n if (heap_next === heap.length)\n heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n heap[idx] = obj;\n return idx;\n}\nfunction getObject(idx) {\n return heap[idx];\n}\nfunction dropObject(idx) {\n if (idx < 132)\n return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\nconst cachedTextDecoder = typeof TextDecoder !== \"undefined\"\n ? new TextDecoder(\"utf-8\", { ignoreBOM: true, fatal: true })\n : {\n decode: () => {\n throw Error(\"TextDecoder not available\");\n },\n };\nif (typeof TextDecoder !== \"undefined\") {\n cachedTextDecoder.decode();\n}\nlet cachedUint8Memory0 = null;\nfunction getUint8Memory0() {\n if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) {\n cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8Memory0;\n}\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\nlet cachedBigInt64Memory0 = null;\nfunction getBigInt64Memory0() {\n if (cachedBigInt64Memory0 === null ||\n cachedBigInt64Memory0.byteLength === 0) {\n cachedBigInt64Memory0 = new BigInt64Array(wasm.memory.buffer);\n }\n return cachedBigInt64Memory0;\n}\nlet cachedInt32Memory0 = null;\nfunction getInt32Memory0() {\n if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) {\n cachedInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachedInt32Memory0;\n}\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == \"number\" || type == \"boolean\" || val == null) {\n return `${val}`;\n }\n if (type == \"string\") {\n return `\"${val}\"`;\n }\n if (type == \"symbol\") {\n const description = val.description;\n if (description == null) {\n return \"Symbol\";\n }\n else {\n return `Symbol(${description})`;\n }\n }\n if (type == \"function\") {\n const name = val.name;\n if (typeof name == \"string\" && name.length > 0) {\n return `Function(${name})`;\n }\n else {\n return \"Function\";\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = \"[\";\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for (let i = 1; i < length; i++) {\n debug += \", \" + debugString(val[i]);\n }\n debug += \"]\";\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n }\n else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == \"Object\") {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return \"Object(\" + JSON.stringify(val) + \")\";\n }\n catch (_) {\n return \"Object\";\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\nlet WASM_VECTOR_LEN = 0;\nconst cachedTextEncoder = typeof TextEncoder !== \"undefined\"\n ? new TextEncoder(\"utf-8\")\n : {\n encode: () => {\n throw Error(\"TextEncoder not available\");\n },\n };\nconst encodeString = typeof cachedTextEncoder.encodeInto === \"function\"\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n }\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length,\n };\n };\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8Memory0()\n .subarray(ptr, ptr + buf.length)\n .set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n const mem = getUint8Memory0();\n let offset = 0;\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7f)\n break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, (len = offset + arg.length * 3), 1) >>> 0;\n const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n offset += ret.written;\n }\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n/**\n */\nexport function init_panic_hook() {\n wasm.init_panic_hook();\n}\nfunction _assertClass(instance, klass) {\n if (!(instance instanceof klass)) {\n throw new Error(`expected instance of ${klass.name}`);\n }\n return instance.ptr;\n}\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);\n}\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8Memory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\nlet cachedUint32Memory0 = null;\nfunction getUint32Memory0() {\n if (cachedUint32Memory0 === null || cachedUint32Memory0.byteLength === 0) {\n cachedUint32Memory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32Memory0;\n}\nfunction passArrayJsValueToWasm0(array, malloc) {\n const ptr = malloc(array.length * 4, 4) >>> 0;\n const mem = getUint32Memory0();\n for (let i = 0; i < array.length; i++) {\n mem[ptr / 4 + i] = addHeapObject(array[i]);\n }\n WASM_VECTOR_LEN = array.length;\n return ptr;\n}\nfunction getArrayJsValueFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n const mem = getUint32Memory0();\n const slice = mem.subarray(ptr / 4, ptr / 4 + len);\n const result = [];\n for (let i = 0; i < slice.length; i++) {\n result.push(takeObject(slice[i]));\n }\n return result;\n}\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n }\n catch (e) {\n wasm.__wbindgen_exn_store(addHeapObject(e));\n }\n}\n/**\n */\nexport class CompactFheBool {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheBool.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfhebool_free(ptr);\n }\n /**\n * @param {boolean} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheBool}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfhebool_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheBool}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfhebool_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfhebool_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheBool}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfhebool_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfhebool_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheBool}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfhebool_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheBoolList {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheBoolList.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheboollist_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheboollist_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheboollist_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheBoolList}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheboollist_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheBoolList.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheBoolList}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheboollist_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheBoolList.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt128 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt128.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint128_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt128}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt128}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt128}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint128_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt128}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt128List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt128List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint128list_free(ptr);\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheInt128List}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheint128list_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt128List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt128List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint128list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt128List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt16 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt16.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint16_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt16}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint16_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt16}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint16_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt16}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint16_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt16}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt160 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt160.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint160_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt160}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt160}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint160_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt160}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint160_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt160}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt160List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt160List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint160list_free(ptr);\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheInt160List}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheint160list_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt160List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint160list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint160list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt160List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint160list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt160List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt16List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt16List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint16list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint16list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint16list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt16List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint16list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt16List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt256 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt256.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint256_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt256}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt256}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint256_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt256}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint256_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt256}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt256List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt256List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint256list_free(ptr);\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheInt256List}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheint256list_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt256List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint256list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint256list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt256List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint256list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt256List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt32 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt32.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint32_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt32}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint32_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt32}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint32_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt32}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint32_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt32}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt32List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt32List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint32list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint32list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint32list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt32List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint32list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt32List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt64 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt64.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint64_free(ptr);\n }\n /**\n * @param {bigint} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt64}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint64_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt64}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint64_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt64}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint64_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt64}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt64List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt64List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint64list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint64list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint64list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt64List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint64list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt64List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt8 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt8.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint8_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheInt8}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheint8_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt8}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint8_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt8}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint8_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheInt8}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheInt8List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheInt8List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheint8list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint8list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint8list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheInt8List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheint8list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheInt8List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint128 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint128.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint128_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint128}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint128}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint128_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint128}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint128_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint128}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint128List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint128List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint128list_free(ptr);\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheUint128List}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheuint128list_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint128List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint128list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint128list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint128List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint128list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint128List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint16 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint16.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint16_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint16}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint16_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint16}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint16_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint16}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint16_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint16}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint160 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint160.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint160_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint160}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint160}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint160_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint160}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint160_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint160}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint160List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint160List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint160list_free(ptr);\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheUint160List}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheuint160list_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint160List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint160list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint160list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint160List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint160list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint160List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint16List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint16List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint16list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint16list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint16list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint16List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint16list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint16List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint256 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint256.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint256_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint256}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint256}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint256_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint256}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint256_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint256}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint256List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint256List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint256list_free(ptr);\n }\n /**\n * @param {any[]} values\n * @param {TfheCompactPublicKey} public_key\n * @returns {CompactFheUint256List}\n */\n static encrypt_with_compact_public_key(values, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(values, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(public_key, TfheCompactPublicKey);\n wasm.compactfheuint256list_encrypt_with_compact_public_key(retptr, ptr0, len0, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint256List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint256list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint256list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint256List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint256list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint256List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint32 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint32.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint32_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint32}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint32_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint32}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint32_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint32}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint32_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint32}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint32List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint32List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint32list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint32list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint32list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint32List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint32list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint32List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint64 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint64.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint64_free(ptr);\n }\n /**\n * @param {bigint} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint64}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint64_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint64}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint64_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint64}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint64_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint64}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint64List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint64List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint64list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint64list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint64list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint64List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint64list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint64List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint8 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint8.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint8_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} client_key\n * @returns {CompactFheUint8}\n */\n static encrypt_with_compact_public_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheCompactPublicKey);\n wasm.compactfheuint8_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint8}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheint128_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint8_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint8}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint8_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompactFheUint8}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompactFheUint8List {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompactFheUint8List.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compactfheuint8list_free(ptr);\n }\n /**\n * @returns {any[]}\n */\n expand() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint8list_expand(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compactfheuint8list_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompactFheUint8List}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compactfheuint8list_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompactFheUint8List.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheBool {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheBool.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfhebool_free(ptr);\n }\n /**\n * @param {boolean} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheBool}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfhebool_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheBool}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfhebool_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfhebool_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheBool}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfhebool_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfhebool_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheBool}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfhebool_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt128 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt128.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint128_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt128}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint128_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt128}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint128_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint128_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt128}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint128_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt128}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt16 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt16.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint16_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt16}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint16_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt16}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint16_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint16_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt16}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint16_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt16}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt160 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt160.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint160_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt160}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint160_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt160}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint160_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint160_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt160}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint160_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt160}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt256 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt256.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint256_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt256}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint256_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt256}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint256_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint256_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt256}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint256_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt256}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt32 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt32.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint32_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt32}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint32_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt32}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint32_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint32_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt32}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint32_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt32}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt64 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt64.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint64_free(ptr);\n }\n /**\n * @param {bigint} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt64}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint64_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt64}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint64_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint64_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt64}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint64_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt64}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheInt8 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheInt8.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheint8_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheInt8}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheint8_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheInt8}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint8_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint8_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheInt8}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint8_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheInt8}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint128 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint128.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint128_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint128}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint128_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint128}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint128_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint128_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint128}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint128_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint128}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint16 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint16.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint16_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint16}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint16_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint16}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint16_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint16_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint16}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint16_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint16}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint160 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint160.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint160_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint160}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint160_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint160}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint160_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint160_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint160}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint160_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint160}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint256 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint256.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint256_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint256}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint256_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint256}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint256_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint256_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint256}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint256_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint256}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint32 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint32.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint32_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint32}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint32_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint32}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint32_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint32_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint32}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint32_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint32}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint64 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint64.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint64_free(ptr);\n }\n /**\n * @param {bigint} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint64}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint64_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint64}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint64_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint64_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint64}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint64_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint64}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class CompressedFheUint8 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CompressedFheUint8.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_compressedfheuint8_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {CompressedFheUint8}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.compressedfheuint8_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {FheUint8}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint8_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint8_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {CompressedFheUint8}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint8_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.compressedfheuint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {CompressedFheUint8}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.compressedfheuint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return CompressedFheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheBool {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheBool.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fhebool_free(ptr);\n }\n /**\n * @param {boolean} value\n * @param {TfheClientKey} client_key\n * @returns {FheBool}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fhebool_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {boolean} value\n * @param {TfhePublicKey} public_key\n * @returns {FheBool}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fhebool_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {boolean} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheBool}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fhebool_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {boolean} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheBool}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fhebool_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {boolean}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fhebool_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0 !== 0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fhebool_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheBool}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fhebool_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fhebool_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheBool}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fhebool_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheBool.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt128 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt128.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint128_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt128}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint128_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt128}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint128_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt128}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint128_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt128}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {any}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint128_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint128_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt128}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint128_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt128}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt16 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt16.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint16_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt16}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint16_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt16}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint16_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt16}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint16_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt16}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint16_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {number}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint16_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint16_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt16}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint16_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt16}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt160 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt160.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint160_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt160}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint160_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt160}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint160_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt160}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint160_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt160}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {any}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint160_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint160_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt160}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint160_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt160}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt256 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt256.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint256_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt256}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint256_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt256}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint256_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt256}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint256_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt256}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {any}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint256_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint256_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt256}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint256_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt256}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt32 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt32.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint32_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt32}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint32_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt32}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint32_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt32}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint32_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt32}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint32_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {number}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint32_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint32_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt32}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint32_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt32}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt64 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt64.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint64_free(ptr);\n }\n /**\n * @param {bigint} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt64}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint64_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt64}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint64_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt64}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint64_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt64}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint64_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {bigint}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint64_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getBigInt64Memory0()[retptr / 8 + 0];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n return r0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint64_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt64}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint64_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt64}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheInt8 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheInt8.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheint8_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {FheInt8}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint8_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfhePublicKey} public_key\n * @returns {FheInt8}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheint8_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheInt8}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheint8_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheInt8}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheint8_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {number}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheint8_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint8_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheInt8}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint8_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheInt8}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheInt8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint128 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint128.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint128_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint128}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint128_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint128}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint128_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint128}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint128_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint128}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {any}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint128_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint128_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint128}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint128_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint128}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint128.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint16 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint16.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint16_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint16}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint16_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint16}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint16_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint16}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint16_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint16}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint16_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {number}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint16_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint16_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint16}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint16_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint16}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint16.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint160 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint160.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint160_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint160}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint160_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint160}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint160_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint160}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint160_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint160}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {any}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint160_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint160_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint160}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint160_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint160}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint160.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint256 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint256.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint256_free(ptr);\n }\n /**\n * @param {any} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint256}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint256_encrypt_with_client_key(retptr, addHeapObject(value), client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint256}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint256_encrypt_with_public_key(retptr, addHeapObject(value), public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint256}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint256_encrypt_with_compressed_public_key(retptr, addHeapObject(value), compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {any} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint256}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {any}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint256_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint256_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint256}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint256_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint256}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint256.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint32 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint32.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint32_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint32}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint32_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint32}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint32_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint32}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint32_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint32}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint32_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {number}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint32_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0 >>> 0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint32_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint32}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint32_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint32}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint32.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint64 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint64.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint64_free(ptr);\n }\n /**\n * @param {bigint} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint64}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint64_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint64}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint64_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint64}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint64_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint64}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint64_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {bigint}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint64_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getBigInt64Memory0()[retptr / 8 + 0];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n return BigInt.asUintN(64, r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint64_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint64}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint64_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint64}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint64.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class FheUint8 {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FheUint8.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fheuint8_free(ptr);\n }\n /**\n * @param {number} value\n * @param {TfheClientKey} client_key\n * @returns {FheUint8}\n */\n static encrypt_with_client_key(value, client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint8_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfhePublicKey} public_key\n * @returns {FheUint8}\n */\n static encrypt_with_public_key(value, public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(public_key, TfhePublicKey);\n wasm.fheuint8_encrypt_with_public_key(retptr, value, public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompressedPublicKey} compressed_public_key\n * @returns {FheUint8}\n */\n static encrypt_with_compressed_public_key(value, compressed_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compressed_public_key, TfheCompressedPublicKey);\n wasm.fheuint8_encrypt_with_compressed_public_key(retptr, value, compressed_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} value\n * @param {TfheCompactPublicKey} compact_public_key\n * @returns {FheUint8}\n */\n static encrypt_with_compact_public_key(value, compact_public_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(compact_public_key, TfheCompactPublicKey);\n wasm.fheuint8_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {number}\n */\n decrypt(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.fheuint8_decrypt(retptr, this.__wbg_ptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return r0;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint8_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {FheUint8}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint8_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {bigint} serialized_size_limit\n * @returns {Uint8Array}\n */\n safe_serialize(serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.fheuint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @param {bigint} serialized_size_limit\n * @returns {FheUint8}\n */\n static safe_deserialize(buffer, serialized_size_limit) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.fheuint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return FheUint8.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class TfheClientKey {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheClientKey.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfheclientkey_free(ptr);\n }\n /**\n * @param {TfheConfig} config\n * @returns {TfheClientKey}\n */\n static generate(config) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(config, TfheConfig);\n wasm.tfheclientkey_generate(retptr, config.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheClientKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {TfheConfig} config\n * @param {any} seed\n * @returns {TfheClientKey}\n */\n static generate_with_seed(config, seed) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(config, TfheConfig);\n wasm.tfheclientkey_generate_with_seed(retptr, config.__wbg_ptr, addHeapObject(seed));\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheClientKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfheclientkey_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {TfheClientKey}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.tfheclientkey_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheClientKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class TfheCompactPublicKey {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheCompactPublicKey.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfhecompactpublickey_free(ptr);\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {TfheCompactPublicKey}\n */\n static new(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.tfhecompactpublickey_new(retptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompactPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhecompactpublickey_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {TfheCompactPublicKey}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.tfhecompactpublickey_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompactPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class TfheCompressedCompactPublicKey {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheCompressedCompactPublicKey.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfhecompressedcompactpublickey_free(ptr);\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {TfheCompressedCompactPublicKey}\n */\n static new(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.tfhecompressedcompactpublickey_new(retptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompressedCompactPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhecompressedcompactpublickey_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {TfheCompressedCompactPublicKey}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.tfhecompressedcompactpublickey_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompressedCompactPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {TfheCompactPublicKey}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhecompressedcompactpublickey_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompactPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class TfheCompressedPublicKey {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheCompressedPublicKey.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfhecompressedpublickey_free(ptr);\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {TfheCompressedPublicKey}\n */\n static new(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.tfhecompressedpublickey_new(retptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompressedPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {TfhePublicKey}\n */\n decompress() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhecompressedpublickey_decompress(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfhePublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhecompressedpublickey_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {TfheCompressedPublicKey}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.tfhecompressedpublickey_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompressedPublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class TfheCompressedServerKey {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheCompressedServerKey.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfhecompressedserverkey_free(ptr);\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {TfheCompressedServerKey}\n */\n static new(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.tfhecompressedserverkey_new(retptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompressedServerKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhecompressedserverkey_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {TfheCompressedServerKey}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.tfhecompressedserverkey_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfheCompressedServerKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class TfheConfig {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheConfig.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfheconfig_free(ptr);\n }\n}\n/**\n */\nexport class TfheConfigBuilder {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfheConfigBuilder.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfheconfigbuilder_free(ptr);\n }\n /**\n * @returns {TfheConfigBuilder}\n */\n static default() {\n const ret = wasm.tfheconfigbuilder_default();\n return TfheConfigBuilder.__wrap(ret);\n }\n /**\n * @returns {TfheConfigBuilder}\n */\n static default_with_small_encryption() {\n const ret = wasm.tfheconfigbuilder_default_with_small_encryption();\n return TfheConfigBuilder.__wrap(ret);\n }\n /**\n * @returns {TfheConfigBuilder}\n */\n static default_with_big_encryption() {\n const ret = wasm.tfheconfigbuilder_default();\n return TfheConfigBuilder.__wrap(ret);\n }\n /**\n * @returns {TfheConfig}\n */\n build() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.tfheconfigbuilder_build(ptr);\n return TfheConfig.__wrap(ret);\n }\n}\n/**\n */\nexport class TfhePublicKey {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(TfhePublicKey.prototype);\n obj.__wbg_ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfhepublickey_free(ptr);\n }\n /**\n * @param {TfheClientKey} client_key\n * @returns {TfhePublicKey}\n */\n static new(client_key) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(client_key, TfheClientKey);\n wasm.tfhepublickey_new(retptr, client_key.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfhePublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {Uint8Array}\n */\n serialize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.tfhepublickey_serialize(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Uint8Array} buffer\n * @returns {TfhePublicKey}\n */\n static deserialize(buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.tfhepublickey_deserialize(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return TfhePublicKey.__wrap(r0);\n }\n finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n/**\n */\nexport class tfheBrowser {\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_tfhe_free(ptr);\n }\n}\nasync function __wbg_load(module, imports) {\n if (typeof Response === \"function\" && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === \"function\") {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n }\n catch (e) {\n if (module.headers.get(\"Content-Type\") != \"application/wasm\") {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n }\n else {\n throw e;\n }\n }\n }\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n }\n else {\n const instance = await WebAssembly.instantiate(module, imports);\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n }\n else {\n return instance;\n }\n }\n}\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_bigint_from_u64 = function (arg0) {\n const ret = BigInt.asUintN(64, arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_shr = function (arg0, arg1) {\n const ret = getObject(arg0) >> getObject(arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_object_drop_ref = function (arg0) {\n takeObject(arg0);\n };\n imports.wbg.__wbindgen_bigint_from_i64 = function (arg0) {\n const ret = arg0;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_jsval_eq = function (arg0, arg1) {\n const ret = getObject(arg0) === getObject(arg1);\n return ret;\n };\n imports.wbg.__wbindgen_error_new = function (arg0, arg1) {\n const ret = new Error(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_bigint_from_i128 = function (arg0, arg1) {\n const ret = (arg0 << BigInt(64)) | BigInt.asUintN(64, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_bigint_from_u128 = function (arg0, arg1) {\n const ret = (BigInt.asUintN(64, arg0) << BigInt(64)) | BigInt.asUintN(64, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint16_new = function (arg0) {\n const ret = FheUint16.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint160_new = function (arg0) {\n const ret = FheUint160.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint256_new = function (arg0) {\n const ret = FheUint256.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint32_new = function (arg0) {\n const ret = FheUint32.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint128_new = function (arg0) {\n const ret = FheUint128.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint8_new = function (arg0) {\n const ret = FheUint8.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheuint64_new = function (arg0) {\n const ret = FheUint64.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint32_new = function (arg0) {\n const ret = FheInt32.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint64_new = function (arg0) {\n const ret = FheInt64.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fhebool_new = function (arg0) {\n const ret = FheBool.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint256_new = function (arg0) {\n const ret = FheInt256.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint160_new = function (arg0) {\n const ret = FheInt160.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint16_new = function (arg0) {\n const ret = FheInt16.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint8_new = function (arg0) {\n const ret = FheInt8.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fheint128_new = function (arg0) {\n const ret = FheInt128.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_boolean_get = function (arg0) {\n const v = getObject(arg0);\n const ret = typeof v === \"boolean\" ? (v ? 1 : 0) : 2;\n return ret;\n };\n imports.wbg.__wbindgen_bigint_from_str = function (arg0, arg1) {\n const ret = BigInt(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_bit_and = function (arg0, arg1) {\n const ret = getObject(arg0) & getObject(arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_number_new = function (arg0) {\n const ret = arg0;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_lt = function (arg0, arg1) {\n const ret = getObject(arg0) < getObject(arg1);\n return ret;\n };\n imports.wbg.__wbindgen_neg = function (arg0) {\n const ret = -getObject(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_shl = function (arg0, arg1) {\n const ret = getObject(arg0) << getObject(arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_add = function (arg0, arg1) {\n const ret = getObject(arg0) + getObject(arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_bit_or = function (arg0, arg1) {\n const ret = getObject(arg0) | getObject(arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_abda76e883ba8a5f = function () {\n const ret = new Error();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_stack_658279fe44541cf6 = function (arg0, arg1) {\n const ret = getObject(arg1).stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_error_f851667af71bcfc6 = function (arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n }\n finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n };\n imports.wbg.__wbg_crypto_70a96de3b6b73dac = function (arg0) {\n const ret = getObject(arg0).crypto;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_is_object = function (arg0) {\n const val = getObject(arg0);\n const ret = typeof val === \"object\" && val !== null;\n return ret;\n };\n imports.wbg.__wbg_process_dd1577445152112e = function (arg0) {\n const ret = getObject(arg0).process;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_versions_58036bec3add9e6f = function (arg0) {\n const ret = getObject(arg0).versions;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_node_6a9d28205ed5b0d8 = function (arg0) {\n const ret = getObject(arg0).node;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_is_string = function (arg0) {\n const ret = typeof getObject(arg0) === \"string\";\n return ret;\n };\n imports.wbg.__wbg_require_f05d779769764e82 = function () {\n return handleError(function () {\n const ret = module.require;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbindgen_string_new = function (arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_msCrypto_adbc770ec9eca9c7 = function (arg0) {\n const ret = getObject(arg0).msCrypto;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_randomFillSync_e950366c42764a07 = function () {\n return handleError(function (arg0, arg1) {\n getObject(arg0).randomFillSync(takeObject(arg1));\n }, arguments);\n };\n imports.wbg.__wbg_getRandomValues_3774744e221a22ad = function () {\n return handleError(function (arg0, arg1) {\n getObject(arg0).getRandomValues(getObject(arg1));\n }, arguments);\n };\n imports.wbg.__wbindgen_is_function = function (arg0) {\n const ret = typeof getObject(arg0) === \"function\";\n return ret;\n };\n imports.wbg.__wbg_newnoargs_e643855c6572a4a8 = function (arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_call_f96b398515635514 = function () {\n return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_self_b9aad7f1c618bfaf = function () {\n return handleError(function () {\n const ret = self.self;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_window_55e469842c98b086 = function () {\n return handleError(function () {\n const ret = window.window;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_globalThis_d0957e302752547e = function () {\n return handleError(function () {\n const ret = globalThis.globalThis;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_global_ae2f87312b8987fb = function () {\n return handleError(function () {\n const ret = global.global;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbindgen_is_undefined = function (arg0) {\n const ret = getObject(arg0) === undefined;\n return ret;\n };\n imports.wbg.__wbg_call_35782e9a1aa5e091 = function () {\n return handleError(function (arg0, arg1, arg2) {\n const ret = getObject(arg0).call(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_buffer_fcbfb6d88b2732e9 = function (arg0) {\n const ret = getObject(arg0).buffer;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_newwithbyteoffsetandlength_92c251989c485785 = function (arg0, arg1, arg2) {\n const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_bc5d9aad3f9ac80e = function (arg0) {\n const ret = new Uint8Array(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_set_4b3aa8445ac1e91c = function (arg0, arg1, arg2) {\n getObject(arg0).set(getObject(arg1), arg2 >>> 0);\n };\n imports.wbg.__wbg_newwithlength_89eca18f2603a999 = function (arg0) {\n const ret = new Uint8Array(arg0 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_subarray_7649d027b2b141b3 = function (arg0, arg1, arg2) {\n const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_object_clone_ref = function (arg0) {\n const ret = getObject(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_bigint_get_as_i64 = function (arg0, arg1) {\n const v = getObject(arg1);\n const ret = typeof v === \"bigint\" ? v : undefined;\n getBigInt64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? BigInt(0) : ret;\n getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);\n };\n imports.wbg.__wbindgen_debug_string = function (arg0, arg1) {\n const ret = debugString(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbindgen_throw = function (arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbindgen_memory = function () {\n const ret = wasm.memory;\n return addHeapObject(ret);\n };\n return imports;\n}\nfunction __wbg_init_memory(imports, maybe_memory) { }\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedBigInt64Memory0 = null;\n cachedInt32Memory0 = null;\n cachedUint32Memory0 = null;\n cachedUint8Memory0 = null;\n return wasm;\n}\nfunction initSync(module) {\n if (wasm !== undefined)\n return wasm;\n const imports = __wbg_get_imports();\n __wbg_init_memory(imports);\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\nasync function __wbg_init(input) {\n if (wasm !== undefined)\n return wasm;\n // FHENIX: disabling this because it fucks with frameworks that try to resolve it\n // if (typeof input === 'undefined') {\n // input = new URL('tfhe_bg.wasm', import.meta.url);\n // }\n const imports = __wbg_get_imports();\n if (typeof input === \"string\" ||\n (typeof Request === \"function\" && input instanceof Request) ||\n (typeof URL === \"function\" && input instanceof URL)) {\n input = fetch(input);\n }\n __wbg_init_memory(imports);\n const { instance, module } = await __wbg_load(await input, imports);\n return __wbg_finalize_init(instance, module);\n}\nexport { initSync };\nexport default __wbg_init;\n//# sourceMappingURL=tfhe-browser.js.map","import wasm from \"./tfhe_bg.wasm\";\n//@ts-expect-error imports from different wasm/js files are wonky\nimport initSDK from \"./tfhe.js\";\nlet initialized;\nconst initFhevm = async () => {\n if (!initialized) {\n try {\n initialized = await initSDK(wasm);\n }\n catch (_) {\n initialized = await initSDK(wasm());\n }\n }\n return initialized;\n};\nexport const asyncInitFhevm = async () => {\n try {\n await initFhevm();\n }\n catch (err) {\n throw new Error(`Error initializing FhenixClient ${err}`);\n }\n};\nexport { TfheCompactPublicKey } from \"./tfhe.js\";\nexport { CompactFheBool, CompactFheUint8, CompactFheUint16, CompactFheUint32, CompactFheUint64, CompactFheUint128, CompactFheUint160, CompactFheUint256, } from \"./tfhe.js\";\n//# sourceMappingURL=fhe-browser.js.map","function assertIs(is, expected, value) {\n if (!is) {\n throw new Error(`Expected value which is \\`${expected}\\`, received value of type \\`${typeof value}\\`.`);\n }\n}\nexport function isString(value) {\n const is = typeof value === \"string\";\n assertIs(is, \"string\", value);\n}\nexport function isPlainObject(value) {\n // From: https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const prototype = Object.getPrototypeOf(value);\n const is = (prototype === null ||\n prototype === Object.prototype ||\n Object.getPrototypeOf(prototype) === null) &&\n !(Symbol.toStringTag in value) &&\n !(Symbol.iterator in value);\n assertIs(is, \"plain object\", value);\n return true;\n}\nexport function isBigIntOrHexString(value) {\n const is = typeof value === \"bigint\" || typeof value === \"string\";\n assertIs(is, \"bigint or hex string\", value);\n}\nexport function isNumber(value) {\n const is = typeof value === \"number\" && !Number.isNaN(value);\n assertIs(is, \"number\", value);\n}\nexport function isBigIntOrNumber(value) {\n const is = typeof value === \"bigint\";\n if (!is) {\n try {\n isNumber(value);\n }\n catch (e) {\n throw new Error(`Value ${value} is not a number or bigint: ${typeof value}`);\n }\n }\n}\n//# sourceMappingURL=validation.js.map","import { isNumber } from \"./validation.js\";\nexport const ValidateUintInRange = (value, max, min) => {\n isNumber(value);\n if (value > max || value < min) {\n throw new Error(`Value out of range: ${max} - ${min}, try a different uint type`);\n }\n};\nexport const fromHexString = (hexString) => {\n const cleanString = hexString.length % 2 === 1 ? `0${hexString}` : hexString;\n const arr = cleanString.replace(/^0x/, \"\").match(/.{1,2}/g);\n if (!arr)\n return new Uint8Array();\n return new Uint8Array(arr.map((byte) => parseInt(byte, 16)));\n};\nexport const toHexString = (bytes) => bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, \"0\"), \"\");\nexport function toBigInt(value) {\n return ethersToBigInt(value);\n}\nexport function toBeArray(value) {\n return ethersToBeArray(value);\n}\nexport function isAddress(address) {\n if (!_isAddress(address)) {\n throw new Error(`Address ${address} is not valid EVM address`);\n }\n}\nfunction _isAddress(value) {\n try {\n if (!value.startsWith(\"0x\")) {\n return false;\n }\n else if (value.length !== 42) {\n return false;\n }\n return true;\n }\n catch (error) {\n return false;\n }\n}\nconst Nibbles = \"0123456789abcdef\";\n// IEEE 754 support 53-bits of mantissa\nconst maxValue = 0x1fffffffffffff;\nconst BN_0 = BigInt(0);\n/*\n * Converts %%value%% to a BigInt. If %%value%% is a Uint8Array, it\n * is treated as Big Endian data.\n */\nfunction ethersToBigInt(value) {\n if (value instanceof Uint8Array) {\n let result = \"0x0\";\n for (const v of value) {\n result += Nibbles[v >> 4];\n result += Nibbles[v & 0x0f];\n }\n return BigInt(result);\n }\n return getBigInt(value);\n}\nfunction ethersToBeArray(_value) {\n const value = getUint(_value);\n if (value === BN_0) {\n return new Uint8Array([]);\n }\n let hex = value.toString(16);\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n const result = new Uint8Array(hex.length / 2);\n for (let i = 0; i < result.length; i++) {\n const offset = i * 2;\n result[i] = parseInt(hex.substring(offset, offset + 2), 16);\n }\n return result;\n}\n/**\n * Returns %%value%% as a bigint, validating it is valid as a bigint\n * value and that it is positive.\n */\nfunction getUint(value) {\n const result = getBigInt(value);\n assertArgument(result >= BN_0, \"unsigned value cannot be negative\");\n return result;\n}\n/**\n * Gets a BigInt from %%value%%. If it is an invalid value for\n * a BigInt, then an ArgumentError will be thrown for %%name%%.\n */\nfunction getBigInt(value) {\n switch (typeof value) {\n case \"bigint\":\n return value;\n case \"number\":\n assertArgument(Number.isInteger(value), \"underflow\");\n assertArgument(value >= -maxValue && value <= maxValue, \"overflow\");\n return BigInt(value);\n case \"string\":\n try {\n if (value === \"\") {\n throw new Error(\"empty string\");\n }\n if (value[0] === \"-\" && value[1] !== \"-\") {\n return -BigInt(value.substring(1));\n }\n return BigInt(value);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n catch (e) {\n assertArgument(false, `invalid BigNumberish string: ${e.message}`);\n }\n }\n assertArgument(false, \"invalid BigNumberish value\");\n}\nfunction assertArgument(check, message) {\n if (!check) {\n throw new Error(message);\n }\n}\nexport function toABIEncodedUint32(value) {\n // Ensure the number is a valid unsigned 32-bit integer\n if (value < 0 || value > 0xffffffff) {\n throw new RangeError(\"Number must be between 0 and 2^32 - 1.\");\n }\n // Convert the number to a hexadecimal string and pad it to 64 characters (32 bytes)\n return value.toString(16).padStart(64, \"0\");\n}\n// Uint8Array conversions\nexport const stringToUint8Array = (value) => {\n return new Uint8Array(value.split(\"\").map((c) => c.charCodeAt(0)));\n};\nexport const uint8ArrayToString = (value) => {\n return Array.from(value)\n .map((byte) => String.fromCharCode(byte))\n .join(\"\");\n};\nfunction bigintToUint8Array(bigNum) {\n const byteLength = 32;\n const byteArray = new Uint8Array(byteLength);\n // Create a BigInt mask for each byte\n const mask = BigInt(0xff);\n // Initialize an index to start from the end of the array\n for (let i = 0; i < byteLength; i++) {\n // Extract the last byte and assign it to the corresponding position in the array\n byteArray[byteLength - 1 - i] = Number(bigNum & mask);\n // Shift bigint right by 8 bits to process the next byte in the next iteration\n bigNum >>= BigInt(8);\n }\n return byteArray;\n}\n// HARDHAT MOCKS\n// Mock FHE operations are automatically injected on the hardhat network\n// The utility functions allow the client / sdk to interact with the mocked FHE ops\nexport const chainIsHardhat = (chainId) => {\n if (chainId == null)\n return false;\n return parseInt(chainId) === 31337;\n};\nexport const hardhatMockUnseal = (value) => {\n let result = BigInt(0);\n for (const byteArrayItem of stringToUint8Array(value)) {\n result = (result << BigInt(8)) + BigInt(byteArrayItem);\n }\n return result;\n};\nexport const hardhatMockEncrypt = (value, securityZone = 0) => ({\n data: bigintToUint8Array(BigInt(value)),\n securityZone: securityZone || 0,\n});\n//# sourceMappingURL=utils.js.map","/**\n * An enumeration of supported encryption types.\n * uint8, uint16, and uint32 represent the different sizes of integers that can be encrypted.\n */\nexport var EncryptionTypes;\n(function (EncryptionTypes) {\n EncryptionTypes[\"bool\"] = \"bool\";\n EncryptionTypes[\"uint8\"] = \"uint8\";\n EncryptionTypes[\"uint16\"] = \"uint16\";\n EncryptionTypes[\"uint32\"] = \"uint32\";\n EncryptionTypes[\"uint64\"] = \"uint64\";\n EncryptionTypes[\"uint128\"] = \"uint128\";\n EncryptionTypes[\"uint256\"] = \"uint256\";\n EncryptionTypes[\"address\"] = \"address\";\n})(EncryptionTypes || (EncryptionTypes = {}));\n/**\n * Determines the request method for a given provider.\n * Checks if the provider has a 'request' method typical for Eip1193Providers, or a 'send' method for others.\n * Throws an error if neither method is found.\n * @param {SupportedProvider} provider - The provider to determine the request method for.\n * @returns {Function} - The determined request function.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function determineRequestMethod(provider) {\n if (\"request\" in provider && typeof provider.request === \"function\") {\n return (p, method, params) => p.request({ method, params });\n }\n else if (\"send\" in provider && typeof provider.send === \"function\") {\n return (p, method, params) => p.send(method, params);\n }\n else {\n throw new Error(\"Received unsupported provider. 'send' or 'request' method not found\");\n }\n}\n/**\n * Determines the request signer function for a given provider.\n * Checks if the provider has a 'getSigner' method and returns it if available.\n * Throws an error if no 'getSigner' method is found.\n * @param {SupportedProvider} provider - The provider to determine the request signer for.\n * @returns {Function} - The determined request signer function.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function determineRequestSigner(provider) {\n if (\"getSigner\" in provider && typeof provider.getSigner === \"function\") {\n return (p) => p.getSigner();\n }\n else {\n throw new Error(\"The supplied provider cannot get a signer\");\n }\n}\n//# sourceMappingURL=types.js.map","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","// Written in 2014-2016 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n(function(root, f) {\n 'use strict';\n if (typeof module !== 'undefined' && module.exports) module.exports = f();\n else if (root.nacl) root.nacl.util = f();\n else {\n root.nacl = {};\n root.nacl.util = f();\n }\n}(this, function() {\n 'use strict';\n\n var util = {};\n\n function validateBase64(s) {\n if (!(/^(?:[A-Za-z0-9+\\/]{2}[A-Za-z0-9+\\/]{2})*(?:[A-Za-z0-9+\\/]{2}==|[A-Za-z0-9+\\/]{3}=)?$/.test(s))) {\n throw new TypeError('invalid encoding');\n }\n }\n\n util.decodeUTF8 = function(s) {\n if (typeof s !== 'string') throw new TypeError('expected string');\n var i, d = unescape(encodeURIComponent(s)), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n util.encodeUTF8 = function(arr) {\n var i, s = [];\n for (i = 0; i < arr.length; i++) s.push(String.fromCharCode(arr[i]));\n return decodeURIComponent(escape(s.join('')));\n };\n\n if (typeof atob === 'undefined') {\n // Node.js\n\n if (typeof Buffer.from !== 'undefined') {\n // Node v6 and later\n util.encodeBase64 = function (arr) { // v6 and later\n return Buffer.from(arr).toString('base64');\n };\n\n util.decodeBase64 = function (s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(Buffer.from(s, 'base64'), 0));\n };\n\n } else {\n // Node earlier than v6\n util.encodeBase64 = function (arr) { // v6 and later\n return (new Buffer(arr)).toString('base64');\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(new Buffer(s, 'base64'), 0));\n };\n }\n\n } else {\n // Browsers\n\n util.encodeBase64 = function(arr) {\n var i, s = [], len = arr.length;\n for (i = 0; i < len; i++) s.push(String.fromCharCode(arr[i]));\n return btoa(s.join(''));\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n var i, d = atob(s), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n }\n\n return util;\n\n}));\n","import { fromHexString, toBeArray, toBigInt, toHexString } from \"./utils.js\";\nimport * as nacl from \"tweetnacl\";\nimport * as naclUtil from \"tweetnacl-util\";\nimport { isBigIntOrNumber, isString } from \"./validation.js\";\nconst PRIVATE_KEY_LENGTH = 64;\nconst PUBLIC_KEY_LENGTH = 64;\n/**\n * A class representing a SealingKey which provides cryptographic sealing (encryption)\n * and unsealing (decryption) capabilities.\n */\nexport class SealingKey {\n /**\n * Constructs a SealingKey instance with the given private and public keys.\n *\n * @param {string} privateKey - The private key used for decryption.\n * @param {string} publicKey - The public key used for encryption.\n * @throws Will throw an error if the provided keys lengths do not match\n * the required lengths for private and public keys.\n */\n constructor(privateKey, publicKey) {\n /**\n * Unseals (decrypts) the provided ciphertext using the instance's private key.\n *\n * @param {string | Uint8Array} ciphertext - The encrypted data to be decrypted.\n * @returns BigInt - The decrypted message as a bigint.\n * @throws Will throw an error if the decryption process fails.\n */\n this.unseal = (ciphertext) => {\n let parsedData = undefined;\n try {\n if (typeof ciphertext === \"string\") {\n parsedData = JSON.parse(ciphertext);\n }\n }\n catch {\n // ignore errors\n }\n if (!parsedData) {\n const toDecrypt = typeof ciphertext === \"string\" ? fromHexString(ciphertext) : ciphertext;\n // decode json structure that gets returned from the chain\n const jsonString = Buffer.from(toDecrypt).toString(\"utf8\");\n parsedData = JSON.parse(jsonString);\n }\n if (!parsedData) {\n throw new Error(\"Failed to parse sealed data\");\n }\n // assemble decryption parameters\n const nonce = naclUtil.decodeBase64(parsedData.nonce);\n const ephemPublicKey = naclUtil.decodeBase64(parsedData.ephemPublicKey);\n const dataToDecrypt = naclUtil.decodeBase64(parsedData.ciphertext);\n // call the nacl box function to decrypt the data\n const decryptedMessage = nacl.box.open(dataToDecrypt, nonce, ephemPublicKey, fromHexString(this.privateKey));\n if (!decryptedMessage) {\n throw new Error(\"Failed to decrypt message\");\n }\n return toBigInt(decryptedMessage);\n };\n if (privateKey.length !== PRIVATE_KEY_LENGTH) {\n throw new Error(`Private key must be of length ${PRIVATE_KEY_LENGTH}`);\n }\n if (publicKey.length !== PUBLIC_KEY_LENGTH) {\n throw new Error(`Private key must be of length ${PUBLIC_KEY_LENGTH}`);\n }\n this.privateKey = privateKey;\n this.publicKey = publicKey;\n }\n}\n/**\n * Seals (encrypts) the provided message for a receiver with the specified public key.\n *\n * @param {bigint | number} value - The message to be encrypted.\n * @param {string} publicKey - The public key of the intended recipient.\n * @returns string - The encrypted message in hexadecimal format.\n * @static\n * @throws Will throw if the provided publicKey or value do not meet defined preconditions.\n */\nSealingKey.seal = (value, publicKey) => {\n isString(publicKey);\n isBigIntOrNumber(value);\n // generate ephemeral keypair\n const ephemeralKeyPair = nacl.box.keyPair();\n const nonce = nacl.randomBytes(nacl.box.nonceLength);\n const encryptedMessage = nacl.box(toBeArray(value), nonce, fromHexString(publicKey), ephemeralKeyPair.secretKey);\n // handle encrypted data\n const output = {\n version: \"x25519-xsalsa20-poly1305\",\n nonce: naclUtil.encodeBase64(nonce),\n ephemPublicKey: naclUtil.encodeBase64(ephemeralKeyPair.publicKey),\n ciphertext: naclUtil.encodeBase64(encryptedMessage),\n };\n // mimicking encoding from the chain\n return toHexString(Buffer.from(JSON.stringify(output)));\n};\n/**\n * Asynchronously generates a new SealingKey.\n * This function uses the 'nacl' library to create a new public/private key pair for sealing purposes.\n * A sealing key is used to encrypt data such that it can only be unsealed (decrypted) by the owner of the corresponding private key.\n * @returns {Promise} - A promise that resolves to a new SealingKey object containing the hexadecimal strings of the public and private keys.\n */\nexport const GenerateSealingKey = async () => {\n const sodiumKeypair = nacl.box.keyPair();\n return new SealingKey(toHexString(sodiumKeypair.secretKey), toHexString(sodiumKeypair.publicKey));\n};\n//# sourceMappingURL=sealing.js.map","import { isAddress } from \"../../../sdk/utils.js\";\nimport { determineRequestMethod, determineRequestSigner, } from \"../../../sdk/types.js\";\nimport { GenerateSealingKey, SealingKey } from \"../../../sdk/sealing.js\";\nconst PERMIT_PREFIX = \"Fhenix_saved_permit_\";\nconst parsePermit = (savedPermit) => {\n const o = JSON.parse(savedPermit);\n if (o) {\n return {\n contractAddress: o.contractAddress,\n sealingKey: new SealingKey(o.sealingKey.privateKey, o.sealingKey.publicKey),\n signature: o.signature,\n publicKey: `0x${o.sealingKey.publicKey}`,\n };\n }\n throw new Error(`Cannot parse permit`);\n};\nexport const getPermit = async (contract, provider, autoGenerate = true) => {\n isAddress(contract);\n if (!provider) {\n throw new Error(`Missing provider`);\n }\n const getSigner = determineRequestSigner(provider);\n const signer = await getSigner(provider);\n const savedPermit = getPermitFromLocalstorage(contract, await signer.getAddress());\n if (savedPermit != null)\n return savedPermit;\n return autoGenerate ? generatePermit(contract, provider) : null;\n};\nexport const getAllExistingPermits = (account) => {\n const permits = {};\n const search = new RegExp(`${PERMIT_PREFIX}(.*?)_${account}`);\n Object.keys(window.localStorage).forEach((key) => {\n const matchArray = key.match(search);\n if (matchArray == null)\n return;\n const contract = matchArray[1];\n const permitRaw = window.localStorage.getItem(key);\n if (permitRaw == null)\n return;\n try {\n const permit = parsePermit(permitRaw);\n permits[contract] = permit;\n }\n catch (err) {\n console.warn(err);\n }\n });\n return permits;\n};\nexport const getAllPermits = () => {\n const permits = new Map();\n for (let i = 0; i < window.localStorage.length; i++) {\n const key = window.localStorage.key(i);\n if (key && key.includes(PERMIT_PREFIX)) {\n const contract = key.replace(PERMIT_PREFIX, \"\");\n // Not sure if needed, code placeholder:\n // const noPrefixPermit = key.replace(PERMIT_PREFIX, \"\");\n // let contract = \"\";\n // if (noPrefixPermit.includes(\"_\")) {\n // const tmp = noPrefixPermit.split(\"_\");\n // contract = tmp[0];\n // } else {\n // contract = noPrefixPermit;\n // }\n try {\n const permit = parsePermit(window.localStorage.getItem(key));\n permits.set(contract, permit);\n }\n catch (err) {\n console.warn(err);\n }\n }\n }\n return permits;\n};\nconst sign = async (signer, domain, types, value) => {\n if (\"_signTypedData\" in signer &&\n typeof signer._signTypedData == \"function\") {\n return await signer._signTypedData(domain, types, value);\n }\n else if (\"signTypedData\" in signer &&\n typeof signer.signTypedData == \"function\") {\n return await signer.signTypedData(domain, types, value);\n }\n throw new Error(\"Unsupported signer\");\n};\nexport const generatePermit = async (contract, provider, customSigner) => {\n if (!provider) {\n throw new Error(\"Provider is undefined\");\n }\n const requestMethod = determineRequestMethod(provider);\n let signer;\n if (!customSigner) {\n const getSigner = determineRequestSigner(provider);\n signer = await getSigner(provider);\n }\n else {\n signer = customSigner;\n }\n const chainId = await requestMethod(provider, \"eth_chainId\", []);\n const keypair = await GenerateSealingKey();\n const msgParams = {\n types: {\n // This refers to the domain the contract is hosted on.\n EIP712Domain: [\n { name: \"name\", type: \"string\" },\n { name: \"version\", type: \"string\" },\n { name: \"chainId\", type: \"uint256\" },\n { name: \"verifyingContract\", type: \"address\" },\n ],\n // Refer to primaryType.\n Permissioned: [{ name: \"publicKey\", type: \"bytes32\" }],\n },\n // This defines the message you're proposing the user to sign, is dapp-specific, and contains\n // anything you want. There are no required fields. Be as explicit as possible when building out\n // the message schema.\n // This refers to the keys of the following types object.\n primaryType: \"Permissioned\",\n domain: {\n // Give a user-friendly name to the specific contract you're signing for.\n name: \"Fhenix Permission\", // params.name\n // This identifies the latest version.\n version: \"1.0\", //params.version ||\n // This defines the network, in this case, Mainnet.\n chainId: chainId,\n // // Add a verifying contract to make sure you're establishing contracts with the proper entity.\n verifyingContract: contract, //params.verifyingContract,\n },\n message: {\n publicKey: `0x${keypair.publicKey}`,\n },\n };\n const msgSig = await sign(signer, msgParams.domain, { Permissioned: msgParams.types.Permissioned }, msgParams.message);\n const permit = {\n contractAddress: contract,\n sealingKey: keypair,\n signature: msgSig,\n publicKey: `0x${keypair.publicKey}`,\n //permit: msgParams,\n //msgSig\n };\n storePermitInLocalStorage(permit, await signer.getAddress());\n return permit;\n};\nexport const removePermit = (contract, account) => {\n if (!account) {\n // Backward compatibility\n window.localStorage.removeItem(`${PERMIT_PREFIX}${contract}`);\n }\n else {\n window.localStorage.removeItem(`${PERMIT_PREFIX}${contract}_${account}`);\n }\n};\nexport const getPermitFromLocalstorage = (contract, account) => {\n let savedPermit = null;\n if (typeof window !== \"undefined\" && window.localStorage) {\n savedPermit = window.localStorage.getItem(`${PERMIT_PREFIX}${contract}_${account}`);\n if (!account) {\n // Backward compatibility\n savedPermit = window.localStorage.getItem(`${PERMIT_PREFIX}${contract}`);\n }\n else {\n savedPermit = window.localStorage.getItem(`${PERMIT_PREFIX}${contract}_${account}`);\n }\n }\n if (!savedPermit) {\n return undefined;\n }\n return parsePermit(savedPermit);\n};\nexport const storePermitInLocalStorage = (permit, account) => {\n if (typeof window !== \"undefined\" && window.localStorage) {\n // Sealing key is a class, and will include methods in the JSON\n const serialized = {\n contractAddress: permit.contractAddress,\n sealingKey: {\n publicKey: permit.sealingKey.publicKey,\n privateKey: permit.sealingKey.privateKey,\n },\n signature: permit.signature,\n };\n window.localStorage.setItem(`${PERMIT_PREFIX}${permit.contractAddress}_${account}`, JSON.stringify(serialized));\n }\n};\nexport const removePermitFromLocalstorage = (contract, account) => {\n if (typeof window !== \"undefined\" && window.localStorage) {\n window.localStorage.removeItem(`${PERMIT_PREFIX}${contract}_${account}`);\n }\n};\n//# sourceMappingURL=index.js.map","export const MAX_UINT8 = 255;\nexport const MAX_UINT16 = 65535;\nexport const MAX_UINT32 = 4294967295;\nexport const FheOpsAddress = \"0x0000000000000000000000000000000000000080\";\nexport const PUBLIC_KEY_LENGTH_MIN = 15000;\n//# sourceMappingURL=consts.js.map","import { CompactFheBool, CompactFheUint8, CompactFheUint16, CompactFheUint32, CompactFheUint64, CompactFheUint128, CompactFheUint160, CompactFheUint256, } from \"./fhe/fhe.js\";\nimport { EncryptionTypes, } from \"./types.js\";\nimport { fromHexString, toBigInt } from \"./utils.js\";\n/**\n * Encrypts a Uint8 value using TFHE (Fast Fully Homomorphic Encryption over the Torus).\n * @param {boolean} value - The Boolean value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedBool} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_bool = (value, publicKey, securityZone = 0) => {\n const encrypted = CompactFheBool.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Uint8 value using TFHE (Fast Fully Homomorphic Encryption over the Torus).\n * @param {number} value - The Uint8 value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedUint8} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_uint8 = (value, publicKey, securityZone = 0) => {\n const encrypted = CompactFheUint8.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Uint16 value using TFHE.\n * @param {number} value - The Uint16 value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedUint16} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_uint16 = (value, publicKey, securityZone = 0) => {\n const encrypted = CompactFheUint16.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Uint32 value using TFHE.\n * @param {number} value - The Uint32 value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedUint32} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_uint32 = (value, publicKey, securityZone = 0) => {\n const encrypted = CompactFheUint32.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Uint64 value using TFHE.\n * @param {number} value - The Uint64 value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedUint64} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_uint64 = (value, publicKey, securityZone = 0) => {\n if (typeof value === \"string\") {\n value = toBigInt(fromHexString(value));\n }\n else {\n value = value;\n }\n const encrypted = CompactFheUint64.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Uint128 value using TFHE.\n * @param {bigint} value - The Uint128 value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedUint128} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_uint128 = (value, publicKey, securityZone = 0) => {\n if (typeof value === \"string\") {\n value = toBigInt(fromHexString(value));\n }\n else {\n value = value;\n }\n const encrypted = CompactFheUint128.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Uint256 value using TFHE.\n * @param {bigint} value - The Uint256 value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {EncryptedUint256} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_uint256 = (value, publicKey, securityZone = 0) => {\n if (typeof value === \"string\") {\n value = toBigInt(fromHexString(value));\n }\n else {\n value = value;\n }\n const encrypted = CompactFheUint256.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a Address value using TFHE.\n * @param {bigint} value - The Address (Uint160) value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param securityZone - The security zone to encrypt the address on.\n * @returns {EncryptedAddress} - The encrypted value serialized as Uint8Array.\n */\nexport const encrypt_address = (value, publicKey, securityZone = 0) => {\n if (typeof value === \"string\") {\n value = toBigInt(fromHexString(value));\n }\n else {\n value = value;\n }\n const encrypted = CompactFheUint160.encrypt_with_compact_public_key(value, publicKey);\n return {\n data: encrypted.serialize(),\n securityZone,\n };\n};\n/**\n * Encrypts a numeric value using TFHE according to the specified encryption type.\n * @param {number} value - The numeric value to encrypt.\n * @param {TfheCompactPublicKey} publicKey - The public key used for encryption.\n * @param {EncryptionTypes} type - The encryption type (uint8, uint16, uint32).\n * @param securityZone - The security zone to encrypt the value on.\n * @returns {Uint8Array} - The encrypted value serialized as Uint8Array.\n * @throws {Error} - Throws an error if an invalid type is specified.\n */\nexport const encrypt = (value, publicKey, type = EncryptionTypes.uint8, securityZone = 0) => {\n switch (type) {\n case EncryptionTypes.bool:\n return encrypt_bool(!!value, publicKey, securityZone);\n case EncryptionTypes.uint8:\n return encrypt_uint8(value, publicKey, securityZone);\n case EncryptionTypes.uint16:\n return encrypt_uint16(value, publicKey, securityZone);\n case EncryptionTypes.uint32:\n return encrypt_uint32(value, publicKey, securityZone);\n case EncryptionTypes.uint64:\n return encrypt_uint64(value.toString(16), publicKey, securityZone);\n case EncryptionTypes.uint128:\n return encrypt_uint128(value.toString(16), publicKey, securityZone);\n case EncryptionTypes.uint256:\n return encrypt_uint256(value.toString(16), publicKey, securityZone);\n case EncryptionTypes.address:\n return encrypt_address(value.toString(16), publicKey, securityZone);\n default:\n throw new Error(\"Invalid type\");\n }\n};\n//# sourceMappingURL=encrypt.js.map","import { asyncInitFhevm } from \"./fhe/fhe.js\";\n// INFO: The existing `GetFhePublicKey` function has been replaced with `InitFhevm`\n// `GetFhePublicKey` didn't allow security zones to be set, and was overloaded with initializing the Fhevm\n// Public key fetching has been moved to the Async and Sync FhenixClient constructors (they handle it slightly differently)\n// - arch 2024-08-28\nexport const InitFhevm = async () => {\n // `asyncInitFhevm` in `/sdk/fhe/fhe.ts` in node env (noop)\n // `asyncInitFhevm` in `/sdk/fhe/fhe-browser.ts` in browser env (init wasm)\n await asyncInitFhevm();\n};\n//# sourceMappingURL=init.js.map","import { TfheCompactPublicKey } from \"./fhe/fhe.js\";\nimport { fromHexString, isAddress, ValidateUintInRange, toABIEncodedUint32, } from \"./utils.js\";\nimport { determineRequestMethod, EncryptionTypes, } from \"./types.js\";\nimport { generatePermit, getAllExistingPermits, getPermitFromLocalstorage, removePermitFromLocalstorage, storePermitInLocalStorage, } from \"../extensions/access_control/index.js\";\nimport { FheOpsAddress, MAX_UINT16, MAX_UINT32, MAX_UINT8, PUBLIC_KEY_LENGTH_MIN, } from \"./consts.js\";\nimport * as tfheEncrypt from \"./encrypt.js\";\nimport { isBigIntOrHexString, isNumber, isPlainObject, isString, } from \"./validation.js\";\nimport { InitFhevm } from \"./init.js\";\nclass FhenixClientBase {\n /**\n * Creates an instance of FhenixClient.\n * Initializes the fhevm library if needed and retrieves the public key for encryption from the provider.\n * @param {InstanceParams} params - Parameters to initialize the client.\n */\n constructor(params) {\n this.permits = {};\n isPlainObject(params);\n const { provider } = params;\n this.provider = provider;\n if (!this.provider) {\n throw new Error(\"Failed to initialize Fhenix Client - must include a web3 provider\");\n }\n }\n // Unsealing Method\n /**\n * Unseals an encrypted message using the stored permit for a specific contract address.\n * @param {string} contractAddress - The address of the contract.\n * @param {string} ciphertext - The encrypted message to unseal.\n * @param {string} account - The account attached to existing permits.\n * @returns bigint - The unsealed message.\n */\n unseal(contractAddress, ciphertext, account) {\n isAddress(contractAddress);\n isString(ciphertext);\n const permit = this.getPermit(contractAddress, account);\n if (permit == null) {\n throw new Error(`Missing keypair for ${contractAddress}`);\n }\n return this.permits[contractAddress].sealingKey.unseal(ciphertext);\n }\n // Permit Management Methods\n /**\n * Creates a new permit for a specific contract address. Also saves the permit to localstorage (if available)\n * @param {string} contractAddress - The address of the contract.\n * @param {SupportedProvider} provider - The provider from which to sign the permit - must container a signer.\n * @param signer - the signer to use to sign the permit if provider does not support signing (e.g. hardhat)\n * @returns Permit - The permit associated with the contract address.\n *\n * @throws {Error} - If the provider does not contain a signer, or if a provider is not set\n */\n async generatePermit(contractAddress, provider, signer) {\n if (!provider && this.provider === undefined) {\n throw new Error(\"error getting provider\");\n }\n const permit = await generatePermit(contractAddress, provider || this.provider, signer);\n // Permit has already been put into local storage, it can be inserted directly into `this.permits`\n this.permits[contractAddress] = permit;\n return permit;\n }\n /**\n * Reusable permit loading and storing from local storage\n * @param {string} contractAddress - The address of the contract.\n * @param {string} account - The address of the user account.\n * @returns {Permit | undefined} - The permit loaded from local storage\n */\n _loadPermitFromLocalStorage(contractAddress, account) {\n const fromLs = getPermitFromLocalstorage(contractAddress, account);\n if (fromLs == null)\n return undefined;\n this.permits[contractAddress] = fromLs;\n return fromLs;\n }\n /**\n * Retrieves the stored permit for a specific contract address.\n * @param {string} contractAddress - The address of the contract.\n * @param {string} account - The address of the user account.\n * @returns {Permit} - The permit associated with the contract address.\n */\n getPermit(contractAddress, account) {\n const permitFromLs = this._loadPermitFromLocalStorage(contractAddress, account);\n if (permitFromLs != null)\n return permitFromLs;\n return this.permits[contractAddress];\n }\n /**\n * Retrieves all stored permits for a specific account.\n * @param {string} account - The address of the user account.\n * @returns {Record} - The permits associated with each contract address.\n */\n loadAllPermitsFromLocalStorage(account) {\n const existingPermits = getAllExistingPermits(account);\n Object.keys(existingPermits).forEach((contractAddress) => {\n this.permits[contractAddress] = existingPermits[contractAddress];\n });\n return this.permits;\n }\n /**\n * Stores a permit for a specific contract address. Will overwrite any existing permit for the same contract address.\n * Does not store the permit in localstorage (should it?)\n * @param {Permit} permit - The permit to store.\n */\n storePermit(permit, account) {\n storePermitInLocalStorage(permit, account);\n this.permits[permit.contractAddress] = permit;\n }\n /**\n * Removes a stored permit for a specific contract address.\n * @param {string} contractAddress - The address of the contract.\n * @param {string} account - The account address of the permit.\n */\n removePermit(contractAddress, account) {\n if (this.hasPermit(contractAddress, account)) {\n removePermitFromLocalstorage(contractAddress, account);\n delete this.permits[contractAddress];\n }\n }\n /**\n * Checks if a permit exists for a specific contract address.\n * @param {string} contractAddress - The address of the contract.\n * @param {string} account - The account address attached to the stored permits\n * @returns {boolean} - True if a permit exists, false otherwise.\n */\n hasPermit(contractAddress, account) {\n const permitFromLs = this._loadPermitFromLocalStorage(contractAddress, account);\n if (permitFromLs != null)\n return true;\n return this.permits[contractAddress] != null;\n }\n /**\n * Exports all stored permits.\n * @returns {ContractPermits} - All stored permits.\n */\n exportPermits() {\n return this.permits;\n }\n extractPermitPermission(permit) {\n return {\n signature: permit.signature,\n publicKey: permit.publicKey,\n };\n }\n // Private helper methods\n /**\n * Retrieves the FHE public key from the provider.\n * @param {SupportedProvider} provider - The provider from which to retrieve the key.\n * @param securityZone - The security zone for which to retrieve the key (default 0).\n * @returns {Promise} - The retrieved public key.\n */\n static async getFheKeyFromProvider(provider, securityZone = 0) {\n const requestMethod = determineRequestMethod(provider);\n const funcSig = \"0x1b1b484e\"; // cast sig \"getNetworkPublicKey(int32)\"\n const callData = funcSig + toABIEncodedUint32(securityZone);\n const callParams = [{ to: FheOpsAddress, data: callData }, \"latest\"];\n const publicKeyP = requestMethod(provider, \"eth_call\", callParams).catch((err) => {\n throw Error(`Error while requesting network public key from provider for security zone ${securityZone}: ${JSON.stringify(err)}`);\n });\n const publicKey = await publicKeyP;\n if (typeof publicKey !== \"string\") {\n throw new Error(\"Error using publicKey from provider: expected string\");\n }\n if (publicKey.length < PUBLIC_KEY_LENGTH_MIN) {\n throw new Error(`Error initializing fhenixjs; got shorter than expected public key: ${publicKey.length}`);\n }\n // magically know how to decode rlp or w/e returns from the evm json-rpc\n const buff = fromHexString(publicKey.slice(130));\n try {\n return TfheCompactPublicKey.deserialize(buff);\n }\n catch (err) {\n throw new Error(`Error deserializing public key ${err}`);\n }\n }\n}\n/**\n * The FhenixClient class provides functionalities to interact with a FHE (Fully Homomorphic Encryption) system.\n * It includes methods for encryption, unsealing, and managing permits.\n */\nexport class FhenixClient extends FhenixClientBase {\n /**\n * Creates an instance of FhenixClient.\n * Initializes the fhevm library if needed and retrieves the public key for encryption from the provider.\n * @param {InstanceParams} params - Parameters to initialize the client.\n */\n constructor(params) {\n super(params);\n this.defaultSecurityZone = 0;\n this.fhePublicKeys = [];\n InitFhevm().catch((err) => {\n if (params.ignoreErrors) {\n return undefined;\n }\n else {\n throw new Error(`Failed to initialize fhenixjs - is the network FHE-enabled? ${err}`);\n }\n });\n // In the future the default array can be updated to include additional security zones\n // This is not strictly necessary, as the pubKey for additional zones can also be fetched during an encryption.\n // By default, doesn't skip fetching the public key\n if (params.skipPubKeyFetch !== true) {\n this.fhePublicKeys = [this.defaultSecurityZone].map((securityZone) => FhenixClientBase.getFheKeyFromProvider(params.provider, securityZone));\n }\n }\n async _getPublicKey(securityZone) {\n let fhePublicKey = await this.fhePublicKeys[securityZone];\n if (!fhePublicKey) {\n this.fhePublicKeys[securityZone] = FhenixClientBase.getFheKeyFromProvider(this.provider, securityZone);\n fhePublicKey = await this.fhePublicKeys[securityZone];\n if (!fhePublicKey) {\n throw new Error(`Public key for security zone ${securityZone} somehow not initialized`);\n }\n }\n return fhePublicKey;\n }\n async encrypt_bool(value, securityZone = 0) {\n const fhePublicKey = await this._getPublicKey(securityZone);\n return tfheEncrypt.encrypt_bool(value, fhePublicKey, securityZone);\n }\n async encrypt_uint8(value, securityZone = 0) {\n isNumber(value);\n const fhePublicKey = await this._getPublicKey(securityZone);\n ValidateUintInRange(value, MAX_UINT8, 0);\n return tfheEncrypt.encrypt_uint8(value, fhePublicKey, securityZone);\n }\n async encrypt_uint16(value, securityZone = 0) {\n isNumber(value);\n const fhePublicKey = await this._getPublicKey(securityZone);\n ValidateUintInRange(value, MAX_UINT16, 0);\n return tfheEncrypt.encrypt_uint16(value, fhePublicKey, securityZone);\n }\n async encrypt_uint32(value, securityZone = 0) {\n isNumber(value);\n const fhePublicKey = await this._getPublicKey(securityZone);\n ValidateUintInRange(value, MAX_UINT32, 0);\n return tfheEncrypt.encrypt_uint32(value, fhePublicKey, securityZone);\n }\n async encrypt_uint64(value, securityZone = 0) {\n isBigIntOrHexString(value);\n const fhePublicKey = await this._getPublicKey(securityZone);\n // ValidateUintInRange(value, MAX_UINT64, 0);\n return tfheEncrypt.encrypt_uint64(value, fhePublicKey, securityZone);\n }\n async encrypt_uint128(value, securityZone = 0) {\n isBigIntOrHexString(value);\n const fhePublicKey = await this._getPublicKey(securityZone);\n // ValidateUintInRange(value, MAX_UINT64, 0);\n return tfheEncrypt.encrypt_uint128(value, fhePublicKey, securityZone);\n }\n async encrypt_uint256(value, securityZone = 0) {\n isBigIntOrHexString(value);\n const fhePublicKey = await this._getPublicKey(securityZone);\n // ValidateUintInRange(value, MAX_UINT64, 0);\n return tfheEncrypt.encrypt_uint256(value, fhePublicKey, securityZone);\n }\n async encrypt_address(value, securityZone = 0) {\n isBigIntOrHexString(value);\n const fhePublicKey = await this._getPublicKey(securityZone);\n // ValidateUintInRange(value, MAX_UINT64, 0);\n return tfheEncrypt.encrypt_address(value, fhePublicKey, securityZone);\n }\n async encrypt(value, type, securityZone = 0) {\n isNumber(value);\n let outputSize = type;\n const fhePublicKey = await this._getPublicKey(securityZone);\n // choose the most efficient ciphertext size if not selected\n if (!outputSize) {\n if (value < MAX_UINT8) {\n outputSize = EncryptionTypes.uint8;\n }\n else if (value < MAX_UINT16) {\n outputSize = EncryptionTypes.uint16;\n }\n else if (value < MAX_UINT32) {\n outputSize = EncryptionTypes.uint32;\n }\n else {\n throw new Error(`Encryption input must be smaller than ${MAX_UINT32}`);\n }\n }\n switch (outputSize) {\n case EncryptionTypes.uint8:\n ValidateUintInRange(value, MAX_UINT8, 0);\n break;\n case EncryptionTypes.uint16:\n ValidateUintInRange(value, MAX_UINT16, 0);\n break;\n case EncryptionTypes.uint32:\n ValidateUintInRange(value, MAX_UINT32, 0);\n break;\n default:\n }\n return tfheEncrypt.encrypt(value, fhePublicKey, type, securityZone);\n }\n}\n/**\n * The FhenixClientSync class provides functionalities to interact with a FHE (Fully Homomorphic Encryption) system.\n * It includes methods for encryption, unsealing, and managing permits.\n *\n * The Sync FhenixClient allows the `client.encrypt_()` functions to be performed synchronously\n *\n * @Note The Sync FhenixClient must be created using `await FhenixClientSync.create({provider})` instead of `new FhenixClient({provider})`\n */\nexport class FhenixClientSync extends FhenixClientBase {\n constructor(params) {\n super(params);\n this.fhePublicKeys = [];\n this.fhePublicKeys = params.fhePublicKeys;\n }\n static async create(params) {\n isPlainObject(params);\n if (params.skipPubKeyFetch === true) {\n console.warn(\"warning: FhenixClientSync doesn't support skipping public key fetching on creation\");\n }\n const { provider, ignoreErrors, securityZones = [0] } = params;\n if (!provider) {\n throw new Error(\"Failed to initialize Fhenix Client - must include a web3 provider\");\n }\n await InitFhevm().catch((err) => {\n if (ignoreErrors) {\n return undefined;\n }\n else {\n throw new Error(`Failed to initialize fhenixjs - is the network FHE-enabled? ${err}`);\n }\n });\n const fhePublicKeys = await Promise.all(securityZones.map((securityZone) => FhenixClientBase.getFheKeyFromProvider(params.provider, securityZone)));\n return new FhenixClientSync({ ...params, fhePublicKeys });\n }\n // Encryption Methods\n _getPublicKey(securityZone) {\n const fhePublicKey = this.fhePublicKeys[securityZone];\n if (!fhePublicKey) {\n throw new Error(`Public key for security zone ${securityZone} not initialized`);\n }\n return fhePublicKey;\n }\n encrypt_bool(value, securityZone = 0) {\n const fhePublicKey = this._getPublicKey(securityZone);\n return tfheEncrypt.encrypt_bool(value, fhePublicKey, securityZone);\n }\n encrypt_uint8(value, securityZone = 0) {\n isNumber(value);\n const fhePublicKey = this._getPublicKey(securityZone);\n ValidateUintInRange(value, MAX_UINT8, 0);\n return tfheEncrypt.encrypt_uint8(value, fhePublicKey, securityZone);\n }\n encrypt_uint16(value, securityZone = 0) {\n isNumber(value);\n const fhePublicKey = this._getPublicKey(securityZone);\n ValidateUintInRange(value, MAX_UINT16, 0);\n return tfheEncrypt.encrypt_uint16(value, fhePublicKey, securityZone);\n }\n encrypt_uint32(value, securityZone = 0) {\n isNumber(value);\n const fhePublicKey = this._getPublicKey(securityZone);\n ValidateUintInRange(value, MAX_UINT32, 0);\n return tfheEncrypt.encrypt_uint32(value, fhePublicKey, securityZone);\n }\n encrypt_uint64(value, securityZone = 0) {\n isBigIntOrHexString(value);\n const fhePublicKey = this._getPublicKey(securityZone);\n // ValidateUintInRange(value, MAX_UINT64, 0);\n return tfheEncrypt.encrypt_uint64(value, fhePublicKey, securityZone);\n }\n encrypt_uint128(value, securityZone = 0) {\n isBigIntOrHexString(value);\n const fhePublicKey = this._getPublicKey(securityZone);\n // ValidateUintInRange(value, MAX_UINT64, 0);\n return tfheEncrypt.encrypt_uint128(value, fhePublicKey, securityZone);\n }\n encrypt_uint256(value, securityZone = 0) {\n isBigIntOrHexString(value);\n const fhePublicKey = this._getPublicKey(securityZone);\n // ValidateUintInRange(value, MAX_UINT64, 0);\n return tfheEncrypt.encrypt_uint256(value, fhePublicKey, securityZone);\n }\n encrypt_address(value, securityZone = 0) {\n isBigIntOrHexString(value);\n const fhePublicKey = this._getPublicKey(securityZone);\n // ValidateUintInRange(value, MAX_UINT64, 0);\n return tfheEncrypt.encrypt_address(value, fhePublicKey, securityZone);\n }\n encrypt(value, type, securityZone = 0) {\n isNumber(value);\n let outputSize = type;\n const fhePublicKey = this._getPublicKey(securityZone);\n // choose the most efficient ciphertext size if not selected\n if (!outputSize) {\n if (value < MAX_UINT8) {\n outputSize = EncryptionTypes.uint8;\n }\n else if (value < MAX_UINT16) {\n outputSize = EncryptionTypes.uint16;\n }\n else if (value < MAX_UINT32) {\n outputSize = EncryptionTypes.uint32;\n }\n else {\n throw new Error(`Encryption input must be smaller than ${MAX_UINT32}`);\n }\n }\n switch (outputSize) {\n case EncryptionTypes.uint8:\n ValidateUintInRange(value, MAX_UINT8, 0);\n break;\n case EncryptionTypes.uint16:\n ValidateUintInRange(value, MAX_UINT16, 0);\n break;\n case EncryptionTypes.uint32:\n ValidateUintInRange(value, MAX_UINT32, 0);\n break;\n default:\n }\n return tfheEncrypt.encrypt(value, fhePublicKey, type, securityZone);\n }\n}\n//# sourceMappingURL=index.js.map","import { TfheClientKey, TfheConfigBuilder, TfheCompactPublicKey, } from \"./fhe/tfhe\";\nexport const createTfheKeypair = () => {\n // const block_params = new ShortintParameters(\n // ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS,\n // );\n const config = TfheConfigBuilder.default()\n //..(block_params)\n .build();\n const clientKey = TfheClientKey.generate(config);\n let publicKey = TfheCompactPublicKey.new(clientKey);\n publicKey = TfheCompactPublicKey.deserialize(publicKey.serialize());\n return { clientKey, publicKey };\n};\nexport const createTfhePublicKey = () => {\n const { publicKey } = createTfheKeypair();\n return toHexString(publicKey.serialize());\n};\nexport const toHexString = (bytes) => bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, \"0\"), \"\");\n//# sourceMappingURL=keygen.js.map","/* Do NOT modify this file; see /src.ts/_admin/update-version.ts */\n/**\n * The current version of Ethers.\n */\nexport const version = \"6.13.1\";\n//# sourceMappingURL=_version.js.map","/**\n * Property helper functions.\n *\n * @_subsection api/utils:Properties [about-properties]\n */\nfunction checkType(value, type, name) {\n const types = type.split(\"|\").map(t => t.trim());\n for (let i = 0; i < types.length; i++) {\n switch (type) {\n case \"any\":\n return;\n case \"bigint\":\n case \"boolean\":\n case \"number\":\n case \"string\":\n if (typeof (value) === type) {\n return;\n }\n }\n }\n const error = new Error(`invalid value for type ${type}`);\n error.code = \"INVALID_ARGUMENT\";\n error.argument = `value.${name}`;\n error.value = value;\n throw error;\n}\n/**\n * Resolves to a new object that is a copy of %%value%%, but with all\n * values resolved.\n */\nexport async function resolveProperties(value) {\n const keys = Object.keys(value);\n const results = await Promise.all(keys.map((k) => Promise.resolve(value[k])));\n return results.reduce((accum, v, index) => {\n accum[keys[index]] = v;\n return accum;\n }, {});\n}\n/**\n * Assigns the %%values%% to %%target%% as read-only values.\n *\n * It %%types%% is specified, the values are checked.\n */\nexport function defineProperties(target, values, types) {\n for (let key in values) {\n let value = values[key];\n const type = (types ? types[key] : null);\n if (type) {\n checkType(value, type, key);\n }\n Object.defineProperty(target, key, { enumerable: true, value, writable: false });\n }\n}\n//# sourceMappingURL=properties.js.map","/**\n * All errors in ethers include properties to ensure they are both\n * human-readable (i.e. ``.message``) and machine-readable (i.e. ``.code``).\n *\n * The [[isError]] function can be used to check the error ``code`` and\n * provide a type guard for the properties present on that error interface.\n *\n * @_section: api/utils/errors:Errors [about-errors]\n */\nimport { version } from \"../_version.js\";\nimport { defineProperties } from \"./properties.js\";\nfunction stringify(value) {\n if (value == null) {\n return \"null\";\n }\n if (Array.isArray(value)) {\n return \"[ \" + (value.map(stringify)).join(\", \") + \" ]\";\n }\n if (value instanceof Uint8Array) {\n const HEX = \"0123456789abcdef\";\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n result += HEX[value[i] >> 4];\n result += HEX[value[i] & 0xf];\n }\n return result;\n }\n if (typeof (value) === \"object\" && typeof (value.toJSON) === \"function\") {\n return stringify(value.toJSON());\n }\n switch (typeof (value)) {\n case \"boolean\":\n case \"symbol\":\n return value.toString();\n case \"bigint\":\n return BigInt(value).toString();\n case \"number\":\n return (value).toString();\n case \"string\":\n return JSON.stringify(value);\n case \"object\": {\n const keys = Object.keys(value);\n keys.sort();\n return \"{ \" + keys.map((k) => `${stringify(k)}: ${stringify(value[k])}`).join(\", \") + \" }\";\n }\n }\n return `[ COULD NOT SERIALIZE ]`;\n}\n/**\n * Returns true if the %%error%% matches an error thrown by ethers\n * that matches the error %%code%%.\n *\n * In TypeScript environments, this can be used to check that %%error%%\n * matches an EthersError type, which means the expected properties will\n * be set.\n *\n * @See [ErrorCodes](api:ErrorCode)\n * @example\n * try {\n * // code....\n * } catch (e) {\n * if (isError(e, \"CALL_EXCEPTION\")) {\n * // The Type Guard has validated this object\n * console.log(e.data);\n * }\n * }\n */\nexport function isError(error, code) {\n return (error && error.code === code);\n}\n/**\n * Returns true if %%error%% is a [[CallExceptionError].\n */\nexport function isCallException(error) {\n return isError(error, \"CALL_EXCEPTION\");\n}\n/**\n * Returns a new Error configured to the format ethers emits errors, with\n * the %%message%%, [[api:ErrorCode]] %%code%% and additional properties\n * for the corresponding EthersError.\n *\n * Each error in ethers includes the version of ethers, a\n * machine-readable [[ErrorCode]], and depending on %%code%%, additional\n * required properties. The error message will also include the %%message%%,\n * ethers version, %%code%% and all additional properties, serialized.\n */\nexport function makeError(message, code, info) {\n let shortMessage = message;\n {\n const details = [];\n if (info) {\n if (\"message\" in info || \"code\" in info || \"name\" in info) {\n throw new Error(`value will overwrite populated values: ${stringify(info)}`);\n }\n for (const key in info) {\n if (key === \"shortMessage\") {\n continue;\n }\n const value = (info[key]);\n // try {\n details.push(key + \"=\" + stringify(value));\n // } catch (error: any) {\n // console.log(\"MMM\", error.message);\n // details.push(key + \"=[could not serialize object]\");\n // }\n }\n }\n details.push(`code=${code}`);\n details.push(`version=${version}`);\n if (details.length) {\n message += \" (\" + details.join(\", \") + \")\";\n }\n }\n let error;\n switch (code) {\n case \"INVALID_ARGUMENT\":\n error = new TypeError(message);\n break;\n case \"NUMERIC_FAULT\":\n case \"BUFFER_OVERRUN\":\n error = new RangeError(message);\n break;\n default:\n error = new Error(message);\n }\n defineProperties(error, { code });\n if (info) {\n Object.assign(error, info);\n }\n if (error.shortMessage == null) {\n defineProperties(error, { shortMessage });\n }\n return error;\n}\n/**\n * Throws an EthersError with %%message%%, %%code%% and additional error\n * %%info%% when %%check%% is falsish..\n *\n * @see [[api:makeError]]\n */\nexport function assert(check, message, code, info) {\n if (!check) {\n throw makeError(message, code, info);\n }\n}\n/**\n * A simple helper to simply ensuring provided arguments match expected\n * constraints, throwing if not.\n *\n * In TypeScript environments, the %%check%% has been asserted true, so\n * any further code does not need additional compile-time checks.\n */\nexport function assertArgument(check, message, name, value) {\n assert(check, message, \"INVALID_ARGUMENT\", { argument: name, value: value });\n}\nexport function assertArgumentCount(count, expectedCount, message) {\n if (message == null) {\n message = \"\";\n }\n if (message) {\n message = \": \" + message;\n }\n assert(count >= expectedCount, \"missing arguemnt\" + message, \"MISSING_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n assert(count <= expectedCount, \"too many arguments\" + message, \"UNEXPECTED_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n}\nconst _normalizeForms = [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].reduce((accum, form) => {\n try {\n // General test for normalize\n /* c8 ignore start */\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad\");\n }\n ;\n /* c8 ignore stop */\n if (form === \"NFD\") {\n const check = String.fromCharCode(0xe9).normalize(\"NFD\");\n const expected = String.fromCharCode(0x65, 0x0301);\n /* c8 ignore start */\n if (check !== expected) {\n throw new Error(\"broken\");\n }\n /* c8 ignore stop */\n }\n accum.push(form);\n }\n catch (error) { }\n return accum;\n}, []);\n/**\n * Throws if the normalization %%form%% is not supported.\n */\nexport function assertNormalize(form) {\n assert(_normalizeForms.indexOf(form) >= 0, \"platform missing String.prototype.normalize\", \"UNSUPPORTED_OPERATION\", {\n operation: \"String.prototype.normalize\", info: { form }\n });\n}\n/**\n * Many classes use file-scoped values to guard the constructor,\n * making it effectively private. This facilitates that pattern\n * by ensuring the %%givenGaurd%% matches the file-scoped %%guard%%,\n * throwing if not, indicating the %%className%% if provided.\n */\nexport function assertPrivate(givenGuard, guard, className) {\n if (className == null) {\n className = \"\";\n }\n if (givenGuard !== guard) {\n let method = className, operation = \"new\";\n if (className) {\n method += \".\";\n operation += \" \" + className;\n }\n assert(false, `private constructor; use ${method}from* methods`, \"UNSUPPORTED_OPERATION\", {\n operation\n });\n }\n}\n//# sourceMappingURL=errors.js.map","/**\n * Some data helpers.\n *\n *\n * @_subsection api/utils:Data Helpers [about-data]\n */\nimport { assert, assertArgument } from \"./errors.js\";\nfunction _getBytes(value, name, copy) {\n if (value instanceof Uint8Array) {\n if (copy) {\n return new Uint8Array(value);\n }\n return value;\n }\n if (typeof (value) === \"string\" && value.match(/^0x(?:[0-9a-f][0-9a-f])*$/i)) {\n const result = new Uint8Array((value.length - 2) / 2);\n let offset = 2;\n for (let i = 0; i < result.length; i++) {\n result[i] = parseInt(value.substring(offset, offset + 2), 16);\n offset += 2;\n }\n return result;\n }\n assertArgument(false, \"invalid BytesLike value\", name || \"value\", value);\n}\n/**\n * Get a typed Uint8Array for %%value%%. If already a Uint8Array\n * the original %%value%% is returned; if a copy is required use\n * [[getBytesCopy]].\n *\n * @see: getBytesCopy\n */\nexport function getBytes(value, name) {\n return _getBytes(value, name, false);\n}\n/**\n * Get a typed Uint8Array for %%value%%, creating a copy if necessary\n * to prevent any modifications of the returned value from being\n * reflected elsewhere.\n *\n * @see: getBytes\n */\nexport function getBytesCopy(value, name) {\n return _getBytes(value, name, true);\n}\n/**\n * Returns true if %%value%% is a valid [[HexString]].\n *\n * If %%length%% is ``true`` or a //number//, it also checks that\n * %%value%% is a valid [[DataHexString]] of %%length%% (if a //number//)\n * bytes of data (e.g. ``0x1234`` is 2 bytes).\n */\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (typeof (length) === \"number\" && value.length !== 2 + 2 * length) {\n return false;\n }\n if (length === true && (value.length % 2) !== 0) {\n return false;\n }\n return true;\n}\n/**\n * Returns true if %%value%% is a valid representation of arbitrary\n * data (i.e. a valid [[DataHexString]] or a Uint8Array).\n */\nexport function isBytesLike(value) {\n return (isHexString(value, true) || (value instanceof Uint8Array));\n}\nconst HexCharacters = \"0123456789abcdef\";\n/**\n * Returns a [[DataHexString]] representation of %%data%%.\n */\nexport function hexlify(data) {\n const bytes = getBytes(data);\n let result = \"0x\";\n for (let i = 0; i < bytes.length; i++) {\n const v = bytes[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n}\n/**\n * Returns a [[DataHexString]] by concatenating all values\n * within %%data%%.\n */\nexport function concat(datas) {\n return \"0x\" + datas.map((d) => hexlify(d).substring(2)).join(\"\");\n}\n/**\n * Returns the length of %%data%%, in bytes.\n */\nexport function dataLength(data) {\n if (isHexString(data, true)) {\n return (data.length - 2) / 2;\n }\n return getBytes(data).length;\n}\n/**\n * Returns a [[DataHexString]] by slicing %%data%% from the %%start%%\n * offset to the %%end%% offset.\n *\n * By default %%start%% is 0 and %%end%% is the length of %%data%%.\n */\nexport function dataSlice(data, start, end) {\n const bytes = getBytes(data);\n if (end != null && end > bytes.length) {\n assert(false, \"cannot slice beyond data bounds\", \"BUFFER_OVERRUN\", {\n buffer: bytes, length: bytes.length, offset: end\n });\n }\n return hexlify(bytes.slice((start == null) ? 0 : start, (end == null) ? bytes.length : end));\n}\n/**\n * Return the [[DataHexString]] result by stripping all **leading**\n ** zero bytes from %%data%%.\n */\nexport function stripZerosLeft(data) {\n let bytes = hexlify(data).substring(2);\n while (bytes.startsWith(\"00\")) {\n bytes = bytes.substring(2);\n }\n return \"0x\" + bytes;\n}\nfunction zeroPad(data, length, left) {\n const bytes = getBytes(data);\n assert(length >= bytes.length, \"padding exceeds data length\", \"BUFFER_OVERRUN\", {\n buffer: new Uint8Array(bytes),\n length: length,\n offset: length + 1\n });\n const result = new Uint8Array(length);\n result.fill(0);\n if (left) {\n result.set(bytes, length - bytes.length);\n }\n else {\n result.set(bytes, 0);\n }\n return hexlify(result);\n}\n/**\n * Return the [[DataHexString]] of %%data%% padded on the **left**\n * to %%length%% bytes.\n *\n * If %%data%% already exceeds %%length%%, a [[BufferOverrunError]] is\n * thrown.\n *\n * This pads data the same as **values** are in Solidity\n * (e.g. ``uint128``).\n */\nexport function zeroPadValue(data, length) {\n return zeroPad(data, length, true);\n}\n/**\n * Return the [[DataHexString]] of %%data%% padded on the **right**\n * to %%length%% bytes.\n *\n * If %%data%% already exceeds %%length%%, a [[BufferOverrunError]] is\n * thrown.\n *\n * This pads data the same as **bytes** are in Solidity\n * (e.g. ``bytes16``).\n */\nexport function zeroPadBytes(data, length) {\n return zeroPad(data, length, false);\n}\n//# sourceMappingURL=data.js.map","/**\n * Using strings in Ethereum (or any security-basd system) requires\n * additional care. These utilities attempt to mitigate some of the\n * safety issues as well as provide the ability to recover and analyse\n * strings.\n *\n * @_subsection api/utils:Strings and UTF-8 [about-strings]\n */\nimport { getBytes } from \"./data.js\";\nimport { assertArgument, assertNormalize } from \"./errors.js\";\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n assertArgument(false, `invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === \"BAD_PREFIX\" || reason === \"UNEXPECTED_CONTINUE\") {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) {\n break;\n }\n i++;\n }\n return i;\n }\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === \"OVERRUN\") {\n return bytes.length - offset - 1;\n }\n // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === \"OVERLONG\") {\n assertArgument(typeof (badCodepoint) === \"number\", \"invalid bad code point for replacement\", \"badCodepoint\", badCodepoint);\n output.push(badCodepoint);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n/**\n * A handful of popular, built-in UTF-8 error handling strategies.\n *\n * **``\"error\"``** - throws on ANY illegal UTF-8 sequence or\n * non-canonical (overlong) codepoints (this is the default)\n *\n * **``\"ignore\"``** - silently drops any illegal UTF-8 sequence\n * and accepts non-canonical (overlong) codepoints\n *\n * **``\"replace\"``** - replace any illegal UTF-8 sequence with the\n * UTF-8 replacement character (i.e. ``\"\\\\ufffd\"``) and accepts\n * non-canonical (overlong) codepoints\n *\n * @returns: Record<\"error\" | \"ignore\" | \"replace\", Utf8ErrorFunc>\n */\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(_bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n const bytes = getBytes(_bytes, \"bytes\");\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n }\n else {\n if ((c & 0xc0) === 0x80) {\n i += onError(\"UNEXPECTED_CONTINUE\", i - 1, bytes, result);\n }\n else {\n i += onError(\"BAD_PREFIX\", i - 1, bytes, result);\n }\n continue;\n }\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(\"OVERRUN\", i - 1, bytes, result);\n continue;\n }\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(\"MISSING_CONTINUE\", i, bytes, result);\n res = null;\n break;\n }\n ;\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(\"OUT_OF_RANGE\", i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(\"UTF16_SURROGATE\", i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(\"OVERLONG\", i - 1 - extraLength, bytes, result, res);\n continue;\n }\n result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n/**\n * Returns the UTF-8 byte representation of %%str%%.\n *\n * If %%form%% is specified, the string is normalized.\n */\nexport function toUtf8Bytes(str, form) {\n assertArgument(typeof (str) === \"string\", \"invalid string value\", \"str\", str);\n if (form != null) {\n assertNormalize(form);\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 0x80) {\n result.push(c);\n }\n else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n }\n else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n assertArgument(i < str.length && ((c2 & 0xfc00) === 0xdc00), \"invalid surrogate pair\", \"str\", str);\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n }\n else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n return new Uint8Array(result);\n}\n;\n//export \nfunction _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\n/**\n * Returns the string represented by the UTF-8 data %%bytes%%.\n *\n * When %%onError%% function is specified, it is called on UTF-8\n * errors allowing recovery using the [[Utf8ErrorFunc]] API.\n * (default: [error](Utf8ErrorFuncs))\n */\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\n/**\n * Returns the UTF-8 code-points for %%str%%.\n *\n * If %%form%% is specified, the string is normalized.\n */\nexport function toUtf8CodePoints(str, form) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","function number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nfunction bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`Expected boolean, not ${b}`);\n}\nfunction bytes(b, ...lengths) {\n if (!(b instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\nfunction hash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\nfunction exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nfunction output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nexport { number, bool, bytes, hash, exists, output };\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n//# sourceMappingURL=_assert.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated, we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\nconst u8a = (a) => a instanceof Uint8Array;\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n if (!u8a(bytes))\n throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const len = hex.length;\n if (len % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + len);\n const array = new Uint8Array(len / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!u8a(data))\n throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n const r = new Uint8Array(arrays.reduce((sum, a) => sum + a.length, 0));\n let pad = 0; // walk through each item, ensure they have proper type\n arrays.forEach((a) => {\n if (!u8a(a))\n throw new Error('Uint8Array expected');\n r.set(a, pad);\n pad += a.length;\n });\n return r;\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nconst toStr = {}.toString;\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexport function wrapConstructor(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport function wrapXOFConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { fromBig, split, toBig, shrSH, shrSL, rotrSH, rotrSL, rotrBH, rotrBL, rotr32H, rotr32L, rotlSH, rotlSL, rotlBH, rotlBL, add, add3L, add3H, add4L, add4H, add5H, add5L, };\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","import { bytes, exists, number, output } from './_assert.js';\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from './_u64.js';\nimport { Hash, u32, toBytes, wrapConstructor, wrapXOFConstructorWithOpts, } from './utils.js';\n// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.\n// It's called a sponge function.\n// Various per round constants calculations\nconst [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []];\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nconst _7n = /* @__PURE__ */ BigInt(7);\nconst _256n = /* @__PURE__ */ BigInt(256);\nconst _0x71n = /* @__PURE__ */ BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n)\n t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s, rounds = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++)\n B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\nexport class Keccak extends Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n // Can be passed from user as dkLen\n number(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n keccak() {\n keccakP(this.state32, this.rounds);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n exists(this);\n const { blockLen, state } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n exists(this, false);\n bytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= blockLen)\n this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n number(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n output(out, this);\n if (this.finished)\n throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\nconst gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\nexport const sha3_224 = /* @__PURE__ */ gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = /* @__PURE__ */ gen(0x06, 136, 256 / 8);\nexport const sha3_384 = /* @__PURE__ */ gen(0x06, 104, 384 / 8);\nexport const sha3_512 = /* @__PURE__ */ gen(0x06, 72, 512 / 8);\nexport const keccak_224 = /* @__PURE__ */ gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexport const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8);\nexport const keccak_384 = /* @__PURE__ */ gen(0x01, 104, 384 / 8);\nexport const keccak_512 = /* @__PURE__ */ gen(0x01, 72, 512 / 8);\nconst genShake = (suffix, blockLen, outputLen) => wrapXOFConstructorWithOpts((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));\nexport const shake128 = /* @__PURE__ */ genShake(0x1f, 168, 128 / 8);\nexport const shake256 = /* @__PURE__ */ genShake(0x1f, 136, 256 / 8);\n//# sourceMappingURL=sha3.js.map","/**\n * Cryptographic hashing functions\n *\n * @_subsection: api/crypto:Hash Functions [about-crypto-hashing]\n */\nimport { keccak_256 } from \"@noble/hashes/sha3\";\nimport { getBytes, hexlify } from \"../utils/index.js\";\nlet locked = false;\nconst _keccak256 = function (data) {\n return keccak_256(data);\n};\nlet __keccak256 = _keccak256;\n/**\n * Compute the cryptographic KECCAK256 hash of %%data%%.\n *\n * The %%data%% **must** be a data representation, to compute the\n * hash of UTF-8 data use the [[id]] function.\n *\n * @returns DataHexstring\n * @example:\n * keccak256(\"0x\")\n * //_result:\n *\n * keccak256(\"0x1337\")\n * //_result:\n *\n * keccak256(new Uint8Array([ 0x13, 0x37 ]))\n * //_result:\n *\n * // Strings are assumed to be DataHexString, otherwise it will\n * // throw. To hash UTF-8 data, see the note above.\n * keccak256(\"Hello World\")\n * //_error:\n */\nexport function keccak256(_data) {\n const data = getBytes(_data, \"data\");\n return hexlify(__keccak256(data));\n}\nkeccak256._ = _keccak256;\nkeccak256.lock = function () { locked = true; };\nkeccak256.register = function (func) {\n if (locked) {\n throw new TypeError(\"keccak256 is locked\");\n }\n __keccak256 = func;\n};\nObject.freeze(keccak256);\n//# sourceMappingURL=keccak.js.map","/**\n * A constant for the zero address.\n *\n * (**i.e.** ``\"0x0000000000000000000000000000000000000000\"``)\n */\nexport const ZeroAddress = \"0x0000000000000000000000000000000000000000\";\n//# sourceMappingURL=addresses.js.map","import { keccak256 } from \"../crypto/index.js\";\nimport { getBytes, assertArgument } from \"../utils/index.js\";\nconst BN_0 = BigInt(0);\nconst BN_36 = BigInt(36);\nfunction getChecksumAddress(address) {\n // if (!isHexString(address, 20)) {\n // logger.throwArgumentError(\"invalid address\", \"address\", address);\n // }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = getBytes(keccak256(expanded));\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n return \"0x\" + chars.join(\"\");\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\n// i.e. Math.floor(Math.log10(Number.MAX_SAFE_INTEGER));\nconst safeDigits = 15;\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits) {\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nconst Base36 = (function () {\n ;\n const result = {};\n for (let i = 0; i < 36; i++) {\n const key = \"0123456789abcdefghijklmnopqrstuvwxyz\"[i];\n result[key] = BigInt(i);\n }\n return result;\n})();\nfunction fromBase36(value) {\n value = value.toLowerCase();\n let result = BN_0;\n for (let i = 0; i < value.length; i++) {\n result = result * BN_36 + Base36[value[i]];\n }\n return result;\n}\n/**\n * Returns a normalized and checksumed address for %%address%%.\n * This accepts non-checksum addresses, checksum addresses and\n * [[getIcapAddress]] formats.\n *\n * The checksum in Ethereum uses the capitalization (upper-case\n * vs lower-case) of the characters within an address to encode\n * its checksum, which offers, on average, a checksum of 15-bits.\n *\n * If %%address%% contains both upper-case and lower-case, it is\n * assumed to already be a checksum address and its checksum is\n * validated, and if the address fails its expected checksum an\n * error is thrown.\n *\n * If you wish the checksum of %%address%% to be ignore, it should\n * be converted to lower-case (i.e. ``.toLowercase()``) before\n * being passed in. This should be a very rare situation though,\n * that you wish to bypass the safegaurds in place to protect\n * against an address that has been incorrectly copied from another\n * source.\n *\n * @example:\n * // Adds the checksum (via upper-casing specific letters)\n * getAddress(\"0x8ba1f109551bd432803012645ac136ddd64dba72\")\n * //_result:\n *\n * // Converts ICAP address and adds checksum\n * getAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36\");\n * //_result:\n *\n * // Throws an error if an address contains mixed case,\n * // but the checksum fails\n * getAddress(\"0x8Ba1f109551bD432803012645Ac136ddd64DBA72\")\n * //_error:\n */\nexport function getAddress(address) {\n assertArgument(typeof (address) === \"string\", \"invalid address\", \"address\", address);\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (!address.startsWith(\"0x\")) {\n address = \"0x\" + address;\n }\n const result = getChecksumAddress(address);\n // It is a checksummed address with a bad checksum\n assertArgument(!address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) || result === address, \"bad address checksum\", \"address\", address);\n return result;\n }\n // Maybe ICAP? (we only support direct mode)\n if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n // It is an ICAP address with a bad checksum\n assertArgument(address.substring(2, 4) === ibanChecksum(address), \"bad icap checksum\", \"address\", address);\n let result = fromBase36(address.substring(4)).toString(16);\n while (result.length < 40) {\n result = \"0\" + result;\n }\n return getChecksumAddress(\"0x\" + result);\n }\n assertArgument(false, \"invalid address\", \"address\", address);\n}\n/**\n * The [ICAP Address format](link-icap) format is an early checksum\n * format which attempts to be compatible with the banking\n * industry [IBAN format](link-wiki-iban) for bank accounts.\n *\n * It is no longer common or a recommended format.\n *\n * @example:\n * getIcapAddress(\"0x8ba1f109551bd432803012645ac136ddd64dba72\");\n * //_result:\n *\n * getIcapAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36\");\n * //_result:\n *\n * // Throws an error if the ICAP checksum is wrong\n * getIcapAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK37\");\n * //_error:\n */\nexport function getIcapAddress(address) {\n //let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n let base36 = BigInt(getAddress(address)).toString(36).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n//# sourceMappingURL=address.js.map","import { assert, assertArgument } from \"../utils/index.js\";\nimport { getAddress } from \"./address.js\";\n/**\n * Returns true if %%value%% is an object which implements the\n * [[Addressable]] interface.\n *\n * @example:\n * // Wallets and AbstractSigner sub-classes\n * isAddressable(Wallet.createRandom())\n * //_result:\n *\n * // Contracts\n * contract = new Contract(\"dai.tokens.ethers.eth\", [ ], provider)\n * isAddressable(contract)\n * //_result:\n */\nexport function isAddressable(value) {\n return (value && typeof (value.getAddress) === \"function\");\n}\n/**\n * Returns true if %%value%% is a valid address.\n *\n * @example:\n * // Valid address\n * isAddress(\"0x8ba1f109551bD432803012645Ac136ddd64DBA72\")\n * //_result:\n *\n * // Valid ICAP address\n * isAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36\")\n * //_result:\n *\n * // Invalid checksum\n * isAddress(\"0x8Ba1f109551bD432803012645Ac136ddd64DBa72\")\n * //_result:\n *\n * // Invalid ICAP checksum\n * isAddress(\"0x8Ba1f109551bD432803012645Ac136ddd64DBA72\")\n * //_result:\n *\n * // Not an address (an ENS name requires a provided and an\n * // asynchronous API to access)\n * isAddress(\"ricmoo.eth\")\n * //_result:\n */\nexport function isAddress(value) {\n try {\n getAddress(value);\n return true;\n }\n catch (error) { }\n return false;\n}\nasync function checkAddress(target, promise) {\n const result = await promise;\n if (result == null || result === \"0x0000000000000000000000000000000000000000\") {\n assert(typeof (target) !== \"string\", \"unconfigured name\", \"UNCONFIGURED_NAME\", { value: target });\n assertArgument(false, \"invalid AddressLike value; did not resolve to a value address\", \"target\", target);\n }\n return getAddress(result);\n}\n/**\n * Resolves to an address for the %%target%%, which may be any\n * supported address type, an [[Addressable]] or a Promise which\n * resolves to an address.\n *\n * If an ENS name is provided, but that name has not been correctly\n * configured a [[UnconfiguredNameError]] is thrown.\n *\n * @example:\n * addr = \"0x6B175474E89094C44Da98b954EedeAC495271d0F\"\n *\n * // Addresses are return synchronously\n * resolveAddress(addr, provider)\n * //_result:\n *\n * // Address promises are resolved asynchronously\n * resolveAddress(Promise.resolve(addr))\n * //_result:\n *\n * // ENS names are resolved asynchronously\n * resolveAddress(\"dai.tokens.ethers.eth\", provider)\n * //_result:\n *\n * // Addressable objects are resolved asynchronously\n * contract = new Contract(addr, [ ])\n * resolveAddress(contract, provider)\n * //_result:\n *\n * // Unconfigured ENS names reject\n * resolveAddress(\"nothing-here.ricmoo.eth\", provider)\n * //_error:\n *\n * // ENS names require a NameResolver object passed in\n * // (notice the provider was omitted)\n * resolveAddress(\"nothing-here.ricmoo.eth\")\n * //_error:\n */\nexport function resolveAddress(target, resolver) {\n if (typeof (target) === \"string\") {\n if (target.match(/^0x[0-9a-f]{40}$/i)) {\n return getAddress(target);\n }\n assert(resolver != null, \"ENS resolution requires a provider\", \"UNSUPPORTED_OPERATION\", { operation: \"resolveName\" });\n return checkAddress(target, resolver.resolveName(target));\n }\n else if (isAddressable(target)) {\n return checkAddress(target, target.getAddress());\n }\n else if (target && typeof (target.then) === \"function\") {\n return checkAddress(target, target);\n }\n assertArgument(false, \"unsupported addressable value\", \"target\", target);\n}\n//# sourceMappingURL=checks.js.map","import { keccak256 } from \"../crypto/index.js\";\nimport { toUtf8Bytes } from \"../utils/index.js\";\n/**\n * A simple hashing function which operates on UTF-8 strings to\n * compute an 32-byte identifier.\n *\n * This simply computes the [UTF-8 bytes](toUtf8Bytes) and computes\n * the [[keccak256]].\n *\n * @example:\n * id(\"hello world\")\n * //_result:\n */\nexport function id(value) {\n return keccak256(toUtf8Bytes(value));\n}\n//# sourceMappingURL=id.js.map","export var FheUType;\n(function (FheUType) {\n FheUType[FheUType[\"bool\"] = 13] = \"bool\";\n FheUType[FheUType[\"uint8\"] = 0] = \"uint8\";\n FheUType[FheUType[\"uint16\"] = 1] = \"uint16\";\n FheUType[FheUType[\"uint32\"] = 2] = \"uint32\";\n FheUType[FheUType[\"uint64\"] = 3] = \"uint64\";\n FheUType[FheUType[\"uint128\"] = 4] = \"uint128\";\n FheUType[FheUType[\"uint256\"] = 5] = \"uint256\";\n FheUType[FheUType[\"address\"] = 12] = \"address\";\n})(FheUType || (FheUType = {}));\nexport const FheUintUTypes = [\n FheUType.uint8,\n FheUType.uint16,\n FheUType.uint32,\n FheUType.uint64,\n FheUType.uint128,\n FheUType.uint256,\n];\nexport const FheAllUTypes = [\n FheUType.bool,\n FheUType.uint8,\n FheUType.uint16,\n FheUType.uint32,\n FheUType.uint64,\n FheUType.uint128,\n FheUType.uint256,\n FheUType.address,\n];\nexport const Encryptable = {\n bool: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.bool }),\n uint8: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint8 }),\n uint16: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint16 }),\n uint32: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint32 }),\n uint64: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint64 }),\n uint128: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint128 }),\n uint256: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint256 }),\n address: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.address }),\n};\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isEncryptableItem(value) {\n return (typeof value === \"object\" &&\n value !== null &&\n [\"string\", \"number\", \"bigint\", \"boolean\"].includes(typeof value.data) &&\n typeof value.securityZone === \"number\" &&\n FheAllUTypes.includes(value.utype));\n}\n// Determine if `value` is an instance of a `sealedItem` { data: string, utype: 0-5 | 12 | 13 }\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getAsSealedItem(value) {\n if (Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === \"string\" &&\n FheAllUTypes.includes(parseInt(`${value[1]}`)))\n return {\n data: value[0],\n utype: value[1],\n };\n if (typeof value === \"object\" &&\n value !== null &&\n typeof value.data === \"string\" &&\n FheAllUTypes.includes(value.utype))\n return value;\n return undefined;\n}\nexport function isSealedBool(value) {\n return parseInt(`${value.utype}`) === FheUType.bool;\n}\nexport function isSealedUint(value) {\n return FheUintUTypes.includes(parseInt(`${value.utype}`));\n}\nexport function isSealedAddress(value) {\n return parseInt(`${value.utype}`) === FheUType.address;\n}\nexport const ResultErr = (error) => ({\n success: false,\n data: null,\n error,\n});\nexport const ResultOk = (data) => ({\n success: true,\n data,\n error: null,\n});\n//# sourceMappingURL=types.js.map","import { ZeroAddress } from \"ethers\";\nconst PermitV2SignatureAllFields = [\n { name: \"issuer\", type: \"address\" },\n { name: \"expiration\", type: \"uint64\" },\n { name: \"contracts\", type: \"address[]\" },\n { name: \"projects\", type: \"string[]\" },\n { name: \"recipient\", type: \"address\" },\n { name: \"validatorId\", type: \"uint256\" },\n { name: \"validatorContract\", type: \"address\" },\n { name: \"sealingKey\", type: \"bytes32\" },\n { name: \"issuerSignature\", type: \"bytes\" },\n];\nexport const SignatureTypes = {\n PermissionedV2IssuerSelf: [\n \"issuer\",\n \"expiration\",\n \"contracts\",\n \"projects\",\n \"recipient\",\n \"validatorId\",\n \"validatorContract\",\n \"sealingKey\",\n ],\n PermissionedV2IssuerShared: [\n \"issuer\",\n \"expiration\",\n \"contracts\",\n \"projects\",\n \"recipient\",\n \"validatorId\",\n \"validatorContract\",\n ],\n PermissionedV2Recipient: [\n \"sealingKey\",\n \"issuerSignature\",\n ],\n};\nexport const getSignatureTypesAndMessage = (primaryType, fields, values) => {\n const types = {\n [primaryType]: PermitV2SignatureAllFields.filter((fieldType) => fields.includes(fieldType.name)),\n };\n const message = {};\n fields.forEach((field) => {\n if (field in values) {\n message[field] = values[field];\n }\n });\n return { types, primaryType, message: message };\n};\nexport const getSignatureDomain = (chainId) => ({\n name: \"Fhenix Permission v2.0.0\",\n version: \"v2.0.0\",\n chainId: parseInt(chainId),\n verifyingContract: ZeroAddress,\n});\n//# sourceMappingURL=permit.generate.js.map","var util;\n(function (util) {\n util.assertEqual = (val) => val;\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array\n .map((val) => (typeof val === \"string\" ? `'${val}'` : val))\n .join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nvar objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nconst ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nconst getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then &&\n typeof data.then === \"function\" &&\n data.catch &&\n typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n\nconst ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nconst quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nclass ZodError extends Error {\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n get errors() {\n return this.issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `smaller than or equal to`\n : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\n\nlet overrideErrorMap = errorMap;\nfunction setErrorMap(map) {\n overrideErrorMap = map;\n}\nfunction getErrorMap() {\n return overrideErrorMap;\n}\n\nconst makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nconst EMPTY_PATH = [];\nfunction addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n overrideMap,\n overrideMap === errorMap ? undefined : errorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nclass ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" &&\n (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nconst INVALID = Object.freeze({\n status: \"aborted\",\n});\nconst DIRTY = (value) => ({ status: \"dirty\", value });\nconst OK = (value) => ({ status: \"valid\", value });\nconst isAborted = (x) => x.status === \"aborted\";\nconst isDirty = (x) => x.status === \"dirty\";\nconst isValid = (x) => x.status === \"valid\";\nconst isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nfunction __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nvar errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message === null || message === void 0 ? void 0 : message.message;\n})(errorUtil || (errorUtil = {}));\n\nvar _ZodEnum_cache, _ZodNativeEnum_cache;\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (this._key instanceof Array) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n var _a, _b;\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message !== null && message !== void 0 ? message : ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: (_a = message !== null && message !== void 0 ? message : required_error) !== null && _a !== void 0 ? _a : ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: (_b = message !== null && message !== void 0 ? message : invalid_type_error) !== null && _b !== void 0 ? _b : ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nclass ZodType {\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n }\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n var _a;\n const ctx = {\n common: {\n issues: [],\n async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false,\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n async: true,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult)\n ? maybeAsyncResult\n : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\"\n ? refinementData(val, ctx)\n : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this, this._def);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv6Regex = /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n // let regex = `\\\\d{2}:\\\\d{2}:\\\\d{2}`;\n let regex = `([01]\\\\d|2[0-3]):[0-5]\\\\d:[0-5]\\\\d`;\n if (args.precision) {\n regex = `${regex}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n regex = `${regex}(\\\\.\\\\d+)?`;\n }\n return regex;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nfunction datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nclass ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch (_a) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n var _a, _b;\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false,\n local: (_b = options === null || options === void 0 ? void 0 : options.local) !== null && _b !== void 0 ? _b : false,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options === null || options === void 0 ? void 0 : options.position,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * @deprecated Use z.string().min(1) instead.\n * @see {@link ZodString.min}\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n var _a;\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / Math.pow(10, decCount);\n}\nclass ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" ||\n (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null, min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" ||\n ch.kind === \"int\" ||\n ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = BigInt(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n var _a;\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\nclass ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nclass ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nclass ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nclass ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nclass ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nclass ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nclass ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nclass ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nclass ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nclass ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n return (this._cached = { shape, keys });\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever &&\n this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") ;\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n var _a, _b, _c, _d;\n const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: (_d = errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // (def: Def) =>\n // (\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge(\n // merging: Incoming\n // ): //ZodObject = (merging) => {\n // ZodObject<\n // extendShape>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n util.objectKeys(mask).forEach((key) => {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nclass ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nclass ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util\n .objectKeys(a)\n .filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date &&\n bType === ZodParsedType.date &&\n +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nclass ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\nclass ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nclass ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nclass ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nclass ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nclass ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args\n .parseAsync(args, params)\n .catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args\n ? args\n : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nclass ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nclass ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nclass ZodEnum extends ZodType {\n constructor() {\n super(...arguments);\n _ZodEnum_cache.set(this, void 0);\n }\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodEnum_cache, new Set(this._def.values), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\").has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\n_ZodEnum_cache = new WeakMap();\nZodEnum.create = createZodEnum;\nclass ZodNativeEnum extends ZodType {\n constructor() {\n super(...arguments);\n _ZodNativeEnum_cache.set(this, void 0);\n }\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string &&\n ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodNativeEnum_cache, new Set(util.getValidEnumValues(this._def.values)), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\").has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\n_ZodNativeEnum_cache = new WeakMap();\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nclass ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise &&\n ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise\n ? ctx.data\n : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nclass ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return base;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((base) => {\n if (!isValid(base))\n return base;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ status: status.value, value: result }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nclass ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nclass ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nclass ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\"\n ? params.default\n : () => params.default,\n ...processCreateParams(params),\n });\n};\nclass ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nclass ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nconst BRAND = Symbol(\"zod_brand\");\nclass ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nclass ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nclass ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result)\n ? result.then((data) => freeze(data))\n : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\nfunction custom(check, params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n var _a, _b;\n if (!check(data)) {\n const p = typeof params === \"function\"\n ? params(data)\n : typeof params === \"string\"\n ? { message: params }\n : params;\n const _fatal = (_b = (_a = p.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n ctx.addIssue({ code: \"custom\", ...p2, fatal: _fatal });\n }\n });\n return ZodAny.create();\n}\nconst late = {\n object: ZodObject.lazycreate,\n};\nvar ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\nconst instanceOfType = (\n// const instanceOfType = any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nconst coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nconst NEVER = INVALID;\n\nvar z = /*#__PURE__*/Object.freeze({\n __proto__: null,\n defaultErrorMap: errorMap,\n setErrorMap: setErrorMap,\n getErrorMap: getErrorMap,\n makeIssue: makeIssue,\n EMPTY_PATH: EMPTY_PATH,\n addIssueToContext: addIssueToContext,\n ParseStatus: ParseStatus,\n INVALID: INVALID,\n DIRTY: DIRTY,\n OK: OK,\n isAborted: isAborted,\n isDirty: isDirty,\n isValid: isValid,\n isAsync: isAsync,\n get util () { return util; },\n get objectUtil () { return objectUtil; },\n ZodParsedType: ZodParsedType,\n getParsedType: getParsedType,\n ZodType: ZodType,\n datetimeRegex: datetimeRegex,\n ZodString: ZodString,\n ZodNumber: ZodNumber,\n ZodBigInt: ZodBigInt,\n ZodBoolean: ZodBoolean,\n ZodDate: ZodDate,\n ZodSymbol: ZodSymbol,\n ZodUndefined: ZodUndefined,\n ZodNull: ZodNull,\n ZodAny: ZodAny,\n ZodUnknown: ZodUnknown,\n ZodNever: ZodNever,\n ZodVoid: ZodVoid,\n ZodArray: ZodArray,\n ZodObject: ZodObject,\n ZodUnion: ZodUnion,\n ZodDiscriminatedUnion: ZodDiscriminatedUnion,\n ZodIntersection: ZodIntersection,\n ZodTuple: ZodTuple,\n ZodRecord: ZodRecord,\n ZodMap: ZodMap,\n ZodSet: ZodSet,\n ZodFunction: ZodFunction,\n ZodLazy: ZodLazy,\n ZodLiteral: ZodLiteral,\n ZodEnum: ZodEnum,\n ZodNativeEnum: ZodNativeEnum,\n ZodPromise: ZodPromise,\n ZodEffects: ZodEffects,\n ZodTransformer: ZodEffects,\n ZodOptional: ZodOptional,\n ZodNullable: ZodNullable,\n ZodDefault: ZodDefault,\n ZodCatch: ZodCatch,\n ZodNaN: ZodNaN,\n BRAND: BRAND,\n ZodBranded: ZodBranded,\n ZodPipeline: ZodPipeline,\n ZodReadonly: ZodReadonly,\n custom: custom,\n Schema: ZodType,\n ZodSchema: ZodType,\n late: late,\n get ZodFirstPartyTypeKind () { return ZodFirstPartyTypeKind; },\n coerce: coerce,\n any: anyType,\n array: arrayType,\n bigint: bigIntType,\n boolean: booleanType,\n date: dateType,\n discriminatedUnion: discriminatedUnionType,\n effect: effectsType,\n 'enum': enumType,\n 'function': functionType,\n 'instanceof': instanceOfType,\n intersection: intersectionType,\n lazy: lazyType,\n literal: literalType,\n map: mapType,\n nan: nanType,\n nativeEnum: nativeEnumType,\n never: neverType,\n 'null': nullType,\n nullable: nullableType,\n number: numberType,\n object: objectType,\n oboolean: oboolean,\n onumber: onumber,\n optional: optionalType,\n ostring: ostring,\n pipeline: pipelineType,\n preprocess: preprocessType,\n promise: promiseType,\n record: recordType,\n set: setType,\n strictObject: strictObjectType,\n string: stringType,\n symbol: symbolType,\n transformer: effectsType,\n tuple: tupleType,\n 'undefined': undefinedType,\n union: unionType,\n unknown: unknownType,\n 'void': voidType,\n NEVER: NEVER,\n ZodIssueCode: ZodIssueCode,\n quotelessJson: quotelessJson,\n ZodError: ZodError\n});\n\nexport { BRAND, DIRTY, EMPTY_PATH, INVALID, NEVER, OK, ParseStatus, ZodType as Schema, ZodAny, ZodArray, ZodBigInt, ZodBoolean, ZodBranded, ZodCatch, ZodDate, ZodDefault, ZodDiscriminatedUnion, ZodEffects, ZodEnum, ZodError, ZodFirstPartyTypeKind, ZodFunction, ZodIntersection, ZodIssueCode, ZodLazy, ZodLiteral, ZodMap, ZodNaN, ZodNativeEnum, ZodNever, ZodNull, ZodNullable, ZodNumber, ZodObject, ZodOptional, ZodParsedType, ZodPipeline, ZodPromise, ZodReadonly, ZodRecord, ZodType as ZodSchema, ZodSet, ZodString, ZodSymbol, ZodEffects as ZodTransformer, ZodTuple, ZodType, ZodUndefined, ZodUnion, ZodUnknown, ZodVoid, addIssueToContext, anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, coerce, custom, dateType as date, datetimeRegex, z as default, errorMap as defaultErrorMap, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, getErrorMap, getParsedType, instanceOfType as instanceof, intersectionType as intersection, isAborted, isAsync, isDirty, isValid, late, lazyType as lazy, literalType as literal, makeIssue, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, objectUtil, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, quotelessJson, recordType as record, setType as set, setErrorMap, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, util, voidType as void, z };\n","import { isAddress, ZeroAddress } from \"ethers\";\nimport { z } from \"zod\";\nconst SerializedSealingPair = z.object({\n privateKey: z.string(),\n publicKey: z.string(),\n});\nconst zPermitV2WithDefaults = z.object({\n name: z.string().optional().default(\"Unnamed Permit\"),\n type: z.enum([\"self\", \"sharing\", \"recipient\"]),\n issuer: z\n .string()\n .refine((val) => isAddress(val), {\n message: \"PermitV2 issuer :: invalid address\",\n })\n .refine((val) => val !== ZeroAddress, {\n message: \"PermitV2 issuer :: must not be zeroAddress\",\n }),\n expiration: z.number().optional().default(1000000000000),\n contracts: z.array(z.string()).optional().default([]),\n projects: z.array(z.string()).optional().default([]),\n recipient: z\n .string()\n .optional()\n .default(ZeroAddress)\n .refine((val) => isAddress(val), {\n message: \"PermitV2 recipient :: invalid address\",\n }),\n validatorId: z.number().optional().default(0),\n validatorContract: z\n .string()\n .optional()\n .default(ZeroAddress)\n .refine((val) => isAddress(val), {\n message: \"PermitV2 validatorContract :: invalid address\",\n }),\n sealingPair: SerializedSealingPair.optional(),\n issuerSignature: z.string().optional().default(\"0x\"),\n recipientSignature: z.string().optional().default(\"0x\"),\n});\n/**\n * Ensures that this Permit will provide access to a non-zero amount of contracts\n * by ensuring that `contracts` and `projects` aren't both empty arrays.\n */\nconst PermitV2RefineAccess = [\n (data) => {\n return data.contracts.length + data.projects.length > 0;\n },\n {\n message: \"PermitV2 access :: at least one contract or project must be accessible.\",\n path: [\"contracts\", \"projects\"],\n },\n];\n/**\n * Permits allow a hook into an optional external validator contract,\n * this check ensures that IF an external validator is applied, that both `validatorId` and `validatorContract` are populated,\n * ELSE ensures that both `validatorId` and `validatorContract` are empty\n */\nconst PermitV2RefineValidator = [\n (data) => (data.validatorId !== 0 && data.validatorContract !== ZeroAddress) ||\n (data.validatorId === 0 && data.validatorContract === ZeroAddress),\n {\n message: \"PermitV2 external validator :: validatorId and validatorContract must either both be set or both be unset.\",\n path: [\"validatorId\", \"validatorContract\"],\n },\n];\n/**\n * SuperRefinement that checks a PermitV2s signatures\n * checkRecipient - whether to validate that `recipient` is empty for permit with type , and populated for \n * checkSealingPair - only the fully formed permit requires the sealing pair, it can be optional for permitV2 create params\n * checkExistingSignatures - not optional - checks that the permit's type matches the populated signature fields\n * checkSigned - checks that the active user's signature has been signed and added. -> issuerSignature, -> recipientSignature\n */\nconst PermitV2SignaturesSuperRefinement = (options) => {\n return (data, ctx) => {\n // Check Recipient\n // If type , `PermitV2.recipient` must be zeroAddress\n // If type , `PermitV2.recipient` must not be zeroAddress\n if (options.checkRecipient) {\n if (data.type === \"self\" && data.recipient !== ZeroAddress)\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"recipient\"],\n message: `PermitV2 (type '${data.type}') recipient :: must be empty (zeroAddress)`,\n });\n if ((data.type === \"recipient\" || data.type === \"sharing\") &&\n data.recipient === ZeroAddress) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"recipient\"],\n message: `PermitV2 (type '${data.type}') recipient :: must not be empty`,\n });\n }\n }\n // Check Sealing Pair\n if (options.checkSealingPair && data.sealingPair == null)\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"sealingPair\"],\n message: `PermitV2 sealingPair :: must not be empty`,\n });\n // Check existing signatures match type (not checking this user's signature, but the other signature)\n // If type , `PermitV2.recipientSignature` must be empty\n // If type , `PermitV2.issuerSignature` must not be empty\n if ((data.type === \"self\" || data.type === \"sharing\") &&\n data.recipientSignature !== \"0x\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"recipientSignature\"],\n message: `PermitV2 (type '${data.type}') recipientSignature :: should not be populated by the issuer`,\n });\n }\n if (data.type === \"recipient\" && data.issuerSignature === \"0x\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"issuerSignature\"],\n message: `PermitV2 (type 'recipient') issuerSignature :: \\`issuer\\` must sign the PermitV2 before sharing it with \\`recipient\\``,\n });\n }\n // Check Signed\n // If type , `PermitV2.issuerSignature` must not be empty\n // If type , `PermitV2.recipientSignature` must not be empty\n if (options.checkSigned) {\n if ((data.type === \"self\" || data.type === \"sharing\") &&\n data.issuerSignature === \"0x\")\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"issuerSignature\"],\n message: `PermitV2 (type '${data.type}') issuerSignature :: must be populated with issuer's signature. Use \\`PermitV2.sign\\` or create permit with \\`PermitV2.createAndSign\\``,\n });\n if (data.type === \"recipient\" && data.recipientSignature === \"0x\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"recipientSignature\"],\n message: `PermitV2 (type 'recipient') recipientSignature :: must be populated with recipient's signature. Use \\`PermitV2.sign\\` or create permit with \\`PermitV2.createAndSign\\``,\n });\n }\n }\n return;\n };\n};\n/**\n * Validator for the params used when creating a fresh PermitV2\n * Has defaults added that will be populated in the options object\n * Signatures superRefinement checks only the recipient, sealingPair and signatures are not necessary in the Permit params\n */\nexport const PermitV2ParamsValidator = zPermitV2WithDefaults\n .refine(...PermitV2RefineAccess)\n .refine(...PermitV2RefineValidator)\n .superRefine(PermitV2SignaturesSuperRefinement({\n checkRecipient: true,\n checkSealingPair: false, // SealingPair not required when creating a fresh permit\n checkSigned: false, // Signature not required when creating a fresh permit\n}));\n/**\n * Validator for a PermitV2 that is expected to be fully formed\n * Does not allow optional values or offer defaults\n * Validates that the correct signatures are populated\n * Validates sealingPair is populated\n */\nexport const FullyFormedPermitV2Validator = zPermitV2WithDefaults\n .required()\n .refine(...PermitV2RefineAccess)\n .refine(...PermitV2RefineValidator)\n .superRefine(PermitV2SignaturesSuperRefinement({\n checkRecipient: true,\n checkSealingPair: true,\n checkSigned: true,\n}));\n//# sourceMappingURL=permit.z.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { getAddress, id, keccak256, ZeroAddress } from \"ethers\";\nimport { isSealedAddress, isSealedBool, getAsSealedItem, isSealedUint, } from \"./types\";\nimport { getSignatureDomain, getSignatureTypesAndMessage, SignatureTypes, } from \"./permit.generate\";\nimport { FullyFormedPermitV2Validator, PermitV2ParamsValidator, } from \"./permit.z\";\nimport { GenerateSealingKey, SealingKey } from \"../sealing\";\nimport { chainIsHardhat, hardhatMockUnseal } from \"../utils\";\nexport class PermitV2 {\n constructor(options, metadata) {\n /**\n * Chain that this permit was signed on. In part used for mock encrypt/unseal on hardhat network.\n * Should not be set manually, included in metadata as part of serialization flows.\n */\n this._signedChainId = undefined;\n this.updateName = (name) => {\n this.name = name;\n };\n /**\n * Utility to extract the public data from a permit.\n * Used in `serialize`, `getPermission`, `getHash` etc\n */\n this.getInterface = () => {\n return {\n name: this.name,\n type: this.type,\n issuer: this.issuer,\n expiration: this.expiration,\n contracts: this.contracts,\n projects: this.projects,\n recipient: this.recipient,\n validatorId: this.validatorId,\n validatorContract: this.validatorContract,\n sealingPair: this.sealingPair,\n issuerSignature: this.issuerSignature,\n recipientSignature: this.recipientSignature,\n };\n };\n /**\n * Export the necessary permit data to share a permit with another user\n */\n this.export = () => {\n const cleanedPermit = {\n name: this.name,\n type: this.type,\n issuer: this.issuer,\n expiration: this.expiration,\n };\n if (this.contracts.length > 0)\n cleanedPermit.contracts = this.contracts;\n if (this.projects.length > 0)\n cleanedPermit.projects = this.projects;\n if (this.recipient !== ZeroAddress)\n cleanedPermit.recipient = this.recipient;\n if (this.validatorId !== 0)\n cleanedPermit.validatorId = this.validatorId;\n if (this.validatorContract !== ZeroAddress)\n cleanedPermit.validatorContract = this.validatorContract;\n if (this.type === \"sharing\" && this.issuerSignature !== \"0x\")\n cleanedPermit.issuerSignature = this.issuerSignature;\n return JSON.stringify(cleanedPermit, undefined, 2);\n };\n /**\n * Returns a serializable permit instance, removing classes and methods.\n * NOTE: Does not return a stringified permit\n */\n this.serialize = () => {\n const { sealingPair, ...permit } = this.getInterface();\n return {\n ...permit,\n _signedChainId: this._signedChainId,\n sealingPair: {\n publicKey: sealingPair.publicKey,\n privateKey: sealingPair.privateKey,\n },\n };\n };\n /**\n * Extracts a contract input ready permission from this permit.\n * The permission inherits most fields from the permit, however\n * `permit.sealingPair` is removed and replaced by `permit.sealingPair.publicKey` in the `sealingKey` field.\n *\n * @permit {boolean} skipValidation - Flag to prevent running validation on the permit before returning the extracted permission. Used internally.\n * @returns {PermissionV2}\n */\n this.getPermission = (skipValidation = false) => {\n const permitData = this.getInterface();\n if (!skipValidation) {\n const validationResult = FullyFormedPermitV2Validator.safeParse(permitData);\n if (!validationResult.success) {\n throw new Error(`PermitV2 :: getPermission :: permit validation failed - ${JSON.stringify(validationResult.error, null, 2)} ${JSON.stringify(permitData, null, 2)}`);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { name, type, sealingPair, ...permit } = permitData;\n return {\n ...permit,\n sealingKey: `0x${sealingPair.publicKey}`,\n };\n };\n /**\n * Returns a stable hash depending on the core data of the permit.\n * Is used in the store as each permit's key in the permit map.\n */\n this.getHash = () => keccak256(id(JSON.stringify({\n type: this.type,\n issuer: this.issuer,\n expiration: this.expiration,\n contracts: this.contracts,\n projects: this.projects,\n recipient: this.recipient,\n validatorId: this.validatorId,\n validatorContract: this.validatorContract,\n })));\n /**\n * Returns the domain, types, primaryType, and message fields required to request the user's signature\n * Primary type is returned to allow viem clients to more easily connect\n */\n this.getSignatureParams = (chainId, primaryType) => {\n return {\n domain: getSignatureDomain(chainId),\n ...getSignatureTypesAndMessage(primaryType, SignatureTypes[primaryType], this.getPermission(true)),\n };\n };\n /**\n * Determines the required signature type.\n * Creates the EIP712 types and message.\n * Prompts the user for their signature.\n * Inserts the signature into `issuerSignature` or `recipientSignature` as necessary.\n *\n * @param {string} chainId - Used as part of the EIP712 domain, throws if undefined\n * @param {AbstractSigner} signer - Signer responsible for signing the EIP712 permit signature, throws if undefined\n */\n this.sign = async (chainId, signer) => {\n if (chainId == null)\n throw new Error(\"PermitV2 :: sign - chainId undefined, cannot sign a permit with an unknown chainId\");\n if (signer == null)\n throw new Error(\"PermitV2 :: sign - signer undefined, you must pass in a `signer` for the connected user to create a permitV2 signature\");\n let primaryType = \"PermissionedV2IssuerSelf\";\n if (this.type === \"self\")\n primaryType = \"PermissionedV2IssuerSelf\";\n if (this.type === \"sharing\")\n primaryType = \"PermissionedV2IssuerShared\";\n if (this.type === \"recipient\")\n primaryType = \"PermissionedV2Recipient\";\n const { domain, types, message } = this.getSignatureParams(chainId, primaryType);\n const signature = await signer.signTypedData(domain, types, message);\n if (this.type === \"self\" || this.type === \"sharing\") {\n this.issuerSignature = signature;\n }\n if (this.type === \"recipient\") {\n this.recipientSignature = signature;\n }\n this._signedChainId = chainId;\n };\n /**\n * Use the privateKey of `permit.sealingPair` to unseal `ciphertext` returned from the Fhenix chain.\n * Useful when not using `SealedItem` structs and need to unseal an individual ciphertext.\n */\n this.unsealCiphertext = (ciphertext) => {\n // Early exit with mock unseal if interacting with hardhat network\n if (chainIsHardhat(this._signedChainId))\n return hardhatMockUnseal(ciphertext);\n return this.sealingPair.unseal(ciphertext);\n };\n /**\n * Check if permit satisfies the requirements param.\n * Permit must satisfy either the contracts list or the projects list\n *\n * @param {{contracts?: string[], projects?: string[]}} requirements - Lists of contract and project requirements.\n * @returns {satisfies: boolean, unsatisfiedContracts, unsatisfiedProjects} - satisfied if either req list is fulfilled.\n */\n this.getSatisfies = (requirements) => {\n let contractsSatisfied = true;\n const unsatisfiedContracts = [];\n for (const contract in requirements.contracts) {\n if (!this.contracts.includes(contract)) {\n contractsSatisfied = false;\n unsatisfiedContracts.push(contract);\n }\n }\n let projectsSatisfied = true;\n const unsatisfiedProjects = [];\n for (const project in requirements.projects) {\n if (!this.projects.includes(project)) {\n projectsSatisfied = false;\n unsatisfiedProjects.push(project);\n }\n }\n if (contractsSatisfied || projectsSatisfied)\n return {\n satisfies: true,\n unsatisfiedContracts: null,\n unsatisfiedProjects: null,\n };\n return {\n satisfies: false,\n unsatisfiedContracts,\n unsatisfiedProjects,\n };\n };\n /**\n * Returns whether the active party has created their signature.\n * If `permit.type` is self or sharing, the active party is `issuer`.\n * If `permit.type` is recipient, the active party is `recipient`\n *\n * @returns {boolean}\n */\n this.isSigned = () => {\n if (this.type === \"self\" || this.type === \"sharing\") {\n return this.issuerSignature !== \"0x\";\n }\n if (this.type === \"recipient\") {\n return this.recipientSignature != \"0x\";\n }\n return false;\n };\n /**\n * Returns whether this permit has expired due to `permit.expiration`\n *\n * @returns {boolean}\n */\n this.isExpired = () => {\n return this.expiration < Math.floor(Date.now() / 1000);\n };\n /**\n * Overall validity checker of a permit, checks the signatures and expirations\n *\n * @returns {{valid: boolean, error: string}} - If `valid`, `error` is null, else `error` indicates which validity check failed\n */\n this.isValid = () => {\n if (this.isExpired())\n return { valid: false, error: \"expired\" };\n if (!this.isSigned())\n return { valid: false, error: \"not-signed\" };\n return { valid: true, error: null };\n };\n this.name = options.name;\n this.type = options.type;\n this.issuer = options.issuer;\n this.expiration = options.expiration;\n this.contracts = options.contracts;\n this.projects = options.projects;\n this.recipient = options.recipient;\n this.validatorId = options.validatorId;\n this.validatorContract = options.validatorContract;\n this.sealingPair = options.sealingPair;\n this.issuerSignature = options.issuerSignature;\n this.recipientSignature = options.recipientSignature;\n this._signedChainId = metadata?._signedChainId;\n }\n static async create(options) {\n const { success, data: parsed, error, } = PermitV2ParamsValidator.safeParse(options);\n if (!success) {\n throw new Error(\"PermitV2 :: create :: Parsing PermitV2Options failed \" +\n JSON.stringify(error, null, 2));\n }\n const sealingPair = parsed.sealingPair != null\n ? new SealingKey(parsed.sealingPair.privateKey, parsed.sealingPair.publicKey)\n : await GenerateSealingKey();\n return new PermitV2({\n ...parsed,\n sealingPair,\n });\n }\n static async createAndSign(options, chainId, signer) {\n const permit = await PermitV2.create(options);\n await permit.sign(chainId, signer);\n return permit;\n }\n unseal(item) {\n // SealedItem\n const sealedItem = getAsSealedItem(item);\n if (sealedItem != null) {\n const bn = chainIsHardhat(this._signedChainId)\n ? hardhatMockUnseal(sealedItem.data)\n : this.sealingPair.unseal(sealedItem.data);\n if (isSealedBool(sealedItem)) {\n // Return a boolean for SealedBool\n return Boolean(bn).valueOf();\n }\n if (isSealedAddress(sealedItem)) {\n // Return a string for SealedAddress\n return getAddress(`0x${bn.toString(16).slice(-40)}`);\n }\n if (isSealedUint(sealedItem)) {\n // Return a bigint for SealedUint\n return bn;\n }\n }\n // Object | Array\n if (typeof item === \"object\" && item !== null) {\n if (Array.isArray(item)) {\n // Array - recurse\n return item.map((nestedItem) => this.unseal(nestedItem));\n }\n else {\n // Object - recurse\n const result = {};\n for (const key in item) {\n result[key] = this.unseal(item[key]);\n }\n return result;\n }\n }\n // Primitive\n return item;\n }\n}\n/**\n * Creates a `PermitV2` from a serialized permit, hydrating methods and classes\n * NOTE: Does not return a stringified permit\n *\n * @param {SerializedPermitV2} - Permit structure excluding classes\n * @returns {PermitV2} - New instance of PermitV2 class\n */\nPermitV2.deserialize = ({ _signedChainId, sealingPair, ...permit }) => {\n return new PermitV2({\n ...permit,\n sealingPair: new SealingKey(sealingPair.privateKey, sealingPair.publicKey),\n }, {\n _signedChainId,\n });\n};\nPermitV2.validate = (permit) => {\n return FullyFormedPermitV2Validator.safeParse(permit);\n};\n//# sourceMappingURL=permit.js.map","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\n\nexport { createStore };\n","const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...a) => api.dispatch(...a), ...initial };\n};\nconst redux = reduxImpl;\n\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n const api = trackedConnections.get(name);\n if (!api) return {};\n return Object.fromEntries(\n Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n if (store === void 0) {\n return {\n type: \"untracked\",\n connection: extensionConnector.connect(options)\n };\n }\n const existingConnection = trackedConnections.get(options.name);\n if (existingConnection) {\n return { type: \"tracked\", store, ...existingConnection };\n }\n const newConnection = {\n connection: extensionConnector.connect(options),\n stores: {}\n };\n trackedConnections.set(options.name, newConnection);\n return { type: \"tracked\", store, ...newConnection };\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (e) {\n }\n if (!extensionConnector) {\n return fn(set, get, api);\n }\n const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n let isRecording = true;\n api.setState = (state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording) return r;\n const action = nameOrAction === void 0 ? { type: anonymousActionType || \"anonymous\" } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n if (store === void 0) {\n connection == null ? void 0 : connection.send(action, get());\n return r;\n }\n connection == null ? void 0 : connection.send(\n {\n ...action,\n type: `${store}/${action.type}`\n },\n {\n ...getTrackedConnectionState(options.name),\n [store]: api.getState()\n }\n );\n return r;\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n if (connectionInformation.type === \"untracked\") {\n connection == null ? void 0 : connection.init(initialState);\n } else {\n connectionInformation.stores[connectionInformation.store] = api;\n connection == null ? void 0 : connection.init(\n Object.fromEntries(\n Object.entries(connectionInformation.stores).map(([key, store2]) => [\n key,\n key === connectionInformation.store ? initialState : store2.getState()\n ])\n )\n );\n }\n if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...a) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && a[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...a);\n };\n }\n connection.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n if (store === void 0) {\n setStateFromDevtools(action.state);\n return;\n }\n if (Object.keys(action.state).length !== 1) {\n console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format.\n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n }\n const stateFromDevtools = action.state[store];\n if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n setStateFromDevtools(stateFromDevtools);\n }\n return;\n }\n if (!api.dispatchFromDevtools) return;\n if (typeof api.dispatch !== \"function\") return;\n api.dispatch(action);\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n if (store === void 0) {\n return connection == null ? void 0 : connection.init(api.getState());\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"COMMIT\":\n if (store === void 0) {\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n setStateFromDevtools(state[store]);\n connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n setStateFromDevtools(state[store]);\n }\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState) return;\n if (store === void 0) {\n setStateFromDevtools(lastComputedState);\n } else {\n setStateFromDevtools(lastComputedState[store]);\n }\n connection == null ? void 0 : connection.send(\n null,\n // FIXME no-any\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, f) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0) f(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = (selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n };\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nconst combine = (initialState, create) => (...a) => Object.assign({}, initialState, create(...a));\n\nfunction createJSONStorage(getStorage, options) {\n let storage;\n try {\n storage = getStorage();\n } catch (e) {\n return;\n }\n const persistStorage = {\n getItem: (name) => {\n var _a;\n const parse = (str2) => {\n if (str2 === null) {\n return null;\n }\n return JSON.parse(str2, options == null ? void 0 : options.reviver);\n };\n const str = (_a = storage.getItem(name)) != null ? _a : null;\n if (str instanceof Promise) {\n return str.then(parse);\n }\n return parse(str);\n },\n setItem: (name, newValue) => storage.setItem(\n name,\n JSON.stringify(newValue, options == null ? void 0 : options.replacer)\n ),\n removeItem: (name) => storage.removeItem(name)\n };\n return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst persistImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n storage: createJSONStorage(() => localStorage),\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage = options.storage;\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const setItem = () => {\n const state = options.partialize({ ...get() });\n return storage.setItem(options.name, {\n state,\n version: options.version\n });\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n void setItem();\n },\n get,\n api\n );\n api.getInitialState = () => configResult;\n let stateFromStorage;\n const hydrate = () => {\n var _a, _b;\n if (!storage) return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => {\n var _a2;\n return cb((_a2 = get()) != null ? _a2 : configResult);\n });\n const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return [\n true,\n options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n )\n ];\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return [false, deserializedStorageValue.state];\n }\n }\n return [false, void 0];\n }).then((migrationResult) => {\n var _a2;\n const [migrated, migratedState] = migrationResult;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n if (migrated) {\n return setItem();\n }\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n stateFromStorage = get();\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.storage) {\n storage = newOptions.storage;\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n if (!options.skipHydration) {\n hydrate();\n }\n return stateFromStorage || configResult;\n};\nconst persist = persistImpl;\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector };\n","// src/utils/env.ts\nvar NOTHING = Symbol.for(\"immer-nothing\");\nvar DRAFTABLE = Symbol.for(\"immer-draftable\");\nvar DRAFT_STATE = Symbol.for(\"immer-state\");\n\n// src/utils/errors.ts\nvar errors = process.env.NODE_ENV !== \"production\" ? [\n // All error codes, starting by 0:\n function(plugin) {\n return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`;\n },\n function(thing) {\n return `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`;\n },\n \"This object has been frozen and should not be mutated\",\n function(data) {\n return \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + data;\n },\n \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n \"Immer forbids circular references\",\n \"The first or second argument to `produce` must be a function\",\n \"The third argument to `produce` must be a function or undefined\",\n \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n function(thing) {\n return `'current' expects a draft, got: ${thing}`;\n },\n \"Object.defineProperty() cannot be used on an Immer draft\",\n \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n \"Immer only supports deleting array indices\",\n \"Immer only supports setting array indices and the 'length' property\",\n function(thing) {\n return `'original' expects a draft, got: ${thing}`;\n }\n // Note: if more errors are added, the errorOffset in Patches.ts should be increased\n // See Patches.ts for additional errors\n] : [];\nfunction die(error, ...args) {\n if (process.env.NODE_ENV !== \"production\") {\n const e = errors[error];\n const msg = typeof e === \"function\" ? e.apply(null, args) : e;\n throw new Error(`[Immer] ${msg}`);\n }\n throw new Error(\n `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n );\n}\n\n// src/utils/common.ts\nvar getPrototypeOf = Object.getPrototypeOf;\nfunction isDraft(value) {\n return !!value && !!value[DRAFT_STATE];\n}\nfunction isDraftable(value) {\n if (!value)\n return false;\n return isPlainObject(value) || Array.isArray(value) || !!value[DRAFTABLE] || !!value.constructor?.[DRAFTABLE] || isMap(value) || isSet(value);\n}\nvar objectCtorString = Object.prototype.constructor.toString();\nfunction isPlainObject(value) {\n if (!value || typeof value !== \"object\")\n return false;\n const proto = getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n const Ctor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n if (Ctor === Object)\n return true;\n return typeof Ctor == \"function\" && Function.toString.call(Ctor) === objectCtorString;\n}\nfunction original(value) {\n if (!isDraft(value))\n die(15, value);\n return value[DRAFT_STATE].base_;\n}\nfunction each(obj, iter) {\n if (getArchtype(obj) === 0 /* Object */) {\n Reflect.ownKeys(obj).forEach((key) => {\n iter(key, obj[key], obj);\n });\n } else {\n obj.forEach((entry, index) => iter(index, entry, obj));\n }\n}\nfunction getArchtype(thing) {\n const state = thing[DRAFT_STATE];\n return state ? state.type_ : Array.isArray(thing) ? 1 /* Array */ : isMap(thing) ? 2 /* Map */ : isSet(thing) ? 3 /* Set */ : 0 /* Object */;\n}\nfunction has(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.has(prop) : Object.prototype.hasOwnProperty.call(thing, prop);\n}\nfunction get(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.get(prop) : thing[prop];\n}\nfunction set(thing, propOrOldValue, value) {\n const t = getArchtype(thing);\n if (t === 2 /* Map */)\n thing.set(propOrOldValue, value);\n else if (t === 3 /* Set */) {\n thing.add(value);\n } else\n thing[propOrOldValue] = value;\n}\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\nfunction isMap(target) {\n return target instanceof Map;\n}\nfunction isSet(target) {\n return target instanceof Set;\n}\nfunction latest(state) {\n return state.copy_ || state.base_;\n}\nfunction shallowCopy(base, strict) {\n if (isMap(base)) {\n return new Map(base);\n }\n if (isSet(base)) {\n return new Set(base);\n }\n if (Array.isArray(base))\n return Array.prototype.slice.call(base);\n const isPlain = isPlainObject(base);\n if (strict === true || strict === \"class_only\" && !isPlain) {\n const descriptors = Object.getOwnPropertyDescriptors(base);\n delete descriptors[DRAFT_STATE];\n let keys = Reflect.ownKeys(descriptors);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const desc = descriptors[key];\n if (desc.writable === false) {\n desc.writable = true;\n desc.configurable = true;\n }\n if (desc.get || desc.set)\n descriptors[key] = {\n configurable: true,\n writable: true,\n // could live with !!desc.set as well here...\n enumerable: desc.enumerable,\n value: base[key]\n };\n }\n return Object.create(getPrototypeOf(base), descriptors);\n } else {\n const proto = getPrototypeOf(base);\n if (proto !== null && isPlain) {\n return { ...base };\n }\n const obj = Object.create(proto);\n return Object.assign(obj, base);\n }\n}\nfunction freeze(obj, deep = false) {\n if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj))\n return obj;\n if (getArchtype(obj) > 1) {\n obj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections;\n }\n Object.freeze(obj);\n if (deep)\n Object.entries(obj).forEach(([key, value]) => freeze(value, true));\n return obj;\n}\nfunction dontMutateFrozenCollections() {\n die(2);\n}\nfunction isFrozen(obj) {\n return Object.isFrozen(obj);\n}\n\n// src/utils/plugins.ts\nvar plugins = {};\nfunction getPlugin(pluginKey) {\n const plugin = plugins[pluginKey];\n if (!plugin) {\n die(0, pluginKey);\n }\n return plugin;\n}\nfunction loadPlugin(pluginKey, implementation) {\n if (!plugins[pluginKey])\n plugins[pluginKey] = implementation;\n}\n\n// src/core/scope.ts\nvar currentScope;\nfunction getCurrentScope() {\n return currentScope;\n}\nfunction createScope(parent_, immer_) {\n return {\n drafts_: [],\n parent_,\n immer_,\n // Whenever the modified draft contains a draft from another scope, we\n // need to prevent auto-freezing so the unowned draft can be finalized.\n canAutoFreeze_: true,\n unfinalizedDrafts_: 0\n };\n}\nfunction usePatchesInScope(scope, patchListener) {\n if (patchListener) {\n getPlugin(\"Patches\");\n scope.patches_ = [];\n scope.inversePatches_ = [];\n scope.patchListener_ = patchListener;\n }\n}\nfunction revokeScope(scope) {\n leaveScope(scope);\n scope.drafts_.forEach(revokeDraft);\n scope.drafts_ = null;\n}\nfunction leaveScope(scope) {\n if (scope === currentScope) {\n currentScope = scope.parent_;\n }\n}\nfunction enterScope(immer2) {\n return currentScope = createScope(currentScope, immer2);\n}\nfunction revokeDraft(draft) {\n const state = draft[DRAFT_STATE];\n if (state.type_ === 0 /* Object */ || state.type_ === 1 /* Array */)\n state.revoke_();\n else\n state.revoked_ = true;\n}\n\n// src/core/finalize.ts\nfunction processResult(result, scope) {\n scope.unfinalizedDrafts_ = scope.drafts_.length;\n const baseDraft = scope.drafts_[0];\n const isReplaced = result !== void 0 && result !== baseDraft;\n if (isReplaced) {\n if (baseDraft[DRAFT_STATE].modified_) {\n revokeScope(scope);\n die(4);\n }\n if (isDraftable(result)) {\n result = finalize(scope, result);\n if (!scope.parent_)\n maybeFreeze(scope, result);\n }\n if (scope.patches_) {\n getPlugin(\"Patches\").generateReplacementPatches_(\n baseDraft[DRAFT_STATE].base_,\n result,\n scope.patches_,\n scope.inversePatches_\n );\n }\n } else {\n result = finalize(scope, baseDraft, []);\n }\n revokeScope(scope);\n if (scope.patches_) {\n scope.patchListener_(scope.patches_, scope.inversePatches_);\n }\n return result !== NOTHING ? result : void 0;\n}\nfunction finalize(rootScope, value, path) {\n if (isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n if (!state) {\n each(\n value,\n (key, childValue) => finalizeProperty(rootScope, state, value, key, childValue, path)\n );\n return value;\n }\n if (state.scope_ !== rootScope)\n return value;\n if (!state.modified_) {\n maybeFreeze(rootScope, state.base_, true);\n return state.base_;\n }\n if (!state.finalized_) {\n state.finalized_ = true;\n state.scope_.unfinalizedDrafts_--;\n const result = state.copy_;\n let resultEach = result;\n let isSet2 = false;\n if (state.type_ === 3 /* Set */) {\n resultEach = new Set(result);\n result.clear();\n isSet2 = true;\n }\n each(\n resultEach,\n (key, childValue) => finalizeProperty(rootScope, state, result, key, childValue, path, isSet2)\n );\n maybeFreeze(rootScope, result, false);\n if (path && rootScope.patches_) {\n getPlugin(\"Patches\").generatePatches_(\n state,\n path,\n rootScope.patches_,\n rootScope.inversePatches_\n );\n }\n }\n return state.copy_;\n}\nfunction finalizeProperty(rootScope, parentState, targetObject, prop, childValue, rootPath, targetIsSet) {\n if (process.env.NODE_ENV !== \"production\" && childValue === targetObject)\n die(5);\n if (isDraft(childValue)) {\n const path = rootPath && parentState && parentState.type_ !== 3 /* Set */ && // Set objects are atomic since they have no keys.\n !has(parentState.assigned_, prop) ? rootPath.concat(prop) : void 0;\n const res = finalize(rootScope, childValue, path);\n set(targetObject, prop, res);\n if (isDraft(res)) {\n rootScope.canAutoFreeze_ = false;\n } else\n return;\n } else if (targetIsSet) {\n targetObject.add(childValue);\n }\n if (isDraftable(childValue) && !isFrozen(childValue)) {\n if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n return;\n }\n finalize(rootScope, childValue);\n if ((!parentState || !parentState.scope_.parent_) && typeof prop !== \"symbol\" && Object.prototype.propertyIsEnumerable.call(targetObject, prop))\n maybeFreeze(rootScope, childValue);\n }\n}\nfunction maybeFreeze(scope, value, deep = false) {\n if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n freeze(value, deep);\n }\n}\n\n// src/core/proxy.ts\nfunction createProxyProxy(base, parent) {\n const isArray = Array.isArray(base);\n const state = {\n type_: isArray ? 1 /* Array */ : 0 /* Object */,\n // Track which produce call this is associated with.\n scope_: parent ? parent.scope_ : getCurrentScope(),\n // True for both shallow and deep changes.\n modified_: false,\n // Used during finalization.\n finalized_: false,\n // Track which properties have been assigned (true) or deleted (false).\n assigned_: {},\n // The parent draft state.\n parent_: parent,\n // The base state.\n base_: base,\n // The base proxy.\n draft_: null,\n // set below\n // The base copy with any updated values.\n copy_: null,\n // Called by the `produce` function.\n revoke_: null,\n isManual_: false\n };\n let target = state;\n let traps = objectTraps;\n if (isArray) {\n target = [state];\n traps = arrayTraps;\n }\n const { revoke, proxy } = Proxy.revocable(target, traps);\n state.draft_ = proxy;\n state.revoke_ = revoke;\n return proxy;\n}\nvar objectTraps = {\n get(state, prop) {\n if (prop === DRAFT_STATE)\n return state;\n const source = latest(state);\n if (!has(source, prop)) {\n return readPropFromProto(state, source, prop);\n }\n const value = source[prop];\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value === peek(state.base_, prop)) {\n prepareCopy(state);\n return state.copy_[prop] = createProxy(value, state);\n }\n return value;\n },\n has(state, prop) {\n return prop in latest(state);\n },\n ownKeys(state) {\n return Reflect.ownKeys(latest(state));\n },\n set(state, prop, value) {\n const desc = getDescriptorFromProto(latest(state), prop);\n if (desc?.set) {\n desc.set.call(state.draft_, value);\n return true;\n }\n if (!state.modified_) {\n const current2 = peek(latest(state), prop);\n const currentState = current2?.[DRAFT_STATE];\n if (currentState && currentState.base_ === value) {\n state.copy_[prop] = value;\n state.assigned_[prop] = false;\n return true;\n }\n if (is(value, current2) && (value !== void 0 || has(state.base_, prop)))\n return true;\n prepareCopy(state);\n markChanged(state);\n }\n if (state.copy_[prop] === value && // special case: handle new props with value 'undefined'\n (value !== void 0 || prop in state.copy_) || // special case: NaN\n Number.isNaN(value) && Number.isNaN(state.copy_[prop]))\n return true;\n state.copy_[prop] = value;\n state.assigned_[prop] = true;\n return true;\n },\n deleteProperty(state, prop) {\n if (peek(state.base_, prop) !== void 0 || prop in state.base_) {\n state.assigned_[prop] = false;\n prepareCopy(state);\n markChanged(state);\n } else {\n delete state.assigned_[prop];\n }\n if (state.copy_) {\n delete state.copy_[prop];\n }\n return true;\n },\n // Note: We never coerce `desc.value` into an Immer draft, because we can't make\n // the same guarantee in ES5 mode.\n getOwnPropertyDescriptor(state, prop) {\n const owner = latest(state);\n const desc = Reflect.getOwnPropertyDescriptor(owner, prop);\n if (!desc)\n return desc;\n return {\n writable: true,\n configurable: state.type_ !== 1 /* Array */ || prop !== \"length\",\n enumerable: desc.enumerable,\n value: owner[prop]\n };\n },\n defineProperty() {\n die(11);\n },\n getPrototypeOf(state) {\n return getPrototypeOf(state.base_);\n },\n setPrototypeOf() {\n die(12);\n }\n};\nvar arrayTraps = {};\neach(objectTraps, (key, fn) => {\n arrayTraps[key] = function() {\n arguments[0] = arguments[0][0];\n return fn.apply(this, arguments);\n };\n});\narrayTraps.deleteProperty = function(state, prop) {\n if (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop)))\n die(13);\n return arrayTraps.set.call(this, state, prop, void 0);\n};\narrayTraps.set = function(state, prop, value) {\n if (process.env.NODE_ENV !== \"production\" && prop !== \"length\" && isNaN(parseInt(prop)))\n die(14);\n return objectTraps.set.call(this, state[0], prop, value, state[0]);\n};\nfunction peek(draft, prop) {\n const state = draft[DRAFT_STATE];\n const source = state ? latest(state) : draft;\n return source[prop];\n}\nfunction readPropFromProto(state, source, prop) {\n const desc = getDescriptorFromProto(source, prop);\n return desc ? `value` in desc ? desc.value : (\n // This is a very special case, if the prop is a getter defined by the\n // prototype, we should invoke it with the draft as context!\n desc.get?.call(state.draft_)\n ) : void 0;\n}\nfunction getDescriptorFromProto(source, prop) {\n if (!(prop in source))\n return void 0;\n let proto = getPrototypeOf(source);\n while (proto) {\n const desc = Object.getOwnPropertyDescriptor(proto, prop);\n if (desc)\n return desc;\n proto = getPrototypeOf(proto);\n }\n return void 0;\n}\nfunction markChanged(state) {\n if (!state.modified_) {\n state.modified_ = true;\n if (state.parent_) {\n markChanged(state.parent_);\n }\n }\n}\nfunction prepareCopy(state) {\n if (!state.copy_) {\n state.copy_ = shallowCopy(\n state.base_,\n state.scope_.immer_.useStrictShallowCopy_\n );\n }\n}\n\n// src/core/immerClass.ts\nvar Immer2 = class {\n constructor(config) {\n this.autoFreeze_ = true;\n this.useStrictShallowCopy_ = false;\n /**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\n this.produce = (base, recipe, patchListener) => {\n if (typeof base === \"function\" && typeof recipe !== \"function\") {\n const defaultBase = recipe;\n recipe = base;\n const self = this;\n return function curriedProduce(base2 = defaultBase, ...args) {\n return self.produce(base2, (draft) => recipe.call(this, draft, ...args));\n };\n }\n if (typeof recipe !== \"function\")\n die(6);\n if (patchListener !== void 0 && typeof patchListener !== \"function\")\n die(7);\n let result;\n if (isDraftable(base)) {\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n let hasError = true;\n try {\n result = recipe(proxy);\n hasError = false;\n } finally {\n if (hasError)\n revokeScope(scope);\n else\n leaveScope(scope);\n }\n usePatchesInScope(scope, patchListener);\n return processResult(result, scope);\n } else if (!base || typeof base !== \"object\") {\n result = recipe(base);\n if (result === void 0)\n result = base;\n if (result === NOTHING)\n result = void 0;\n if (this.autoFreeze_)\n freeze(result, true);\n if (patchListener) {\n const p = [];\n const ip = [];\n getPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip);\n patchListener(p, ip);\n }\n return result;\n } else\n die(1, base);\n };\n this.produceWithPatches = (base, recipe) => {\n if (typeof base === \"function\") {\n return (state, ...args) => this.produceWithPatches(state, (draft) => base(draft, ...args));\n }\n let patches, inversePatches;\n const result = this.produce(base, recipe, (p, ip) => {\n patches = p;\n inversePatches = ip;\n });\n return [result, patches, inversePatches];\n };\n if (typeof config?.autoFreeze === \"boolean\")\n this.setAutoFreeze(config.autoFreeze);\n if (typeof config?.useStrictShallowCopy === \"boolean\")\n this.setUseStrictShallowCopy(config.useStrictShallowCopy);\n }\n createDraft(base) {\n if (!isDraftable(base))\n die(8);\n if (isDraft(base))\n base = current(base);\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n proxy[DRAFT_STATE].isManual_ = true;\n leaveScope(scope);\n return proxy;\n }\n finishDraft(draft, patchListener) {\n const state = draft && draft[DRAFT_STATE];\n if (!state || !state.isManual_)\n die(9);\n const { scope_: scope } = state;\n usePatchesInScope(scope, patchListener);\n return processResult(void 0, scope);\n }\n /**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * By default, auto-freezing is enabled.\n */\n setAutoFreeze(value) {\n this.autoFreeze_ = value;\n }\n /**\n * Pass true to enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\n setUseStrictShallowCopy(value) {\n this.useStrictShallowCopy_ = value;\n }\n applyPatches(base, patches) {\n let i;\n for (i = patches.length - 1; i >= 0; i--) {\n const patch = patches[i];\n if (patch.path.length === 0 && patch.op === \"replace\") {\n base = patch.value;\n break;\n }\n }\n if (i > -1) {\n patches = patches.slice(i + 1);\n }\n const applyPatchesImpl = getPlugin(\"Patches\").applyPatches_;\n if (isDraft(base)) {\n return applyPatchesImpl(base, patches);\n }\n return this.produce(\n base,\n (draft) => applyPatchesImpl(draft, patches)\n );\n }\n};\nfunction createProxy(value, parent) {\n const draft = isMap(value) ? getPlugin(\"MapSet\").proxyMap_(value, parent) : isSet(value) ? getPlugin(\"MapSet\").proxySet_(value, parent) : createProxyProxy(value, parent);\n const scope = parent ? parent.scope_ : getCurrentScope();\n scope.drafts_.push(draft);\n return draft;\n}\n\n// src/core/current.ts\nfunction current(value) {\n if (!isDraft(value))\n die(10, value);\n return currentImpl(value);\n}\nfunction currentImpl(value) {\n if (!isDraftable(value) || isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n let copy;\n if (state) {\n if (!state.modified_)\n return state.base_;\n state.finalized_ = true;\n copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_);\n } else {\n copy = shallowCopy(value, true);\n }\n each(copy, (key, childValue) => {\n set(copy, key, currentImpl(childValue));\n });\n if (state) {\n state.finalized_ = false;\n }\n return copy;\n}\n\n// src/plugins/patches.ts\nfunction enablePatches() {\n const errorOffset = 16;\n if (process.env.NODE_ENV !== \"production\") {\n errors.push(\n 'Sets cannot have \"replace\" patches.',\n function(op) {\n return \"Unsupported patch operation: \" + op;\n },\n function(path) {\n return \"Cannot apply patch, path doesn't resolve: \" + path;\n },\n \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n );\n }\n const REPLACE = \"replace\";\n const ADD = \"add\";\n const REMOVE = \"remove\";\n function generatePatches_(state, basePath, patches, inversePatches) {\n switch (state.type_) {\n case 0 /* Object */:\n case 2 /* Map */:\n return generatePatchesFromAssigned(\n state,\n basePath,\n patches,\n inversePatches\n );\n case 1 /* Array */:\n return generateArrayPatches(state, basePath, patches, inversePatches);\n case 3 /* Set */:\n return generateSetPatches(\n state,\n basePath,\n patches,\n inversePatches\n );\n }\n }\n function generateArrayPatches(state, basePath, patches, inversePatches) {\n let { base_, assigned_ } = state;\n let copy_ = state.copy_;\n if (copy_.length < base_.length) {\n ;\n [base_, copy_] = [copy_, base_];\n [patches, inversePatches] = [inversePatches, patches];\n }\n for (let i = 0; i < base_.length; i++) {\n if (assigned_[i] && copy_[i] !== base_[i]) {\n const path = basePath.concat([i]);\n patches.push({\n op: REPLACE,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n inversePatches.push({\n op: REPLACE,\n path,\n value: clonePatchValueIfNeeded(base_[i])\n });\n }\n }\n for (let i = base_.length; i < copy_.length; i++) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n }\n for (let i = copy_.length - 1; base_.length <= i; --i) {\n const path = basePath.concat([i]);\n inversePatches.push({\n op: REMOVE,\n path\n });\n }\n }\n function generatePatchesFromAssigned(state, basePath, patches, inversePatches) {\n const { base_, copy_ } = state;\n each(state.assigned_, (key, assignedValue) => {\n const origValue = get(base_, key);\n const value = get(copy_, key);\n const op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD;\n if (origValue === value && op === REPLACE)\n return;\n const path = basePath.concat(key);\n patches.push(op === REMOVE ? { op, path } : { op, path, value });\n inversePatches.push(\n op === ADD ? { op: REMOVE, path } : op === REMOVE ? { op: ADD, path, value: clonePatchValueIfNeeded(origValue) } : { op: REPLACE, path, value: clonePatchValueIfNeeded(origValue) }\n );\n });\n }\n function generateSetPatches(state, basePath, patches, inversePatches) {\n let { base_, copy_ } = state;\n let i = 0;\n base_.forEach((value) => {\n if (!copy_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: REMOVE,\n path,\n value\n });\n inversePatches.unshift({\n op: ADD,\n path,\n value\n });\n }\n i++;\n });\n i = 0;\n copy_.forEach((value) => {\n if (!base_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n value\n });\n inversePatches.unshift({\n op: REMOVE,\n path,\n value\n });\n }\n i++;\n });\n }\n function generateReplacementPatches_(baseValue, replacement, patches, inversePatches) {\n patches.push({\n op: REPLACE,\n path: [],\n value: replacement === NOTHING ? void 0 : replacement\n });\n inversePatches.push({\n op: REPLACE,\n path: [],\n value: baseValue\n });\n }\n function applyPatches_(draft, patches) {\n patches.forEach((patch) => {\n const { path, op } = patch;\n let base = draft;\n for (let i = 0; i < path.length - 1; i++) {\n const parentType = getArchtype(base);\n let p = path[i];\n if (typeof p !== \"string\" && typeof p !== \"number\") {\n p = \"\" + p;\n }\n if ((parentType === 0 /* Object */ || parentType === 1 /* Array */) && (p === \"__proto__\" || p === \"constructor\"))\n die(errorOffset + 3);\n if (typeof base === \"function\" && p === \"prototype\")\n die(errorOffset + 3);\n base = get(base, p);\n if (typeof base !== \"object\")\n die(errorOffset + 2, path.join(\"/\"));\n }\n const type = getArchtype(base);\n const value = deepClonePatchValue(patch.value);\n const key = path[path.length - 1];\n switch (op) {\n case REPLACE:\n switch (type) {\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n die(errorOffset);\n default:\n return base[key] = value;\n }\n case ADD:\n switch (type) {\n case 1 /* Array */:\n return key === \"-\" ? base.push(value) : base.splice(key, 0, value);\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n return base.add(value);\n default:\n return base[key] = value;\n }\n case REMOVE:\n switch (type) {\n case 1 /* Array */:\n return base.splice(key, 1);\n case 2 /* Map */:\n return base.delete(key);\n case 3 /* Set */:\n return base.delete(patch.value);\n default:\n return delete base[key];\n }\n default:\n die(errorOffset + 1, op);\n }\n });\n return draft;\n }\n function deepClonePatchValue(obj) {\n if (!isDraftable(obj))\n return obj;\n if (Array.isArray(obj))\n return obj.map(deepClonePatchValue);\n if (isMap(obj))\n return new Map(\n Array.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)])\n );\n if (isSet(obj))\n return new Set(Array.from(obj).map(deepClonePatchValue));\n const cloned = Object.create(getPrototypeOf(obj));\n for (const key in obj)\n cloned[key] = deepClonePatchValue(obj[key]);\n if (has(obj, DRAFTABLE))\n cloned[DRAFTABLE] = obj[DRAFTABLE];\n return cloned;\n }\n function clonePatchValueIfNeeded(obj) {\n if (isDraft(obj)) {\n return deepClonePatchValue(obj);\n } else\n return obj;\n }\n loadPlugin(\"Patches\", {\n applyPatches_,\n generatePatches_,\n generateReplacementPatches_\n });\n}\n\n// src/plugins/mapset.ts\nfunction enableMapSet() {\n class DraftMap extends Map {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 2 /* Map */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n assigned_: void 0,\n base_: target,\n draft_: this,\n isManual_: false,\n revoked_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(key) {\n return latest(this[DRAFT_STATE]).has(key);\n }\n set(key, value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!latest(state).has(key) || latest(state).get(key) !== value) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_.set(key, true);\n state.copy_.set(key, value);\n state.assigned_.set(key, true);\n }\n return this;\n }\n delete(key) {\n if (!this.has(key)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareMapCopy(state);\n markChanged(state);\n if (state.base_.has(key)) {\n state.assigned_.set(key, false);\n } else {\n state.assigned_.delete(key);\n }\n state.copy_.delete(key);\n return true;\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_ = /* @__PURE__ */ new Map();\n each(state.base_, (key) => {\n state.assigned_.set(key, false);\n });\n state.copy_.clear();\n }\n }\n forEach(cb, thisArg) {\n const state = this[DRAFT_STATE];\n latest(state).forEach((_value, key, _map) => {\n cb.call(thisArg, this.get(key), key, this);\n });\n }\n get(key) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n const value = latest(state).get(key);\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value !== state.base_.get(key)) {\n return value;\n }\n const draft = createProxy(value, state);\n prepareMapCopy(state);\n state.copy_.set(key, draft);\n return draft;\n }\n keys() {\n return latest(this[DRAFT_STATE]).keys();\n }\n values() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.values(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value\n };\n }\n };\n }\n entries() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.entries(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value: [r.value, value]\n };\n }\n };\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.entries();\n }\n }\n function proxyMap_(target, parent) {\n return new DraftMap(target, parent);\n }\n function prepareMapCopy(state) {\n if (!state.copy_) {\n state.assigned_ = /* @__PURE__ */ new Map();\n state.copy_ = new Map(state.base_);\n }\n }\n class DraftSet extends Set {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 3 /* Set */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n base_: target,\n draft_: this,\n drafts_: /* @__PURE__ */ new Map(),\n revoked_: false,\n isManual_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!state.copy_) {\n return state.base_.has(value);\n }\n if (state.copy_.has(value))\n return true;\n if (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value)))\n return true;\n return false;\n }\n add(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!this.has(value)) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.add(value);\n }\n return this;\n }\n delete(value) {\n if (!this.has(value)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n markChanged(state);\n return state.copy_.delete(value) || (state.drafts_.has(value) ? state.copy_.delete(state.drafts_.get(value)) : (\n /* istanbul ignore next */\n false\n ));\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.clear();\n }\n }\n values() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.values();\n }\n entries() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.entries();\n }\n keys() {\n return this.values();\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.values();\n }\n forEach(cb, thisArg) {\n const iterator = this.values();\n let result = iterator.next();\n while (!result.done) {\n cb.call(thisArg, result.value, result.value, this);\n result = iterator.next();\n }\n }\n }\n function proxySet_(target, parent) {\n return new DraftSet(target, parent);\n }\n function prepareSetCopy(state) {\n if (!state.copy_) {\n state.copy_ = /* @__PURE__ */ new Set();\n state.base_.forEach((value) => {\n if (isDraftable(value)) {\n const draft = createProxy(value, state);\n state.drafts_.set(value, draft);\n state.copy_.add(draft);\n } else {\n state.copy_.add(value);\n }\n });\n }\n }\n function assertUnrevoked(state) {\n if (state.revoked_)\n die(3, JSON.stringify(latest(state)));\n }\n loadPlugin(\"MapSet\", { proxyMap_, proxySet_ });\n}\n\n// src/immer.ts\nvar immer = new Immer2();\nvar produce = immer.produce;\nvar produceWithPatches = immer.produceWithPatches.bind(\n immer\n);\nvar setAutoFreeze = immer.setAutoFreeze.bind(immer);\nvar setUseStrictShallowCopy = immer.setUseStrictShallowCopy.bind(immer);\nvar applyPatches = immer.applyPatches.bind(immer);\nvar createDraft = immer.createDraft.bind(immer);\nvar finishDraft = immer.finishDraft.bind(immer);\nfunction castDraft(value) {\n return value;\n}\nfunction castImmutable(value) {\n return value;\n}\nexport {\n Immer2 as Immer,\n applyPatches,\n castDraft,\n castImmutable,\n createDraft,\n current,\n enableMapSet,\n enablePatches,\n finishDraft,\n freeze,\n DRAFTABLE as immerable,\n isDraft,\n isDraftable,\n NOTHING as nothing,\n original,\n produce,\n produceWithPatches,\n setAutoFreeze,\n setUseStrictShallowCopy\n};\n//# sourceMappingURL=immer.mjs.map","import { createStore } from \"zustand/vanilla\";\nimport { persist } from \"zustand/middleware\";\nimport { produce } from \"immer\";\nimport { PermitV2 } from \"./permit\";\n// Stores generated permits for each user, a hash indicating the active permit for each user, and a list of fheKeys as a cache\n// Can be used to create reactive hooks\nexport const _permitStore = createStore()(persist(() => ({\n permits: {},\n activePermitHash: {},\n}), { name: \"fhenixjs-permits\" }));\n// Permit V2\nexport const getPermit = (account, hash) => {\n if (account == null || hash == null)\n return;\n const savedPermit = _permitStore.getState().permits[account]?.[hash];\n if (savedPermit == null)\n return;\n return PermitV2.deserialize(savedPermit);\n};\nexport const getActivePermit = (account) => {\n if (account == null)\n return;\n const activePermitHash = _permitStore.getState().activePermitHash[account];\n return getPermit(account, activePermitHash);\n};\nexport const getPermits = (account) => {\n if (account == null)\n return {};\n return Object.entries(_permitStore.getState().permits[account] ?? {}).reduce((acc, [hash, permit]) => {\n if (permit == undefined)\n return acc;\n return { ...acc, [hash]: PermitV2.deserialize(permit) };\n }, {});\n};\nexport const setPermit = (account, permitV2) => {\n _permitStore.setState(produce((state) => {\n if (state.permits[account] == null)\n state.permits[account] = {};\n state.permits[account][permitV2.getHash()] = permitV2.serialize();\n }));\n};\nexport const removePermit = (account, hash) => {\n _permitStore.setState(produce((state) => {\n state.permits[account][hash] = undefined;\n }));\n};\n// Active Permit Hash\nexport const getActivePermitHash = (account) => {\n if (account == null)\n return undefined;\n return _permitStore.getState().activePermitHash[account];\n};\nexport const setActivePermitHash = (account, hash) => {\n _permitStore.setState(produce((state) => {\n state.activePermitHash[account] = hash;\n }));\n};\nexport const removeActivePermitHash = (account) => {\n _permitStore.setState(produce((state) => {\n state.activePermitHash[account] = undefined;\n }));\n};\nexport const permitStore = {\n store: _permitStore,\n getPermit,\n getActivePermit,\n getPermits,\n setPermit,\n removePermit,\n getActivePermitHash,\n setActivePermitHash,\n removeActivePermitHash,\n};\n//# sourceMappingURL=permit.store.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createStore } from \"zustand/vanilla\";\nimport { produce } from \"immer\";\nimport { TfheCompactPublicKey } from \"../fhe/fhe\";\nimport { chainIsHardhat, fromHexString, toABIEncodedUint32 } from \"../utils\";\nimport { FheOpsAddress, PUBLIC_KEY_LENGTH_MIN } from \"../consts\";\nexport const _sdkStore = createStore(() => ({\n fheKeysInitialized: false,\n securityZones: [0],\n fheKeys: {},\n accessRequirements: {\n contracts: [],\n projects: [],\n },\n providerInitialized: false,\n provider: undefined,\n chainId: undefined,\n signerInitialized: false,\n signer: undefined,\n account: undefined,\n}));\n// Store getters / setters\nexport const _store_chainId = () => _sdkStore.getState().chainId;\nexport const _store_getFheKey = (chainId, securityZone = 0) => {\n if (chainId == null || securityZone == null)\n return undefined;\n const serialized = _sdkStore.getState().fheKeys[chainId]?.[securityZone];\n if (serialized == null)\n return undefined;\n return TfheCompactPublicKey.deserialize(serialized);\n};\nexport const _store_getConnectedChainFheKey = (securityZone = 0) => {\n const state = _sdkStore.getState();\n if (securityZone == null)\n return undefined;\n if (state.chainId == null)\n return undefined;\n const serialized = state.fheKeys[state.chainId]?.[securityZone];\n if (serialized == null)\n return undefined;\n return TfheCompactPublicKey.deserialize(serialized);\n};\nexport const _store_setFheKey = (chainId, securityZone, fheKey) => {\n if (chainId == null || securityZone == null)\n return;\n _sdkStore.setState(produce((state) => {\n if (state.fheKeys[chainId] == null)\n state.fheKeys[chainId] = {};\n state.fheKeys[chainId][securityZone] = fheKey?.serialize();\n }));\n};\nconst getChainIdFromProvider = async (provider) => {\n const chainId = await provider.getChainId();\n if (chainId == null)\n throw new Error(\"sdk :: getChainIdFromProvider :: provider.getChainId returned a null result, ensure that your provider is connected to a network\");\n return chainId;\n};\nexport const _store_initialize = async (params) => {\n const { provider, signer, securityZones = [0], contracts: contractRequirements = [], projects: projectRequirements = [], } = params;\n _sdkStore.setState({\n providerInitialized: false,\n signerInitialized: false,\n accessRequirements: {\n contracts: contractRequirements,\n projects: projectRequirements,\n },\n });\n // PROVIDER\n // Fetch chain Id from provider\n const chainId = await getChainIdFromProvider(provider);\n const chainIdChanged = chainId != null && chainId !== _sdkStore.getState().chainId;\n if (chainId != null && provider != null) {\n _sdkStore.setState({ providerInitialized: true, provider, chainId });\n }\n // SIGNER\n // Account is fetched and stored here, the `account` field in the store is used to index which permits belong to which users\n // In sdk functions, `state.account != null` is validated, this is a check to ensure that a valid signer has been provided\n // which is necessary to interact with permits\n const account = await signer?.getAddress();\n if (account != null && signer != null) {\n _sdkStore.setState({ signerInitialized: true, account, signer });\n }\n else {\n _sdkStore.setState({\n signerInitialized: false,\n account: undefined,\n signer: undefined,\n });\n }\n // If chainId or securityZones changes, update the store and update fheKeys for re-initialization\n const securityZonesChanged = securityZones !== _sdkStore.getState().securityZones;\n if (chainIdChanged || securityZonesChanged) {\n _sdkStore.setState({\n securityZones,\n fheKeysInitialized: false,\n });\n }\n // Fetch FHE keys (skipped if hardhat)\n if (!chainIsHardhat(chainId) && !_sdkStore.getState().fheKeysInitialized) {\n await Promise.all(securityZones.map((securityZone) => _store_fetchFheKey(chainId, provider, securityZone)));\n }\n _sdkStore.setState({ fheKeysInitialized: true });\n};\n/**\n * Retrieves the FHE public key from the provider.\n * If the key already exists in the store it is returned, else it is fetched, stored, and returned\n * @param {string} chainId - The chain to fetch the FHE key for, if no chainId provided, undefined is returned\n * @param {Provider} provider - EthersV6 Provider that performs the key fetch.\n * @param securityZone - The security zone for which to retrieve the key (default 0).\n * @returns {Promise} - The retrieved public key.\n */\nexport const _store_fetchFheKey = async (chainId, provider, securityZone = 0) => {\n const storedKey = _store_getFheKey(chainId, securityZone);\n if (storedKey != null)\n return storedKey;\n const funcSig = \"0x1b1b484e\"; // cast sig \"getNetworkPublicKey(int32)\"\n const callData = funcSig + toABIEncodedUint32(securityZone);\n const publicKey = await provider.call({ to: FheOpsAddress, data: callData });\n if (typeof publicKey !== \"string\") {\n throw new Error(\"Error initializing fhenixjs; FHE publicKey fetched from provider invalid: not a string\");\n }\n if (publicKey === \"0x\") {\n throw new Error(\"Error initializing fhenixjs; provided chain is not FHE enabled, no FHE publicKey found\");\n }\n if (publicKey.length < PUBLIC_KEY_LENGTH_MIN) {\n throw new Error(`Error initializing fhenixjs; got shorter than expected FHE publicKey: ${publicKey.length}. Expected length >= ${PUBLIC_KEY_LENGTH_MIN}`);\n }\n // todo (eshel) verify this\n // magically know how to decode rlp or w/e returns from the evm json-rpc\n const buff = fromHexString(publicKey.slice(130));\n try {\n const key = TfheCompactPublicKey.deserialize(buff);\n _store_setFheKey(chainId, securityZone, key);\n return key;\n }\n catch (err) {\n throw new Error(`Error deserializing public key ${err}`);\n }\n};\n//# sourceMappingURL=sdk.store.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { MAX_UINT16, MAX_UINT32, MAX_UINT8 } from \"../consts.js\";\nimport { chainIsHardhat, hardhatMockEncrypt, ValidateUintInRange, } from \"../utils.js\";\nimport { PermitV2 } from \"./permit.js\";\nimport { FheUType, isEncryptableItem, ResultErr, ResultOk, } from \"./types.js\";\nimport { permitStore } from \"./permit.store.js\";\nimport { isString } from \"../validation.js\";\nimport { _sdkStore, _store_chainId, _store_getConnectedChainFheKey, _store_getFheKey, _store_initialize, } from \"./sdk.store.js\";\nimport { encrypt as tfhe_encrypt, encrypt_bool as tfhe_encrypt_bool, encrypt_uint8 as tfhe_encrypt_uint8, encrypt_uint16 as tfhe_encrypt_uint16, encrypt_uint32 as tfhe_encrypt_uint32, encrypt_uint64 as tfhe_encrypt_uint64, encrypt_uint128 as tfhe_encrypt_uint128, encrypt_uint256 as tfhe_encrypt_uint256, encrypt_address as tfhe_encrypt_address, } from \"../encrypt.js\";\nimport { InitFhevm } from \"../init.js\";\nimport { PermitV2ParamsValidator } from \"./permit.z.js\";\nimport { EncryptionTypes } from \"../types.js\";\n/**\n * Initializes the `fhenixsdk` to enable encrypting input data, creating permits / permissions, and decrypting sealed outputs.\n * Initializes `fhevm` client FHE wasm module and fetches the provided chain's FHE publicKey.\n * If a valid signer is provided, a `permit/permission` is generated automatically\n */\nconst initialize = async (params) => {\n // Initialize the fhevm\n await InitFhevm().catch((err) => {\n if (params.ignoreErrors) {\n return undefined;\n }\n else {\n return ResultErr(`initialize :: failed to initialize fhenixjs - is the network FHE-enabled? ${err}`);\n }\n });\n if (params.provider == null)\n return ResultErr(\"initialize :: missing provider - Please provide an AbstractProvider interface\");\n if (params.securityZones != null && params.securityZones.length === 0)\n return ResultErr(\"initialize :: a list of securityZones was provided, but it is empty\");\n await _store_initialize(params);\n // `generatePermit` must set to `false` to early exit here\n if (params.generatePermit === false)\n return ResultOk(undefined);\n // Return the existing active permit\n const userActivePermit = getPermit();\n if (userActivePermit.success)\n return userActivePermit;\n // Create permit and return it\n return createPermit();\n};\n/**\n * Internal reusable initialization checker\n */\nconst _checkInitialized = (state, options) => {\n if (options?.fheKeys !== false && !state.fheKeysInitialized) {\n return ResultErr(\"fhenixsdk not initialized. Use `fhenixsdk.initialize(...)`.\");\n }\n if (options?.provider !== false && !state.providerInitialized)\n return ResultErr(\"fhenixsdk not initialized with valid provider. Use `fhenixsdk.initialize(...)` with a valid provider that satisfies `AbstractProvider`.\");\n if (options?.signer !== false && !state.signerInitialized)\n return ResultErr(\"fhenixsdk not initialized with a valid signer. Use `fhenixsdk.initialize(...)` with a valid signer that satisfies `AbstractSigner`.\");\n return ResultOk(null);\n};\n// Permit\n/**\n * Creates a new permit with options, prompts user for signature.\n * Handles all `permit.type`s, and prompts for the correct signature type.\n * The created PermitV2 will be inserted into the store and marked as the active permit.\n * NOTE: This is a wrapper around `PermitV2.create` and `PermitV2.sign`\n *\n * @param {PermitV2Options} options - Partial PermitV2 fields to create the Permit with, if no options provided will be filled with the defaults:\n * { type: \"self\", issuer: initializedUserAddress, projects: initializedProjects, contracts: initializedContracts }\n * @returns {Result} - Newly created PermitV2 as a Result object\n */\nconst createPermit = async (options) => {\n const state = _sdkStore.getState();\n const initialized = _checkInitialized(state);\n if (!initialized.success)\n return ResultErr(`${createPermit.name} :: ${initialized.error}`);\n const optionsWithDefaults = {\n type: \"self\",\n issuer: state.account,\n contracts: state.accessRequirements.contracts,\n projects: state.accessRequirements.projects,\n ...options,\n };\n let permit;\n try {\n permit = await PermitV2.createAndSign(optionsWithDefaults, state.chainId, state.signer);\n }\n catch (e) {\n return ResultErr(`${createPermit.name} :: ${e}`);\n }\n permitStore.setPermit(state.account, permit);\n permitStore.setActivePermitHash(state.account, permit.getHash());\n return ResultOk(permit);\n};\n/**\n * Imports a fully formed existing permit, expected to be valid.\n * Does not ask for user signature, expects to already be populated.\n * Will throw an error if the imported permit is invalid, see `PermitV2.isValid`.\n * The imported PermitV2 will be inserted into the store and marked as the active permit.\n *\n * @param {string | PermitV2Interface} imported - Permit to import as a text string or PermitV2Interface\n */\nconst importPermit = async (imported) => {\n const state = _sdkStore.getState();\n const initialized = _checkInitialized(state);\n if (!initialized.success)\n return ResultErr(`${createPermit.name} :: ${initialized.error}`);\n // Import validation\n if (typeof imported === \"string\") {\n try {\n imported = JSON.parse(imported);\n }\n catch (e) {\n return ResultErr(`importPermit :: json parsing failed - ${e}`);\n }\n }\n const { success, data: parsedPermit, error: permitParsingError, } = PermitV2ParamsValidator.safeParse(imported);\n if (!success) {\n const errorString = Object.entries(permitParsingError.flatten().fieldErrors)\n .map(([field, err]) => `- ${field}: ${err}`)\n .join(\"\\n\");\n return ResultErr(`importPermit :: invalid permit data - ${errorString}`);\n }\n if (parsedPermit.type !== \"self\") {\n if (parsedPermit.issuer === state.account)\n parsedPermit.type = \"sharing\";\n else if (parsedPermit.recipient === state.account)\n parsedPermit.type = \"recipient\";\n else {\n return ResultErr(`importPermit :: invalid Permit - connected account <${state.account}> is not issuer or recipient`);\n }\n }\n let permit;\n try {\n permit = await PermitV2.create(parsedPermit);\n }\n catch (e) {\n return ResultErr(`importPermit :: ${e}`);\n }\n const { valid, error } = permit.isValid();\n if (!valid) {\n return ResultErr(`importPermit :: newly imported permit is invalid - ${error}`);\n }\n permitStore.setPermit(state.account, permit);\n permitStore.setActivePermitHash(state.account, permit.getHash());\n return ResultOk(permit);\n};\n/**\n * Selects the active permit using its hash.\n * If the hash is not found in the stored permits store, throws an error.\n * The matched permit will be marked as the active permit.\n *\n * @param {string} hash - The `PermitV2.getHash` of the target permit.\n */\nconst selectActivePermit = (hash) => {\n const state = _sdkStore.getState();\n const initialized = _checkInitialized(state);\n if (!initialized.success)\n return ResultErr(`${selectActivePermit.name} :: ${initialized.error}`);\n const permit = permitStore.getPermit(state.account, hash);\n if (permit == null)\n return ResultErr(`${selectActivePermit.name} :: Permit with hash <${hash}> not found`);\n permitStore.setActivePermitHash(state.account, permit.getHash());\n return ResultOk(permit);\n};\n/**\n * Retrieves a stored permit based on its hash.\n * If no hash is provided, the currently active permit will be retrieved.\n *\n * @param {string} hash - Optional `PermitV2.getHash` of the permit.\n * @returns {Result} - The active permit or permit associated with `hash` as a Result object.\n */\nconst getPermit = (hash) => {\n const state = _sdkStore.getState();\n const initialized = _checkInitialized(state);\n if (!initialized.success)\n return ResultErr(`${getPermit.name} :: ${initialized.error}`);\n if (hash == null) {\n const permit = permitStore.getActivePermit(state.account);\n if (permit == null)\n return ResultErr(`getPermit :: active permit not found`);\n return ResultOk(permit);\n }\n const permit = permitStore.getPermit(state.account, hash);\n if (permit == null)\n return ResultErr(`getPermit :: permit with hash <${hash}> not found`);\n return ResultOk(permit);\n};\n/**\n * Retrieves a stored permission based on the permit's hash.\n * If no hash is provided, the currently active permit will be used.\n * The `PermissionV2` is extracted from the permit.\n *\n * @param {string} hash - Optional hash of the permission to get, defaults to active permit's permission\n * @returns {Result} - The active permission or permission associated with `hash`, as a result object.\n */\nconst getPermission = (hash) => {\n const permitResult = getPermit(hash);\n if (!permitResult.success)\n return ResultErr(`${getPermission.name} :: ${permitResult.error}`);\n return ResultOk(permitResult.data.getPermission());\n};\n/**\n * Exports all stored permits.\n * @returns {Result>} - All stored permits.\n */\nconst getAllPermits = () => {\n const state = _sdkStore.getState();\n const initialized = _checkInitialized(state);\n if (!initialized.success)\n return ResultErr(`${getAllPermits.name} :: ${initialized.error}`);\n return ResultOk(permitStore.getPermits(state.account));\n};\n// Encrypt\n/**\n * Encrypts a numeric value according to the specified encryption type or the most efficient one based on the value.\n * Useful when not using `Encryptable` utility structures.\n * @param {number} value - The numeric value to encrypt.\n * @param {EncryptionTypes} type - Optional. The encryption type (uint8, uint16, uint32).\n * @param securityZone - The security zone for which to encrypt the value (default 0).\n * @returns {EncryptedNumber} - The encrypted value serialized as Uint8Array. Use the .data property to access the Uint8Array.\n */\nconst encryptValue = (value, type, securityZone = 0) => {\n const state = _sdkStore.getState();\n // Only need to check `fheKeysInitialized`, signer and provider not needed for encryption\n const initialized = _checkInitialized(state, {\n provider: false,\n signer: false,\n });\n if (!initialized.success)\n return ResultErr(`${encryptValue.name} :: ${initialized.error}`);\n // Early exit with mock encrypted value if chain is hardhat\n if (chainIsHardhat(state.chainId))\n return ResultOk(hardhatMockEncrypt(BigInt(value)));\n const fhePublicKey = _store_getFheKey(state.chainId, securityZone);\n if (fhePublicKey == null)\n return ResultErr(`encryptValue :: FHE publicKey not found for chain <${state.chainId}> and securityZone <${securityZone}>`);\n let outputSize = type;\n // choose the most efficient ciphertext size if not selected\n if (!outputSize) {\n if (value < MAX_UINT8) {\n outputSize = EncryptionTypes.uint8;\n }\n else if (value < MAX_UINT16) {\n outputSize = EncryptionTypes.uint16;\n }\n else if (value < MAX_UINT32) {\n outputSize = EncryptionTypes.uint32;\n }\n else {\n return ResultErr(`encryptValue :: Encryption input must be smaller than ${MAX_UINT32}`);\n }\n }\n try {\n switch (outputSize) {\n case EncryptionTypes.uint8:\n ValidateUintInRange(value, MAX_UINT8, 0);\n break;\n case EncryptionTypes.uint16:\n ValidateUintInRange(value, MAX_UINT16, 0);\n break;\n case EncryptionTypes.uint32:\n ValidateUintInRange(value, MAX_UINT32, 0);\n break;\n default:\n }\n }\n catch (e) {\n return ResultErr(`encryptValue :: outputSize :: ${e}`);\n }\n let encrypted;\n try {\n encrypted = tfhe_encrypt(value, fhePublicKey, type, securityZone);\n }\n catch (e) {\n return ResultErr(`encryptValue :: tfhe_encrypt :: ${e}`);\n }\n return ResultOk(encrypted);\n};\nfunction encrypt(item) {\n const state = _sdkStore.getState();\n // Only need to check `fheKeysInitialized`, signer and provider not needed for encryption\n const initialized = _checkInitialized(state, {\n provider: false,\n signer: false,\n });\n if (!initialized.success)\n return ResultErr(`${encrypt.name} :: ${initialized.error}`);\n // Permission\n if (item === \"permission\") {\n return getPermission();\n }\n // EncryptableItem\n if (isEncryptableItem(item)) {\n // Early exit with mock encrypted value if chain is hardhat\n if (chainIsHardhat(_store_chainId()))\n return ResultOk(hardhatMockEncrypt(BigInt(item.data)));\n const fhePublicKey = _store_getConnectedChainFheKey(item.securityZone ?? 0);\n if (fhePublicKey == null)\n return ResultErr(\"encrypt :: fheKey for current chain not found\");\n // prettier-ignore\n try {\n switch (item.utype) {\n case FheUType.bool: return ResultOk(tfhe_encrypt_bool(item.data, fhePublicKey, item.securityZone));\n case FheUType.uint8: return ResultOk(tfhe_encrypt_uint8(item.data, fhePublicKey, item.securityZone));\n case FheUType.uint16: return ResultOk(tfhe_encrypt_uint16(item.data, fhePublicKey, item.securityZone));\n case FheUType.uint32: return ResultOk(tfhe_encrypt_uint32(item.data, fhePublicKey, item.securityZone));\n case FheUType.uint64: return ResultOk(tfhe_encrypt_uint64(item.data, fhePublicKey, item.securityZone));\n case FheUType.uint128: return ResultOk(tfhe_encrypt_uint128(item.data, fhePublicKey, item.securityZone));\n case FheUType.uint256: return ResultOk(tfhe_encrypt_uint256(item.data, fhePublicKey, item.securityZone));\n case FheUType.address: return ResultOk(tfhe_encrypt_address(item.data, fhePublicKey, item.securityZone));\n }\n }\n catch (e) {\n return ResultErr(`encrypt :: tfhe_encrypt_xxxx :: ${e}`);\n }\n }\n // Object | Array\n if (typeof item === \"object\" && item !== null) {\n if (Array.isArray(item)) {\n // Array - recurse\n const nestedItems = item.map((nestedItem) => encrypt(nestedItem));\n // Any nested error break out\n const nestedItemResultErr = nestedItems.find((nestedItem) => !nestedItem.success);\n if (nestedItemResultErr)\n return nestedItemResultErr;\n return ResultOk(nestedItems.map((nestedItem) => nestedItem.data));\n }\n else {\n // Object - recurse\n const result = {};\n for (const key in item) {\n const encryptedResult = encrypt(item[key]);\n if (!encryptedResult.success)\n return encryptedResult;\n result[key] = encryptedResult.data;\n }\n return ResultOk(result);\n }\n }\n // Primitive\n return ResultOk(item);\n}\n// Unseal\n/**\n * Unseals an encrypted message using the stored permit for a specific contract address.\n * NOTE: Wrapper around `PermitV2.unseal`\n *\n * @param {string} ciphertext - The encrypted message to unseal.\n * @param {string} account - Users address, defaults to store.account\n * @param {string} hash - The hash of the permit to use for this operation, defaults to active permitV2 hash\n * @returns bigint - The unsealed message.\n */\nconst unsealCiphertext = (ciphertext, account, hash) => {\n const state = _sdkStore.getState();\n const initialized = _checkInitialized(state);\n if (!initialized.success)\n return ResultErr(`${getAllPermits.name} :: ${initialized.error}`);\n isString(ciphertext);\n const resolvedAccount = account ?? state.account;\n const resolvedHash = hash ?? permitStore.getActivePermitHash(resolvedAccount);\n if (resolvedAccount == null || resolvedHash == null) {\n return ResultErr(`unsealCiphertext :: PermitV2 hash not provided and active PermitV2 not found`);\n }\n const permit = permitStore.getPermit(resolvedAccount, resolvedHash);\n if (permit == null) {\n return ResultErr(`unsealCiphertext :: PermitV2 with account <${account}> and hash <${hash}> not found`);\n }\n let unsealed;\n try {\n unsealed = permit.unsealCiphertext(ciphertext);\n }\n catch (e) {\n return ResultErr(`unsealCiphertext :: ${e}`);\n }\n return ResultOk(unsealed);\n};\n/**\n * Uses the privateKey of `permit.sealingPair` to recursively unseal any contained `SealedItems`.\n * If `item` is a single `SealedItem` it will be individually.\n * NOTE: Only unseals typed `SealedItem`s returned from `FHE.sealoutputTyped` and the FHE bindings' `e____.sealTyped`.\n *\n * @param {any | any[]} item - Array, object, or item. Any nested `SealedItems` will be unsealed.\n * @returns - Recursively unsealed data in the target type, SealedBool -> boolean, SealedAddress -> string, etc.\n */\nfunction unseal(item, account, hash) {\n const resolvedAccount = account ?? _sdkStore.getState().account;\n const resolvedHash = hash ?? permitStore.getActivePermitHash(resolvedAccount);\n if (resolvedAccount == null || resolvedHash == null) {\n return ResultErr(`unseal :: PermitV2 hash not provided and active PermitV2 not found`);\n }\n const permit = permitStore.getPermit(resolvedAccount, resolvedHash);\n if (permit == null) {\n return ResultErr(`unseal :: PermitV2 with account <${account}> and hash <${hash}> not found`);\n }\n let unsealed;\n try {\n unsealed = permit.unseal(item);\n }\n catch (e) {\n return ResultErr(`unseal :: ${e}`);\n }\n return ResultOk(unsealed);\n}\n// Export\nexport const fhenixsdk = {\n store: _sdkStore,\n initialize,\n createPermit,\n importPermit,\n selectActivePermit,\n getPermit,\n getPermission,\n getAllPermits,\n encryptValue,\n encrypt,\n unsealCiphertext,\n unseal,\n};\n//# sourceMappingURL=sdk.js.map","// for mobile\n// if (typeof BigInt === \"undefined\") {\n// global.BigInt = require(\"big-integer\");\n// }\nexport { FhenixClient, FhenixClientSync } from \"./sdk/index.js\";\nexport { EncryptionTypes, } from \"./sdk/types.js\";\nexport * from \"./extensions/access_control/index.js\";\nexport { SealingKey, GenerateSealingKey } from \"./sdk/sealing.js\";\nexport { createTfheKeypair, createTfhePublicKey } from \"./sdk/keygen.js\";\nexport * from \"./sdk/v2\";\n//# sourceMappingURL=fhenix.js.map"],"names":["initSDK","wasm","isPlainObject","toHexString","isAddress","BN_0","assertArgument","EncryptionTypes","require","this","naclUtil.decodeBase64","nacl.box","nacl.randomBytes","naclUtil.encodeBase64","getPermit","getAllPermits","removePermit","encrypt","tfheEncrypt.encrypt_bool","tfheEncrypt.encrypt_uint8","tfheEncrypt.encrypt_uint16","tfheEncrypt.encrypt_uint32","tfheEncrypt.encrypt_uint64","tfheEncrypt.encrypt_uint128","tfheEncrypt.encrypt_uint256","tfheEncrypt.encrypt_address","tfheEncrypt.encrypt","tfhe_encrypt","tfhe_encrypt_bool","tfhe_encrypt_uint8","tfhe_encrypt_uint16","tfhe_encrypt_uint32","tfhe_encrypt_uint64","tfhe_encrypt_uint128","tfhe_encrypt_uint256","tfhe_encrypt_address"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA,IAAI,IAAI,CAAC;EACT,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EAC5C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;EACxC,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;EAC5B,SAAS,aAAa,CAAC,GAAG,EAAE;EAC5B,IAAI,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM;EACjC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EACnC,IAAI,MAAM,GAAG,GAAG,SAAS,CAAC;EAC1B,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;EAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;EACpB,IAAI,OAAO,GAAG,CAAC;EACf,CAAC;EACD,SAAS,SAAS,CAAC,GAAG,EAAE;EACxB,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;EACrB,CAAC;EACD,SAAS,UAAU,CAAC,GAAG,EAAE;EACzB,IAAI,IAAI,GAAG,GAAG,GAAG;EACjB,QAAQ,OAAO;EACf,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;EAC1B,IAAI,SAAS,GAAG,GAAG,CAAC;EACpB,CAAC;EACD,SAAS,UAAU,CAAC,GAAG,EAAE;EACzB,IAAI,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;EAC/B,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;EACpB,IAAI,OAAO,GAAG,CAAC;EACf,CAAC;EACD,MAAM,iBAAiB,GAAG,OAAO,WAAW,KAAK,WAAW;EAC5D,MAAM,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;EAChE,MAAM;EACN,QAAQ,MAAM,EAAE,MAAM;EACtB,YAAY,MAAM,KAAK,CAAC,2BAA2B,CAAC,CAAC;EACrD,SAAS;EACT,KAAK,CAAC;EACN,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;EACxC,IAAI,iBAAiB,CAAC,MAAM,EAAE,CAAC;EAC/B,CAAC;EACD,IAAI,kBAAkB,GAAG,IAAI,CAAC;EAC9B,SAAS,eAAe,GAAG;EAC3B,IAAI,IAAI,kBAAkB,KAAK,IAAI,IAAI,kBAAkB,CAAC,UAAU,KAAK,CAAC,EAAE;EAC5E,QAAQ,kBAAkB,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;EAChE,KAAK;EACL,IAAI,OAAO,kBAAkB,CAAC;EAC9B,CAAC;EACD,SAAS,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE;EACtC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACpB,IAAI,OAAO,iBAAiB,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;EAChF,CAAC;EACD,SAAS,UAAU,CAAC,CAAC,EAAE;EACvB,IAAI,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC;EACzC,CAAC;EACD,IAAI,qBAAqB,GAAG,IAAI,CAAC;EACjC,SAAS,kBAAkB,GAAG;EAC9B,IAAI,IAAI,qBAAqB,KAAK,IAAI;EACtC,QAAQ,qBAAqB,CAAC,UAAU,KAAK,CAAC,EAAE;EAChD,QAAQ,qBAAqB,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;EACtE,KAAK;EACL,IAAI,OAAO,qBAAqB,CAAC;EACjC,CAAC;EACD,IAAI,kBAAkB,GAAG,IAAI,CAAC;EAC9B,SAAS,eAAe,GAAG;EAC3B,IAAI,IAAI,kBAAkB,KAAK,IAAI,IAAI,kBAAkB,CAAC,UAAU,KAAK,CAAC,EAAE;EAC5E,QAAQ,kBAAkB,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;EAChE,KAAK;EACL,IAAI,OAAO,kBAAkB,CAAC;EAC9B,CAAC;EACD,SAAS,WAAW,CAAC,GAAG,EAAE;EAC1B;EACA,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC;EAC5B,IAAI,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,SAAS,IAAI,GAAG,IAAI,IAAI,EAAE;EAC9D,QAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;EACxB,KAAK;EACL,IAAI,IAAI,IAAI,IAAI,QAAQ,EAAE;EAC1B,QAAQ,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;EAC1B,KAAK;EACL,IAAI,IAAI,IAAI,IAAI,QAAQ,EAAE;EAC1B,QAAQ,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;EAC5C,QAAQ,IAAI,WAAW,IAAI,IAAI,EAAE;EACjC,YAAY,OAAO,QAAQ,CAAC;EAC5B,SAAS;EACT,aAAa;EACb,YAAY,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;EAC5C,SAAS;EACT,KAAK;EACL,IAAI,IAAI,IAAI,IAAI,UAAU,EAAE;EAC5B,QAAQ,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;EAC9B,QAAQ,IAAI,OAAO,IAAI,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;EACxD,YAAY,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;EACvC,SAAS;EACT,aAAa;EACb,YAAY,OAAO,UAAU,CAAC;EAC9B,SAAS;EACT,KAAK;EACL;EACA,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;EAC5B,QAAQ,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;EAClC,QAAQ,IAAI,KAAK,GAAG,GAAG,CAAC;EACxB,QAAQ,IAAI,MAAM,GAAG,CAAC,EAAE;EACxB,YAAY,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACzC,SAAS;EACT,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;EACzC,YAAY,KAAK,IAAI,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAChD,SAAS;EACT,QAAQ,KAAK,IAAI,GAAG,CAAC;EACrB,QAAQ,OAAO,KAAK,CAAC;EACrB,KAAK;EACL;EACA,IAAI,MAAM,cAAc,GAAG,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EAC1E,IAAI,IAAI,SAAS,CAAC;EAClB,IAAI,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;EACnC,QAAQ,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;EACtC,KAAK;EACL,SAAS;EACT;EACA,QAAQ,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK;EACL,IAAI,IAAI,SAAS,IAAI,QAAQ,EAAE;EAC/B;EACA;EACA;EACA,QAAQ,IAAI;EACZ,YAAY,OAAO,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;EACzD,SAAS;EACT,QAAQ,OAAO,CAAC,EAAE;EAClB,YAAY,OAAO,QAAQ,CAAC;EAC5B,SAAS;EACT,KAAK;EACL;EACA,IAAI,IAAI,GAAG,YAAY,KAAK,EAAE;EAC9B,QAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;EAC3D,KAAK;EACL;EACA,IAAI,OAAO,SAAS,CAAC;EACrB,CAAC;EACD,IAAI,eAAe,GAAG,CAAC,CAAC;EACxB,MAAM,iBAAiB,GAAG,OAAO,WAAW,KAAK,WAAW;EAC5D,MAAM,IAAI,WAAW,CAAC,OAAO,CAAC;EAC9B,MAAM;EACN,QAAQ,MAAM,EAAE,MAAM;EACtB,YAAY,MAAM,KAAK,CAAC,2BAA2B,CAAC,CAAC;EACrD,SAAS;EACT,KAAK,CAAC;EACN,MAAM,YAAY,GAAG,OAAO,iBAAiB,CAAC,UAAU,KAAK,UAAU;EACvE,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE;EAC3B,QAAQ,OAAO,iBAAiB,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACvD,KAAK;EACL,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE;EAC3B,QAAQ,MAAM,GAAG,GAAG,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAClD,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EACtB,QAAQ,OAAO;EACf,YAAY,IAAI,EAAE,GAAG,CAAC,MAAM;EAC5B,YAAY,OAAO,EAAE,GAAG,CAAC,MAAM;EAC/B,SAAS,CAAC;EACV,KAAK,CAAC;EACN,SAAS,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;EACjD,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE;EAC/B,QAAQ,MAAM,GAAG,GAAG,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAClD,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;EAChD,QAAQ,eAAe,EAAE;EACzB,aAAa,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;EAC5C,aAAa,GAAG,CAAC,GAAG,CAAC,CAAC;EACtB,QAAQ,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC;EACrC,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;EACzB,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;EACnC,IAAI,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;EAClC,IAAI,IAAI,MAAM,GAAG,CAAC,CAAC;EACnB,IAAI,OAAO,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE;EACnC,QAAQ,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;EAC5C,QAAQ,IAAI,IAAI,GAAG,IAAI;EACvB,YAAY,MAAM;EAClB,QAAQ,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;EACjC,KAAK;EACL,IAAI,IAAI,MAAM,KAAK,GAAG,EAAE;EACxB,QAAQ,IAAI,MAAM,KAAK,CAAC,EAAE;EAC1B,YAAY,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;EACpC,SAAS;EACT,QAAQ,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;EAC1E,QAAQ,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC,QAAQ,CAAC,GAAG,GAAG,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;EACzE,QAAQ,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EAC5C,QAAQ,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC;EAC9B,KAAK;EACL,IAAI,eAAe,GAAG,MAAM,CAAC;EAC7B,IAAI,OAAO,GAAG,CAAC;EACf,CAAC;EAMD,SAAS,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE;EACvC,IAAI,IAAI,EAAE,QAAQ,YAAY,KAAK,CAAC,EAAE;EACtC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,qBAAqB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC9D,KAAK;EACL,IAAI,OAAO,QAAQ,CAAC,GAAG,CAAC;EACxB,CAAC;EACD,SAAS,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE;EACvC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACpB,IAAI,OAAO,eAAe,EAAE,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;EAC9D,CAAC;EACD,SAAS,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE;EACxC,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;EAChD,IAAI,eAAe,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;EACxC,IAAI,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC;EACjC,IAAI,OAAO,GAAG,CAAC;EACf,CAAC;EA2BD,SAAS,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE;EAC9B,IAAI,IAAI;EACR,QAAQ,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;EACnC,KAAK;EACL,IAAI,OAAO,CAAC,EAAE;EACd,QAAQ,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;EACpD,KAAK;EACL,CAAC;EACD;EACA;EACO,MAAM,cAAc,CAAC;EAC5B,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;EAC5D,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;EAC5C,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,+BAA+B,CAAC,KAAK,EAAE,UAAU,EAAE;EAC9D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;EAC3D,YAAY,IAAI,CAAC,8CAA8C,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACrG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC7C,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,MAAM,GAAG;EACb,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EAC/D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACtC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,SAAS,GAAG;EAChB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EAClE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE;EAC/B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAChE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC7C,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,cAAc,CAAC,qBAAqB,EAAE;EAC1C,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;EAC9F,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,EAAE;EAC3D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,+BAA+B,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;EAC5F,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC7C,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL,CAAC;EAmyDD;EACA;EACO,MAAM,iBAAiB,CAAC;EAC/B,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;EAC/D,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;EAC/C,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,+BAA+B,CAAC,KAAK,EAAE,UAAU,EAAE;EAC9D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;EAC3D,YAAY,IAAI,CAAC,iDAAiD,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACvH,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAChD,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,MAAM,GAAG;EACb,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EACjE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACzC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,SAAS,GAAG;EAChB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EACrE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE;EAC/B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EACnE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAChD,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,cAAc,CAAC,qBAAqB,EAAE;EAC1C,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;EACjG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,EAAE;EAC3D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,kCAAkC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;EAC/F,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAChD,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL,CAAC;EA8GD;EACA;EACO,MAAM,gBAAgB,CAAC;EAC9B,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;EAC9D,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC;EAC9C,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,+BAA+B,CAAC,KAAK,EAAE,UAAU,EAAE;EAC9D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;EAC3D,YAAY,IAAI,CAAC,gDAAgD,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACvG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC/C,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,MAAM,GAAG;EACb,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EACjE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,SAAS,GAAG;EAChB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EACpE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE;EAC/B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAClE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC/C,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,cAAc,CAAC,qBAAqB,EAAE;EAC1C,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,+BAA+B,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;EAChG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,EAAE;EAC3D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;EAC9F,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC/C,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL,CAAC;EACD;EACA;EACO,MAAM,iBAAiB,CAAC;EAC/B,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;EAC/D,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;EAC/C,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,+BAA+B,CAAC,KAAK,EAAE,UAAU,EAAE;EAC9D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;EAC3D,YAAY,IAAI,CAAC,iDAAiD,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACvH,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAChD,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,MAAM,GAAG;EACb,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EACjE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACzC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,SAAS,GAAG;EAChB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EACrE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE;EAC/B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EACnE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAChD,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,cAAc,CAAC,qBAAqB,EAAE;EAC1C,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;EACjG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,EAAE;EAC3D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,kCAAkC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;EAC/F,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAChD,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL,CAAC;EAmMD;EACA;EACO,MAAM,iBAAiB,CAAC;EAC/B,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;EAC/D,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;EAC/C,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,+BAA+B,CAAC,KAAK,EAAE,UAAU,EAAE;EAC9D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;EAC3D,YAAY,IAAI,CAAC,iDAAiD,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACvH,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAChD,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,MAAM,GAAG;EACb,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EACjE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACzC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,SAAS,GAAG;EAChB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EACrE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE;EAC/B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EACnE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAChD,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,cAAc,CAAC,qBAAqB,EAAE;EAC1C,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;EACjG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,EAAE;EAC3D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,kCAAkC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;EAC/F,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAChD,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL,CAAC;EA8GD;EACA;EACO,MAAM,gBAAgB,CAAC;EAC9B,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;EAC9D,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC;EAC9C,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,+BAA+B,CAAC,KAAK,EAAE,UAAU,EAAE;EAC9D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;EAC3D,YAAY,IAAI,CAAC,gDAAgD,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACvG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC/C,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,MAAM,GAAG;EACb,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EACjE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,SAAS,GAAG;EAChB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EACpE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE;EAC/B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAClE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC/C,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,cAAc,CAAC,qBAAqB,EAAE;EAC1C,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,+BAA+B,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;EAChG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,EAAE;EAC3D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;EAC9F,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC/C,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL,CAAC;EAsFD;EACA;EACO,MAAM,gBAAgB,CAAC;EAC9B,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;EAC9D,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC;EAC9C,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,+BAA+B,CAAC,KAAK,EAAE,UAAU,EAAE;EAC9D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;EAC3D,YAAY,IAAI,CAAC,gDAAgD,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACvG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC/C,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,MAAM,GAAG;EACb,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EACjE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,SAAS,GAAG;EAChB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EACpE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE;EAC/B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAClE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC/C,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,cAAc,CAAC,qBAAqB,EAAE;EAC1C,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,+BAA+B,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;EAChG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,EAAE;EAC3D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;EAC9F,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC/C,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL,CAAC;EAsFD;EACA;EACO,MAAM,eAAe,CAAC;EAC7B,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;EAC7D,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC;EAC7C,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,+BAA+B,CAAC,KAAK,EAAE,UAAU,EAAE;EAC9D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;EAC3D,YAAY,IAAI,CAAC,+CAA+C,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACtG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC9C,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,MAAM,GAAG;EACb,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EACjE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACvC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,SAAS,GAAG;EAChB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EACnE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE;EAC/B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EACjE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC9C,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,cAAc,CAAC,qBAAqB,EAAE;EAC1C,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,8BAA8B,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;EAC/F,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,EAAE;EAC3D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;EAC7F,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC9C,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL,CAAC;EAgyED;EACA;EACO,MAAM,OAAO,CAAC;EACrB,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;EACrD,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;EACrC,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,+BAA+B,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACtF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACtC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,+BAA+B,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACtF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACtC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,kCAAkC,CAAC,KAAK,EAAE,qBAAqB,EAAE;EAC5E,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;EACzE,YAAY,IAAI,CAAC,0CAA0C,CAAC,MAAM,EAAE,KAAK,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;EAC5G,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACtC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,+BAA+B,CAAC,KAAK,EAAE,kBAAkB,EAAE;EACtE,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;EACnE,YAAY,IAAI,CAAC,uCAAuC,CAAC,MAAM,EAAE,KAAK,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;EACtG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACtC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,CAAC,UAAU,EAAE;EACxB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EAC/E,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,EAAE,KAAK,CAAC,CAAC;EAC5B,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,SAAS,GAAG;EAChB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EAC3D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE;EAC/B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EACzD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACtC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,cAAc,CAAC,qBAAqB,EAAE;EAC1C,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;EACvF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,EAAE;EAC3D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;EACrF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACtC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL,CAAC;EACD;EACA;EACO,MAAM,SAAS,CAAC;EACvB,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;EACvD,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;EACvC,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACvG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACvG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,kCAAkC,CAAC,KAAK,EAAE,qBAAqB,EAAE;EAC5E,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;EACzE,YAAY,IAAI,CAAC,4CAA4C,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;EAC7H,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,+BAA+B,CAAC,KAAK,EAAE,kBAAkB,EAAE;EACtE,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;EACnE,YAAY,IAAI,CAAC,yCAAyC,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;EACvH,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,CAAC,UAAU,EAAE;EACxB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACjF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,UAAU,CAAC,EAAE,CAAC,CAAC;EAClC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,SAAS,GAAG;EAChB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EAC7D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE;EAC/B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAC3D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,cAAc,CAAC,qBAAqB,EAAE;EAC1C,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;EACzF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,EAAE;EAC3D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;EACvF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL,CAAC;EACD;EACA;EACO,MAAM,QAAQ,CAAC;EACtB,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;EACtD,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;EACtC,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACvF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACvC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACvF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACvC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,kCAAkC,CAAC,KAAK,EAAE,qBAAqB,EAAE;EAC5E,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;EACzE,YAAY,IAAI,CAAC,2CAA2C,CAAC,MAAM,EAAE,KAAK,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;EAC7G,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACvC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,+BAA+B,CAAC,KAAK,EAAE,kBAAkB,EAAE;EACtE,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;EACnE,YAAY,IAAI,CAAC,wCAAwC,CAAC,MAAM,EAAE,KAAK,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;EACvG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACvC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,CAAC,UAAU,EAAE;EACxB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EAChF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,SAAS,GAAG;EAChB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EAC5D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE;EAC/B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAC1D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACvC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,cAAc,CAAC,qBAAqB,EAAE;EAC1C,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;EACxF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,EAAE;EAC3D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;EACtF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACvC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL,CAAC;EACD;EACA;EACO,MAAM,SAAS,CAAC;EACvB,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;EACvD,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;EACvC,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACvG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACvG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,kCAAkC,CAAC,KAAK,EAAE,qBAAqB,EAAE;EAC5E,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;EACzE,YAAY,IAAI,CAAC,4CAA4C,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;EAC7H,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,+BAA+B,CAAC,KAAK,EAAE,kBAAkB,EAAE;EACtE,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;EACnE,YAAY,IAAI,CAAC,yCAAyC,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;EACvH,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,CAAC,UAAU,EAAE;EACxB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACjF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,UAAU,CAAC,EAAE,CAAC,CAAC;EAClC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,SAAS,GAAG;EAChB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EAC7D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE;EAC/B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAC3D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,cAAc,CAAC,qBAAqB,EAAE;EAC1C,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;EACzF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,EAAE;EAC3D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;EACvF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL,CAAC;EACD;EACA;EACO,MAAM,SAAS,CAAC;EACvB,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;EACvD,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;EACvC,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACvG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACvG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,kCAAkC,CAAC,KAAK,EAAE,qBAAqB,EAAE;EAC5E,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;EACzE,YAAY,IAAI,CAAC,4CAA4C,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;EAC7H,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,+BAA+B,CAAC,KAAK,EAAE,kBAAkB,EAAE;EACtE,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;EACnE,YAAY,IAAI,CAAC,yCAAyC,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;EACvH,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,CAAC,UAAU,EAAE;EACxB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACjF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,UAAU,CAAC,EAAE,CAAC,CAAC;EAClC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,SAAS,GAAG;EAChB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EAC7D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE;EAC/B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAC3D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,cAAc,CAAC,qBAAqB,EAAE;EAC1C,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;EACzF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,EAAE;EAC3D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;EACvF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL,CAAC;EACD;EACA;EACO,MAAM,QAAQ,CAAC;EACtB,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;EACtD,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;EACtC,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACvF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACvC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACvF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACvC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,kCAAkC,CAAC,KAAK,EAAE,qBAAqB,EAAE;EAC5E,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;EACzE,YAAY,IAAI,CAAC,2CAA2C,CAAC,MAAM,EAAE,KAAK,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;EAC7G,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACvC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,+BAA+B,CAAC,KAAK,EAAE,kBAAkB,EAAE;EACtE,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;EACnE,YAAY,IAAI,CAAC,wCAAwC,CAAC,MAAM,EAAE,KAAK,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;EACvG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACvC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,CAAC,UAAU,EAAE;EACxB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EAChF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,SAAS,GAAG;EAChB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EAC5D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE;EAC/B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAC1D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACvC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,cAAc,CAAC,qBAAqB,EAAE;EAC1C,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;EACxF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,EAAE;EAC3D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;EACtF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACvC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL,CAAC;EACD;EACA;EACO,MAAM,QAAQ,CAAC;EACtB,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;EACtD,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;EACtC,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACvF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACvC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACvF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACvC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,kCAAkC,CAAC,KAAK,EAAE,qBAAqB,EAAE;EAC5E,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;EACzE,YAAY,IAAI,CAAC,2CAA2C,CAAC,MAAM,EAAE,KAAK,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;EAC7G,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACvC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,+BAA+B,CAAC,KAAK,EAAE,kBAAkB,EAAE;EACtE,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;EACnE,YAAY,IAAI,CAAC,wCAAwC,CAAC,MAAM,EAAE,KAAK,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;EACvG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACvC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,CAAC,UAAU,EAAE;EACxB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EAChF,YAAY,IAAI,EAAE,GAAG,kBAAkB,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EAC1D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,SAAS,GAAG;EAChB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EAC5D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE;EAC/B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAC1D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACvC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,cAAc,CAAC,qBAAqB,EAAE;EAC1C,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;EACxF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,EAAE;EAC3D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;EACtF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACvC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL,CAAC;EACD;EACA;EACO,MAAM,OAAO,CAAC;EACrB,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;EACrD,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;EACrC,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,+BAA+B,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACtF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACtC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,+BAA+B,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACtF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACtC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,kCAAkC,CAAC,KAAK,EAAE,qBAAqB,EAAE;EAC5E,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;EACzE,YAAY,IAAI,CAAC,0CAA0C,CAAC,MAAM,EAAE,KAAK,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;EAC5G,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACtC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,+BAA+B,CAAC,KAAK,EAAE,kBAAkB,EAAE;EACtE,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;EACnE,YAAY,IAAI,CAAC,uCAAuC,CAAC,MAAM,EAAE,KAAK,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;EACtG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACtC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,CAAC,UAAU,EAAE;EACxB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EAC/E,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,SAAS,GAAG;EAChB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EAC3D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE;EAC/B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EACzD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACtC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,cAAc,CAAC,qBAAqB,EAAE;EAC1C,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;EACvF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,EAAE;EAC3D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;EACrF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACtC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL,CAAC;EACD;EACA;EACO,MAAM,UAAU,CAAC;EACxB,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;EACxD,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;EACxC,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,kCAAkC,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACxG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACzC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,kCAAkC,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACxG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACzC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,kCAAkC,CAAC,KAAK,EAAE,qBAAqB,EAAE;EAC5E,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;EACzE,YAAY,IAAI,CAAC,6CAA6C,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;EAC9H,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACzC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,+BAA+B,CAAC,KAAK,EAAE,kBAAkB,EAAE;EACtE,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;EACnE,YAAY,IAAI,CAAC,0CAA0C,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;EACxH,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACzC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,CAAC,UAAU,EAAE;EACxB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EAClF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,UAAU,CAAC,EAAE,CAAC,CAAC;EAClC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,SAAS,GAAG;EAChB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EAC9D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE;EAC/B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAC5D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACzC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,cAAc,CAAC,qBAAqB,EAAE;EAC1C,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;EAC1F,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,EAAE;EAC3D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;EACxF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACzC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL,CAAC;EACD;EACA;EACO,MAAM,SAAS,CAAC;EACvB,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;EACvD,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;EACvC,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACxF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACxF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,kCAAkC,CAAC,KAAK,EAAE,qBAAqB,EAAE;EAC5E,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;EACzE,YAAY,IAAI,CAAC,4CAA4C,CAAC,MAAM,EAAE,KAAK,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;EAC9G,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,+BAA+B,CAAC,KAAK,EAAE,kBAAkB,EAAE;EACtE,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;EACnE,YAAY,IAAI,CAAC,yCAAyC,CAAC,MAAM,EAAE,KAAK,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;EACxG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,CAAC,UAAU,EAAE;EACxB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACjF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,SAAS,GAAG;EAChB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EAC7D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE;EAC/B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAC3D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,cAAc,CAAC,qBAAqB,EAAE;EAC1C,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;EACzF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,EAAE;EAC3D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;EACvF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL,CAAC;EACD;EACA;EACO,MAAM,UAAU,CAAC;EACxB,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;EACxD,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;EACxC,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,kCAAkC,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACxG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACzC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,kCAAkC,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACxG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACzC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,kCAAkC,CAAC,KAAK,EAAE,qBAAqB,EAAE;EAC5E,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;EACzE,YAAY,IAAI,CAAC,6CAA6C,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;EAC9H,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACzC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,+BAA+B,CAAC,KAAK,EAAE,kBAAkB,EAAE;EACtE,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;EACnE,YAAY,IAAI,CAAC,0CAA0C,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;EACxH,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACzC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,CAAC,UAAU,EAAE;EACxB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EAClF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,UAAU,CAAC,EAAE,CAAC,CAAC;EAClC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,SAAS,GAAG;EAChB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EAC9D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE;EAC/B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAC5D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACzC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,cAAc,CAAC,qBAAqB,EAAE;EAC1C,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;EAC1F,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,EAAE;EAC3D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;EACxF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACzC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL,CAAC;EACD;EACA;EACO,MAAM,UAAU,CAAC;EACxB,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;EACxD,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;EACxC,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,kCAAkC,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACxG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACzC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,kCAAkC,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACxG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACzC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,kCAAkC,CAAC,KAAK,EAAE,qBAAqB,EAAE;EAC5E,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;EACzE,YAAY,IAAI,CAAC,6CAA6C,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;EAC9H,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACzC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,+BAA+B,CAAC,KAAK,EAAE,kBAAkB,EAAE;EACtE,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;EACnE,YAAY,IAAI,CAAC,0CAA0C,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;EACxH,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACzC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,CAAC,UAAU,EAAE;EACxB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EAClF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,UAAU,CAAC,EAAE,CAAC,CAAC;EAClC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,SAAS,GAAG;EAChB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EAC9D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE;EAC/B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAC5D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACzC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,cAAc,CAAC,qBAAqB,EAAE;EAC1C,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;EAC1F,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,EAAE;EAC3D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;EACxF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACzC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL,CAAC;EACD;EACA;EACO,MAAM,SAAS,CAAC;EACvB,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;EACvD,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;EACvC,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACxF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACxF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,kCAAkC,CAAC,KAAK,EAAE,qBAAqB,EAAE;EAC5E,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;EACzE,YAAY,IAAI,CAAC,4CAA4C,CAAC,MAAM,EAAE,KAAK,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;EAC9G,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,+BAA+B,CAAC,KAAK,EAAE,kBAAkB,EAAE;EACtE,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;EACnE,YAAY,IAAI,CAAC,yCAAyC,CAAC,MAAM,EAAE,KAAK,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;EACxG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,CAAC,UAAU,EAAE;EACxB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACjF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,EAAE,KAAK,CAAC,CAAC;EAC5B,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,SAAS,GAAG;EAChB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EAC7D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE;EAC/B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAC3D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,cAAc,CAAC,qBAAqB,EAAE;EAC1C,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;EACzF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,EAAE;EAC3D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;EACvF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL,CAAC;EACD;EACA;EACO,MAAM,SAAS,CAAC;EACvB,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;EACvD,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;EACvC,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACxF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACxF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,kCAAkC,CAAC,KAAK,EAAE,qBAAqB,EAAE;EAC5E,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;EACzE,YAAY,IAAI,CAAC,4CAA4C,CAAC,MAAM,EAAE,KAAK,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;EAC9G,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,+BAA+B,CAAC,KAAK,EAAE,kBAAkB,EAAE;EACtE,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;EACnE,YAAY,IAAI,CAAC,yCAAyC,CAAC,MAAM,EAAE,KAAK,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;EACxG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,CAAC,UAAU,EAAE;EACxB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACjF,YAAY,IAAI,EAAE,GAAG,kBAAkB,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EAC1D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC1C,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,SAAS,GAAG;EAChB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EAC7D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE;EAC/B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAC3D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,cAAc,CAAC,qBAAqB,EAAE;EAC1C,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;EACzF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,EAAE;EAC3D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;EACvF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL,CAAC;EACD;EACA;EACO,MAAM,QAAQ,CAAC;EACtB,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;EACtD,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;EACtC,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACvF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACvC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE;EACtD,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACvF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACvC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,kCAAkC,CAAC,KAAK,EAAE,qBAAqB,EAAE;EAC5E,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;EACzE,YAAY,IAAI,CAAC,2CAA2C,CAAC,MAAM,EAAE,KAAK,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;EAC7G,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACvC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,+BAA+B,CAAC,KAAK,EAAE,kBAAkB,EAAE;EACtE,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;EACnE,YAAY,IAAI,CAAC,wCAAwC,CAAC,MAAM,EAAE,KAAK,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;EACvG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACvC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,CAAC,UAAU,EAAE;EACxB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EAChF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,SAAS,GAAG;EAChB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EAC5D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE;EAC/B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAC1D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACvC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,cAAc,CAAC,qBAAqB,EAAE;EAC1C,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;EACxF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,EAAE;EAC3D,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;EACtF,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACvC,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL,CAAC;EACD;EACA;EACO,MAAM,aAAa,CAAC;EAC3B,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;EAC3D,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;EAC3C,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,QAAQ,CAAC,MAAM,EAAE;EAC5B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;EAC7C,YAAY,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;EAClE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC5C,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE;EAC5C,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;EAC7C,YAAY,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;EACjG,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC5C,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,SAAS,GAAG;EAChB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EACjE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE;EAC/B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAC/D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC5C,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL,CAAC;EACD;EACA;EACO,MAAM,oBAAoB,CAAC;EAClC,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;EAClE,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,CAAC;EAClD,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,GAAG,CAAC,UAAU,EAAE;EAC3B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACxE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACnD,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,SAAS,GAAG;EAChB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,8BAA8B,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EACxE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE;EAC/B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EACtE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACnD,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL,CAAC;EAwGD;EACA;EACO,MAAM,uBAAuB,CAAC;EACrC,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;EACrE,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,kCAAkC,CAAC,GAAG,CAAC,CAAC;EACrD,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,GAAG,CAAC,UAAU,EAAE;EAC3B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EAC3E,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACtD,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,UAAU,GAAG;EACjB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,kCAAkC,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EAC5E,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC5C,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,SAAS,GAAG;EAChB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EAC3E,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE;EAC/B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,mCAAmC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EACzE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACtD,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL,CAAC;EAqFD;EACA;EACO,MAAM,UAAU,CAAC;EACxB,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;EACxD,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;EACxC,KAAK;EACL,CAAC;EACD;EACA;EACO,MAAM,iBAAiB,CAAC;EAC/B,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;EAC/D,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;EAC/C,KAAK;EACL;EACA;EACA;EACA,IAAI,OAAO,OAAO,GAAG;EACrB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;EACrD,QAAQ,OAAO,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAC7C,KAAK;EACL;EACA;EACA;EACA,IAAI,OAAO,6BAA6B,GAAG;EAC3C,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,+CAA+C,EAAE,CAAC;EAC3E,QAAQ,OAAO,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAC7C,KAAK;EACL;EACA;EACA;EACA,IAAI,OAAO,2BAA2B,GAAG;EACzC,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;EACrD,QAAQ,OAAO,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAC7C,KAAK;EACL;EACA;EACA;EACA,IAAI,KAAK,GAAG;EACZ,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;EACtD,QAAQ,OAAO,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EACtC,KAAK;EACL,CAAC;EACD;EACA;EACO,MAAM,aAAa,CAAC;EAC3B,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE;EACvB,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EACxB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;EAC3D,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,kBAAkB,GAAG;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,GAAG;EACX,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9C,QAAQ,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;EAC3C,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,GAAG,CAAC,UAAU,EAAE;EAC3B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;EACpD,YAAY,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;EACjE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC5C,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA,IAAI,SAAS,GAAG;EAChB,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EACjE,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,IAAI,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7C,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL;EACA;EACA;EACA;EACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE;EAC/B,QAAQ,IAAI;EACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC3E,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC;EACzC,YAAY,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAC/D,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvD,YAAY,IAAI,EAAE,EAAE;EACpB,gBAAgB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;EACrC,aAAa;EACb,YAAY,OAAO,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC5C,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;EACrD,SAAS;EACT,KAAK;EACL,CAAC;EAcD,eAAe,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE;EAC3C,IAAI,IAAI,OAAO,QAAQ,KAAK,UAAU,IAAI,MAAM,YAAY,QAAQ,EAAE;EACtE,QAAQ,IAAI,OAAO,WAAW,CAAC,oBAAoB,KAAK,UAAU,EAAE;EACpE,YAAY,IAAI;EAChB,gBAAgB,OAAO,MAAM,WAAW,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;EAC/E,aAAa;EACb,YAAY,OAAO,CAAC,EAAE;EACtB,gBAAgB,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,kBAAkB,EAAE;EAC9E,oBAAoB,OAAO,CAAC,IAAI,CAAC,mMAAmM,EAAE,CAAC,CAAC,CAAC;EACzO,iBAAiB;EACjB,qBAAqB;EACrB,oBAAoB,MAAM,CAAC,CAAC;EAC5B,iBAAiB;EACjB,aAAa;EACb,SAAS;EACT,QAAQ,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;EACjD,QAAQ,OAAO,MAAM,WAAW,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;EAC7D,KAAK;EACL,SAAS;EACT,QAAQ,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;EACxE,QAAQ,IAAI,QAAQ,YAAY,WAAW,CAAC,QAAQ,EAAE;EACtD,YAAY,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;EACxC,SAAS;EACT,aAAa;EACb,YAAY,OAAO,QAAQ,CAAC;EAC5B,SAAS;EACT,KAAK;EACL,CAAC;EACD,SAAS,iBAAiB,GAAG;EAC7B,IAAI,MAAM,OAAO,GAAG,EAAE,CAAC;EACvB,IAAI,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC;EACrB,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,GAAG,UAAU,IAAI,EAAE;EAC7D,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;EAC7C,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE;EACvD,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;EACvD,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,GAAG,UAAU,IAAI,EAAE;EAC7D,QAAQ,UAAU,CAAC,IAAI,CAAC,CAAC;EACzB,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,GAAG,UAAU,IAAI,EAAE;EAC7D,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC;EACzB,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE;EAC5D,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;EACxD,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE;EAC7D,QAAQ,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;EAC9D,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE;EACpE,QAAQ,MAAM,GAAG,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;EACpE,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE;EACpE,QAAQ,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;EACxF,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,UAAU,IAAI,EAAE;EACtD,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC3C,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,UAAU,IAAI,EAAE;EACvD,QAAQ,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC5C,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,UAAU,IAAI,EAAE;EACvD,QAAQ,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC5C,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,UAAU,IAAI,EAAE;EACtD,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC3C,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,UAAU,IAAI,EAAE;EACvD,QAAQ,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC5C,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,UAAU,IAAI,EAAE;EACrD,QAAQ,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC1C,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,UAAU,IAAI,EAAE;EACtD,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC3C,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,UAAU,IAAI,EAAE;EACrD,QAAQ,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC1C,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,UAAU,IAAI,EAAE;EACrD,QAAQ,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC1C,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,UAAU,IAAI,EAAE;EACpD,QAAQ,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACzC,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,UAAU,IAAI,EAAE;EACtD,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC3C,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,UAAU,IAAI,EAAE;EACtD,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC3C,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,UAAU,IAAI,EAAE;EACrD,QAAQ,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC1C,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,UAAU,IAAI,EAAE;EACpD,QAAQ,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACzC,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,UAAU,IAAI,EAAE;EACtD,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC3C,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,UAAU,IAAI,EAAE;EACzD,QAAQ,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;EAClC,QAAQ,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAC7D,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE;EACnE,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;EAC3D,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE;EAC3D,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;EACtD,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,UAAU,IAAI,EAAE;EACxD,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC;EACzB,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE;EACtD,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;EACtD,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,UAAU,IAAI,EAAE;EACjD,QAAQ,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EACrC,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE;EACvD,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;EACvD,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE;EACvD,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;EACtD,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE;EAC1D,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;EACtD,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,GAAG,YAAY;EACzD,QAAQ,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;EAChC,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE;EACrE,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;EAC1C,QAAQ,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;EAC7F,QAAQ,MAAM,IAAI,GAAG,eAAe,CAAC;EACrC,QAAQ,eAAe,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;EAC/C,QAAQ,eAAe,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;EAC/C,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE;EACrE,QAAQ,IAAI,WAAW,CAAC;EACxB,QAAQ,IAAI,WAAW,CAAC;EACxB,QAAQ,IAAI;EACZ,YAAY,WAAW,GAAG,IAAI,CAAC;EAC/B,YAAY,WAAW,GAAG,IAAI,CAAC;EAC/B,YAAY,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;EAC1D,SAAS;EACT,gBAAgB;EAChB,YAAY,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;EAC9D,SAAS;EACT,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,6BAA6B,GAAG,UAAU,IAAI,EAAE;EAChE,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;EAC3C,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,UAAU,IAAI,EAAE;EACvD,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;EACpC,QAAQ,MAAM,GAAG,GAAG,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,CAAC;EAC5D,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,8BAA8B,GAAG,UAAU,IAAI,EAAE;EACjE,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;EAC5C,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,+BAA+B,GAAG,UAAU,IAAI,EAAE;EAClE,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;EAC7C,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,UAAU,IAAI,EAAE;EAC9D,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;EACzC,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,UAAU,IAAI,EAAE;EACvD,QAAQ,MAAM,GAAG,GAAG,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC;EACxD,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,8BAA8B,GAAG,YAAY;EAC7D,QAAQ,OAAO,WAAW,CAAC,YAAY;EACvC,YAAY,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;EACvC,YAAY,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EACtC,SAAS,EAAE,SAAS,CAAC,CAAC;EACtB,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE;EAC9D,QAAQ,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;EACnD,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,+BAA+B,GAAG,UAAU,IAAI,EAAE;EAClE,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;EAC7C,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,qCAAqC,GAAG,YAAY;EACpE,QAAQ,OAAO,WAAW,CAAC,UAAU,IAAI,EAAE,IAAI,EAAE;EACjD,YAAY,SAAS,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;EAC7D,SAAS,EAAE,SAAS,CAAC,CAAC;EACtB,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,sCAAsC,GAAG,YAAY;EACrE,QAAQ,OAAO,WAAW,CAAC,UAAU,IAAI,EAAE,IAAI,EAAE;EACjD,YAAY,SAAS,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;EAC7D,SAAS,EAAE,SAAS,CAAC,CAAC;EACtB,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,UAAU,IAAI,EAAE;EACzD,QAAQ,MAAM,GAAG,GAAG,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC;EAC1D,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,gCAAgC,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE;EACzE,QAAQ,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;EACjE,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,YAAY;EAC1D,QAAQ,OAAO,WAAW,CAAC,UAAU,IAAI,EAAE,IAAI,EAAE;EACjD,YAAY,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;EAC9D,YAAY,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EACtC,SAAS,EAAE,SAAS,CAAC,CAAC;EACtB,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,YAAY;EAC1D,QAAQ,OAAO,WAAW,CAAC,YAAY;EACvC,YAAY,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;EAClC,YAAY,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EACtC,SAAS,EAAE,SAAS,CAAC,CAAC;EACtB,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,6BAA6B,GAAG,YAAY;EAC5D,QAAQ,OAAO,WAAW,CAAC,YAAY;EACvC,YAAY,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;EACtC,YAAY,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EACtC,SAAS,EAAE,SAAS,CAAC,CAAC;EACtB,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,iCAAiC,GAAG,YAAY;EAChE,QAAQ,OAAO,WAAW,CAAC,YAAY;EACvC,YAAY,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC;EAC9C,YAAY,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EACtC,SAAS,EAAE,SAAS,CAAC,CAAC;EACtB,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,6BAA6B,GAAG,YAAY;EAC5D,QAAQ,OAAO,WAAW,CAAC,YAAY;EACvC,YAAY,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;EACtC,YAAY,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EACtC,SAAS,EAAE,SAAS,CAAC,CAAC;EACtB,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,UAAU,IAAI,EAAE;EAC1D,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;EAClD,QAAQ,OAAO,GAAG,CAAC;EACnB,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,YAAY;EAC1D,QAAQ,OAAO,WAAW,CAAC,UAAU,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;EACvD,YAAY,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;EAC/E,YAAY,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EACtC,SAAS,EAAE,SAAS,CAAC,CAAC;EACtB,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,6BAA6B,GAAG,UAAU,IAAI,EAAE;EAChE,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;EAC3C,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,iDAAiD,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;EAChG,QAAQ,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC;EAC5E,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,GAAG,UAAU,IAAI,EAAE;EAC7D,QAAQ,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;EACpD,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;EACzE,QAAQ,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC;EACzD,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,oCAAoC,GAAG,UAAU,IAAI,EAAE;EACvE,QAAQ,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;EAC/C,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,+BAA+B,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;EAC9E,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC;EACrE,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,UAAU,IAAI,EAAE;EAC9D,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;EACpC,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE;EACrE,QAAQ,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;EAClC,QAAQ,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,QAAQ,GAAG,CAAC,GAAG,SAAS,CAAC;EAC1D,QAAQ,kBAAkB,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;EAC/E,QAAQ,eAAe,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;EAC3D,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE;EAChE,QAAQ,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;EACjD,QAAQ,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;EAC7F,QAAQ,MAAM,IAAI,GAAG,eAAe,CAAC;EACrC,QAAQ,eAAe,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;EAC/C,QAAQ,eAAe,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;EAC/C,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE;EACzD,QAAQ,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;EACxD,KAAK,CAAC;EACN,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,YAAY;EAChD,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;EAChC,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;EAClC,KAAK,CAAC;EACN,IAAI,OAAO,OAAO,CAAC;EACnB,CAAC;EAED,SAAS,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE;EAC/C,IAAI,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC;EAC5B,IAAI,UAAU,CAAC,sBAAsB,GAAG,MAAM,CAAC;EAC/C,IAAI,qBAAqB,GAAG,IAAI,CAAC;EACjC,IAAI,kBAAkB,GAAG,IAAI,CAAC;EAE9B,IAAI,kBAAkB,GAAG,IAAI,CAAC;EAC9B,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC;EAYD,eAAe,UAAU,CAAC,KAAK,EAAE;EACjC,IAAI,IAAI,IAAI,KAAK,SAAS;EAC1B,QAAQ,OAAO,IAAI,CAAC;EACpB;EACA;EACA;EACA;EACA,IAAI,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;EACxC,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;EACjC,SAAS,OAAO,OAAO,KAAK,UAAU,IAAI,KAAK,YAAY,OAAO,CAAC;EACnE,SAAS,OAAO,GAAG,KAAK,UAAU,IAAI,KAAK,YAAY,GAAG,CAAC,EAAE;EAC7D,QAAQ,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;EAC7B,KAAK;EAEL,IAAI,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,KAAK,EAAE,OAAO,CAAC,CAAC;EACxE,IAAI,OAAO,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;EACjD;;EC3tUA,IAAI,WAAW,CAAC;EAChB,MAAM,SAAS,GAAG,YAAY;EAC9B,IAAI,IAAI,CAAC,WAAW,EAAE;EACtB,QAAQ,IAAI;EACZ,YAAY,WAAW,GAAG,MAAMA,UAAO,CAACC,MAAI,CAAC,CAAC;EAC9C,SAAS;EACT,QAAQ,OAAO,CAAC,EAAE;EAClB,YAAY,WAAW,GAAG,MAAMD,UAAO,CAACC,MAAI,EAAE,CAAC,CAAC;EAChD,SAAS;EACT,KAAK;EACL,IAAI,OAAO,WAAW,CAAC;EACvB,CAAC,CAAC;EACK,MAAM,cAAc,GAAG,YAAY;EAC1C,IAAI,IAAI;EACR,QAAQ,MAAM,SAAS,EAAE,CAAC;EAC1B,KAAK;EACL,IAAI,OAAO,GAAG,EAAE;EAChB,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;EAClE,KAAK;EACL,CAAC;;ECtBD,SAAS,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;EACvC,IAAI,IAAI,CAAC,EAAE,EAAE;EACb,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,0BAA0B,EAAE,QAAQ,CAAC,6BAA6B,EAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;EAChH,KAAK;EACL,CAAC;EACM,SAAS,QAAQ,CAAC,KAAK,EAAE;EAChC,IAAI,MAAM,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC;EACzC,IAAI,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;EAClC,CAAC;EACM,SAASC,eAAa,CAAC,KAAK,EAAE;EACrC;EACA,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;EACrD,QAAQ,OAAO,KAAK,CAAC;EACrB,KAAK;EACL;EACA,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;EACnD,IAAI,MAAM,EAAE,GAAG,CAAC,SAAS,KAAK,IAAI;EAClC,QAAQ,SAAS,KAAK,MAAM,CAAC,SAAS;EACtC,QAAQ,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,IAAI;EACjD,QAAQ,EAAE,MAAM,CAAC,WAAW,IAAI,KAAK,CAAC;EACtC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,CAAC;EACpC,IAAI,QAAQ,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;EACxC,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC;EACM,SAAS,mBAAmB,CAAC,KAAK,EAAE;EAC3C,IAAI,MAAM,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;EACtE,IAAI,QAAQ,CAAC,EAAE,EAAE,sBAAsB,EAAE,KAAK,CAAC,CAAC;EAChD,CAAC;EACM,SAAS,QAAQ,CAAC,KAAK,EAAE;EAChC,IAAI,MAAM,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EACjE,IAAI,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;EAClC,CAAC;EACM,SAAS,gBAAgB,CAAC,KAAK,EAAE;EACxC,IAAI,MAAM,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC;EACzC,IAAI,IAAI,CAAC,EAAE,EAAE;EACb,QAAQ,IAAI;EACZ,YAAY,QAAQ,CAAC,KAAK,CAAC,CAAC;EAC5B,SAAS;EACT,QAAQ,OAAO,CAAC,EAAE;EAClB,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,4BAA4B,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;EACzF,SAAS;EACT,KAAK;EACL;;ECzCO,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK;EACxD,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;EACpB,IAAI,IAAI,KAAK,GAAG,GAAG,IAAI,KAAK,GAAG,GAAG,EAAE;EACpC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,oBAAoB,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC;EAC1F,KAAK;EACL,CAAC,CAAC;EACK,MAAM,aAAa,GAAG,CAAC,SAAS,KAAK;EAC5C,IAAI,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC;EACjF,IAAI,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;EAChE,IAAI,IAAI,CAAC,GAAG;EACZ,QAAQ,OAAO,IAAI,UAAU,EAAE,CAAC;EAChC,IAAI,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;EACjE,CAAC,CAAC;EACK,MAAMC,aAAW,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;EACzG,SAAS,QAAQ,CAAC,KAAK,EAAE;EAChC,IAAI,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;EACjC,CAAC;EACM,SAAS,SAAS,CAAC,KAAK,EAAE;EACjC,IAAI,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;EAClC,CAAC;EACM,SAASC,WAAS,CAAC,OAAO,EAAE;EACnC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;EAC9B,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC;EACvE,KAAK;EACL,CAAC;EACD,SAAS,UAAU,CAAC,KAAK,EAAE;EAC3B,IAAI,IAAI;EACR,QAAQ,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;EACrC,YAAY,OAAO,KAAK,CAAC;EACzB,SAAS;EACT,aAAa,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE;EACtC,YAAY,OAAO,KAAK,CAAC;EACzB,SAAS;EACT,QAAQ,OAAO,IAAI,CAAC;EACpB,KAAK;EACL,IAAI,OAAO,KAAK,EAAE;EAClB,QAAQ,OAAO,KAAK,CAAC;EACrB,KAAK;EACL,CAAC;EACD,MAAM,OAAO,GAAG,kBAAkB,CAAC;EACnC;EACA,MAAM,QAAQ,GAAG,gBAAgB,CAAC;EAClC,MAAMC,MAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;EACvB;EACA;EACA;EACA;EACA,SAAS,cAAc,CAAC,KAAK,EAAE;EAC/B,IAAI,IAAI,KAAK,YAAY,UAAU,EAAE;EACrC,QAAQ,IAAI,MAAM,GAAG,KAAK,CAAC;EAC3B,QAAQ,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;EAC/B,YAAY,MAAM,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;EACtC,YAAY,MAAM,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;EACxC,SAAS;EACT,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;EAC9B,KAAK;EACL,IAAI,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;EAC5B,CAAC;EACD,SAAS,eAAe,CAAC,MAAM,EAAE;EACjC,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;EAClC,IAAI,IAAI,KAAK,KAAKA,MAAI,EAAE;EACxB,QAAQ,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;EAClC,KAAK;EACL,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;EACjC,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;EACxB,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EACxB,KAAK;EACL,IAAI,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EAClD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC5C,QAAQ,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;EAC7B,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EACpE,KAAK;EACL,IAAI,OAAO,MAAM,CAAC;EAClB,CAAC;EACD;EACA;EACA;EACA;EACA,SAAS,OAAO,CAAC,KAAK,EAAE;EACxB,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;EACpC,IAAIC,gBAAc,CAAC,MAAM,IAAID,MAAI,EAAE,mCAAmC,CAAC,CAAC;EACxE,IAAI,OAAO,MAAM,CAAC;EAClB,CAAC;EACD;EACA;EACA;EACA;EACA,SAAS,SAAS,CAAC,KAAK,EAAE;EAC1B,IAAI,QAAQ,OAAO,KAAK;EACxB,QAAQ,KAAK,QAAQ;EACrB,YAAY,OAAO,KAAK,CAAC;EACzB,QAAQ,KAAK,QAAQ;EACrB,YAAYC,gBAAc,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;EACjE,YAAYA,gBAAc,CAAC,KAAK,IAAI,CAAC,QAAQ,IAAI,KAAK,IAAI,QAAQ,EAAE,UAAU,CAAC,CAAC;EAChF,YAAY,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;EACjC,QAAQ,KAAK,QAAQ;EACrB,YAAY,IAAI;EAChB,gBAAgB,IAAI,KAAK,KAAK,EAAE,EAAE;EAClC,oBAAoB,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;EACpD,iBAAiB;EACjB,gBAAgB,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;EAC1D,oBAAoB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;EACvD,iBAAiB;EACjB,gBAAgB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;EACrC;EACA,aAAa;EACb,YAAY,OAAO,CAAC,EAAE;EACtB,gBAAgBA,gBAAc,CAAC,KAAK,EAAE,CAAC,6BAA6B,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACnF,aAAa;EACb,KAAK;EACL,IAAIA,gBAAc,CAAC,KAAK,EAAE,4BAA4B,CAAC,CAAC;EACxD,CAAC;EACD,SAASA,gBAAc,CAAC,KAAK,EAAE,OAAO,EAAE;EACxC,IAAI,IAAI,CAAC,KAAK,EAAE;EAChB,QAAQ,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;EACjC,KAAK;EACL,CAAC;EACM,SAAS,kBAAkB,CAAC,KAAK,EAAE;EAC1C;EACA,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,UAAU,EAAE;EACzC,QAAQ,MAAM,IAAI,UAAU,CAAC,wCAAwC,CAAC,CAAC;EACvE,KAAK;EACL;EACA,IAAI,OAAO,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;EAChD,CAAC;EACD;EACO,MAAM,kBAAkB,GAAG,CAAC,KAAK,KAAK;EAC7C,IAAI,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACvE,CAAC,CAAC;EAMF,SAAS,kBAAkB,CAAC,MAAM,EAAE;EACpC,IAAI,MAAM,UAAU,GAAG,EAAE,CAAC;EAC1B,IAAI,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;EACjD;EACA,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;EAC9B;EACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;EACzC;EACA,QAAQ,SAAS,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;EAC9D;EACA,QAAQ,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC;EAC7B,KAAK;EACL,IAAI,OAAO,SAAS,CAAC;EACrB,CAAC;EACD;EACA;EACA;EACO,MAAM,cAAc,GAAG,CAAC,OAAO,KAAK;EAC3C,IAAI,IAAI,OAAO,IAAI,IAAI;EACvB,QAAQ,OAAO,KAAK,CAAC;EACrB,IAAI,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC;EACvC,CAAC,CAAC;EACK,MAAM,iBAAiB,GAAG,CAAC,KAAK,KAAK;EAC5C,IAAI,IAAI,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;EAC3B,IAAI,KAAK,MAAM,aAAa,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE;EAC3D,QAAQ,MAAM,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC;EAC/D,KAAK;EACL,IAAI,OAAO,MAAM,CAAC;EAClB,CAAC,CAAC;EACK,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,YAAY,GAAG,CAAC,MAAM;EAChE,IAAI,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;EAC3C,IAAI,YAAY,EAAE,YAAY,IAAI,CAAC;EACnC,CAAC,CAAC;;ECvKF;EACA;EACA;EACA;AACWC,mCAAgB;EAC3B,CAAC,UAAU,eAAe,EAAE;EAC5B,IAAI,eAAe,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;EACrC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;EACvC,IAAI,eAAe,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;EACzC,IAAI,eAAe,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;EACzC,IAAI,eAAe,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;EACzC,IAAI,eAAe,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;EAC3C,IAAI,eAAe,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;EAC3C,IAAI,eAAe,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;EAC3C,CAAC,EAAEA,uBAAe,KAAKA,uBAAe,GAAG,EAAE,CAAC,CAAC,CAAC;EAC9C;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,SAAS,sBAAsB,CAAC,QAAQ,EAAE;EACjD,IAAI,IAAI,SAAS,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU,EAAE;EACzE,QAAQ,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;EACpE,KAAK;EACL,SAAS,IAAI,MAAM,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE;EACxE,QAAQ,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;EAC7D,KAAK;EACL,SAAS;EACT,QAAQ,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;EAC/F,KAAK;EACL,CAAC;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,SAAS,sBAAsB,CAAC,QAAQ,EAAE;EACjD,IAAI,IAAI,WAAW,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,SAAS,KAAK,UAAU,EAAE;EAC7E,QAAQ,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;EACpC,KAAK;EACL,SAAS;EACT,QAAQ,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;EACrE,KAAK;EACL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GCjDA,CAAC,SAAS,IAAI,EAAE;AAEhB;EACA;EACA;EACA;EACA;EACA;AACA;EACA,CAAA,IAAI,EAAE,GAAG,SAAS,IAAI,EAAE;KACtB,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;KAChC,IAAI,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;KAC3D,OAAO,CAAC,CAAC;EACX,EAAC,CAAC;AACF;EACA;EACA,CAAA,IAAI,WAAW,GAAG,qBAAqB,EAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;AACvE;EACA,CAAA,IAAI,EAAE,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;EAC5B,CAAA,IAAI,EAAE,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACvC;GACA,IAAI,GAAG,GAAG,EAAE,EAAE;EACd,KAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;OACb,OAAO,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;EAC7B,KAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;EAC5I,KAAI,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;EAC7I,KAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;EAC5I,KAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;EAC5I,KAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAC7I;GACA,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;KACxB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;EAC5B,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;EAC5B,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;KAC1B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;EACpB,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;EAC7B,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;EAC7B,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;KAC3B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACnB;AACD;GACA,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;EAC7B,GAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;KACZ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;EAC/C,GAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;IAClC;AACD;GACA,SAAS,gBAAgB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;EACxC,GAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACzB;AACD;GACA,SAAS,gBAAgB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;EACxC,GAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACzB;AACD;GACA,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EAClC,GAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,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AAC;KACzB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;KACE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;KACzB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;KACzB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;KACzB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;KACE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;KACzB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;KACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;KACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;KACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;KACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;KACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;KACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;KACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;KACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;KACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;KACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;KACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;KACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;KACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;KACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;KACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;KACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;KACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;KACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;KACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;KACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;KACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;KACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;KACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;KACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;KACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;KACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;KACE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;KACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;KACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;KACzB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;KACE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;KAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;KAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;KAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;KACE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;KAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;KAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;KAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;KACE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;KAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;KAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;KAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;KACE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;KAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;KAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;KAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;KACE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;KAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;KAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;KAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;KACE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;KAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;KAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;KAC1B,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;IAC3B;AACD;GACA,SAAS,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;EAChC,GAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;EACtF,OAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;AACvF;EACA,GAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EA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GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACX,GAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACZ,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACZ,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACZ,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACZ,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACZ,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAChB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACjB,GAAE,GAAG,IAAI,CAA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,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACtE,GAAE,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB;EACA;KACE,CAAC,GAAG,CAAC,CAAC;EACR,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACtE,GAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACtE,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,C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,EAAE,UAAU,EAAE,UAAU;EAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,GAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAC,CAAC;AACF;GACA,SAA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","x_google_ignoreList":[5,6,14,15,16,17,18,19,20,21,22,23,24,25,26,27,30,33,34,35]} \ No newline at end of file diff --git a/dist/fhenix.umd.min.js b/dist/fhenix.umd.min.js deleted file mode 100644 index a8977a6..0000000 --- a/dist/fhenix.umd.min.js +++ /dev/null @@ -1 +0,0 @@ -const __$G=typeof globalThis!=="undefined"?globalThis:typeof window!=="undefined"?window:typeof global!=="undefined"?global:typeof self!=="undefined"?self:{};(function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?factory(exports):typeof define==="function"&&define.amd?define(["exports"],factory):(global=typeof globalThis!=="undefined"?globalThis:global||self,factory(global.fhenixjs={}))})(this,function(exports){"use strict";function _loadWasmModule(sync,filepath,src,imports){function _instantiateOrCompile(source,imports,stream){var instantiateFunc=WebAssembly.instantiate;var compileFunc=WebAssembly.compile;if(imports){return instantiateFunc(source,imports)}else{return compileFunc(source)}}var buf=null;var isNode=typeof process!=="undefined"&&process.versions!=null&&process.versions.node!=null;if(isNode){buf=Buffer.from(src,"base64")}else{var raw=globalThis.atob(src);var rawLength=raw.length;buf=new Uint8Array(new ArrayBuffer(rawLength));for(var i=0;i{throw Error("TextDecoder not available")}};if(typeof TextDecoder!=="undefined"){cachedTextDecoder.decode()}let cachedUint8Memory0=null;function getUint8Memory0(){if(cachedUint8Memory0===null||cachedUint8Memory0.byteLength===0){cachedUint8Memory0=new Uint8Array(wasm.memory.buffer)}return cachedUint8Memory0}function getStringFromWasm0(ptr,len){ptr=ptr>>>0;return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr,ptr+len))}function isLikeNone(x){return x===undefined||x===null}let cachedBigInt64Memory0=null;function getBigInt64Memory0(){if(cachedBigInt64Memory0===null||cachedBigInt64Memory0.byteLength===0){cachedBigInt64Memory0=new BigInt64Array(wasm.memory.buffer)}return cachedBigInt64Memory0}let cachedInt32Memory0=null;function getInt32Memory0(){if(cachedInt32Memory0===null||cachedInt32Memory0.byteLength===0){cachedInt32Memory0=new Int32Array(wasm.memory.buffer)}return cachedInt32Memory0}function debugString(val){const type=typeof val;if(type=="number"||type=="boolean"||val==null){return`${val}`}if(type=="string"){return`"${val}"`}if(type=="symbol"){const description=val.description;if(description==null){return"Symbol"}else{return`Symbol(${description})`}}if(type=="function"){const name=val.name;if(typeof name=="string"&&name.length>0){return`Function(${name})`}else{return"Function"}}if(Array.isArray(val)){const length=val.length;let debug="[";if(length>0){debug+=debugString(val[0])}for(let i=1;i1){className=builtInMatches[1]}else{return toString.call(val)}if(className=="Object"){try{return"Object("+JSON.stringify(val)+")"}catch(_){return"Object"}}if(val instanceof Error){return`${val.name}: ${val.message}\n${val.stack}`}return className}let WASM_VECTOR_LEN=0;const cachedTextEncoder=typeof TextEncoder!=="undefined"?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}};const encodeString=typeof cachedTextEncoder.encodeInto==="function"?function(arg,view){return cachedTextEncoder.encodeInto(arg,view)}:function(arg,view){const buf=cachedTextEncoder.encode(arg);view.set(buf);return{read:arg.length,written:buf.length}};function passStringToWasm0(arg,malloc,realloc){if(realloc===undefined){const buf=cachedTextEncoder.encode(arg);const ptr=malloc(buf.length,1)>>>0;getUint8Memory0().subarray(ptr,ptr+buf.length).set(buf);WASM_VECTOR_LEN=buf.length;return ptr}let len=arg.length;let ptr=malloc(len,1)>>>0;const mem=getUint8Memory0();let offset=0;for(;offset127)break;mem[ptr+offset]=code}if(offset!==len){if(offset!==0){arg=arg.slice(offset)}ptr=realloc(ptr,len,len=offset+arg.length*3,1)>>>0;const view=getUint8Memory0().subarray(ptr+offset,ptr+len);const ret=encodeString(arg,view);offset+=ret.written}WASM_VECTOR_LEN=offset;return ptr}function _assertClass(instance,klass){if(!(instance instanceof klass)){throw new Error(`expected instance of ${klass.name}`)}return instance.ptr}function getArrayU8FromWasm0(ptr,len){ptr=ptr>>>0;return getUint8Memory0().subarray(ptr/1,ptr/1+len)}function passArray8ToWasm0(arg,malloc){const ptr=malloc(arg.length*1,1)>>>0;getUint8Memory0().set(arg,ptr/1);WASM_VECTOR_LEN=arg.length;return ptr}function handleError(f,args){try{return f.apply(this,args)}catch(e){wasm.__wbindgen_exn_store(addHeapObject(e))}}class CompactFheBool{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheBool.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_compactfhebool_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm.compactfhebool_encrypt_with_compact_public_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheBool.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfhebool_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfhebool_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfhebool_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheBool.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfhebool_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfhebool_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheBool.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint128{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint128.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_compactfheuint128_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm.compactfheuint128_encrypt_with_compact_public_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint128_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint128_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint128_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint128_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint16{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint16.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_compactfheuint16_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm.compactfheuint16_encrypt_with_compact_public_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint16_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint16_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint16_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint16_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint160{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint160.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_compactfheuint160_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm.compactfheuint160_encrypt_with_compact_public_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint160_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint160_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint160_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint160_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint256{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint256.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_compactfheuint256_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm.compactfheuint256_encrypt_with_compact_public_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint256_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint256_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint256_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint256_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint32{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint32.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_compactfheuint32_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm.compactfheuint32_encrypt_with_compact_public_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint32_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint32_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint32_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint32_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint64{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint64.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_compactfheuint64_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm.compactfheuint64_encrypt_with_compact_public_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint64_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint64_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint64_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint64_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class CompactFheUint8{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(CompactFheUint8.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_compactfheuint8_free(ptr)}static encrypt_with_compact_public_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheCompactPublicKey);wasm.compactfheuint8_encrypt_with_compact_public_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}expand(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheint128_expand(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint8_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint8_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.compactfheuint8_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.compactfheuint8_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return CompactFheUint8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheBool{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheBool.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fhebool_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fhebool_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fhebool_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fhebool_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fhebool_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fhebool_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0!==0}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fhebool_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fhebool_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fhebool_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fhebool_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheBool.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheInt128{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt128.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheint128_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint128_encrypt_with_client_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheint128_encrypt_with_public_key(retptr,addHeapObject(value),public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheint128_encrypt_with_compressed_public_key(retptr,addHeapObject(value),compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheint128_encrypt_with_compact_public_key(retptr,addHeapObject(value),compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint128_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return takeObject(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint128_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint128_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint128_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint128_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheInt16{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt16.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheint16_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint16_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheint16_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheint16_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheint16_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint16_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint16_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint16_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint16_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint16_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheInt160{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt160.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheint160_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint160_encrypt_with_client_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheint160_encrypt_with_public_key(retptr,addHeapObject(value),public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheint160_encrypt_with_compressed_public_key(retptr,addHeapObject(value),compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheint160_encrypt_with_compact_public_key(retptr,addHeapObject(value),compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint160_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return takeObject(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint160_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint160_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint160_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint160_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheInt256{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt256.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheint256_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint256_encrypt_with_client_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheint256_encrypt_with_public_key(retptr,addHeapObject(value),public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheint256_encrypt_with_compressed_public_key(retptr,addHeapObject(value),compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheint256_encrypt_with_compact_public_key(retptr,addHeapObject(value),compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint256_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return takeObject(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint256_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint256_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint256_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint256_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheInt32{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt32.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheint32_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint32_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheint32_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheint32_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheint32_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint32_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint32_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint32_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint32_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint32_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheInt64{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt64.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheint64_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint64_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheint64_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheint64_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheint64_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint64_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getBigInt64Memory0()[retptr/8+0];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}return r0}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint64_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint64_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint64_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint64_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheInt8{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheInt8.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheint8_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint8_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheint8_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheint8_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheint8_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheint8_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint8_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint8_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheint8_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheint8_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheInt8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheUint128{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint128.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheuint128_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint128_encrypt_with_client_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheuint128_encrypt_with_public_key(retptr,addHeapObject(value),public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheuint128_encrypt_with_compressed_public_key(retptr,addHeapObject(value),compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheuint128_encrypt_with_compact_public_key(retptr,addHeapObject(value),compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint128_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return takeObject(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint128_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint128_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint128_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint128_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint128.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheUint16{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint16.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheuint16_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint16_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheuint16_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheuint16_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheuint16_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint16_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint16_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint16_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint16_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint16_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint16.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheUint160{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint160.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheuint160_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint160_encrypt_with_client_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheuint160_encrypt_with_public_key(retptr,addHeapObject(value),public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheuint160_encrypt_with_compressed_public_key(retptr,addHeapObject(value),compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheuint160_encrypt_with_compact_public_key(retptr,addHeapObject(value),compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint160_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return takeObject(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint160_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint160_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint160_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint160_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint160.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheUint256{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint256.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheuint256_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint256_encrypt_with_client_key(retptr,addHeapObject(value),client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheuint256_encrypt_with_public_key(retptr,addHeapObject(value),public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheuint256_encrypt_with_compressed_public_key(retptr,addHeapObject(value),compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheuint256_encrypt_with_compact_public_key(retptr,addHeapObject(value),compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint256_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return takeObject(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint256_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint256_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint256_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint256_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint256.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheUint32{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint32.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheuint32_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint32_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheuint32_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheuint32_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheuint32_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint32_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0>>>0}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint32_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint32_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint32_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint32_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint32.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheUint64{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint64.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheuint64_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint64_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheuint64_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheuint64_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheuint64_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint64_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getBigInt64Memory0()[retptr/8+0];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}return BigInt.asUintN(64,r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint64_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint64_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint64_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint64_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint64.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class FheUint8{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(FheUint8.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_fheuint8_free(ptr)}static encrypt_with_client_key(value,client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint8_encrypt_with_client_key(retptr,value,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_public_key(value,public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(public_key,TfhePublicKey);wasm.fheuint8_encrypt_with_public_key(retptr,value,public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compressed_public_key(value,compressed_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compressed_public_key,TfheCompressedPublicKey);wasm.fheuint8_encrypt_with_compressed_public_key(retptr,value,compressed_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static encrypt_with_compact_public_key(value,compact_public_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(compact_public_key,TfheCompactPublicKey);wasm.fheuint8_encrypt_with_compact_public_key(retptr,value,compact_public_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decrypt(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.fheuint8_decrypt(retptr,this.__wbg_ptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return r0}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint8_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint8_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}safe_serialize(serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.fheuint8_safe_serialize(retptr,this.__wbg_ptr,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static safe_deserialize(buffer,serialized_size_limit){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.fheuint8_safe_deserialize(retptr,ptr0,len0,serialized_size_limit);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return FheUint8.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class TfheClientKey{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(TfheClientKey.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_tfheclientkey_free(ptr)}static generate(config){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(config,TfheConfig);wasm.tfheclientkey_generate(retptr,config.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheClientKey.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static generate_with_seed(config,seed){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(config,TfheConfig);wasm.tfheclientkey_generate_with_seed(retptr,config.__wbg_ptr,addHeapObject(seed));var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheClientKey.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.tfheclientkey_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.tfheclientkey_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheClientKey.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class TfheCompactPublicKey{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(TfheCompactPublicKey.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_tfhecompactpublickey_free(ptr)}static new(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.tfhecompactpublickey_new(retptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheCompactPublicKey.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.tfhecompactpublickey_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.tfhecompactpublickey_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheCompactPublicKey.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class TfheCompressedPublicKey{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(TfheCompressedPublicKey.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_tfhecompressedpublickey_free(ptr)}static new(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.tfhecompressedpublickey_new(retptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheCompressedPublicKey.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}decompress(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.tfhecompressedpublickey_decompress(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfhePublicKey.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.tfhecompressedpublickey_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.tfhecompressedpublickey_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfheCompressedPublicKey.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}class TfheConfig{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(TfheConfig.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_tfheconfig_free(ptr)}}class TfheConfigBuilder{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(TfheConfigBuilder.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_tfheconfigbuilder_free(ptr)}static default(){const ret=wasm.tfheconfigbuilder_default();return TfheConfigBuilder.__wrap(ret)}static default_with_small_encryption(){const ret=wasm.tfheconfigbuilder_default_with_small_encryption();return TfheConfigBuilder.__wrap(ret)}static default_with_big_encryption(){const ret=wasm.tfheconfigbuilder_default();return TfheConfigBuilder.__wrap(ret)}build(){const ptr=this.__destroy_into_raw();const ret=wasm.tfheconfigbuilder_build(ptr);return TfheConfig.__wrap(ret)}}class TfhePublicKey{static __wrap(ptr){ptr=ptr>>>0;const obj=Object.create(TfhePublicKey.prototype);obj.__wbg_ptr=ptr;return obj}__destroy_into_raw(){const ptr=this.__wbg_ptr;this.__wbg_ptr=0;return ptr}free(){const ptr=this.__destroy_into_raw();wasm.__wbg_tfhepublickey_free(ptr)}static new(client_key){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(client_key,TfheClientKey);wasm.tfhepublickey_new(retptr,client_key.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfhePublicKey.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}serialize(){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.tfhepublickey_serialize(retptr,this.__wbg_ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];var r3=getInt32Memory0()[retptr/4+3];if(r3){throw takeObject(r2)}var v1=getArrayU8FromWasm0(r0,r1).slice();wasm.__wbindgen_free(r0,r1*1);return v1}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static deserialize(buffer){try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passArray8ToWasm0(buffer,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;wasm.tfhepublickey_deserialize(retptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];var r2=getInt32Memory0()[retptr/4+2];if(r2){throw takeObject(r1)}return TfhePublicKey.__wrap(r0)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}async function __wbg_load(module,imports){if(typeof Response==="function"&&module instanceof Response){if(typeof WebAssembly.instantiateStreaming==="function"){try{return await WebAssembly.instantiateStreaming(module,imports)}catch(e){if(module.headers.get("Content-Type")!="application/wasm"){console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",e)}else{throw e}}}const bytes=await module.arrayBuffer();return await WebAssembly.instantiate(bytes,imports)}else{const instance=await WebAssembly.instantiate(module,imports);if(instance instanceof WebAssembly.Instance){return{instance:instance,module:module}}else{return instance}}}function __wbg_get_imports(){const imports={};imports.wbg={};imports.wbg.__wbindgen_bigint_from_u64=function(arg0){const ret=BigInt.asUintN(64,arg0);return addHeapObject(ret)};imports.wbg.__wbindgen_shr=function(arg0,arg1){const ret=getObject(arg0)>>getObject(arg1);return addHeapObject(ret)};imports.wbg.__wbindgen_object_drop_ref=function(arg0){takeObject(arg0)};imports.wbg.__wbindgen_bigint_from_i64=function(arg0){const ret=arg0;return addHeapObject(ret)};imports.wbg.__wbindgen_jsval_eq=function(arg0,arg1){const ret=getObject(arg0)===getObject(arg1);return ret};imports.wbg.__wbindgen_error_new=function(arg0,arg1){const ret=new Error(getStringFromWasm0(arg0,arg1));return addHeapObject(ret)};imports.wbg.__wbindgen_bigint_from_i128=function(arg0,arg1){const ret=arg0<>>0,arg2>>>0);return addHeapObject(ret)};imports.wbg.__wbg_new_bc5d9aad3f9ac80e=function(arg0){const ret=new Uint8Array(getObject(arg0));return addHeapObject(ret)};imports.wbg.__wbg_set_4b3aa8445ac1e91c=function(arg0,arg1,arg2){getObject(arg0).set(getObject(arg1),arg2>>>0)};imports.wbg.__wbg_newwithlength_89eca18f2603a999=function(arg0){const ret=new Uint8Array(arg0>>>0);return addHeapObject(ret)};imports.wbg.__wbg_subarray_7649d027b2b141b3=function(arg0,arg1,arg2){const ret=getObject(arg0).subarray(arg1>>>0,arg2>>>0);return addHeapObject(ret)};imports.wbg.__wbindgen_object_clone_ref=function(arg0){const ret=getObject(arg0);return addHeapObject(ret)};imports.wbg.__wbindgen_bigint_get_as_i64=function(arg0,arg1){const v=getObject(arg1);const ret=typeof v==="bigint"?v:undefined;getBigInt64Memory0()[arg0/8+1]=isLikeNone(ret)?BigInt(0):ret;getInt32Memory0()[arg0/4+0]=!isLikeNone(ret)};imports.wbg.__wbindgen_debug_string=function(arg0,arg1){const ret=debugString(getObject(arg1));const ptr1=passStringToWasm0(ret,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len1=WASM_VECTOR_LEN;getInt32Memory0()[arg0/4+1]=len1;getInt32Memory0()[arg0/4+0]=ptr1};imports.wbg.__wbindgen_throw=function(arg0,arg1){throw new Error(getStringFromWasm0(arg0,arg1))};imports.wbg.__wbindgen_memory=function(){const ret=wasm.memory;return addHeapObject(ret)};return imports}function __wbg_finalize_init(instance,module){wasm=instance.exports;__wbg_init.__wbindgen_wasm_module=module;cachedBigInt64Memory0=null;cachedInt32Memory0=null;cachedUint8Memory0=null;return wasm}async function __wbg_init(input){if(wasm!==undefined)return wasm;const imports=__wbg_get_imports();if(typeof input==="string"||typeof Request==="function"&&input instanceof Request||typeof URL==="function"&&input instanceof URL){input=fetch(input)}const{instance,module}=await __wbg_load(await input,imports);return __wbg_finalize_init(instance,module)}let initialized;const initFhevm=async()=>{if(!initialized){try{initialized=await __wbg_init(wasm$1)}catch(_){initialized=await __wbg_init(wasm$1())}}return initialized};const asyncInitFhevm=async()=>{try{await initFhevm()}catch(err){throw new Error(`Error initializing FhenixClient ${err}`)}};function assertIs(is,expected,value){if(!is){throw new Error(`Expected value which is \`${expected}\`, received value of type \`${typeof value}\`.`)}}function isString(value){const is=typeof value==="string";assertIs(is,"string",value)}function isPlainObject$1(value){if(typeof value!=="object"||value===null){return false}const prototype=Object.getPrototypeOf(value);const is=(prototype===null||prototype===Object.prototype||Object.getPrototypeOf(prototype)===null)&&!(Symbol.toStringTag in value)&&!(Symbol.iterator in value);assertIs(is,"plain object",value);return true}function isBigIntOrHexString(value){const is=typeof value==="bigint"||typeof value==="string";assertIs(is,"bigint or hex string",value)}function isNumber(value){const is=typeof value==="number"&&!Number.isNaN(value);assertIs(is,"number",value)}function isBigIntOrNumber(value){const is=typeof value==="bigint";if(!is){try{isNumber(value)}catch(e){throw new Error(`Value ${value} is not a number or bigint: ${typeof value}`)}}}const ValidateUintInRange=(value,max,min)=>{isNumber(value);if(value>max||value{const cleanString=hexString.length%2===1?`0${hexString}`:hexString;const arr=cleanString.replace(/^0x/,"").match(/.{1,2}/g);if(!arr)return new Uint8Array;return new Uint8Array(arr.map(byte=>parseInt(byte,16)))};const toHexString$1=bytes=>bytes.reduce((str,byte)=>str+byte.toString(16).padStart(2,"0"),"");function toBigInt(value){return ethersToBigInt(value)}function toBeArray(value){return ethersToBeArray(value)}function isAddress$1(address){if(!_isAddress(address)){throw new Error(`Address ${address} is not valid EVM address`)}}function _isAddress(value){try{if(!value.startsWith("0x")){return false}else if(value.length!==42){return false}return true}catch(error){return false}}const Nibbles="0123456789abcdef";const maxValue=9007199254740991;const BN_0$1=BigInt(0);function ethersToBigInt(value){if(value instanceof Uint8Array){let result="0x0";for(const v of value){result+=Nibbles[v>>4];result+=Nibbles[v&15]}return BigInt(result)}return getBigInt(value)}function ethersToBeArray(_value){const value=getUint(_value);if(value===BN_0$1){return new Uint8Array([])}let hex=value.toString(16);if(hex.length%2){hex="0"+hex}const result=new Uint8Array(hex.length/2);for(let i=0;i=BN_0$1,"unsigned value cannot be negative");return result}function getBigInt(value){switch(typeof value){case"bigint":return value;case"number":assertArgument$1(Number.isInteger(value),"underflow");assertArgument$1(value>=-maxValue&&value<=maxValue,"overflow");return BigInt(value);case"string":try{if(value===""){throw new Error("empty string")}if(value[0]==="-"&&value[1]!=="-"){return-BigInt(value.substring(1))}return BigInt(value)}catch(e){assertArgument$1(false,`invalid BigNumberish string: ${e.message}`)}}assertArgument$1(false,"invalid BigNumberish value")}function assertArgument$1(check,message){if(!check){throw new Error(message)}}function toABIEncodedUint32(value){if(value<0||value>4294967295){throw new RangeError("Number must be between 0 and 2^32 - 1.")}return value.toString(16).padStart(64,"0")}const stringToUint8Array=value=>{return new Uint8Array(value.split("").map(c=>c.charCodeAt(0)))};function bigintToUint8Array(bigNum){const byteLength=32;const byteArray=new Uint8Array(byteLength);const mask=BigInt(255);for(let i=0;i>=BigInt(8)}return byteArray}const chainIsHardhat=chainId=>{if(chainId==null)return false;return parseInt(chainId)===31337};const hardhatMockUnseal=value=>{let result=BigInt(0);for(const byteArrayItem of stringToUint8Array(value)){result=(result<({data:bigintToUint8Array(BigInt(value)),securityZone:securityZone||0});exports.EncryptionTypes=void 0;(function(EncryptionTypes){EncryptionTypes["bool"]="bool";EncryptionTypes["uint8"]="uint8";EncryptionTypes["uint16"]="uint16";EncryptionTypes["uint32"]="uint32";EncryptionTypes["uint64"]="uint64";EncryptionTypes["uint128"]="uint128";EncryptionTypes["uint256"]="uint256";EncryptionTypes["address"]="address"})(exports.EncryptionTypes||(exports.EncryptionTypes={}));function determineRequestMethod(provider){if("request"in provider&&typeof provider.request==="function"){return(p,method,params)=>p.request({method:method,params:params})}else if("send"in provider&&typeof provider.send==="function"){return(p,method,params)=>p.send(method,params)}else{throw new Error("Received unsupported provider. 'send' or 'request' method not found")}}function determineRequestSigner(provider){if("getSigner"in provider&&typeof provider.getSigner==="function"){return p=>p.getSigner()}else{throw new Error("The supplied provider cannot get a signer")}}var commonjsGlobal=typeof globalThis!=="undefined"?globalThis:typeof window!=="undefined"?window:typeof global!=="undefined"?global:typeof self!=="undefined"?self:{};function getAugmentedNamespace(n){if(n.__esModule)return n;var f=n.default;if(typeof f=="function"){var a=function a(){if(this instanceof a){return Reflect.construct(f,arguments,this.constructor)}return f.apply(this,arguments)};a.prototype=f.prototype}else a={};Object.defineProperty(a,"__esModule",{value:true});Object.keys(n).forEach(function(k){var d=Object.getOwnPropertyDescriptor(n,k);Object.defineProperty(a,k,d.get?d:{enumerable:true,get:function(){return n[k]}})});return a}function commonjsRequire(path){throw new Error('Could not dynamically require "'+path+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var naclFast={exports:{}};var _nodeResolve_empty={};var _nodeResolve_empty$1=Object.freeze({__proto__:null,default:_nodeResolve_empty});var require$$0=getAugmentedNamespace(_nodeResolve_empty$1);(function(module){(function(nacl){var gf=function(init){var i,r=new Float64Array(16);if(init)for(i=0;i>24&255;x[i+1]=h>>16&255;x[i+2]=h>>8&255;x[i+3]=h&255;x[i+4]=l>>24&255;x[i+5]=l>>16&255;x[i+6]=l>>8&255;x[i+7]=l&255}function vn(x,xi,y,yi,n){var i,d=0;for(i=0;i>>8)-1}function crypto_verify_16(x,xi,y,yi){return vn(x,xi,y,yi,16)}function crypto_verify_32(x,xi,y,yi){return vn(x,xi,y,yi,32)}function core_salsa20(o,p,k,c){var j0=c[0]&255|(c[1]&255)<<8|(c[2]&255)<<16|(c[3]&255)<<24,j1=k[0]&255|(k[1]&255)<<8|(k[2]&255)<<16|(k[3]&255)<<24,j2=k[4]&255|(k[5]&255)<<8|(k[6]&255)<<16|(k[7]&255)<<24,j3=k[8]&255|(k[9]&255)<<8|(k[10]&255)<<16|(k[11]&255)<<24,j4=k[12]&255|(k[13]&255)<<8|(k[14]&255)<<16|(k[15]&255)<<24,j5=c[4]&255|(c[5]&255)<<8|(c[6]&255)<<16|(c[7]&255)<<24,j6=p[0]&255|(p[1]&255)<<8|(p[2]&255)<<16|(p[3]&255)<<24,j7=p[4]&255|(p[5]&255)<<8|(p[6]&255)<<16|(p[7]&255)<<24,j8=p[8]&255|(p[9]&255)<<8|(p[10]&255)<<16|(p[11]&255)<<24,j9=p[12]&255|(p[13]&255)<<8|(p[14]&255)<<16|(p[15]&255)<<24,j10=c[8]&255|(c[9]&255)<<8|(c[10]&255)<<16|(c[11]&255)<<24,j11=k[16]&255|(k[17]&255)<<8|(k[18]&255)<<16|(k[19]&255)<<24,j12=k[20]&255|(k[21]&255)<<8|(k[22]&255)<<16|(k[23]&255)<<24,j13=k[24]&255|(k[25]&255)<<8|(k[26]&255)<<16|(k[27]&255)<<24,j14=k[28]&255|(k[29]&255)<<8|(k[30]&255)<<16|(k[31]&255)<<24,j15=c[12]&255|(c[13]&255)<<8|(c[14]&255)<<16|(c[15]&255)<<24;var x0=j0,x1=j1,x2=j2,x3=j3,x4=j4,x5=j5,x6=j6,x7=j7,x8=j8,x9=j9,x10=j10,x11=j11,x12=j12,x13=j13,x14=j14,x15=j15,u;for(var i=0;i<20;i+=2){u=x0+x12|0;x4^=u<<7|u>>>32-7;u=x4+x0|0;x8^=u<<9|u>>>32-9;u=x8+x4|0;x12^=u<<13|u>>>32-13;u=x12+x8|0;x0^=u<<18|u>>>32-18;u=x5+x1|0;x9^=u<<7|u>>>32-7;u=x9+x5|0;x13^=u<<9|u>>>32-9;u=x13+x9|0;x1^=u<<13|u>>>32-13;u=x1+x13|0;x5^=u<<18|u>>>32-18;u=x10+x6|0;x14^=u<<7|u>>>32-7;u=x14+x10|0;x2^=u<<9|u>>>32-9;u=x2+x14|0;x6^=u<<13|u>>>32-13;u=x6+x2|0;x10^=u<<18|u>>>32-18;u=x15+x11|0;x3^=u<<7|u>>>32-7;u=x3+x15|0;x7^=u<<9|u>>>32-9;u=x7+x3|0;x11^=u<<13|u>>>32-13;u=x11+x7|0;x15^=u<<18|u>>>32-18;u=x0+x3|0;x1^=u<<7|u>>>32-7;u=x1+x0|0;x2^=u<<9|u>>>32-9;u=x2+x1|0;x3^=u<<13|u>>>32-13;u=x3+x2|0;x0^=u<<18|u>>>32-18;u=x5+x4|0;x6^=u<<7|u>>>32-7;u=x6+x5|0;x7^=u<<9|u>>>32-9;u=x7+x6|0;x4^=u<<13|u>>>32-13;u=x4+x7|0;x5^=u<<18|u>>>32-18;u=x10+x9|0;x11^=u<<7|u>>>32-7;u=x11+x10|0;x8^=u<<9|u>>>32-9;u=x8+x11|0;x9^=u<<13|u>>>32-13;u=x9+x8|0;x10^=u<<18|u>>>32-18;u=x15+x14|0;x12^=u<<7|u>>>32-7;u=x12+x15|0;x13^=u<<9|u>>>32-9;u=x13+x12|0;x14^=u<<13|u>>>32-13;u=x14+x13|0;x15^=u<<18|u>>>32-18}x0=x0+j0|0;x1=x1+j1|0;x2=x2+j2|0;x3=x3+j3|0;x4=x4+j4|0;x5=x5+j5|0;x6=x6+j6|0;x7=x7+j7|0;x8=x8+j8|0;x9=x9+j9|0;x10=x10+j10|0;x11=x11+j11|0;x12=x12+j12|0;x13=x13+j13|0;x14=x14+j14|0;x15=x15+j15|0;o[0]=x0>>>0&255;o[1]=x0>>>8&255;o[2]=x0>>>16&255;o[3]=x0>>>24&255;o[4]=x1>>>0&255;o[5]=x1>>>8&255;o[6]=x1>>>16&255;o[7]=x1>>>24&255;o[8]=x2>>>0&255;o[9]=x2>>>8&255;o[10]=x2>>>16&255;o[11]=x2>>>24&255;o[12]=x3>>>0&255;o[13]=x3>>>8&255;o[14]=x3>>>16&255;o[15]=x3>>>24&255;o[16]=x4>>>0&255;o[17]=x4>>>8&255;o[18]=x4>>>16&255;o[19]=x4>>>24&255;o[20]=x5>>>0&255;o[21]=x5>>>8&255;o[22]=x5>>>16&255;o[23]=x5>>>24&255;o[24]=x6>>>0&255;o[25]=x6>>>8&255;o[26]=x6>>>16&255;o[27]=x6>>>24&255;o[28]=x7>>>0&255;o[29]=x7>>>8&255;o[30]=x7>>>16&255;o[31]=x7>>>24&255;o[32]=x8>>>0&255;o[33]=x8>>>8&255;o[34]=x8>>>16&255;o[35]=x8>>>24&255;o[36]=x9>>>0&255;o[37]=x9>>>8&255;o[38]=x9>>>16&255;o[39]=x9>>>24&255;o[40]=x10>>>0&255;o[41]=x10>>>8&255;o[42]=x10>>>16&255;o[43]=x10>>>24&255;o[44]=x11>>>0&255;o[45]=x11>>>8&255;o[46]=x11>>>16&255;o[47]=x11>>>24&255;o[48]=x12>>>0&255;o[49]=x12>>>8&255;o[50]=x12>>>16&255;o[51]=x12>>>24&255;o[52]=x13>>>0&255;o[53]=x13>>>8&255;o[54]=x13>>>16&255;o[55]=x13>>>24&255;o[56]=x14>>>0&255;o[57]=x14>>>8&255;o[58]=x14>>>16&255;o[59]=x14>>>24&255;o[60]=x15>>>0&255;o[61]=x15>>>8&255;o[62]=x15>>>16&255;o[63]=x15>>>24&255}function core_hsalsa20(o,p,k,c){var j0=c[0]&255|(c[1]&255)<<8|(c[2]&255)<<16|(c[3]&255)<<24,j1=k[0]&255|(k[1]&255)<<8|(k[2]&255)<<16|(k[3]&255)<<24,j2=k[4]&255|(k[5]&255)<<8|(k[6]&255)<<16|(k[7]&255)<<24,j3=k[8]&255|(k[9]&255)<<8|(k[10]&255)<<16|(k[11]&255)<<24,j4=k[12]&255|(k[13]&255)<<8|(k[14]&255)<<16|(k[15]&255)<<24,j5=c[4]&255|(c[5]&255)<<8|(c[6]&255)<<16|(c[7]&255)<<24,j6=p[0]&255|(p[1]&255)<<8|(p[2]&255)<<16|(p[3]&255)<<24,j7=p[4]&255|(p[5]&255)<<8|(p[6]&255)<<16|(p[7]&255)<<24,j8=p[8]&255|(p[9]&255)<<8|(p[10]&255)<<16|(p[11]&255)<<24,j9=p[12]&255|(p[13]&255)<<8|(p[14]&255)<<16|(p[15]&255)<<24,j10=c[8]&255|(c[9]&255)<<8|(c[10]&255)<<16|(c[11]&255)<<24,j11=k[16]&255|(k[17]&255)<<8|(k[18]&255)<<16|(k[19]&255)<<24,j12=k[20]&255|(k[21]&255)<<8|(k[22]&255)<<16|(k[23]&255)<<24,j13=k[24]&255|(k[25]&255)<<8|(k[26]&255)<<16|(k[27]&255)<<24,j14=k[28]&255|(k[29]&255)<<8|(k[30]&255)<<16|(k[31]&255)<<24,j15=c[12]&255|(c[13]&255)<<8|(c[14]&255)<<16|(c[15]&255)<<24;var x0=j0,x1=j1,x2=j2,x3=j3,x4=j4,x5=j5,x6=j6,x7=j7,x8=j8,x9=j9,x10=j10,x11=j11,x12=j12,x13=j13,x14=j14,x15=j15,u;for(var i=0;i<20;i+=2){u=x0+x12|0;x4^=u<<7|u>>>32-7;u=x4+x0|0;x8^=u<<9|u>>>32-9;u=x8+x4|0;x12^=u<<13|u>>>32-13;u=x12+x8|0;x0^=u<<18|u>>>32-18;u=x5+x1|0;x9^=u<<7|u>>>32-7;u=x9+x5|0;x13^=u<<9|u>>>32-9;u=x13+x9|0;x1^=u<<13|u>>>32-13;u=x1+x13|0;x5^=u<<18|u>>>32-18;u=x10+x6|0;x14^=u<<7|u>>>32-7;u=x14+x10|0;x2^=u<<9|u>>>32-9;u=x2+x14|0;x6^=u<<13|u>>>32-13;u=x6+x2|0;x10^=u<<18|u>>>32-18;u=x15+x11|0;x3^=u<<7|u>>>32-7;u=x3+x15|0;x7^=u<<9|u>>>32-9;u=x7+x3|0;x11^=u<<13|u>>>32-13;u=x11+x7|0;x15^=u<<18|u>>>32-18;u=x0+x3|0;x1^=u<<7|u>>>32-7;u=x1+x0|0;x2^=u<<9|u>>>32-9;u=x2+x1|0;x3^=u<<13|u>>>32-13;u=x3+x2|0;x0^=u<<18|u>>>32-18;u=x5+x4|0;x6^=u<<7|u>>>32-7;u=x6+x5|0;x7^=u<<9|u>>>32-9;u=x7+x6|0;x4^=u<<13|u>>>32-13;u=x4+x7|0;x5^=u<<18|u>>>32-18;u=x10+x9|0;x11^=u<<7|u>>>32-7;u=x11+x10|0;x8^=u<<9|u>>>32-9;u=x8+x11|0;x9^=u<<13|u>>>32-13;u=x9+x8|0;x10^=u<<18|u>>>32-18;u=x15+x14|0;x12^=u<<7|u>>>32-7;u=x12+x15|0;x13^=u<<9|u>>>32-9;u=x13+x12|0;x14^=u<<13|u>>>32-13;u=x14+x13|0;x15^=u<<18|u>>>32-18}o[0]=x0>>>0&255;o[1]=x0>>>8&255;o[2]=x0>>>16&255;o[3]=x0>>>24&255;o[4]=x5>>>0&255;o[5]=x5>>>8&255;o[6]=x5>>>16&255;o[7]=x5>>>24&255;o[8]=x10>>>0&255;o[9]=x10>>>8&255;o[10]=x10>>>16&255;o[11]=x10>>>24&255;o[12]=x15>>>0&255;o[13]=x15>>>8&255;o[14]=x15>>>16&255;o[15]=x15>>>24&255;o[16]=x6>>>0&255;o[17]=x6>>>8&255;o[18]=x6>>>16&255;o[19]=x6>>>24&255;o[20]=x7>>>0&255;o[21]=x7>>>8&255;o[22]=x7>>>16&255;o[23]=x7>>>24&255;o[24]=x8>>>0&255;o[25]=x8>>>8&255;o[26]=x8>>>16&255;o[27]=x8>>>24&255;o[28]=x9>>>0&255;o[29]=x9>>>8&255;o[30]=x9>>>16&255;o[31]=x9>>>24&255}function crypto_core_salsa20(out,inp,k,c){core_salsa20(out,inp,k,c)}function crypto_core_hsalsa20(out,inp,k,c){core_hsalsa20(out,inp,k,c)}var sigma=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k){var z=new Uint8Array(16),x=new Uint8Array(64);var u,i;for(i=0;i<16;i++)z[i]=0;for(i=0;i<8;i++)z[i]=n[i];while(b>=64){crypto_core_salsa20(x,z,k,sigma);for(i=0;i<64;i++)c[cpos+i]=m[mpos+i]^x[i];u=1;for(i=8;i<16;i++){u=u+(z[i]&255)|0;z[i]=u&255;u>>>=8}b-=64;cpos+=64;mpos+=64}if(b>0){crypto_core_salsa20(x,z,k,sigma);for(i=0;i=64){crypto_core_salsa20(x,z,k,sigma);for(i=0;i<64;i++)c[cpos+i]=x[i];u=1;for(i=8;i<16;i++){u=u+(z[i]&255)|0;z[i]=u&255;u>>>=8}b-=64;cpos+=64}if(b>0){crypto_core_salsa20(x,z,k,sigma);for(i=0;i>>13|t1<<3)&8191;t2=key[4]&255|(key[5]&255)<<8;this.r[2]=(t1>>>10|t2<<6)&7939;t3=key[6]&255|(key[7]&255)<<8;this.r[3]=(t2>>>7|t3<<9)&8191;t4=key[8]&255|(key[9]&255)<<8;this.r[4]=(t3>>>4|t4<<12)&255;this.r[5]=t4>>>1&8190;t5=key[10]&255|(key[11]&255)<<8;this.r[6]=(t4>>>14|t5<<2)&8191;t6=key[12]&255|(key[13]&255)<<8;this.r[7]=(t5>>>11|t6<<5)&8065;t7=key[14]&255|(key[15]&255)<<8;this.r[8]=(t6>>>8|t7<<8)&8191;this.r[9]=t7>>>5&127;this.pad[0]=key[16]&255|(key[17]&255)<<8;this.pad[1]=key[18]&255|(key[19]&255)<<8;this.pad[2]=key[20]&255|(key[21]&255)<<8;this.pad[3]=key[22]&255|(key[23]&255)<<8;this.pad[4]=key[24]&255|(key[25]&255)<<8;this.pad[5]=key[26]&255|(key[27]&255)<<8;this.pad[6]=key[28]&255|(key[29]&255)<<8;this.pad[7]=key[30]&255|(key[31]&255)<<8};poly1305.prototype.blocks=function(m,mpos,bytes){var hibit=this.fin?0:1<<11;var t0,t1,t2,t3,t4,t5,t6,t7,c;var d0,d1,d2,d3,d4,d5,d6,d7,d8,d9;var h0=this.h[0],h1=this.h[1],h2=this.h[2],h3=this.h[3],h4=this.h[4],h5=this.h[5],h6=this.h[6],h7=this.h[7],h8=this.h[8],h9=this.h[9];var r0=this.r[0],r1=this.r[1],r2=this.r[2],r3=this.r[3],r4=this.r[4],r5=this.r[5],r6=this.r[6],r7=this.r[7],r8=this.r[8],r9=this.r[9];while(bytes>=16){t0=m[mpos+0]&255|(m[mpos+1]&255)<<8;h0+=t0&8191;t1=m[mpos+2]&255|(m[mpos+3]&255)<<8;h1+=(t0>>>13|t1<<3)&8191;t2=m[mpos+4]&255|(m[mpos+5]&255)<<8;h2+=(t1>>>10|t2<<6)&8191;t3=m[mpos+6]&255|(m[mpos+7]&255)<<8;h3+=(t2>>>7|t3<<9)&8191;t4=m[mpos+8]&255|(m[mpos+9]&255)<<8;h4+=(t3>>>4|t4<<12)&8191;h5+=t4>>>1&8191;t5=m[mpos+10]&255|(m[mpos+11]&255)<<8;h6+=(t4>>>14|t5<<2)&8191;t6=m[mpos+12]&255|(m[mpos+13]&255)<<8;h7+=(t5>>>11|t6<<5)&8191;t7=m[mpos+14]&255|(m[mpos+15]&255)<<8;h8+=(t6>>>8|t7<<8)&8191;h9+=t7>>>5|hibit;c=0;d0=c;d0+=h0*r0;d0+=h1*(5*r9);d0+=h2*(5*r8);d0+=h3*(5*r7);d0+=h4*(5*r6);c=d0>>>13;d0&=8191;d0+=h5*(5*r5);d0+=h6*(5*r4);d0+=h7*(5*r3);d0+=h8*(5*r2);d0+=h9*(5*r1);c+=d0>>>13;d0&=8191;d1=c;d1+=h0*r1;d1+=h1*r0;d1+=h2*(5*r9);d1+=h3*(5*r8);d1+=h4*(5*r7);c=d1>>>13;d1&=8191;d1+=h5*(5*r6);d1+=h6*(5*r5);d1+=h7*(5*r4);d1+=h8*(5*r3);d1+=h9*(5*r2);c+=d1>>>13;d1&=8191;d2=c;d2+=h0*r2;d2+=h1*r1;d2+=h2*r0;d2+=h3*(5*r9);d2+=h4*(5*r8);c=d2>>>13;d2&=8191;d2+=h5*(5*r7);d2+=h6*(5*r6);d2+=h7*(5*r5);d2+=h8*(5*r4);d2+=h9*(5*r3);c+=d2>>>13;d2&=8191;d3=c;d3+=h0*r3;d3+=h1*r2;d3+=h2*r1;d3+=h3*r0;d3+=h4*(5*r9);c=d3>>>13;d3&=8191;d3+=h5*(5*r8);d3+=h6*(5*r7);d3+=h7*(5*r6);d3+=h8*(5*r5);d3+=h9*(5*r4);c+=d3>>>13;d3&=8191;d4=c;d4+=h0*r4;d4+=h1*r3;d4+=h2*r2;d4+=h3*r1;d4+=h4*r0;c=d4>>>13;d4&=8191;d4+=h5*(5*r9);d4+=h6*(5*r8);d4+=h7*(5*r7);d4+=h8*(5*r6);d4+=h9*(5*r5);c+=d4>>>13;d4&=8191;d5=c;d5+=h0*r5;d5+=h1*r4;d5+=h2*r3;d5+=h3*r2;d5+=h4*r1;c=d5>>>13;d5&=8191;d5+=h5*r0;d5+=h6*(5*r9);d5+=h7*(5*r8);d5+=h8*(5*r7);d5+=h9*(5*r6);c+=d5>>>13;d5&=8191;d6=c;d6+=h0*r6;d6+=h1*r5;d6+=h2*r4;d6+=h3*r3;d6+=h4*r2;c=d6>>>13;d6&=8191;d6+=h5*r1;d6+=h6*r0;d6+=h7*(5*r9);d6+=h8*(5*r8);d6+=h9*(5*r7);c+=d6>>>13;d6&=8191;d7=c;d7+=h0*r7;d7+=h1*r6;d7+=h2*r5;d7+=h3*r4;d7+=h4*r3;c=d7>>>13;d7&=8191;d7+=h5*r2;d7+=h6*r1;d7+=h7*r0;d7+=h8*(5*r9);d7+=h9*(5*r8);c+=d7>>>13;d7&=8191;d8=c;d8+=h0*r8;d8+=h1*r7;d8+=h2*r6;d8+=h3*r5;d8+=h4*r4;c=d8>>>13;d8&=8191;d8+=h5*r3;d8+=h6*r2;d8+=h7*r1;d8+=h8*r0;d8+=h9*(5*r9);c+=d8>>>13;d8&=8191;d9=c;d9+=h0*r9;d9+=h1*r8;d9+=h2*r7;d9+=h3*r6;d9+=h4*r5;c=d9>>>13;d9&=8191;d9+=h5*r4;d9+=h6*r3;d9+=h7*r2;d9+=h8*r1;d9+=h9*r0;c+=d9>>>13;d9&=8191;c=(c<<2)+c|0;c=c+d0|0;d0=c&8191;c=c>>>13;d1+=c;h0=d0;h1=d1;h2=d2;h3=d3;h4=d4;h5=d5;h6=d6;h7=d7;h8=d8;h9=d9;mpos+=16;bytes-=16}this.h[0]=h0;this.h[1]=h1;this.h[2]=h2;this.h[3]=h3;this.h[4]=h4;this.h[5]=h5;this.h[6]=h6;this.h[7]=h7;this.h[8]=h8;this.h[9]=h9};poly1305.prototype.finish=function(mac,macpos){var g=new Uint16Array(10);var c,mask,f,i;if(this.leftover){i=this.leftover;this.buffer[i++]=1;for(;i<16;i++)this.buffer[i]=0;this.fin=1;this.blocks(this.buffer,0,16)}c=this.h[1]>>>13;this.h[1]&=8191;for(i=2;i<10;i++){this.h[i]+=c;c=this.h[i]>>>13;this.h[i]&=8191}this.h[0]+=c*5;c=this.h[0]>>>13;this.h[0]&=8191;this.h[1]+=c;c=this.h[1]>>>13;this.h[1]&=8191;this.h[2]+=c;g[0]=this.h[0]+5;c=g[0]>>>13;g[0]&=8191;for(i=1;i<10;i++){g[i]=this.h[i]+c;c=g[i]>>>13;g[i]&=8191}g[9]-=1<<13;mask=(c^1)-1;for(i=0;i<10;i++)g[i]&=mask;mask=~mask;for(i=0;i<10;i++)this.h[i]=this.h[i]&mask|g[i];this.h[0]=(this.h[0]|this.h[1]<<13)&65535;this.h[1]=(this.h[1]>>>3|this.h[2]<<10)&65535;this.h[2]=(this.h[2]>>>6|this.h[3]<<7)&65535;this.h[3]=(this.h[3]>>>9|this.h[4]<<4)&65535;this.h[4]=(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14)&65535;this.h[5]=(this.h[6]>>>2|this.h[7]<<11)&65535;this.h[6]=(this.h[7]>>>5|this.h[8]<<8)&65535;this.h[7]=(this.h[8]>>>8|this.h[9]<<5)&65535;f=this.h[0]+this.pad[0];this.h[0]=f&65535;for(i=1;i<8;i++){f=(this.h[i]+this.pad[i]|0)+(f>>>16)|0;this.h[i]=f&65535}mac[macpos+0]=this.h[0]>>>0&255;mac[macpos+1]=this.h[0]>>>8&255;mac[macpos+2]=this.h[1]>>>0&255;mac[macpos+3]=this.h[1]>>>8&255;mac[macpos+4]=this.h[2]>>>0&255;mac[macpos+5]=this.h[2]>>>8&255;mac[macpos+6]=this.h[3]>>>0&255;mac[macpos+7]=this.h[3]>>>8&255;mac[macpos+8]=this.h[4]>>>0&255;mac[macpos+9]=this.h[4]>>>8&255;mac[macpos+10]=this.h[5]>>>0&255;mac[macpos+11]=this.h[5]>>>8&255;mac[macpos+12]=this.h[6]>>>0&255;mac[macpos+13]=this.h[6]>>>8&255;mac[macpos+14]=this.h[7]>>>0&255;mac[macpos+15]=this.h[7]>>>8&255};poly1305.prototype.update=function(m,mpos,bytes){var i,want;if(this.leftover){want=16-this.leftover;if(want>bytes)want=bytes;for(i=0;i=16){want=bytes-bytes%16;this.blocks(m,mpos,want);mpos+=want;bytes-=want}if(bytes){for(i=0;i>16&1);m[i-1]&=65535}m[15]=t[15]-32767-(m[14]>>16&1);b=m[15]>>16&1;m[14]&=65535;sel25519(t,m,1-b)}for(i=0;i<16;i++){o[2*i]=t[i]&255;o[2*i+1]=t[i]>>8}}function neq25519(a,b){var c=new Uint8Array(32),d=new Uint8Array(32);pack25519(c,a);pack25519(d,b);return crypto_verify_32(c,0,d,0)}function par25519(a){var d=new Uint8Array(32);pack25519(d,a);return d[0]&1}function unpack25519(o,n){var i;for(i=0;i<16;i++)o[i]=n[2*i]+(n[2*i+1]<<8);o[15]&=32767}function A(o,a,b){for(var i=0;i<16;i++)o[i]=a[i]+b[i]}function Z(o,a,b){for(var i=0;i<16;i++)o[i]=a[i]-b[i]}function M(o,a,b){var v,c,t0=0,t1=0,t2=0,t3=0,t4=0,t5=0,t6=0,t7=0,t8=0,t9=0,t10=0,t11=0,t12=0,t13=0,t14=0,t15=0,t16=0,t17=0,t18=0,t19=0,t20=0,t21=0,t22=0,t23=0,t24=0,t25=0,t26=0,t27=0,t28=0,t29=0,t30=0,b0=b[0],b1=b[1],b2=b[2],b3=b[3],b4=b[4],b5=b[5],b6=b[6],b7=b[7],b8=b[8],b9=b[9],b10=b[10],b11=b[11],b12=b[12],b13=b[13],b14=b[14],b15=b[15];v=a[0];t0+=v*b0;t1+=v*b1;t2+=v*b2;t3+=v*b3;t4+=v*b4;t5+=v*b5;t6+=v*b6;t7+=v*b7;t8+=v*b8;t9+=v*b9;t10+=v*b10;t11+=v*b11;t12+=v*b12;t13+=v*b13;t14+=v*b14;t15+=v*b15;v=a[1];t1+=v*b0;t2+=v*b1;t3+=v*b2;t4+=v*b3;t5+=v*b4;t6+=v*b5;t7+=v*b6;t8+=v*b7;t9+=v*b8;t10+=v*b9;t11+=v*b10;t12+=v*b11;t13+=v*b12;t14+=v*b13;t15+=v*b14;t16+=v*b15;v=a[2];t2+=v*b0;t3+=v*b1;t4+=v*b2;t5+=v*b3;t6+=v*b4;t7+=v*b5;t8+=v*b6;t9+=v*b7;t10+=v*b8;t11+=v*b9;t12+=v*b10;t13+=v*b11;t14+=v*b12;t15+=v*b13;t16+=v*b14;t17+=v*b15;v=a[3];t3+=v*b0;t4+=v*b1;t5+=v*b2;t6+=v*b3;t7+=v*b4;t8+=v*b5;t9+=v*b6;t10+=v*b7;t11+=v*b8;t12+=v*b9;t13+=v*b10;t14+=v*b11;t15+=v*b12;t16+=v*b13;t17+=v*b14;t18+=v*b15;v=a[4];t4+=v*b0;t5+=v*b1;t6+=v*b2;t7+=v*b3;t8+=v*b4;t9+=v*b5;t10+=v*b6;t11+=v*b7;t12+=v*b8;t13+=v*b9;t14+=v*b10;t15+=v*b11;t16+=v*b12;t17+=v*b13;t18+=v*b14;t19+=v*b15;v=a[5];t5+=v*b0;t6+=v*b1;t7+=v*b2;t8+=v*b3;t9+=v*b4;t10+=v*b5;t11+=v*b6;t12+=v*b7;t13+=v*b8;t14+=v*b9;t15+=v*b10;t16+=v*b11;t17+=v*b12;t18+=v*b13;t19+=v*b14;t20+=v*b15;v=a[6];t6+=v*b0;t7+=v*b1;t8+=v*b2;t9+=v*b3;t10+=v*b4;t11+=v*b5;t12+=v*b6;t13+=v*b7;t14+=v*b8;t15+=v*b9;t16+=v*b10;t17+=v*b11;t18+=v*b12;t19+=v*b13;t20+=v*b14;t21+=v*b15;v=a[7];t7+=v*b0;t8+=v*b1;t9+=v*b2;t10+=v*b3;t11+=v*b4;t12+=v*b5;t13+=v*b6;t14+=v*b7;t15+=v*b8;t16+=v*b9;t17+=v*b10;t18+=v*b11;t19+=v*b12;t20+=v*b13;t21+=v*b14;t22+=v*b15;v=a[8];t8+=v*b0;t9+=v*b1;t10+=v*b2;t11+=v*b3;t12+=v*b4;t13+=v*b5;t14+=v*b6;t15+=v*b7;t16+=v*b8;t17+=v*b9;t18+=v*b10;t19+=v*b11;t20+=v*b12;t21+=v*b13;t22+=v*b14;t23+=v*b15;v=a[9];t9+=v*b0;t10+=v*b1;t11+=v*b2;t12+=v*b3;t13+=v*b4;t14+=v*b5;t15+=v*b6;t16+=v*b7;t17+=v*b8;t18+=v*b9;t19+=v*b10;t20+=v*b11;t21+=v*b12;t22+=v*b13;t23+=v*b14;t24+=v*b15;v=a[10];t10+=v*b0;t11+=v*b1;t12+=v*b2;t13+=v*b3;t14+=v*b4;t15+=v*b5;t16+=v*b6;t17+=v*b7;t18+=v*b8;t19+=v*b9;t20+=v*b10;t21+=v*b11;t22+=v*b12;t23+=v*b13;t24+=v*b14;t25+=v*b15;v=a[11];t11+=v*b0;t12+=v*b1;t13+=v*b2;t14+=v*b3;t15+=v*b4;t16+=v*b5;t17+=v*b6;t18+=v*b7;t19+=v*b8;t20+=v*b9;t21+=v*b10;t22+=v*b11;t23+=v*b12;t24+=v*b13;t25+=v*b14;t26+=v*b15;v=a[12];t12+=v*b0;t13+=v*b1;t14+=v*b2;t15+=v*b3;t16+=v*b4;t17+=v*b5;t18+=v*b6;t19+=v*b7;t20+=v*b8;t21+=v*b9;t22+=v*b10;t23+=v*b11;t24+=v*b12;t25+=v*b13;t26+=v*b14;t27+=v*b15;v=a[13];t13+=v*b0;t14+=v*b1;t15+=v*b2;t16+=v*b3;t17+=v*b4;t18+=v*b5;t19+=v*b6;t20+=v*b7;t21+=v*b8;t22+=v*b9;t23+=v*b10;t24+=v*b11;t25+=v*b12;t26+=v*b13;t27+=v*b14;t28+=v*b15;v=a[14];t14+=v*b0;t15+=v*b1;t16+=v*b2;t17+=v*b3;t18+=v*b4;t19+=v*b5;t20+=v*b6;t21+=v*b7;t22+=v*b8;t23+=v*b9;t24+=v*b10;t25+=v*b11;t26+=v*b12;t27+=v*b13;t28+=v*b14;t29+=v*b15;v=a[15];t15+=v*b0;t16+=v*b1;t17+=v*b2;t18+=v*b3;t19+=v*b4;t20+=v*b5;t21+=v*b6;t22+=v*b7;t23+=v*b8;t24+=v*b9;t25+=v*b10;t26+=v*b11;t27+=v*b12;t28+=v*b13;t29+=v*b14;t30+=v*b15;t0+=38*t16;t1+=38*t17;t2+=38*t18;t3+=38*t19;t4+=38*t20;t5+=38*t21;t6+=38*t22;t7+=38*t23;t8+=38*t24;t9+=38*t25;t10+=38*t26;t11+=38*t27;t12+=38*t28;t13+=38*t29;t14+=38*t30;c=1;v=t0+c+65535;c=Math.floor(v/65536);t0=v-c*65536;v=t1+c+65535;c=Math.floor(v/65536);t1=v-c*65536;v=t2+c+65535;c=Math.floor(v/65536);t2=v-c*65536;v=t3+c+65535;c=Math.floor(v/65536);t3=v-c*65536;v=t4+c+65535;c=Math.floor(v/65536);t4=v-c*65536;v=t5+c+65535;c=Math.floor(v/65536);t5=v-c*65536;v=t6+c+65535;c=Math.floor(v/65536);t6=v-c*65536;v=t7+c+65535;c=Math.floor(v/65536);t7=v-c*65536;v=t8+c+65535;c=Math.floor(v/65536);t8=v-c*65536;v=t9+c+65535;c=Math.floor(v/65536);t9=v-c*65536;v=t10+c+65535;c=Math.floor(v/65536);t10=v-c*65536;v=t11+c+65535;c=Math.floor(v/65536);t11=v-c*65536;v=t12+c+65535;c=Math.floor(v/65536);t12=v-c*65536;v=t13+c+65535;c=Math.floor(v/65536);t13=v-c*65536;v=t14+c+65535;c=Math.floor(v/65536);t14=v-c*65536;v=t15+c+65535;c=Math.floor(v/65536);t15=v-c*65536;t0+=c-1+37*(c-1);c=1;v=t0+c+65535;c=Math.floor(v/65536);t0=v-c*65536;v=t1+c+65535;c=Math.floor(v/65536);t1=v-c*65536;v=t2+c+65535;c=Math.floor(v/65536);t2=v-c*65536;v=t3+c+65535;c=Math.floor(v/65536);t3=v-c*65536;v=t4+c+65535;c=Math.floor(v/65536);t4=v-c*65536;v=t5+c+65535;c=Math.floor(v/65536);t5=v-c*65536;v=t6+c+65535;c=Math.floor(v/65536);t6=v-c*65536;v=t7+c+65535;c=Math.floor(v/65536);t7=v-c*65536;v=t8+c+65535;c=Math.floor(v/65536);t8=v-c*65536;v=t9+c+65535;c=Math.floor(v/65536);t9=v-c*65536;v=t10+c+65535;c=Math.floor(v/65536);t10=v-c*65536;v=t11+c+65535;c=Math.floor(v/65536);t11=v-c*65536;v=t12+c+65535;c=Math.floor(v/65536);t12=v-c*65536;v=t13+c+65535;c=Math.floor(v/65536);t13=v-c*65536;v=t14+c+65535;c=Math.floor(v/65536);t14=v-c*65536;v=t15+c+65535;c=Math.floor(v/65536);t15=v-c*65536;t0+=c-1+37*(c-1);o[0]=t0;o[1]=t1;o[2]=t2;o[3]=t3;o[4]=t4;o[5]=t5;o[6]=t6;o[7]=t7;o[8]=t8;o[9]=t9;o[10]=t10;o[11]=t11;o[12]=t12;o[13]=t13;o[14]=t14;o[15]=t15}function S(o,a){M(o,a,a)}function inv25519(o,i){var c=gf();var a;for(a=0;a<16;a++)c[a]=i[a];for(a=253;a>=0;a--){S(c,c);if(a!==2&&a!==4)M(c,c,i)}for(a=0;a<16;a++)o[a]=c[a]}function pow2523(o,i){var c=gf();var a;for(a=0;a<16;a++)c[a]=i[a];for(a=250;a>=0;a--){S(c,c);if(a!==1)M(c,c,i)}for(a=0;a<16;a++)o[a]=c[a]}function crypto_scalarmult(q,n,p){var z=new Uint8Array(32);var x=new Float64Array(80),r,i;var a=gf(),b=gf(),c=gf(),d=gf(),e=gf(),f=gf();for(i=0;i<31;i++)z[i]=n[i];z[31]=n[31]&127|64;z[0]&=248;unpack25519(x,p);for(i=0;i<16;i++){b[i]=x[i];d[i]=a[i]=c[i]=0}a[0]=d[0]=1;for(i=254;i>=0;--i){r=z[i>>>3]>>>(i&7)&1;sel25519(a,b,r);sel25519(c,d,r);A(e,a,c);Z(a,a,c);A(c,b,d);Z(b,b,d);S(d,e);S(f,a);M(a,c,a);M(c,b,e);A(e,a,c);Z(a,a,c);S(b,a);Z(c,d,f);M(a,c,_121665);A(a,a,d);M(c,c,a);M(a,d,f);M(d,b,x);S(b,e);sel25519(a,b,r);sel25519(c,d,r)}for(i=0;i<16;i++){x[i+16]=a[i];x[i+32]=c[i];x[i+48]=b[i];x[i+64]=d[i]}var x32=x.subarray(32);var x16=x.subarray(16);inv25519(x32,x32);M(x16,x16,x32);pack25519(q,x16);return 0}function crypto_scalarmult_base(q,n){return crypto_scalarmult(q,n,_9)}function crypto_box_keypair(y,x){randombytes(x,32);return crypto_scalarmult_base(y,x)}function crypto_box_beforenm(k,y,x){var s=new Uint8Array(32);crypto_scalarmult(s,x,y);return crypto_core_hsalsa20(k,_0,s,sigma)}var crypto_box_afternm=crypto_secretbox;var crypto_box_open_afternm=crypto_secretbox_open;function crypto_box(c,m,d,n,y,x){var k=new Uint8Array(32);crypto_box_beforenm(k,y,x);return crypto_box_afternm(c,m,d,n,k)}function crypto_box_open(m,c,d,n,y,x){var k=new Uint8Array(32);crypto_box_beforenm(k,y,x);return crypto_box_open_afternm(m,c,d,n,k)}var K=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function crypto_hashblocks_hl(hh,hl,m,n){var wh=new Int32Array(16),wl=new Int32Array(16),bh0,bh1,bh2,bh3,bh4,bh5,bh6,bh7,bl0,bl1,bl2,bl3,bl4,bl5,bl6,bl7,th,tl,i,j,h,l,a,b,c,d;var ah0=hh[0],ah1=hh[1],ah2=hh[2],ah3=hh[3],ah4=hh[4],ah5=hh[5],ah6=hh[6],ah7=hh[7],al0=hl[0],al1=hl[1],al2=hl[2],al3=hl[3],al4=hl[4],al5=hl[5],al6=hl[6],al7=hl[7];var pos=0;while(n>=128){for(i=0;i<16;i++){j=8*i+pos;wh[i]=m[j+0]<<24|m[j+1]<<16|m[j+2]<<8|m[j+3];wl[i]=m[j+4]<<24|m[j+5]<<16|m[j+6]<<8|m[j+7]}for(i=0;i<80;i++){bh0=ah0;bh1=ah1;bh2=ah2;bh3=ah3;bh4=ah4;bh5=ah5;bh6=ah6;bh7=ah7;bl0=al0;bl1=al1;bl2=al2;bl3=al3;bl4=al4;bl5=al5;bl6=al6;bl7=al7;h=ah7;l=al7;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=(ah4>>>14|al4<<32-14)^(ah4>>>18|al4<<32-18)^(al4>>>41-32|ah4<<32-(41-32));l=(al4>>>14|ah4<<32-14)^(al4>>>18|ah4<<32-18)^(ah4>>>41-32|al4<<32-(41-32));a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;h=ah4&ah5^~ah4&ah6;l=al4&al5^~al4&al6;a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;h=K[i*2];l=K[i*2+1];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;h=wh[i%16];l=wl[i%16];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;th=c&65535|d<<16;tl=a&65535|b<<16;h=th;l=tl;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=(ah0>>>28|al0<<32-28)^(al0>>>34-32|ah0<<32-(34-32))^(al0>>>39-32|ah0<<32-(39-32));l=(al0>>>28|ah0<<32-28)^(ah0>>>34-32|al0<<32-(34-32))^(ah0>>>39-32|al0<<32-(39-32));a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;h=ah0&ah1^ah0&ah2^ah1&ah2;l=al0&al1^al0&al2^al1&al2;a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;bh7=c&65535|d<<16;bl7=a&65535|b<<16;h=bh3;l=bl3;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=th;l=tl;a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;bh3=c&65535|d<<16;bl3=a&65535|b<<16;ah1=bh0;ah2=bh1;ah3=bh2;ah4=bh3;ah5=bh4;ah6=bh5;ah7=bh6;ah0=bh7;al1=bl0;al2=bl1;al3=bl2;al4=bl3;al5=bl4;al6=bl5;al7=bl6;al0=bl7;if(i%16===15){for(j=0;j<16;j++){h=wh[j];l=wl[j];a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=wh[(j+9)%16];l=wl[(j+9)%16];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;th=wh[(j+1)%16];tl=wl[(j+1)%16];h=(th>>>1|tl<<32-1)^(th>>>8|tl<<32-8)^th>>>7;l=(tl>>>1|th<<32-1)^(tl>>>8|th<<32-8)^(tl>>>7|th<<32-7);a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;th=wh[(j+14)%16];tl=wl[(j+14)%16];h=(th>>>19|tl<<32-19)^(tl>>>61-32|th<<32-(61-32))^th>>>6;l=(tl>>>19|th<<32-19)^(th>>>61-32|tl<<32-(61-32))^(tl>>>6|th<<32-6);a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;wh[j]=c&65535|d<<16;wl[j]=a&65535|b<<16}}}h=ah0;l=al0;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[0];l=hl[0];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[0]=ah0=c&65535|d<<16;hl[0]=al0=a&65535|b<<16;h=ah1;l=al1;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[1];l=hl[1];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[1]=ah1=c&65535|d<<16;hl[1]=al1=a&65535|b<<16;h=ah2;l=al2;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[2];l=hl[2];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[2]=ah2=c&65535|d<<16;hl[2]=al2=a&65535|b<<16;h=ah3;l=al3;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[3];l=hl[3];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[3]=ah3=c&65535|d<<16;hl[3]=al3=a&65535|b<<16;h=ah4;l=al4;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[4];l=hl[4];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[4]=ah4=c&65535|d<<16;hl[4]=al4=a&65535|b<<16;h=ah5;l=al5;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[5];l=hl[5];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[5]=ah5=c&65535|d<<16;hl[5]=al5=a&65535|b<<16;h=ah6;l=al6;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[6];l=hl[6];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[6]=ah6=c&65535|d<<16;hl[6]=al6=a&65535|b<<16;h=ah7;l=al7;a=l&65535;b=l>>>16;c=h&65535;d=h>>>16;h=hh[7];l=hl[7];a+=l&65535;b+=l>>>16;c+=h&65535;d+=h>>>16;b+=a>>>16;c+=b>>>16;d+=c>>>16;hh[7]=ah7=c&65535|d<<16;hl[7]=al7=a&65535|b<<16;pos+=128;n-=128}return n}function crypto_hash(out,m,n){var hh=new Int32Array(8),hl=new Int32Array(8),x=new Uint8Array(256),i,b=n;hh[0]=1779033703;hh[1]=3144134277;hh[2]=1013904242;hh[3]=2773480762;hh[4]=1359893119;hh[5]=2600822924;hh[6]=528734635;hh[7]=1541459225;hl[0]=4089235720;hl[1]=2227873595;hl[2]=4271175723;hl[3]=1595750129;hl[4]=2917565137;hl[5]=725511199;hl[6]=4215389547;hl[7]=327033209;crypto_hashblocks_hl(hh,hl,m,n);n%=128;for(i=0;i=0;--i){b=s[i/8|0]>>(i&7)&1;cswap(p,q,b);add(q,p);add(p,p);cswap(p,q,b)}}function scalarbase(p,s){var q=[gf(),gf(),gf(),gf()];set25519(q[0],X);set25519(q[1],Y);set25519(q[2],gf1);M(q[3],X,Y);scalarmult(p,q,s)}function crypto_sign_keypair(pk,sk,seeded){var d=new Uint8Array(64);var p=[gf(),gf(),gf(),gf()];var i;if(!seeded)randombytes(sk,32);crypto_hash(d,sk,32);d[0]&=248;d[31]&=127;d[31]|=64;scalarbase(p,d);pack(pk,p);for(i=0;i<32;i++)sk[i+32]=pk[i];return 0}var L=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function modL(r,x){var carry,i,j,k;for(i=63;i>=32;--i){carry=0;for(j=i-32,k=i-12;j>4)*L[j];carry=x[j]>>8;x[j]&=255}for(j=0;j<32;j++)x[j]-=carry*L[j];for(i=0;i<32;i++){x[i+1]+=x[i]>>8;r[i]=x[i]&255}}function reduce(r){var x=new Float64Array(64),i;for(i=0;i<64;i++)x[i]=r[i];for(i=0;i<64;i++)r[i]=0;modL(r,x)}function crypto_sign(sm,m,n,sk){var d=new Uint8Array(64),h=new Uint8Array(64),r=new Uint8Array(64);var i,j,x=new Float64Array(64);var p=[gf(),gf(),gf(),gf()];crypto_hash(d,sk,32);d[0]&=248;d[31]&=127;d[31]|=64;var smlen=n+64;for(i=0;i>7)Z(r[0],gf0,r[0]);M(r[3],r[0],r[1]);return 0}function crypto_sign_open(m,sm,n,pk){var i;var t=new Uint8Array(32),h=new Uint8Array(64);var p=[gf(),gf(),gf(),gf()],q=[gf(),gf(),gf(),gf()];if(n<64)return-1;if(unpackneg(q,pk))return-1;for(i=0;i=0};nacl.sign.keyPair=function(){var pk=new Uint8Array(crypto_sign_PUBLICKEYBYTES);var sk=new Uint8Array(crypto_sign_SECRETKEYBYTES);crypto_sign_keypair(pk,sk);return{publicKey:pk,secretKey:sk}};nacl.sign.keyPair.fromSecretKey=function(secretKey){checkArrayTypes(secretKey);if(secretKey.length!==crypto_sign_SECRETKEYBYTES)throw new Error("bad secret key size");var pk=new Uint8Array(crypto_sign_PUBLICKEYBYTES);for(var i=0;i{let parsedData=undefined;try{if(typeof ciphertext==="string"){parsedData=JSON.parse(ciphertext)}}catch{}if(!parsedData){const toDecrypt=typeof ciphertext==="string"?fromHexString(ciphertext):ciphertext;const jsonString=Buffer.from(toDecrypt).toString("utf8");parsedData=JSON.parse(jsonString)}if(!parsedData){throw new Error("Failed to parse sealed data")}const nonce=naclUtilExports.decodeBase64(parsedData.nonce);const ephemPublicKey=naclUtilExports.decodeBase64(parsedData.ephemPublicKey);const dataToDecrypt=naclUtilExports.decodeBase64(parsedData.ciphertext);const decryptedMessage=naclFastExports.box.open(dataToDecrypt,nonce,ephemPublicKey,fromHexString(this.privateKey));if(!decryptedMessage){throw new Error("Failed to decrypt message")}return toBigInt(decryptedMessage)};if(privateKey.length!==PRIVATE_KEY_LENGTH){throw new Error(`Private key must be of length ${PRIVATE_KEY_LENGTH}`)}if(publicKey.length!==PUBLIC_KEY_LENGTH){throw new Error(`Private key must be of length ${PUBLIC_KEY_LENGTH}`)}this.privateKey=privateKey;this.publicKey=publicKey}}SealingKey.seal=(value,publicKey)=>{isString(publicKey);isBigIntOrNumber(value);const ephemeralKeyPair=naclFastExports.box.keyPair();const nonce=naclFastExports.randomBytes(naclFastExports.box.nonceLength);const encryptedMessage=naclFastExports.box(toBeArray(value),nonce,fromHexString(publicKey),ephemeralKeyPair.secretKey);const output={version:"x25519-xsalsa20-poly1305",nonce:naclUtilExports.encodeBase64(nonce),ephemPublicKey:naclUtilExports.encodeBase64(ephemeralKeyPair.publicKey),ciphertext:naclUtilExports.encodeBase64(encryptedMessage)};return toHexString$1(Buffer.from(JSON.stringify(output)))};const GenerateSealingKey=async()=>{const sodiumKeypair=naclFastExports.box.keyPair();return new SealingKey(toHexString$1(sodiumKeypair.secretKey),toHexString$1(sodiumKeypair.publicKey))};const PERMIT_PREFIX="Fhenix_saved_permit_";const parsePermit=savedPermit=>{const o=JSON.parse(savedPermit);if(o){return{contractAddress:o.contractAddress,sealingKey:new SealingKey(o.sealingKey.privateKey,o.sealingKey.publicKey),signature:o.signature,publicKey:`0x${o.sealingKey.publicKey}`}}throw new Error(`Cannot parse permit`)};const getPermit$2=async(contract,provider,autoGenerate=true)=>{isAddress$1(contract);if(!provider){throw new Error(`Missing provider`)}const getSigner=determineRequestSigner(provider);const signer=await getSigner(provider);const savedPermit=getPermitFromLocalstorage(contract,await signer.getAddress());if(savedPermit!=null)return savedPermit;return autoGenerate?generatePermit(contract,provider):null};const getAllExistingPermits=account=>{const permits={};const search=new RegExp(`${PERMIT_PREFIX}(.*?)_${account}`);Object.keys(window.localStorage).forEach(key=>{const matchArray=key.match(search);if(matchArray==null)return;const contract=matchArray[1];const permitRaw=window.localStorage.getItem(key);if(permitRaw==null)return;try{const permit=parsePermit(permitRaw);permits[contract]=permit}catch(err){console.warn(err)}});return permits};const getAllPermits$1=()=>{const permits=new Map;for(let i=0;i{if("_signTypedData"in signer&&typeof signer._signTypedData=="function"){return await signer._signTypedData(domain,types,value)}else if("signTypedData"in signer&&typeof signer.signTypedData=="function"){return await signer.signTypedData(domain,types,value)}throw new Error("Unsupported signer")};const generatePermit=async(contract,provider,customSigner)=>{if(!provider){throw new Error("Provider is undefined")}const requestMethod=determineRequestMethod(provider);let signer;if(!customSigner){const getSigner=determineRequestSigner(provider);signer=await getSigner(provider)}else{signer=customSigner}const chainId=await requestMethod(provider,"eth_chainId",[]);const keypair=await GenerateSealingKey();const msgParams={types:{EIP712Domain:[{name:"name",type:"string"},{name:"version",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"}],Permissioned:[{name:"publicKey",type:"bytes32"}]},primaryType:"Permissioned",domain:{name:"Fhenix Permission",version:"1.0",chainId:chainId,verifyingContract:contract},message:{publicKey:`0x${keypair.publicKey}`}};const msgSig=await sign(signer,msgParams.domain,{Permissioned:msgParams.types.Permissioned},msgParams.message);const permit={contractAddress:contract,sealingKey:keypair,signature:msgSig,publicKey:`0x${keypair.publicKey}`};storePermitInLocalStorage(permit,await signer.getAddress());return permit};const removePermit$1=(contract,account)=>{if(!account){window.localStorage.removeItem(`${PERMIT_PREFIX}${contract}`)}else{window.localStorage.removeItem(`${PERMIT_PREFIX}${contract}_${account}`)}};const getPermitFromLocalstorage=(contract,account)=>{let savedPermit=null;if(typeof window!=="undefined"&&window.localStorage){savedPermit=window.localStorage.getItem(`${PERMIT_PREFIX}${contract}_${account}`);if(!account){savedPermit=window.localStorage.getItem(`${PERMIT_PREFIX}${contract}`)}else{savedPermit=window.localStorage.getItem(`${PERMIT_PREFIX}${contract}_${account}`)}}if(!savedPermit){return undefined}return parsePermit(savedPermit)};const storePermitInLocalStorage=(permit,account)=>{if(typeof window!=="undefined"&&window.localStorage){const serialized={contractAddress:permit.contractAddress,sealingKey:{publicKey:permit.sealingKey.publicKey,privateKey:permit.sealingKey.privateKey},signature:permit.signature};window.localStorage.setItem(`${PERMIT_PREFIX}${permit.contractAddress}_${account}`,JSON.stringify(serialized))}};const removePermitFromLocalstorage=(contract,account)=>{if(typeof window!=="undefined"&&window.localStorage){window.localStorage.removeItem(`${PERMIT_PREFIX}${contract}_${account}`)}};const MAX_UINT8=255;const MAX_UINT16=65535;const MAX_UINT32=4294967295;const FheOpsAddress="0x0000000000000000000000000000000000000080";const PUBLIC_KEY_LENGTH_MIN=15e3;const encrypt_bool=(value,publicKey,securityZone=0)=>{const encrypted=CompactFheBool.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_uint8=(value,publicKey,securityZone=0)=>{const encrypted=CompactFheUint8.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_uint16=(value,publicKey,securityZone=0)=>{const encrypted=CompactFheUint16.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_uint32=(value,publicKey,securityZone=0)=>{const encrypted=CompactFheUint32.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_uint64=(value,publicKey,securityZone=0)=>{if(typeof value==="string"){value=toBigInt(fromHexString(value))}else{value=value}const encrypted=CompactFheUint64.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_uint128=(value,publicKey,securityZone=0)=>{if(typeof value==="string"){value=toBigInt(fromHexString(value))}else{value=value}const encrypted=CompactFheUint128.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_uint256=(value,publicKey,securityZone=0)=>{if(typeof value==="string"){value=toBigInt(fromHexString(value))}else{value=value}const encrypted=CompactFheUint256.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt_address=(value,publicKey,securityZone=0)=>{if(typeof value==="string"){value=toBigInt(fromHexString(value))}else{value=value}const encrypted=CompactFheUint160.encrypt_with_compact_public_key(value,publicKey);return{data:encrypted.serialize(),securityZone:securityZone}};const encrypt$1=(value,publicKey,type=exports.EncryptionTypes.uint8,securityZone=0)=>{switch(type){case exports.EncryptionTypes.bool:return encrypt_bool(!!value,publicKey,securityZone);case exports.EncryptionTypes.uint8:return encrypt_uint8(value,publicKey,securityZone);case exports.EncryptionTypes.uint16:return encrypt_uint16(value,publicKey,securityZone);case exports.EncryptionTypes.uint32:return encrypt_uint32(value,publicKey,securityZone);case exports.EncryptionTypes.uint64:return encrypt_uint64(value.toString(16),publicKey,securityZone);case exports.EncryptionTypes.uint128:return encrypt_uint128(value.toString(16),publicKey,securityZone);case exports.EncryptionTypes.uint256:return encrypt_uint256(value.toString(16),publicKey,securityZone);case exports.EncryptionTypes.address:return encrypt_address(value.toString(16),publicKey,securityZone);default:throw new Error("Invalid type")}};const InitFhevm=async()=>{await asyncInitFhevm()};class FhenixClientBase{constructor(params){this.permits={};isPlainObject$1(params);const{provider}=params;this.provider=provider;if(!this.provider){throw new Error("Failed to initialize Fhenix Client - must include a web3 provider")}}unseal(contractAddress,ciphertext,account){isAddress$1(contractAddress);isString(ciphertext);const permit=this.getPermit(contractAddress,account);if(permit==null){throw new Error(`Missing keypair for ${contractAddress}`)}return this.permits[contractAddress].sealingKey.unseal(ciphertext)}async generatePermit(contractAddress,provider,signer){if(!provider&&this.provider===undefined){throw new Error("error getting provider")}const permit=await generatePermit(contractAddress,provider||this.provider,signer);this.permits[contractAddress]=permit;return permit}_loadPermitFromLocalStorage(contractAddress,account){const fromLs=getPermitFromLocalstorage(contractAddress,account);if(fromLs==null)return undefined;this.permits[contractAddress]=fromLs;return fromLs}getPermit(contractAddress,account){const permitFromLs=this._loadPermitFromLocalStorage(contractAddress,account);if(permitFromLs!=null)return permitFromLs;return this.permits[contractAddress]}loadAllPermitsFromLocalStorage(account){const existingPermits=getAllExistingPermits(account);Object.keys(existingPermits).forEach(contractAddress=>{this.permits[contractAddress]=existingPermits[contractAddress]});return this.permits}storePermit(permit,account){storePermitInLocalStorage(permit,account);this.permits[permit.contractAddress]=permit}removePermit(contractAddress,account){if(this.hasPermit(contractAddress,account)){removePermitFromLocalstorage(contractAddress,account);delete this.permits[contractAddress]}}hasPermit(contractAddress,account){const permitFromLs=this._loadPermitFromLocalStorage(contractAddress,account);if(permitFromLs!=null)return true;return this.permits[contractAddress]!=null}exportPermits(){return this.permits}extractPermitPermission(permit){return{signature:permit.signature,publicKey:permit.publicKey}}static async getFheKeyFromProvider(provider,securityZone=0){const requestMethod=determineRequestMethod(provider);const funcSig="0x1b1b484e";const callData=funcSig+toABIEncodedUint32(securityZone);const callParams=[{to:FheOpsAddress,data:callData},"latest"];const publicKeyP=requestMethod(provider,"eth_call",callParams).catch(err=>{throw Error(`Error while requesting network public key from provider for security zone ${securityZone}: ${JSON.stringify(err)}`)});const publicKey=await publicKeyP;if(typeof publicKey!=="string"){throw new Error("Error using publicKey from provider: expected string")}if(publicKey.length{if(params.ignoreErrors){return undefined}else{throw new Error(`Failed to initialize fhenixjs - is the network FHE-enabled? ${err}`)}});if(params.skipPubKeyFetch!==true){this.fhePublicKeys=[this.defaultSecurityZone].map(securityZone=>FhenixClientBase.getFheKeyFromProvider(params.provider,securityZone))}}async _getPublicKey(securityZone){let fhePublicKey=await this.fhePublicKeys[securityZone];if(!fhePublicKey){this.fhePublicKeys[securityZone]=FhenixClientBase.getFheKeyFromProvider(this.provider,securityZone);fhePublicKey=await this.fhePublicKeys[securityZone];if(!fhePublicKey){throw new Error(`Public key for security zone ${securityZone} somehow not initialized`)}}return fhePublicKey}async encrypt_bool(value,securityZone=0){const fhePublicKey=await this._getPublicKey(securityZone);return encrypt_bool(value,fhePublicKey,securityZone)}async encrypt_uint8(value,securityZone=0){isNumber(value);const fhePublicKey=await this._getPublicKey(securityZone);ValidateUintInRange(value,MAX_UINT8,0);return encrypt_uint8(value,fhePublicKey,securityZone)}async encrypt_uint16(value,securityZone=0){isNumber(value);const fhePublicKey=await this._getPublicKey(securityZone);ValidateUintInRange(value,MAX_UINT16,0);return encrypt_uint16(value,fhePublicKey,securityZone)}async encrypt_uint32(value,securityZone=0){isNumber(value);const fhePublicKey=await this._getPublicKey(securityZone);ValidateUintInRange(value,MAX_UINT32,0);return encrypt_uint32(value,fhePublicKey,securityZone)}async encrypt_uint64(value,securityZone=0){isBigIntOrHexString(value);const fhePublicKey=await this._getPublicKey(securityZone);return encrypt_uint64(value,fhePublicKey,securityZone)}async encrypt_uint128(value,securityZone=0){isBigIntOrHexString(value);const fhePublicKey=await this._getPublicKey(securityZone);return encrypt_uint128(value,fhePublicKey,securityZone)}async encrypt_uint256(value,securityZone=0){isBigIntOrHexString(value);const fhePublicKey=await this._getPublicKey(securityZone);return encrypt_uint256(value,fhePublicKey,securityZone)}async encrypt_address(value,securityZone=0){isBigIntOrHexString(value);const fhePublicKey=await this._getPublicKey(securityZone);return encrypt_address(value,fhePublicKey,securityZone)}async encrypt(value,type,securityZone=0){isNumber(value);let outputSize=type;const fhePublicKey=await this._getPublicKey(securityZone);if(!outputSize){if(value{if(ignoreErrors){return undefined}else{throw new Error(`Failed to initialize fhenixjs - is the network FHE-enabled? ${err}`)}});const fhePublicKeys=await Promise.all(securityZones.map(securityZone=>FhenixClientBase.getFheKeyFromProvider(params.provider,securityZone)));return new FhenixClientSync({...params,fhePublicKeys:fhePublicKeys})}_getPublicKey(securityZone){const fhePublicKey=this.fhePublicKeys[securityZone];if(!fhePublicKey){throw new Error(`Public key for security zone ${securityZone} not initialized`)}return fhePublicKey}encrypt_bool(value,securityZone=0){const fhePublicKey=this._getPublicKey(securityZone);return encrypt_bool(value,fhePublicKey,securityZone)}encrypt_uint8(value,securityZone=0){isNumber(value);const fhePublicKey=this._getPublicKey(securityZone);ValidateUintInRange(value,MAX_UINT8,0);return encrypt_uint8(value,fhePublicKey,securityZone)}encrypt_uint16(value,securityZone=0){isNumber(value);const fhePublicKey=this._getPublicKey(securityZone);ValidateUintInRange(value,MAX_UINT16,0);return encrypt_uint16(value,fhePublicKey,securityZone)}encrypt_uint32(value,securityZone=0){isNumber(value);const fhePublicKey=this._getPublicKey(securityZone);ValidateUintInRange(value,MAX_UINT32,0);return encrypt_uint32(value,fhePublicKey,securityZone)}encrypt_uint64(value,securityZone=0){isBigIntOrHexString(value);const fhePublicKey=this._getPublicKey(securityZone);return encrypt_uint64(value,fhePublicKey,securityZone)}encrypt_uint128(value,securityZone=0){isBigIntOrHexString(value);const fhePublicKey=this._getPublicKey(securityZone);return encrypt_uint128(value,fhePublicKey,securityZone)}encrypt_uint256(value,securityZone=0){isBigIntOrHexString(value);const fhePublicKey=this._getPublicKey(securityZone);return encrypt_uint256(value,fhePublicKey,securityZone)}encrypt_address(value,securityZone=0){isBigIntOrHexString(value);const fhePublicKey=this._getPublicKey(securityZone);return encrypt_address(value,fhePublicKey,securityZone)}encrypt(value,type,securityZone=0){isNumber(value);let outputSize=type;const fhePublicKey=this._getPublicKey(securityZone);if(!outputSize){if(value{const config=TfheConfigBuilder.default().build();const clientKey=TfheClientKey.generate(config);let publicKey=TfheCompactPublicKey.new(clientKey);publicKey=TfheCompactPublicKey.deserialize(publicKey.serialize());return{clientKey:clientKey,publicKey:publicKey}};const createTfhePublicKey=()=>{const{publicKey}=createTfheKeypair();return toHexString(publicKey.serialize())};const toHexString=bytes=>bytes.reduce((str,byte)=>str+byte.toString(16).padStart(2,"0"),"");const version="6.13.1";function defineProperties(target,values,types){for(let key in values){let value=values[key];Object.defineProperty(target,key,{enumerable:true,value:value,writable:false})}}function stringify(value){if(value==null){return"null"}if(Array.isArray(value)){return"[ "+value.map(stringify).join(", ")+" ]"}if(value instanceof Uint8Array){const HEX="0123456789abcdef";let result="0x";for(let i=0;i>4];result+=HEX[value[i]&15]}return result}if(typeof value==="object"&&typeof value.toJSON==="function"){return stringify(value.toJSON())}switch(typeof value){case"boolean":case"symbol":return value.toString();case"bigint":return BigInt(value).toString();case"number":return value.toString();case"string":return JSON.stringify(value);case"object":{const keys=Object.keys(value);keys.sort();return"{ "+keys.map(k=>`${stringify(k)}: ${stringify(value[k])}`).join(", ")+" }"}}return`[ COULD NOT SERIALIZE ]`}function makeError(message,code,info){let shortMessage=message;{const details=[];if(info){if("message"in info||"code"in info||"name"in info){throw new Error(`value will overwrite populated values: ${stringify(info)}`)}for(const key in info){if(key==="shortMessage"){continue}const value=info[key];details.push(key+"="+stringify(value))}}details.push(`code=${code}`);details.push(`version=${version}`);if(details.length){message+=" ("+details.join(", ")+")"}}let error;switch(code){case"INVALID_ARGUMENT":error=new TypeError(message);break;case"NUMERIC_FAULT":case"BUFFER_OVERRUN":error=new RangeError(message);break;default:error=new Error(message)}defineProperties(error,{code:code});if(info){Object.assign(error,info)}if(error.shortMessage==null){defineProperties(error,{shortMessage:shortMessage})}return error}function assert(check,message,code,info){if(!check){throw makeError(message,code,info)}}function assertArgument(check,message,name,value){assert(check,message,"INVALID_ARGUMENT",{argument:name,value:value})}["NFD","NFC","NFKD","NFKC"].reduce((accum,form)=>{try{if("test".normalize(form)!=="test"){throw new Error("bad")}if(form==="NFD"){const check=String.fromCharCode(233).normalize("NFD");const expected=String.fromCharCode(101,769);if(check!==expected){throw new Error("broken")}}accum.push(form)}catch(error){}return accum},[]);function _getBytes(value,name,copy){if(value instanceof Uint8Array){return value}if(typeof value==="string"&&value.match(/^0x(?:[0-9a-f][0-9a-f])*$/i)){const result=new Uint8Array((value.length-2)/2);let offset=2;for(let i=0;i>4]+HexCharacters[v&15]}return result}function toUtf8Bytes(str,form){assertArgument(typeof str==="string","invalid string value","str",str);let result=[];for(let i=0;i>6|192);result.push(c&63|128)}else if((c&64512)==55296){i++;const c2=str.charCodeAt(i);assertArgument(i>18|240);result.push(pair>>12&63|128);result.push(pair>>6&63|128);result.push(pair&63|128)}else{result.push(c>>12|224);result.push(c>>6&63|128);result.push(c&63|128)}}return new Uint8Array(result)}function number(n){if(!Number.isSafeInteger(n)||n<0)throw new Error(`Wrong positive integer: ${n}`)}function bytes(b,...lengths){if(!(b instanceof Uint8Array))throw new Error("Expected Uint8Array");if(lengths.length>0&&!lengths.includes(b.length))throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`)}function exists(instance,checkFinished=true){if(instance.destroyed)throw new Error("Hash instance has been destroyed");if(checkFinished&&instance.finished)throw new Error("Hash#digest() has already been called")}function output(out,instance){bytes(out);const min=instance.outputLen;if(out.lengtha instanceof Uint8Array;const u32=arr=>new Uint32Array(arr.buffer,arr.byteOffset,Math.floor(arr.byteLength/4));const isLE=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!isLE)throw new Error("Non little-endian hardware is not supported");function utf8ToBytes(str){if(typeof str!=="string")throw new Error(`utf8ToBytes expected string, got ${typeof str}`);return new Uint8Array((new TextEncoder).encode(str))}function toBytes(data){if(typeof data==="string")data=utf8ToBytes(data);if(!u8a(data))throw new Error(`expected Uint8Array, got ${typeof data}`);return data}class Hash{clone(){return this._cloneInto()}}function wrapConstructor(hashCons){const hashC=msg=>hashCons().update(toBytes(msg)).digest();const tmp=hashCons();hashC.outputLen=tmp.outputLen;hashC.blockLen=tmp.blockLen;hashC.create=()=>hashCons();return hashC}const U32_MASK64=BigInt(2**32-1);const _32n=BigInt(32);function fromBig(n,le=false){if(le)return{h:Number(n&U32_MASK64),l:Number(n>>_32n&U32_MASK64)};return{h:Number(n>>_32n&U32_MASK64)|0,l:Number(n&U32_MASK64)|0}}function split(lst,le=false){let Ah=new Uint32Array(lst.length);let Al=new Uint32Array(lst.length);for(let i=0;ih<>>32-s;const rotlSL=(h,l,s)=>l<>>32-s;const rotlBH=(h,l,s)=>l<>>64-s;const rotlBL=(h,l,s)=>h<>>64-s;const[SHA3_PI,SHA3_ROTL,_SHA3_IOTA]=[[],[],[]];const _0n=BigInt(0);const _1n=BigInt(1);const _2n=BigInt(2);const _7n=BigInt(7);const _256n=BigInt(256);const _0x71n=BigInt(113);for(let round=0,R=_1n,x=1,y=0;round<24;round++){[x,y]=[y,(2*x+3*y)%5];SHA3_PI.push(2*(5*y+x));SHA3_ROTL.push((round+1)*(round+2)/2%64);let t=_0n;for(let j=0;j<7;j++){R=(R<<_1n^(R>>_7n)*_0x71n)%_256n;if(R&_2n)t^=_1n<<(_1n<s>32?rotlBH(h,l,s):rotlSH(h,l,s);const rotlL=(h,l,s)=>s>32?rotlBL(h,l,s):rotlSL(h,l,s);function keccakP(s,rounds=24){const B=new Uint32Array(5*2);for(let round=24-rounds;round<24;round++){for(let x=0;x<10;x++)B[x]=s[x]^s[x+10]^s[x+20]^s[x+30]^s[x+40];for(let x=0;x<10;x+=2){const idx1=(x+8)%10;const idx0=(x+2)%10;const B0=B[idx0];const B1=B[idx0+1];const Th=rotlH(B0,B1,1)^B[idx1];const Tl=rotlL(B0,B1,1)^B[idx1+1];for(let y=0;y<50;y+=10){s[x+y]^=Th;s[x+y+1]^=Tl}}let curH=s[2];let curL=s[3];for(let t=0;t<24;t++){const shift=SHA3_ROTL[t];const Th=rotlH(curH,curL,shift);const Tl=rotlL(curH,curL,shift);const PI=SHA3_PI[t];curH=s[PI];curL=s[PI+1];s[PI]=Th;s[PI+1]=Tl}for(let y=0;y<50;y+=10){for(let x=0;x<10;x++)B[x]=s[y+x];for(let x=0;x<10;x++)s[y+x]^=~B[(x+2)%10]&B[(x+4)%10]}s[0]^=SHA3_IOTA_H[round];s[1]^=SHA3_IOTA_L[round]}B.fill(0)}class Keccak extends Hash{constructor(blockLen,suffix,outputLen,enableXOF=false,rounds=24){super();this.blockLen=blockLen;this.suffix=suffix;this.outputLen=outputLen;this.enableXOF=enableXOF;this.rounds=rounds;this.pos=0;this.posOut=0;this.finished=false;this.destroyed=false;number(outputLen);if(0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200);this.state32=u32(this.state)}keccak(){keccakP(this.state32,this.rounds);this.posOut=0;this.pos=0}update(data){exists(this);const{blockLen,state}=this;data=toBytes(data);const len=data.length;for(let pos=0;pos=blockLen)this.keccak();const take=Math.min(blockLen-this.posOut,len-pos);out.set(bufferOut.subarray(this.posOut,this.posOut+take),pos);this.posOut+=take;pos+=take}return out}xofInto(out){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(out)}xof(bytes){number(bytes);return this.xofInto(new Uint8Array(bytes))}digestInto(out){output(out,this);if(this.finished)throw new Error("digest() was already called");this.writeInto(out);this.destroy();return out}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=true;this.state.fill(0)}_cloneInto(to){const{blockLen,suffix,outputLen,rounds,enableXOF}=this;to||(to=new Keccak(blockLen,suffix,outputLen,enableXOF,rounds));to.state32.set(this.state32);to.pos=this.pos;to.posOut=this.posOut;to.finished=this.finished;to.rounds=rounds;to.suffix=suffix;to.outputLen=outputLen;to.enableXOF=enableXOF;to.destroyed=this.destroyed;return to}}const gen=(suffix,blockLen,outputLen)=>wrapConstructor(()=>new Keccak(blockLen,suffix,outputLen));const keccak_256=gen(1,136,256/8);let locked=false;const _keccak256=function(data){return keccak_256(data)};let __keccak256=_keccak256;function keccak256(_data){const data=getBytes(_data,"data");return hexlify(__keccak256(data))}keccak256._=_keccak256;keccak256.lock=function(){locked=true};keccak256.register=function(func){if(locked){throw new TypeError("keccak256 is locked")}__keccak256=func};Object.freeze(keccak256);const ZeroAddress="0x0000000000000000000000000000000000000000";const BN_0=BigInt(0);const BN_36=BigInt(36);function getChecksumAddress(address){address=address.toLowerCase();const chars=address.substring(2).split("");const expanded=new Uint8Array(40);for(let i=0;i<40;i++){expanded[i]=chars[i].charCodeAt(0)}const hashed=getBytes(keccak256(expanded));for(let i=0;i<40;i+=2){if(hashed[i>>1]>>4>=8){chars[i]=chars[i].toUpperCase()}if((hashed[i>>1]&15)>=8){chars[i+1]=chars[i+1].toUpperCase()}}return"0x"+chars.join("")}const ibanLookup={};for(let i=0;i<10;i++){ibanLookup[String(i)]=String(i)}for(let i=0;i<26;i++){ibanLookup[String.fromCharCode(65+i)]=String(10+i)}const safeDigits=15;function ibanChecksum(address){address=address.toUpperCase();address=address.substring(4)+address.substring(0,2)+"00";let expanded=address.split("").map(c=>{return ibanLookup[c]}).join("");while(expanded.length>=safeDigits){let block=expanded.substring(0,safeDigits);expanded=parseInt(block,10)%97+expanded.substring(block.length)}let checksum=String(98-parseInt(expanded,10)%97);while(checksum.length<2){checksum="0"+checksum}return checksum}const Base36=function(){const result={};for(let i=0;i<36;i++){const key="0123456789abcdefghijklmnopqrstuvwxyz"[i];result[key]=BigInt(i)}return result}();function fromBase36(value){value=value.toLowerCase();let result=BN_0;for(let i=0;i({data:data,securityZone:securityZone,utype:FheUType.bool}),uint8:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:FheUType.uint8}),uint16:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:FheUType.uint16}),uint32:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:FheUType.uint32}),uint64:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:FheUType.uint64}),uint128:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:FheUType.uint128}),uint256:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:FheUType.uint256}),address:(data,securityZone=0)=>({data:data,securityZone:securityZone,utype:FheUType.address})};function isEncryptableItem(value){return typeof value==="object"&&value!==null&&["string","number","bigint","boolean"].includes(typeof value.data)&&typeof value.securityZone==="number"&&FheAllUTypes.includes(value.utype)}function getAsSealedItem(value){if(Array.isArray(value)&&value.length===2&&typeof value[0]==="string"&&FheAllUTypes.includes(parseInt(`${value[1]}`)))return{data:value[0],utype:value[1]};if(typeof value==="object"&&value!==null&&typeof value.data==="string"&&FheAllUTypes.includes(value.utype))return value;return undefined}function isSealedBool(value){return parseInt(`${value.utype}`)===FheUType.bool}function isSealedUint(value){return FheUintUTypes.includes(parseInt(`${value.utype}`))}function isSealedAddress(value){return parseInt(`${value.utype}`)===FheUType.address}const ResultErr=error=>({success:false,data:null,error:error});const ResultOk=data=>({success:true,data:data,error:null});const PermitV2SignatureAllFields=[{name:"issuer",type:"address"},{name:"expiration",type:"uint64"},{name:"contracts",type:"address[]"},{name:"projects",type:"string[]"},{name:"recipient",type:"address"},{name:"validatorId",type:"uint256"},{name:"validatorContract",type:"address"},{name:"sealingKey",type:"bytes32"},{name:"issuerSignature",type:"bytes"}];const SignatureTypes={PermissionedV2IssuerSelf:["issuer","expiration","contracts","projects","recipient","validatorId","validatorContract","sealingKey"],PermissionedV2IssuerShared:["issuer","expiration","contracts","projects","recipient","validatorId","validatorContract"],PermissionedV2Recipient:["sealingKey","issuerSignature"]};const getSignatureTypesAndMessage=(primaryType,fields,values)=>{const types={[primaryType]:PermitV2SignatureAllFields.filter(fieldType=>fields.includes(fieldType.name))};const message={};fields.forEach(field=>{if(field in values){message[field]=values[field]}});return{types:types,primaryType:primaryType,message:message}};const getSignatureDomain=chainId=>({name:"Fhenix Permission v2.0.0",version:"v2.0.0",chainId:parseInt(chainId),verifyingContract:ZeroAddress});var util;(function(util){util.assertEqual=val=>val;function assertIs(_arg){}util.assertIs=assertIs;function assertNever(_x){throw new Error}util.assertNever=assertNever;util.arrayToEnum=items=>{const obj={};for(const item of items){obj[item]=item}return obj};util.getValidEnumValues=obj=>{const validKeys=util.objectKeys(obj).filter(k=>typeof obj[obj[k]]!=="number");const filtered={};for(const k of validKeys){filtered[k]=obj[k]}return util.objectValues(filtered)};util.objectValues=obj=>{return util.objectKeys(obj).map(function(e){return obj[e]})};util.objectKeys=typeof Object.keys==="function"?obj=>Object.keys(obj):object=>{const keys=[];for(const key in object){if(Object.prototype.hasOwnProperty.call(object,key)){keys.push(key)}}return keys};util.find=(arr,checker)=>{for(const item of arr){if(checker(item))return item}return undefined};util.isInteger=typeof Number.isInteger==="function"?val=>Number.isInteger(val):val=>typeof val==="number"&&isFinite(val)&&Math.floor(val)===val;function joinValues(array,separator=" | "){return array.map(val=>typeof val==="string"?`'${val}'`:val).join(separator)}util.joinValues=joinValues;util.jsonStringifyReplacer=(_,value)=>{if(typeof value==="bigint"){return value.toString()}return value}})(util||(util={}));var objectUtil;(function(objectUtil){objectUtil.mergeShapes=(first,second)=>{return{...first,...second}}})(objectUtil||(objectUtil={}));const ZodParsedType=util.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]);const getParsedType=data=>{const t=typeof data;switch(t){case"undefined":return ZodParsedType.undefined;case"string":return ZodParsedType.string;case"number":return isNaN(data)?ZodParsedType.nan:ZodParsedType.number;case"boolean":return ZodParsedType.boolean;case"function":return ZodParsedType.function;case"bigint":return ZodParsedType.bigint;case"symbol":return ZodParsedType.symbol;case"object":if(Array.isArray(data)){return ZodParsedType.array}if(data===null){return ZodParsedType.null}if(data.then&&typeof data.then==="function"&&data.catch&&typeof data.catch==="function"){return ZodParsedType.promise}if(typeof Map!=="undefined"&&data instanceof Map){return ZodParsedType.map}if(typeof Set!=="undefined"&&data instanceof Set){return ZodParsedType.set}if(typeof Date!=="undefined"&&data instanceof Date){return ZodParsedType.date}return ZodParsedType.object;default:return ZodParsedType.unknown}};const ZodIssueCode=util.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);const quotelessJson=obj=>{const json=JSON.stringify(obj,null,2);return json.replace(/"([^"]+)":/g,"$1:")};class ZodError extends Error{constructor(issues){super();this.issues=[];this.addIssue=sub=>{this.issues=[...this.issues,sub]};this.addIssues=(subs=[])=>{this.issues=[...this.issues,...subs]};const actualProto=new.target.prototype;if(Object.setPrototypeOf){Object.setPrototypeOf(this,actualProto)}else{this.__proto__=actualProto}this.name="ZodError";this.issues=issues}get errors(){return this.issues}format(_mapper){const mapper=_mapper||function(issue){return issue.message};const fieldErrors={_errors:[]};const processError=error=>{for(const issue of error.issues){if(issue.code==="invalid_union"){issue.unionErrors.map(processError)}else if(issue.code==="invalid_return_type"){processError(issue.returnTypeError)}else if(issue.code==="invalid_arguments"){processError(issue.argumentsError)}else if(issue.path.length===0){fieldErrors._errors.push(mapper(issue))}else{let curr=fieldErrors;let i=0;while(iissue.message){const fieldErrors={};const formErrors=[];for(const sub of this.issues){if(sub.path.length>0){fieldErrors[sub.path[0]]=fieldErrors[sub.path[0]]||[];fieldErrors[sub.path[0]].push(mapper(sub))}else{formErrors.push(mapper(sub))}}return{formErrors:formErrors,fieldErrors:fieldErrors}}get formErrors(){return this.flatten()}}ZodError.create=issues=>{const error=new ZodError(issues);return error};const errorMap=(issue,_ctx)=>{let message;switch(issue.code){case ZodIssueCode.invalid_type:if(issue.received===ZodParsedType.undefined){message="Required"}else{message=`Expected ${issue.expected}, received ${issue.received}`}break;case ZodIssueCode.invalid_literal:message=`Invalid literal value, expected ${JSON.stringify(issue.expected,util.jsonStringifyReplacer)}`;break;case ZodIssueCode.unrecognized_keys:message=`Unrecognized key(s) in object: ${util.joinValues(issue.keys,", ")}`;break;case ZodIssueCode.invalid_union:message=`Invalid input`;break;case ZodIssueCode.invalid_union_discriminator:message=`Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;break;case ZodIssueCode.invalid_enum_value:message=`Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;break;case ZodIssueCode.invalid_arguments:message=`Invalid function arguments`;break;case ZodIssueCode.invalid_return_type:message=`Invalid function return type`;break;case ZodIssueCode.invalid_date:message=`Invalid date`;break;case ZodIssueCode.invalid_string:if(typeof issue.validation==="object"){if("includes"in issue.validation){message=`Invalid input: must include "${issue.validation.includes}"`;if(typeof issue.validation.position==="number"){message=`${message} at one or more positions greater than or equal to ${issue.validation.position}`}}else if("startsWith"in issue.validation){message=`Invalid input: must start with "${issue.validation.startsWith}"`}else if("endsWith"in issue.validation){message=`Invalid input: must end with "${issue.validation.endsWith}"`}else{util.assertNever(issue.validation)}}else if(issue.validation!=="regex"){message=`Invalid ${issue.validation}`}else{message="Invalid"}break;case ZodIssueCode.too_small:if(issue.type==="array")message=`Array must contain ${issue.exact?"exactly":issue.inclusive?`at least`:`more than`} ${issue.minimum} element(s)`;else if(issue.type==="string")message=`String must contain ${issue.exact?"exactly":issue.inclusive?`at least`:`over`} ${issue.minimum} character(s)`;else if(issue.type==="number")message=`Number must be ${issue.exact?`exactly equal to `:issue.inclusive?`greater than or equal to `:`greater than `}${issue.minimum}`;else if(issue.type==="date")message=`Date must be ${issue.exact?`exactly equal to `:issue.inclusive?`greater than or equal to `:`greater than `}${new Date(Number(issue.minimum))}`;else message="Invalid input";break;case ZodIssueCode.too_big:if(issue.type==="array")message=`Array must contain ${issue.exact?`exactly`:issue.inclusive?`at most`:`less than`} ${issue.maximum} element(s)`;else if(issue.type==="string")message=`String must contain ${issue.exact?`exactly`:issue.inclusive?`at most`:`under`} ${issue.maximum} character(s)`;else if(issue.type==="number")message=`Number must be ${issue.exact?`exactly`:issue.inclusive?`less than or equal to`:`less than`} ${issue.maximum}`;else if(issue.type==="bigint")message=`BigInt must be ${issue.exact?`exactly`:issue.inclusive?`less than or equal to`:`less than`} ${issue.maximum}`;else if(issue.type==="date")message=`Date must be ${issue.exact?`exactly`:issue.inclusive?`smaller than or equal to`:`smaller than`} ${new Date(Number(issue.maximum))}`;else message="Invalid input";break;case ZodIssueCode.custom:message=`Invalid input`;break;case ZodIssueCode.invalid_intersection_types:message=`Intersection results could not be merged`;break;case ZodIssueCode.not_multiple_of:message=`Number must be a multiple of ${issue.multipleOf}`;break;case ZodIssueCode.not_finite:message="Number must be finite";break;default:message=_ctx.defaultError;util.assertNever(issue)}return{message:message}};let overrideErrorMap=errorMap;function setErrorMap(map){overrideErrorMap=map}function getErrorMap(){return overrideErrorMap}const makeIssue=params=>{const{data,path,errorMaps,issueData}=params;const fullPath=[...path,...issueData.path||[]];const fullIssue={...issueData,path:fullPath};if(issueData.message!==undefined){return{...issueData,path:fullPath,message:issueData.message}}let errorMessage="";const maps=errorMaps.filter(m=>!!m).slice().reverse();for(const map of maps){errorMessage=map(fullIssue,{data:data,defaultError:errorMessage}).message}return{...issueData,path:fullPath,message:errorMessage}};const EMPTY_PATH=[];function addIssueToContext(ctx,issueData){const overrideMap=getErrorMap();const issue=makeIssue({issueData:issueData,data:ctx.data,path:ctx.path,errorMaps:[ctx.common.contextualErrorMap,ctx.schemaErrorMap,overrideMap,overrideMap===errorMap?undefined:errorMap].filter(x=>!!x)});ctx.common.issues.push(issue)}class ParseStatus{constructor(){this.value="valid"}dirty(){if(this.value==="valid")this.value="dirty"}abort(){if(this.value!=="aborted")this.value="aborted"}static mergeArray(status,results){const arrayValue=[];for(const s of results){if(s.status==="aborted")return INVALID;if(s.status==="dirty")status.dirty();arrayValue.push(s.value)}return{status:status.value,value:arrayValue}}static async mergeObjectAsync(status,pairs){const syncPairs=[];for(const pair of pairs){const key=await pair.key;const value=await pair.value;syncPairs.push({key:key,value:value})}return ParseStatus.mergeObjectSync(status,syncPairs)}static mergeObjectSync(status,pairs){const finalObject={};for(const pair of pairs){const{key,value}=pair;if(key.status==="aborted")return INVALID;if(value.status==="aborted")return INVALID;if(key.status==="dirty")status.dirty();if(value.status==="dirty")status.dirty();if(key.value!=="__proto__"&&(typeof value.value!=="undefined"||pair.alwaysSet)){finalObject[key.value]=value.value}}return{status:status.value,value:finalObject}}}const INVALID=Object.freeze({status:"aborted"});const DIRTY=value=>({status:"dirty",value:value});const OK=value=>({status:"valid",value:value});const isAborted=x=>x.status==="aborted";const isDirty=x=>x.status==="dirty";const isValid=x=>x.status==="valid";const isAsync=x=>typeof Promise!=="undefined"&&x instanceof Promise;function __classPrivateFieldGet(receiver,state,kind,f){if(typeof state==="function"?receiver!==state||!f:!state.has(receiver))throw new TypeError("Cannot read private member from an object whose class did not declare it");return state.get(receiver)}function __classPrivateFieldSet(receiver,state,value,kind,f){if(typeof state==="function"?receiver!==state||!f:!state.has(receiver))throw new TypeError("Cannot write private member to an object whose class did not declare it");return state.set(receiver,value),value}typeof SuppressedError==="function"?SuppressedError:function(error,suppressed,message){var e=new Error(message);return e.name="SuppressedError",e.error=error,e.suppressed=suppressed,e};var errorUtil;(function(errorUtil){errorUtil.errToObj=message=>typeof message==="string"?{message:message}:message||{};errorUtil.toString=message=>typeof message==="string"?message:message===null||message===void 0?void 0:message.message})(errorUtil||(errorUtil={}));var _ZodEnum_cache,_ZodNativeEnum_cache;class ParseInputLazyPath{constructor(parent,value,path,key){this._cachedPath=[];this.parent=parent;this.data=value;this._path=path;this._key=key}get path(){if(!this._cachedPath.length){if(this._key instanceof Array){this._cachedPath.push(...this._path,...this._key)}else{this._cachedPath.push(...this._path,this._key)}}return this._cachedPath}}const handleResult=(ctx,result)=>{if(isValid(result)){return{success:true,data:result.value}}else{if(!ctx.common.issues.length){throw new Error("Validation failed but no issues detected.")}return{success:false,get error(){if(this._error)return this._error;const error=new ZodError(ctx.common.issues);this._error=error;return this._error}}}};function processCreateParams(params){if(!params)return{};const{errorMap,invalid_type_error,required_error,description}=params;if(errorMap&&(invalid_type_error||required_error)){throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`)}if(errorMap)return{errorMap:errorMap,description:description};const customMap=(iss,ctx)=>{var _a,_b;const{message}=params;if(iss.code==="invalid_enum_value"){return{message:message!==null&&message!==void 0?message:ctx.defaultError}}if(typeof ctx.data==="undefined"){return{message:(_a=message!==null&&message!==void 0?message:required_error)!==null&&_a!==void 0?_a:ctx.defaultError}}if(iss.code!=="invalid_type")return{message:ctx.defaultError};return{message:(_b=message!==null&&message!==void 0?message:invalid_type_error)!==null&&_b!==void 0?_b:ctx.defaultError}};return{errorMap:customMap,description:description}}class ZodType{constructor(def){this.spa=this.safeParseAsync;this._def=def;this.parse=this.parse.bind(this);this.safeParse=this.safeParse.bind(this);this.parseAsync=this.parseAsync.bind(this);this.safeParseAsync=this.safeParseAsync.bind(this);this.spa=this.spa.bind(this);this.refine=this.refine.bind(this);this.refinement=this.refinement.bind(this);this.superRefine=this.superRefine.bind(this);this.optional=this.optional.bind(this);this.nullable=this.nullable.bind(this);this.nullish=this.nullish.bind(this);this.array=this.array.bind(this);this.promise=this.promise.bind(this);this.or=this.or.bind(this);this.and=this.and.bind(this);this.transform=this.transform.bind(this);this.brand=this.brand.bind(this);this.default=this.default.bind(this);this.catch=this.catch.bind(this);this.describe=this.describe.bind(this);this.pipe=this.pipe.bind(this);this.readonly=this.readonly.bind(this);this.isNullable=this.isNullable.bind(this);this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(input){return getParsedType(input.data)}_getOrReturnCtx(input,ctx){return ctx||{common:input.parent.common,data:input.data,parsedType:getParsedType(input.data),schemaErrorMap:this._def.errorMap,path:input.path,parent:input.parent}}_processInputParams(input){return{status:new ParseStatus,ctx:{common:input.parent.common,data:input.data,parsedType:getParsedType(input.data),schemaErrorMap:this._def.errorMap,path:input.path,parent:input.parent}}}_parseSync(input){const result=this._parse(input);if(isAsync(result)){throw new Error("Synchronous parse encountered promise.")}return result}_parseAsync(input){const result=this._parse(input);return Promise.resolve(result)}parse(data,params){const result=this.safeParse(data,params);if(result.success)return result.data;throw result.error}safeParse(data,params){var _a;const ctx={common:{issues:[],async:(_a=params===null||params===void 0?void 0:params.async)!==null&&_a!==void 0?_a:false,contextualErrorMap:params===null||params===void 0?void 0:params.errorMap},path:(params===null||params===void 0?void 0:params.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:data,parsedType:getParsedType(data)};const result=this._parseSync({data:data,path:ctx.path,parent:ctx});return handleResult(ctx,result)}async parseAsync(data,params){const result=await this.safeParseAsync(data,params);if(result.success)return result.data;throw result.error}async safeParseAsync(data,params){const ctx={common:{issues:[],contextualErrorMap:params===null||params===void 0?void 0:params.errorMap,async:true},path:(params===null||params===void 0?void 0:params.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:data,parsedType:getParsedType(data)};const maybeAsyncResult=this._parse({data:data,path:ctx.path,parent:ctx});const result=await(isAsync(maybeAsyncResult)?maybeAsyncResult:Promise.resolve(maybeAsyncResult));return handleResult(ctx,result)}refine(check,message){const getIssueProperties=val=>{if(typeof message==="string"||typeof message==="undefined"){return{message:message}}else if(typeof message==="function"){return message(val)}else{return message}};return this._refinement((val,ctx)=>{const result=check(val);const setError=()=>ctx.addIssue({code:ZodIssueCode.custom,...getIssueProperties(val)});if(typeof Promise!=="undefined"&&result instanceof Promise){return result.then(data=>{if(!data){setError();return false}else{return true}})}if(!result){setError();return false}else{return true}})}refinement(check,refinementData){return this._refinement((val,ctx)=>{if(!check(val)){ctx.addIssue(typeof refinementData==="function"?refinementData(val,ctx):refinementData);return false}else{return true}})}_refinement(refinement){return new ZodEffects({schema:this,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:{type:"refinement",refinement:refinement}})}superRefine(refinement){return this._refinement(refinement)}optional(){return ZodOptional.create(this,this._def)}nullable(){return ZodNullable.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return ZodArray.create(this,this._def)}promise(){return ZodPromise.create(this,this._def)}or(option){return ZodUnion.create([this,option],this._def)}and(incoming){return ZodIntersection.create(this,incoming,this._def)}transform(transform){return new ZodEffects({...processCreateParams(this._def),schema:this,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:{type:"transform",transform:transform}})}default(def){const defaultValueFunc=typeof def==="function"?def:()=>def;return new ZodDefault({...processCreateParams(this._def),innerType:this,defaultValue:defaultValueFunc,typeName:ZodFirstPartyTypeKind.ZodDefault})}brand(){return new ZodBranded({typeName:ZodFirstPartyTypeKind.ZodBranded,type:this,...processCreateParams(this._def)})}catch(def){const catchValueFunc=typeof def==="function"?def:()=>def;return new ZodCatch({...processCreateParams(this._def),innerType:this,catchValue:catchValueFunc,typeName:ZodFirstPartyTypeKind.ZodCatch})}describe(description){const This=this.constructor;return new This({...this._def,description:description})}pipe(target){return ZodPipeline.create(this,target)}readonly(){return ZodReadonly.create(this)}isOptional(){return this.safeParse(undefined).success}isNullable(){return this.safeParse(null).success}}const cuidRegex=/^c[^\s-]{8,}$/i;const cuid2Regex=/^[0-9a-z]+$/;const ulidRegex=/^[0-9A-HJKMNP-TV-Z]{26}$/;const uuidRegex=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i;const nanoidRegex=/^[a-z0-9_-]{21}$/i;const durationRegex=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/;const emailRegex=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i;const _emojiRegex=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;let emojiRegex;const ipv4Regex=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;const ipv6Regex=/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;const base64Regex=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;const dateRegexSource=`((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`;const dateRegex=new RegExp(`^${dateRegexSource}$`);function timeRegexSource(args){let regex=`([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d`;if(args.precision){regex=`${regex}\\.\\d{${args.precision}}`}else if(args.precision==null){regex=`${regex}(\\.\\d+)?`}return regex}function timeRegex(args){return new RegExp(`^${timeRegexSource(args)}$`)}function datetimeRegex(args){let regex=`${dateRegexSource}T${timeRegexSource(args)}`;const opts=[];opts.push(args.local?`Z?`:`Z`);if(args.offset)opts.push(`([+-]\\d{2}:?\\d{2})`);regex=`${regex}(${opts.join("|")})`;return new RegExp(`^${regex}$`)}function isValidIP(ip,version){if((version==="v4"||!version)&&ipv4Regex.test(ip)){return true}if((version==="v6"||!version)&&ipv6Regex.test(ip)){return true}return false}class ZodString extends ZodType{_parse(input){if(this._def.coerce){input.data=String(input.data)}const parsedType=this._getType(input);if(parsedType!==ZodParsedType.string){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.string,received:ctx.parsedType});return INVALID}const status=new ParseStatus;let ctx=undefined;for(const check of this._def.checks){if(check.kind==="min"){if(input.data.lengthcheck.value){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:check.value,type:"string",inclusive:true,exact:false,message:check.message});status.dirty()}}else if(check.kind==="length"){const tooBig=input.data.length>check.value;const tooSmall=input.data.lengthregex.test(data),{validation:validation,code:ZodIssueCode.invalid_string,...errorUtil.errToObj(message)})}_addCheck(check){return new ZodString({...this._def,checks:[...this._def.checks,check]})}email(message){return this._addCheck({kind:"email",...errorUtil.errToObj(message)})}url(message){return this._addCheck({kind:"url",...errorUtil.errToObj(message)})}emoji(message){return this._addCheck({kind:"emoji",...errorUtil.errToObj(message)})}uuid(message){return this._addCheck({kind:"uuid",...errorUtil.errToObj(message)})}nanoid(message){return this._addCheck({kind:"nanoid",...errorUtil.errToObj(message)})}cuid(message){return this._addCheck({kind:"cuid",...errorUtil.errToObj(message)})}cuid2(message){return this._addCheck({kind:"cuid2",...errorUtil.errToObj(message)})}ulid(message){return this._addCheck({kind:"ulid",...errorUtil.errToObj(message)})}base64(message){return this._addCheck({kind:"base64",...errorUtil.errToObj(message)})}ip(options){return this._addCheck({kind:"ip",...errorUtil.errToObj(options)})}datetime(options){var _a,_b;if(typeof options==="string"){return this._addCheck({kind:"datetime",precision:null,offset:false,local:false,message:options})}return this._addCheck({kind:"datetime",precision:typeof(options===null||options===void 0?void 0:options.precision)==="undefined"?null:options===null||options===void 0?void 0:options.precision,offset:(_a=options===null||options===void 0?void 0:options.offset)!==null&&_a!==void 0?_a:false,local:(_b=options===null||options===void 0?void 0:options.local)!==null&&_b!==void 0?_b:false,...errorUtil.errToObj(options===null||options===void 0?void 0:options.message)})}date(message){return this._addCheck({kind:"date",message:message})}time(options){if(typeof options==="string"){return this._addCheck({kind:"time",precision:null,message:options})}return this._addCheck({kind:"time",precision:typeof(options===null||options===void 0?void 0:options.precision)==="undefined"?null:options===null||options===void 0?void 0:options.precision,...errorUtil.errToObj(options===null||options===void 0?void 0:options.message)})}duration(message){return this._addCheck({kind:"duration",...errorUtil.errToObj(message)})}regex(regex,message){return this._addCheck({kind:"regex",regex:regex,...errorUtil.errToObj(message)})}includes(value,options){return this._addCheck({kind:"includes",value:value,position:options===null||options===void 0?void 0:options.position,...errorUtil.errToObj(options===null||options===void 0?void 0:options.message)})}startsWith(value,message){return this._addCheck({kind:"startsWith",value:value,...errorUtil.errToObj(message)})}endsWith(value,message){return this._addCheck({kind:"endsWith",value:value,...errorUtil.errToObj(message)})}min(minLength,message){return this._addCheck({kind:"min",value:minLength,...errorUtil.errToObj(message)})}max(maxLength,message){return this._addCheck({kind:"max",value:maxLength,...errorUtil.errToObj(message)})}length(len,message){return this._addCheck({kind:"length",value:len,...errorUtil.errToObj(message)})}nonempty(message){return this.min(1,errorUtil.errToObj(message))}trim(){return new ZodString({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new ZodString({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new ZodString({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(ch=>ch.kind==="datetime")}get isDate(){return!!this._def.checks.find(ch=>ch.kind==="date")}get isTime(){return!!this._def.checks.find(ch=>ch.kind==="time")}get isDuration(){return!!this._def.checks.find(ch=>ch.kind==="duration")}get isEmail(){return!!this._def.checks.find(ch=>ch.kind==="email")}get isURL(){return!!this._def.checks.find(ch=>ch.kind==="url")}get isEmoji(){return!!this._def.checks.find(ch=>ch.kind==="emoji")}get isUUID(){return!!this._def.checks.find(ch=>ch.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(ch=>ch.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(ch=>ch.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(ch=>ch.kind==="cuid2")}get isULID(){return!!this._def.checks.find(ch=>ch.kind==="ulid")}get isIP(){return!!this._def.checks.find(ch=>ch.kind==="ip")}get isBase64(){return!!this._def.checks.find(ch=>ch.kind==="base64")}get minLength(){let min=null;for(const ch of this._def.checks){if(ch.kind==="min"){if(min===null||ch.value>min)min=ch.value}}return min}get maxLength(){let max=null;for(const ch of this._def.checks){if(ch.kind==="max"){if(max===null||ch.value{var _a;return new ZodString({checks:[],typeName:ZodFirstPartyTypeKind.ZodString,coerce:(_a=params===null||params===void 0?void 0:params.coerce)!==null&&_a!==void 0?_a:false,...processCreateParams(params)})};function floatSafeRemainder(val,step){const valDecCount=(val.toString().split(".")[1]||"").length;const stepDecCount=(step.toString().split(".")[1]||"").length;const decCount=valDecCount>stepDecCount?valDecCount:stepDecCount;const valInt=parseInt(val.toFixed(decCount).replace(".",""));const stepInt=parseInt(step.toFixed(decCount).replace(".",""));return valInt%stepInt/Math.pow(10,decCount)}class ZodNumber extends ZodType{constructor(){super(...arguments);this.min=this.gte;this.max=this.lte;this.step=this.multipleOf}_parse(input){if(this._def.coerce){input.data=Number(input.data)}const parsedType=this._getType(input);if(parsedType!==ZodParsedType.number){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.number,received:ctx.parsedType});return INVALID}let ctx=undefined;const status=new ParseStatus;for(const check of this._def.checks){if(check.kind==="int"){if(!util.isInteger(input.data)){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:"integer",received:"float",message:check.message});status.dirty()}}else if(check.kind==="min"){const tooSmall=check.inclusive?input.datacheck.value:input.data>=check.value;if(tooBig){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:check.value,type:"number",inclusive:check.inclusive,exact:false,message:check.message});status.dirty()}}else if(check.kind==="multipleOf"){if(floatSafeRemainder(input.data,check.value)!==0){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.not_multiple_of,multipleOf:check.value,message:check.message});status.dirty()}}else if(check.kind==="finite"){if(!Number.isFinite(input.data)){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.not_finite,message:check.message});status.dirty()}}else{util.assertNever(check)}}return{status:status.value,value:input.data}}gte(value,message){return this.setLimit("min",value,true,errorUtil.toString(message))}gt(value,message){return this.setLimit("min",value,false,errorUtil.toString(message))}lte(value,message){return this.setLimit("max",value,true,errorUtil.toString(message))}lt(value,message){return this.setLimit("max",value,false,errorUtil.toString(message))}setLimit(kind,value,inclusive,message){return new ZodNumber({...this._def,checks:[...this._def.checks,{kind:kind,value:value,inclusive:inclusive,message:errorUtil.toString(message)}]})}_addCheck(check){return new ZodNumber({...this._def,checks:[...this._def.checks,check]})}int(message){return this._addCheck({kind:"int",message:errorUtil.toString(message)})}positive(message){return this._addCheck({kind:"min",value:0,inclusive:false,message:errorUtil.toString(message)})}negative(message){return this._addCheck({kind:"max",value:0,inclusive:false,message:errorUtil.toString(message)})}nonpositive(message){return this._addCheck({kind:"max",value:0,inclusive:true,message:errorUtil.toString(message)})}nonnegative(message){return this._addCheck({kind:"min",value:0,inclusive:true,message:errorUtil.toString(message)})}multipleOf(value,message){return this._addCheck({kind:"multipleOf",value:value,message:errorUtil.toString(message)})}finite(message){return this._addCheck({kind:"finite",message:errorUtil.toString(message)})}safe(message){return this._addCheck({kind:"min",inclusive:true,value:Number.MIN_SAFE_INTEGER,message:errorUtil.toString(message)})._addCheck({kind:"max",inclusive:true,value:Number.MAX_SAFE_INTEGER,message:errorUtil.toString(message)})}get minValue(){let min=null;for(const ch of this._def.checks){if(ch.kind==="min"){if(min===null||ch.value>min)min=ch.value}}return min}get maxValue(){let max=null;for(const ch of this._def.checks){if(ch.kind==="max"){if(max===null||ch.valuech.kind==="int"||ch.kind==="multipleOf"&&util.isInteger(ch.value))}get isFinite(){let max=null,min=null;for(const ch of this._def.checks){if(ch.kind==="finite"||ch.kind==="int"||ch.kind==="multipleOf"){return true}else if(ch.kind==="min"){if(min===null||ch.value>min)min=ch.value}else if(ch.kind==="max"){if(max===null||ch.value{return new ZodNumber({checks:[],typeName:ZodFirstPartyTypeKind.ZodNumber,coerce:(params===null||params===void 0?void 0:params.coerce)||false,...processCreateParams(params)})};class ZodBigInt extends ZodType{constructor(){super(...arguments);this.min=this.gte;this.max=this.lte}_parse(input){if(this._def.coerce){input.data=BigInt(input.data)}const parsedType=this._getType(input);if(parsedType!==ZodParsedType.bigint){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.bigint,received:ctx.parsedType});return INVALID}let ctx=undefined;const status=new ParseStatus;for(const check of this._def.checks){if(check.kind==="min"){const tooSmall=check.inclusive?input.datacheck.value:input.data>=check.value;if(tooBig){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.too_big,type:"bigint",maximum:check.value,inclusive:check.inclusive,message:check.message});status.dirty()}}else if(check.kind==="multipleOf"){if(input.data%check.value!==BigInt(0)){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.not_multiple_of,multipleOf:check.value,message:check.message});status.dirty()}}else{util.assertNever(check)}}return{status:status.value,value:input.data}}gte(value,message){return this.setLimit("min",value,true,errorUtil.toString(message))}gt(value,message){return this.setLimit("min",value,false,errorUtil.toString(message))}lte(value,message){return this.setLimit("max",value,true,errorUtil.toString(message))}lt(value,message){return this.setLimit("max",value,false,errorUtil.toString(message))}setLimit(kind,value,inclusive,message){return new ZodBigInt({...this._def,checks:[...this._def.checks,{kind:kind,value:value,inclusive:inclusive,message:errorUtil.toString(message)}]})}_addCheck(check){return new ZodBigInt({...this._def,checks:[...this._def.checks,check]})}positive(message){return this._addCheck({kind:"min",value:BigInt(0),inclusive:false,message:errorUtil.toString(message)})}negative(message){return this._addCheck({kind:"max",value:BigInt(0),inclusive:false,message:errorUtil.toString(message)})}nonpositive(message){return this._addCheck({kind:"max",value:BigInt(0),inclusive:true,message:errorUtil.toString(message)})}nonnegative(message){return this._addCheck({kind:"min",value:BigInt(0),inclusive:true,message:errorUtil.toString(message)})}multipleOf(value,message){return this._addCheck({kind:"multipleOf",value:value,message:errorUtil.toString(message)})}get minValue(){let min=null;for(const ch of this._def.checks){if(ch.kind==="min"){if(min===null||ch.value>min)min=ch.value}}return min}get maxValue(){let max=null;for(const ch of this._def.checks){if(ch.kind==="max"){if(max===null||ch.value{var _a;return new ZodBigInt({checks:[],typeName:ZodFirstPartyTypeKind.ZodBigInt,coerce:(_a=params===null||params===void 0?void 0:params.coerce)!==null&&_a!==void 0?_a:false,...processCreateParams(params)})};class ZodBoolean extends ZodType{_parse(input){if(this._def.coerce){input.data=Boolean(input.data)}const parsedType=this._getType(input);if(parsedType!==ZodParsedType.boolean){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.boolean,received:ctx.parsedType});return INVALID}return OK(input.data)}}ZodBoolean.create=params=>{return new ZodBoolean({typeName:ZodFirstPartyTypeKind.ZodBoolean,coerce:(params===null||params===void 0?void 0:params.coerce)||false,...processCreateParams(params)})};class ZodDate extends ZodType{_parse(input){if(this._def.coerce){input.data=new Date(input.data)}const parsedType=this._getType(input);if(parsedType!==ZodParsedType.date){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.date,received:ctx.parsedType});return INVALID}if(isNaN(input.data.getTime())){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_date});return INVALID}const status=new ParseStatus;let ctx=undefined;for(const check of this._def.checks){if(check.kind==="min"){if(input.data.getTime()check.value){ctx=this._getOrReturnCtx(input,ctx);addIssueToContext(ctx,{code:ZodIssueCode.too_big,message:check.message,inclusive:true,exact:false,maximum:check.value,type:"date"});status.dirty()}}else{util.assertNever(check)}}return{status:status.value,value:new Date(input.data.getTime())}}_addCheck(check){return new ZodDate({...this._def,checks:[...this._def.checks,check]})}min(minDate,message){return this._addCheck({kind:"min",value:minDate.getTime(),message:errorUtil.toString(message)})}max(maxDate,message){return this._addCheck({kind:"max",value:maxDate.getTime(),message:errorUtil.toString(message)})}get minDate(){let min=null;for(const ch of this._def.checks){if(ch.kind==="min"){if(min===null||ch.value>min)min=ch.value}}return min!=null?new Date(min):null}get maxDate(){let max=null;for(const ch of this._def.checks){if(ch.kind==="max"){if(max===null||ch.value{return new ZodDate({checks:[],coerce:(params===null||params===void 0?void 0:params.coerce)||false,typeName:ZodFirstPartyTypeKind.ZodDate,...processCreateParams(params)})};class ZodSymbol extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType!==ZodParsedType.symbol){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.symbol,received:ctx.parsedType});return INVALID}return OK(input.data)}}ZodSymbol.create=params=>{return new ZodSymbol({typeName:ZodFirstPartyTypeKind.ZodSymbol,...processCreateParams(params)})};class ZodUndefined extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType!==ZodParsedType.undefined){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.undefined,received:ctx.parsedType});return INVALID}return OK(input.data)}}ZodUndefined.create=params=>{return new ZodUndefined({typeName:ZodFirstPartyTypeKind.ZodUndefined,...processCreateParams(params)})};class ZodNull extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType!==ZodParsedType.null){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.null,received:ctx.parsedType});return INVALID}return OK(input.data)}}ZodNull.create=params=>{return new ZodNull({typeName:ZodFirstPartyTypeKind.ZodNull,...processCreateParams(params)})};class ZodAny extends ZodType{constructor(){super(...arguments);this._any=true}_parse(input){return OK(input.data)}}ZodAny.create=params=>{return new ZodAny({typeName:ZodFirstPartyTypeKind.ZodAny,...processCreateParams(params)})};class ZodUnknown extends ZodType{constructor(){super(...arguments);this._unknown=true}_parse(input){return OK(input.data)}}ZodUnknown.create=params=>{return new ZodUnknown({typeName:ZodFirstPartyTypeKind.ZodUnknown,...processCreateParams(params)})};class ZodNever extends ZodType{_parse(input){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.never,received:ctx.parsedType});return INVALID}}ZodNever.create=params=>{return new ZodNever({typeName:ZodFirstPartyTypeKind.ZodNever,...processCreateParams(params)})};class ZodVoid extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType!==ZodParsedType.undefined){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.void,received:ctx.parsedType});return INVALID}return OK(input.data)}}ZodVoid.create=params=>{return new ZodVoid({typeName:ZodFirstPartyTypeKind.ZodVoid,...processCreateParams(params)})};class ZodArray extends ZodType{_parse(input){const{ctx,status}=this._processInputParams(input);const def=this._def;if(ctx.parsedType!==ZodParsedType.array){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.array,received:ctx.parsedType});return INVALID}if(def.exactLength!==null){const tooBig=ctx.data.length>def.exactLength.value;const tooSmall=ctx.data.lengthdef.maxLength.value){addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:def.maxLength.value,type:"array",inclusive:true,exact:false,message:def.maxLength.message});status.dirty()}}if(ctx.common.async){return Promise.all([...ctx.data].map((item,i)=>{return def.type._parseAsync(new ParseInputLazyPath(ctx,item,ctx.path,i))})).then(result=>{return ParseStatus.mergeArray(status,result)})}const result=[...ctx.data].map((item,i)=>{return def.type._parseSync(new ParseInputLazyPath(ctx,item,ctx.path,i))});return ParseStatus.mergeArray(status,result)}get element(){return this._def.type}min(minLength,message){return new ZodArray({...this._def,minLength:{value:minLength,message:errorUtil.toString(message)}})}max(maxLength,message){return new ZodArray({...this._def,maxLength:{value:maxLength,message:errorUtil.toString(message)}})}length(len,message){return new ZodArray({...this._def,exactLength:{value:len,message:errorUtil.toString(message)}})}nonempty(message){return this.min(1,message)}}ZodArray.create=(schema,params)=>{return new ZodArray({type:schema,minLength:null,maxLength:null,exactLength:null,typeName:ZodFirstPartyTypeKind.ZodArray,...processCreateParams(params)})};function deepPartialify(schema){if(schema instanceof ZodObject){const newShape={};for(const key in schema.shape){const fieldSchema=schema.shape[key];newShape[key]=ZodOptional.create(deepPartialify(fieldSchema))}return new ZodObject({...schema._def,shape:()=>newShape})}else if(schema instanceof ZodArray){return new ZodArray({...schema._def,type:deepPartialify(schema.element)})}else if(schema instanceof ZodOptional){return ZodOptional.create(deepPartialify(schema.unwrap()))}else if(schema instanceof ZodNullable){return ZodNullable.create(deepPartialify(schema.unwrap()))}else if(schema instanceof ZodTuple){return ZodTuple.create(schema.items.map(item=>deepPartialify(item)))}else{return schema}}class ZodObject extends ZodType{constructor(){super(...arguments);this._cached=null;this.nonstrict=this.passthrough;this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const shape=this._def.shape();const keys=util.objectKeys(shape);return this._cached={shape:shape,keys:keys}}_parse(input){const parsedType=this._getType(input);if(parsedType!==ZodParsedType.object){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:ctx.parsedType});return INVALID}const{status,ctx}=this._processInputParams(input);const{shape,keys:shapeKeys}=this._getCached();const extraKeys=[];if(!(this._def.catchall instanceof ZodNever&&this._def.unknownKeys==="strip")){for(const key in ctx.data){if(!shapeKeys.includes(key)){extraKeys.push(key)}}}const pairs=[];for(const key of shapeKeys){const keyValidator=shape[key];const value=ctx.data[key];pairs.push({key:{status:"valid",value:key},value:keyValidator._parse(new ParseInputLazyPath(ctx,value,ctx.path,key)),alwaysSet:key in ctx.data})}if(this._def.catchall instanceof ZodNever){const unknownKeys=this._def.unknownKeys;if(unknownKeys==="passthrough"){for(const key of extraKeys){pairs.push({key:{status:"valid",value:key},value:{status:"valid",value:ctx.data[key]}})}}else if(unknownKeys==="strict"){if(extraKeys.length>0){addIssueToContext(ctx,{code:ZodIssueCode.unrecognized_keys,keys:extraKeys});status.dirty()}}else if(unknownKeys==="strip");else{throw new Error(`Internal ZodObject error: invalid unknownKeys value.`)}}else{const catchall=this._def.catchall;for(const key of extraKeys){const value=ctx.data[key];pairs.push({key:{status:"valid",value:key},value:catchall._parse(new ParseInputLazyPath(ctx,value,ctx.path,key)),alwaysSet:key in ctx.data})}}if(ctx.common.async){return Promise.resolve().then(async()=>{const syncPairs=[];for(const pair of pairs){const key=await pair.key;const value=await pair.value;syncPairs.push({key:key,value:value,alwaysSet:pair.alwaysSet})}return syncPairs}).then(syncPairs=>{return ParseStatus.mergeObjectSync(status,syncPairs)})}else{return ParseStatus.mergeObjectSync(status,pairs)}}get shape(){return this._def.shape()}strict(message){errorUtil.errToObj;return new ZodObject({...this._def,unknownKeys:"strict",...message!==undefined?{errorMap:(issue,ctx)=>{var _a,_b,_c,_d;const defaultError=(_c=(_b=(_a=this._def).errorMap)===null||_b===void 0?void 0:_b.call(_a,issue,ctx).message)!==null&&_c!==void 0?_c:ctx.defaultError;if(issue.code==="unrecognized_keys")return{message:(_d=errorUtil.errToObj(message).message)!==null&&_d!==void 0?_d:defaultError};return{message:defaultError}}}:{}})}strip(){return new ZodObject({...this._def,unknownKeys:"strip"})}passthrough(){return new ZodObject({...this._def,unknownKeys:"passthrough"})}extend(augmentation){return new ZodObject({...this._def,shape:()=>({...this._def.shape(),...augmentation})})}merge(merging){const merged=new ZodObject({unknownKeys:merging._def.unknownKeys,catchall:merging._def.catchall,shape:()=>({...this._def.shape(),...merging._def.shape()}),typeName:ZodFirstPartyTypeKind.ZodObject});return merged}setKey(key,schema){return this.augment({[key]:schema})}catchall(index){return new ZodObject({...this._def,catchall:index})}pick(mask){const shape={};util.objectKeys(mask).forEach(key=>{if(mask[key]&&this.shape[key]){shape[key]=this.shape[key]}});return new ZodObject({...this._def,shape:()=>shape})}omit(mask){const shape={};util.objectKeys(this.shape).forEach(key=>{if(!mask[key]){shape[key]=this.shape[key]}});return new ZodObject({...this._def,shape:()=>shape})}deepPartial(){return deepPartialify(this)}partial(mask){const newShape={};util.objectKeys(this.shape).forEach(key=>{const fieldSchema=this.shape[key];if(mask&&!mask[key]){newShape[key]=fieldSchema}else{newShape[key]=fieldSchema.optional()}});return new ZodObject({...this._def,shape:()=>newShape})}required(mask){const newShape={};util.objectKeys(this.shape).forEach(key=>{if(mask&&!mask[key]){newShape[key]=this.shape[key]}else{const fieldSchema=this.shape[key];let newField=fieldSchema;while(newField instanceof ZodOptional){newField=newField._def.innerType}newShape[key]=newField}});return new ZodObject({...this._def,shape:()=>newShape})}keyof(){return createZodEnum(util.objectKeys(this.shape))}}ZodObject.create=(shape,params)=>{return new ZodObject({shape:()=>shape,unknownKeys:"strip",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(params)})};ZodObject.strictCreate=(shape,params)=>{return new ZodObject({shape:()=>shape,unknownKeys:"strict",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(params)})};ZodObject.lazycreate=(shape,params)=>{return new ZodObject({shape:shape,unknownKeys:"strip",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(params)})};class ZodUnion extends ZodType{_parse(input){const{ctx}=this._processInputParams(input);const options=this._def.options;function handleResults(results){for(const result of results){if(result.result.status==="valid"){return result.result}}for(const result of results){if(result.result.status==="dirty"){ctx.common.issues.push(...result.ctx.common.issues);return result.result}}const unionErrors=results.map(result=>new ZodError(result.ctx.common.issues));addIssueToContext(ctx,{code:ZodIssueCode.invalid_union,unionErrors:unionErrors});return INVALID}if(ctx.common.async){return Promise.all(options.map(async option=>{const childCtx={...ctx,common:{...ctx.common,issues:[]},parent:null};return{result:await option._parseAsync({data:ctx.data,path:ctx.path,parent:childCtx}),ctx:childCtx}})).then(handleResults)}else{let dirty=undefined;const issues=[];for(const option of options){const childCtx={...ctx,common:{...ctx.common,issues:[]},parent:null};const result=option._parseSync({data:ctx.data,path:ctx.path,parent:childCtx});if(result.status==="valid"){return result}else if(result.status==="dirty"&&!dirty){dirty={result:result,ctx:childCtx}}if(childCtx.common.issues.length){issues.push(childCtx.common.issues)}}if(dirty){ctx.common.issues.push(...dirty.ctx.common.issues);return dirty.result}const unionErrors=issues.map(issues=>new ZodError(issues));addIssueToContext(ctx,{code:ZodIssueCode.invalid_union,unionErrors:unionErrors});return INVALID}}get options(){return this._def.options}}ZodUnion.create=(types,params)=>{return new ZodUnion({options:types,typeName:ZodFirstPartyTypeKind.ZodUnion,...processCreateParams(params)})};const getDiscriminator=type=>{if(type instanceof ZodLazy){return getDiscriminator(type.schema)}else if(type instanceof ZodEffects){return getDiscriminator(type.innerType())}else if(type instanceof ZodLiteral){return[type.value]}else if(type instanceof ZodEnum){return type.options}else if(type instanceof ZodNativeEnum){return util.objectValues(type.enum)}else if(type instanceof ZodDefault){return getDiscriminator(type._def.innerType)}else if(type instanceof ZodUndefined){return[undefined]}else if(type instanceof ZodNull){return[null]}else if(type instanceof ZodOptional){return[undefined,...getDiscriminator(type.unwrap())]}else if(type instanceof ZodNullable){return[null,...getDiscriminator(type.unwrap())]}else if(type instanceof ZodBranded){return getDiscriminator(type.unwrap())}else if(type instanceof ZodReadonly){return getDiscriminator(type.unwrap())}else if(type instanceof ZodCatch){return getDiscriminator(type._def.innerType)}else{return[]}};class ZodDiscriminatedUnion extends ZodType{_parse(input){const{ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.object){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:ctx.parsedType});return INVALID}const discriminator=this.discriminator;const discriminatorValue=ctx.data[discriminator];const option=this.optionsMap.get(discriminatorValue);if(!option){addIssueToContext(ctx,{code:ZodIssueCode.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[discriminator]});return INVALID}if(ctx.common.async){return option._parseAsync({data:ctx.data,path:ctx.path,parent:ctx})}else{return option._parseSync({data:ctx.data,path:ctx.path,parent:ctx})}}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(discriminator,options,params){const optionsMap=new Map;for(const type of options){const discriminatorValues=getDiscriminator(type.shape[discriminator]);if(!discriminatorValues.length){throw new Error(`A discriminator value for key \`${discriminator}\` could not be extracted from all schema options`)}for(const value of discriminatorValues){if(optionsMap.has(value)){throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`)}optionsMap.set(value,type)}}return new ZodDiscriminatedUnion({typeName:ZodFirstPartyTypeKind.ZodDiscriminatedUnion,discriminator:discriminator,options:options,optionsMap:optionsMap,...processCreateParams(params)})}}function mergeValues(a,b){const aType=getParsedType(a);const bType=getParsedType(b);if(a===b){return{valid:true,data:a}}else if(aType===ZodParsedType.object&&bType===ZodParsedType.object){const bKeys=util.objectKeys(b);const sharedKeys=util.objectKeys(a).filter(key=>bKeys.indexOf(key)!==-1);const newObj={...a,...b};for(const key of sharedKeys){const sharedValue=mergeValues(a[key],b[key]);if(!sharedValue.valid){return{valid:false}}newObj[key]=sharedValue.data}return{valid:true,data:newObj}}else if(aType===ZodParsedType.array&&bType===ZodParsedType.array){if(a.length!==b.length){return{valid:false}}const newArray=[];for(let index=0;index{if(isAborted(parsedLeft)||isAborted(parsedRight)){return INVALID}const merged=mergeValues(parsedLeft.value,parsedRight.value);if(!merged.valid){addIssueToContext(ctx,{code:ZodIssueCode.invalid_intersection_types});return INVALID}if(isDirty(parsedLeft)||isDirty(parsedRight)){status.dirty()}return{status:status.value,value:merged.data}};if(ctx.common.async){return Promise.all([this._def.left._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}),this._def.right._parseAsync({data:ctx.data,path:ctx.path,parent:ctx})]).then(([left,right])=>handleParsed(left,right))}else{return handleParsed(this._def.left._parseSync({data:ctx.data,path:ctx.path,parent:ctx}),this._def.right._parseSync({data:ctx.data,path:ctx.path,parent:ctx}))}}}ZodIntersection.create=(left,right,params)=>{return new ZodIntersection({left:left,right:right,typeName:ZodFirstPartyTypeKind.ZodIntersection,...processCreateParams(params)})};class ZodTuple extends ZodType{_parse(input){const{status,ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.array){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.array,received:ctx.parsedType});return INVALID}if(ctx.data.lengththis._def.items.length){addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:this._def.items.length,inclusive:true,exact:false,type:"array"});status.dirty()}const items=[...ctx.data].map((item,itemIndex)=>{const schema=this._def.items[itemIndex]||this._def.rest;if(!schema)return null;return schema._parse(new ParseInputLazyPath(ctx,item,ctx.path,itemIndex))}).filter(x=>!!x);if(ctx.common.async){return Promise.all(items).then(results=>{return ParseStatus.mergeArray(status,results)})}else{return ParseStatus.mergeArray(status,items)}}get items(){return this._def.items}rest(rest){return new ZodTuple({...this._def,rest:rest})}}ZodTuple.create=(schemas,params)=>{if(!Array.isArray(schemas)){throw new Error("You must pass an array of schemas to z.tuple([ ... ])")}return new ZodTuple({items:schemas,typeName:ZodFirstPartyTypeKind.ZodTuple,rest:null,...processCreateParams(params)})};class ZodRecord extends ZodType{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(input){const{status,ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.object){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:ctx.parsedType});return INVALID}const pairs=[];const keyType=this._def.keyType;const valueType=this._def.valueType;for(const key in ctx.data){pairs.push({key:keyType._parse(new ParseInputLazyPath(ctx,key,ctx.path,key)),value:valueType._parse(new ParseInputLazyPath(ctx,ctx.data[key],ctx.path,key)),alwaysSet:key in ctx.data})}if(ctx.common.async){return ParseStatus.mergeObjectAsync(status,pairs)}else{return ParseStatus.mergeObjectSync(status,pairs)}}get element(){return this._def.valueType}static create(first,second,third){if(second instanceof ZodType){return new ZodRecord({keyType:first,valueType:second,typeName:ZodFirstPartyTypeKind.ZodRecord,...processCreateParams(third)})}return new ZodRecord({keyType:ZodString.create(),valueType:first,typeName:ZodFirstPartyTypeKind.ZodRecord,...processCreateParams(second)})}}class ZodMap extends ZodType{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(input){const{status,ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.map){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.map,received:ctx.parsedType});return INVALID}const keyType=this._def.keyType;const valueType=this._def.valueType;const pairs=[...ctx.data.entries()].map(([key,value],index)=>{return{key:keyType._parse(new ParseInputLazyPath(ctx,key,ctx.path,[index,"key"])),value:valueType._parse(new ParseInputLazyPath(ctx,value,ctx.path,[index,"value"]))}});if(ctx.common.async){const finalMap=new Map;return Promise.resolve().then(async()=>{for(const pair of pairs){const key=await pair.key;const value=await pair.value;if(key.status==="aborted"||value.status==="aborted"){return INVALID}if(key.status==="dirty"||value.status==="dirty"){status.dirty()}finalMap.set(key.value,value.value)}return{status:status.value,value:finalMap}})}else{const finalMap=new Map;for(const pair of pairs){const key=pair.key;const value=pair.value;if(key.status==="aborted"||value.status==="aborted"){return INVALID}if(key.status==="dirty"||value.status==="dirty"){status.dirty()}finalMap.set(key.value,value.value)}return{status:status.value,value:finalMap}}}}ZodMap.create=(keyType,valueType,params)=>{return new ZodMap({valueType:valueType,keyType:keyType,typeName:ZodFirstPartyTypeKind.ZodMap,...processCreateParams(params)})};class ZodSet extends ZodType{_parse(input){const{status,ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.set){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.set,received:ctx.parsedType});return INVALID}const def=this._def;if(def.minSize!==null){if(ctx.data.sizedef.maxSize.value){addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:def.maxSize.value,type:"set",inclusive:true,exact:false,message:def.maxSize.message});status.dirty()}}const valueType=this._def.valueType;function finalizeSet(elements){const parsedSet=new Set;for(const element of elements){if(element.status==="aborted")return INVALID;if(element.status==="dirty")status.dirty();parsedSet.add(element.value)}return{status:status.value,value:parsedSet}}const elements=[...ctx.data.values()].map((item,i)=>valueType._parse(new ParseInputLazyPath(ctx,item,ctx.path,i)));if(ctx.common.async){return Promise.all(elements).then(elements=>finalizeSet(elements))}else{return finalizeSet(elements)}}min(minSize,message){return new ZodSet({...this._def,minSize:{value:minSize,message:errorUtil.toString(message)}})}max(maxSize,message){return new ZodSet({...this._def,maxSize:{value:maxSize,message:errorUtil.toString(message)}})}size(size,message){return this.min(size,message).max(size,message)}nonempty(message){return this.min(1,message)}}ZodSet.create=(valueType,params)=>{return new ZodSet({valueType:valueType,minSize:null,maxSize:null,typeName:ZodFirstPartyTypeKind.ZodSet,...processCreateParams(params)})};class ZodFunction extends ZodType{constructor(){super(...arguments);this.validate=this.implement}_parse(input){const{ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.function){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.function,received:ctx.parsedType});return INVALID}function makeArgsIssue(args,error){return makeIssue({data:args,path:ctx.path,errorMaps:[ctx.common.contextualErrorMap,ctx.schemaErrorMap,getErrorMap(),errorMap].filter(x=>!!x),issueData:{code:ZodIssueCode.invalid_arguments,argumentsError:error}})}function makeReturnsIssue(returns,error){return makeIssue({data:returns,path:ctx.path,errorMaps:[ctx.common.contextualErrorMap,ctx.schemaErrorMap,getErrorMap(),errorMap].filter(x=>!!x),issueData:{code:ZodIssueCode.invalid_return_type,returnTypeError:error}})}const params={errorMap:ctx.common.contextualErrorMap};const fn=ctx.data;if(this._def.returns instanceof ZodPromise){const me=this;return OK(async function(...args){const error=new ZodError([]);const parsedArgs=await me._def.args.parseAsync(args,params).catch(e=>{error.addIssue(makeArgsIssue(args,e));throw error});const result=await Reflect.apply(fn,this,parsedArgs);const parsedReturns=await me._def.returns._def.type.parseAsync(result,params).catch(e=>{error.addIssue(makeReturnsIssue(result,e));throw error});return parsedReturns})}else{const me=this;return OK(function(...args){const parsedArgs=me._def.args.safeParse(args,params);if(!parsedArgs.success){throw new ZodError([makeArgsIssue(args,parsedArgs.error)])}const result=Reflect.apply(fn,this,parsedArgs.data);const parsedReturns=me._def.returns.safeParse(result,params);if(!parsedReturns.success){throw new ZodError([makeReturnsIssue(result,parsedReturns.error)])}return parsedReturns.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...items){return new ZodFunction({...this._def,args:ZodTuple.create(items).rest(ZodUnknown.create())})}returns(returnType){return new ZodFunction({...this._def,returns:returnType})}implement(func){const validatedFunc=this.parse(func);return validatedFunc}strictImplement(func){const validatedFunc=this.parse(func);return validatedFunc}static create(args,returns,params){return new ZodFunction({args:args?args:ZodTuple.create([]).rest(ZodUnknown.create()),returns:returns||ZodUnknown.create(),typeName:ZodFirstPartyTypeKind.ZodFunction,...processCreateParams(params)})}}class ZodLazy extends ZodType{get schema(){return this._def.getter()}_parse(input){const{ctx}=this._processInputParams(input);const lazySchema=this._def.getter();return lazySchema._parse({data:ctx.data,path:ctx.path,parent:ctx})}}ZodLazy.create=(getter,params)=>{return new ZodLazy({getter:getter,typeName:ZodFirstPartyTypeKind.ZodLazy,...processCreateParams(params)})};class ZodLiteral extends ZodType{_parse(input){if(input.data!==this._def.value){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{received:ctx.data,code:ZodIssueCode.invalid_literal,expected:this._def.value});return INVALID}return{status:"valid",value:input.data}}get value(){return this._def.value}}ZodLiteral.create=(value,params)=>{return new ZodLiteral({value:value,typeName:ZodFirstPartyTypeKind.ZodLiteral,...processCreateParams(params)})};function createZodEnum(values,params){return new ZodEnum({values:values,typeName:ZodFirstPartyTypeKind.ZodEnum,...processCreateParams(params)})}class ZodEnum extends ZodType{constructor(){super(...arguments);_ZodEnum_cache.set(this,void 0)}_parse(input){if(typeof input.data!=="string"){const ctx=this._getOrReturnCtx(input);const expectedValues=this._def.values;addIssueToContext(ctx,{expected:util.joinValues(expectedValues),received:ctx.parsedType,code:ZodIssueCode.invalid_type});return INVALID}if(!__classPrivateFieldGet(this,_ZodEnum_cache)){__classPrivateFieldSet(this,_ZodEnum_cache,new Set(this._def.values))}if(!__classPrivateFieldGet(this,_ZodEnum_cache).has(input.data)){const ctx=this._getOrReturnCtx(input);const expectedValues=this._def.values;addIssueToContext(ctx,{received:ctx.data,code:ZodIssueCode.invalid_enum_value,options:expectedValues});return INVALID}return OK(input.data)}get options(){return this._def.values}get enum(){const enumValues={};for(const val of this._def.values){enumValues[val]=val}return enumValues}get Values(){const enumValues={};for(const val of this._def.values){enumValues[val]=val}return enumValues}get Enum(){const enumValues={};for(const val of this._def.values){enumValues[val]=val}return enumValues}extract(values,newDef=this._def){return ZodEnum.create(values,{...this._def,...newDef})}exclude(values,newDef=this._def){return ZodEnum.create(this.options.filter(opt=>!values.includes(opt)),{...this._def,...newDef})}}_ZodEnum_cache=new WeakMap;ZodEnum.create=createZodEnum;class ZodNativeEnum extends ZodType{constructor(){super(...arguments);_ZodNativeEnum_cache.set(this,void 0)}_parse(input){const nativeEnumValues=util.getValidEnumValues(this._def.values);const ctx=this._getOrReturnCtx(input);if(ctx.parsedType!==ZodParsedType.string&&ctx.parsedType!==ZodParsedType.number){const expectedValues=util.objectValues(nativeEnumValues);addIssueToContext(ctx,{expected:util.joinValues(expectedValues),received:ctx.parsedType,code:ZodIssueCode.invalid_type});return INVALID}if(!__classPrivateFieldGet(this,_ZodNativeEnum_cache)){__classPrivateFieldSet(this,_ZodNativeEnum_cache,new Set(util.getValidEnumValues(this._def.values)))}if(!__classPrivateFieldGet(this,_ZodNativeEnum_cache).has(input.data)){const expectedValues=util.objectValues(nativeEnumValues);addIssueToContext(ctx,{received:ctx.data,code:ZodIssueCode.invalid_enum_value,options:expectedValues});return INVALID}return OK(input.data)}get enum(){return this._def.values}}_ZodNativeEnum_cache=new WeakMap;ZodNativeEnum.create=(values,params)=>{return new ZodNativeEnum({values:values,typeName:ZodFirstPartyTypeKind.ZodNativeEnum,...processCreateParams(params)})};class ZodPromise extends ZodType{unwrap(){return this._def.type}_parse(input){const{ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.promise&&ctx.common.async===false){addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.promise,received:ctx.parsedType});return INVALID}const promisified=ctx.parsedType===ZodParsedType.promise?ctx.data:Promise.resolve(ctx.data);return OK(promisified.then(data=>{return this._def.type.parseAsync(data,{path:ctx.path,errorMap:ctx.common.contextualErrorMap})}))}}ZodPromise.create=(schema,params)=>{return new ZodPromise({type:schema,typeName:ZodFirstPartyTypeKind.ZodPromise,...processCreateParams(params)})};class ZodEffects extends ZodType{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===ZodFirstPartyTypeKind.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(input){const{status,ctx}=this._processInputParams(input);const effect=this._def.effect||null;const checkCtx={addIssue:arg=>{addIssueToContext(ctx,arg);if(arg.fatal){status.abort()}else{status.dirty()}},get path(){return ctx.path}};checkCtx.addIssue=checkCtx.addIssue.bind(checkCtx);if(effect.type==="preprocess"){const processed=effect.transform(ctx.data,checkCtx);if(ctx.common.async){return Promise.resolve(processed).then(async processed=>{if(status.value==="aborted")return INVALID;const result=await this._def.schema._parseAsync({data:processed,path:ctx.path,parent:ctx});if(result.status==="aborted")return INVALID;if(result.status==="dirty")return DIRTY(result.value);if(status.value==="dirty")return DIRTY(result.value);return result})}else{if(status.value==="aborted")return INVALID;const result=this._def.schema._parseSync({data:processed,path:ctx.path,parent:ctx});if(result.status==="aborted")return INVALID;if(result.status==="dirty")return DIRTY(result.value);if(status.value==="dirty")return DIRTY(result.value);return result}}if(effect.type==="refinement"){const executeRefinement=acc=>{const result=effect.refinement(acc,checkCtx);if(ctx.common.async){return Promise.resolve(result)}if(result instanceof Promise){throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.")}return acc};if(ctx.common.async===false){const inner=this._def.schema._parseSync({data:ctx.data,path:ctx.path,parent:ctx});if(inner.status==="aborted")return INVALID;if(inner.status==="dirty")status.dirty();executeRefinement(inner.value);return{status:status.value,value:inner.value}}else{return this._def.schema._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}).then(inner=>{if(inner.status==="aborted")return INVALID;if(inner.status==="dirty")status.dirty();return executeRefinement(inner.value).then(()=>{return{status:status.value,value:inner.value}})})}}if(effect.type==="transform"){if(ctx.common.async===false){const base=this._def.schema._parseSync({data:ctx.data,path:ctx.path,parent:ctx});if(!isValid(base))return base;const result=effect.transform(base.value,checkCtx);if(result instanceof Promise){throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`)}return{status:status.value,value:result}}else{return this._def.schema._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}).then(base=>{if(!isValid(base))return base;return Promise.resolve(effect.transform(base.value,checkCtx)).then(result=>({status:status.value,value:result}))})}}util.assertNever(effect)}}ZodEffects.create=(schema,effect,params)=>{return new ZodEffects({schema:schema,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:effect,...processCreateParams(params)})};ZodEffects.createWithPreprocess=(preprocess,schema,params)=>{return new ZodEffects({schema:schema,effect:{type:"preprocess",transform:preprocess},typeName:ZodFirstPartyTypeKind.ZodEffects,...processCreateParams(params)})};class ZodOptional extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType===ZodParsedType.undefined){return OK(undefined)}return this._def.innerType._parse(input)}unwrap(){return this._def.innerType}}ZodOptional.create=(type,params)=>{return new ZodOptional({innerType:type,typeName:ZodFirstPartyTypeKind.ZodOptional,...processCreateParams(params)})};class ZodNullable extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType===ZodParsedType.null){return OK(null)}return this._def.innerType._parse(input)}unwrap(){return this._def.innerType}}ZodNullable.create=(type,params)=>{return new ZodNullable({innerType:type,typeName:ZodFirstPartyTypeKind.ZodNullable,...processCreateParams(params)})};class ZodDefault extends ZodType{_parse(input){const{ctx}=this._processInputParams(input);let data=ctx.data;if(ctx.parsedType===ZodParsedType.undefined){data=this._def.defaultValue()}return this._def.innerType._parse({data:data,path:ctx.path,parent:ctx})}removeDefault(){return this._def.innerType}}ZodDefault.create=(type,params)=>{return new ZodDefault({innerType:type,typeName:ZodFirstPartyTypeKind.ZodDefault,defaultValue:typeof params.default==="function"?params.default:()=>params.default,...processCreateParams(params)})};class ZodCatch extends ZodType{_parse(input){const{ctx}=this._processInputParams(input);const newCtx={...ctx,common:{...ctx.common,issues:[]}};const result=this._def.innerType._parse({data:newCtx.data,path:newCtx.path,parent:{...newCtx}});if(isAsync(result)){return result.then(result=>{return{status:"valid",value:result.status==="valid"?result.value:this._def.catchValue({get error(){return new ZodError(newCtx.common.issues)},input:newCtx.data})}})}else{return{status:"valid",value:result.status==="valid"?result.value:this._def.catchValue({get error(){return new ZodError(newCtx.common.issues)},input:newCtx.data})}}}removeCatch(){return this._def.innerType}}ZodCatch.create=(type,params)=>{return new ZodCatch({innerType:type,typeName:ZodFirstPartyTypeKind.ZodCatch,catchValue:typeof params.catch==="function"?params.catch:()=>params.catch,...processCreateParams(params)})};class ZodNaN extends ZodType{_parse(input){const parsedType=this._getType(input);if(parsedType!==ZodParsedType.nan){const ctx=this._getOrReturnCtx(input);addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.nan,received:ctx.parsedType});return INVALID}return{status:"valid",value:input.data}}}ZodNaN.create=params=>{return new ZodNaN({typeName:ZodFirstPartyTypeKind.ZodNaN,...processCreateParams(params)})};const BRAND=Symbol("zod_brand");class ZodBranded extends ZodType{_parse(input){const{ctx}=this._processInputParams(input);const data=ctx.data;return this._def.type._parse({data:data,path:ctx.path,parent:ctx})}unwrap(){return this._def.type}}class ZodPipeline extends ZodType{_parse(input){const{status,ctx}=this._processInputParams(input);if(ctx.common.async){const handleAsync=async()=>{const inResult=await this._def.in._parseAsync({data:ctx.data,path:ctx.path,parent:ctx});if(inResult.status==="aborted")return INVALID;if(inResult.status==="dirty"){status.dirty();return DIRTY(inResult.value)}else{return this._def.out._parseAsync({data:inResult.value,path:ctx.path,parent:ctx})}};return handleAsync()}else{const inResult=this._def.in._parseSync({data:ctx.data,path:ctx.path,parent:ctx});if(inResult.status==="aborted")return INVALID;if(inResult.status==="dirty"){status.dirty();return{status:"dirty",value:inResult.value}}else{return this._def.out._parseSync({data:inResult.value,path:ctx.path,parent:ctx})}}}static create(a,b){return new ZodPipeline({in:a,out:b,typeName:ZodFirstPartyTypeKind.ZodPipeline})}}class ZodReadonly extends ZodType{_parse(input){const result=this._def.innerType._parse(input);const freeze=data=>{if(isValid(data)){data.value=Object.freeze(data.value)}return data};return isAsync(result)?result.then(data=>freeze(data)):freeze(result)}unwrap(){return this._def.innerType}}ZodReadonly.create=(type,params)=>{return new ZodReadonly({innerType:type,typeName:ZodFirstPartyTypeKind.ZodReadonly,...processCreateParams(params)})};function custom(check,params={},fatal){if(check)return ZodAny.create().superRefine((data,ctx)=>{var _a,_b;if(!check(data)){const p=typeof params==="function"?params(data):typeof params==="string"?{message:params}:params;const _fatal=(_b=(_a=p.fatal)!==null&&_a!==void 0?_a:fatal)!==null&&_b!==void 0?_b:true;const p2=typeof p==="string"?{message:p}:p;ctx.addIssue({code:"custom",...p2,fatal:_fatal})}});return ZodAny.create()}const late={object:ZodObject.lazycreate};var ZodFirstPartyTypeKind;(function(ZodFirstPartyTypeKind){ZodFirstPartyTypeKind["ZodString"]="ZodString";ZodFirstPartyTypeKind["ZodNumber"]="ZodNumber";ZodFirstPartyTypeKind["ZodNaN"]="ZodNaN";ZodFirstPartyTypeKind["ZodBigInt"]="ZodBigInt";ZodFirstPartyTypeKind["ZodBoolean"]="ZodBoolean";ZodFirstPartyTypeKind["ZodDate"]="ZodDate";ZodFirstPartyTypeKind["ZodSymbol"]="ZodSymbol";ZodFirstPartyTypeKind["ZodUndefined"]="ZodUndefined";ZodFirstPartyTypeKind["ZodNull"]="ZodNull";ZodFirstPartyTypeKind["ZodAny"]="ZodAny";ZodFirstPartyTypeKind["ZodUnknown"]="ZodUnknown";ZodFirstPartyTypeKind["ZodNever"]="ZodNever";ZodFirstPartyTypeKind["ZodVoid"]="ZodVoid";ZodFirstPartyTypeKind["ZodArray"]="ZodArray";ZodFirstPartyTypeKind["ZodObject"]="ZodObject";ZodFirstPartyTypeKind["ZodUnion"]="ZodUnion";ZodFirstPartyTypeKind["ZodDiscriminatedUnion"]="ZodDiscriminatedUnion";ZodFirstPartyTypeKind["ZodIntersection"]="ZodIntersection";ZodFirstPartyTypeKind["ZodTuple"]="ZodTuple";ZodFirstPartyTypeKind["ZodRecord"]="ZodRecord";ZodFirstPartyTypeKind["ZodMap"]="ZodMap";ZodFirstPartyTypeKind["ZodSet"]="ZodSet";ZodFirstPartyTypeKind["ZodFunction"]="ZodFunction";ZodFirstPartyTypeKind["ZodLazy"]="ZodLazy";ZodFirstPartyTypeKind["ZodLiteral"]="ZodLiteral";ZodFirstPartyTypeKind["ZodEnum"]="ZodEnum";ZodFirstPartyTypeKind["ZodEffects"]="ZodEffects";ZodFirstPartyTypeKind["ZodNativeEnum"]="ZodNativeEnum";ZodFirstPartyTypeKind["ZodOptional"]="ZodOptional";ZodFirstPartyTypeKind["ZodNullable"]="ZodNullable";ZodFirstPartyTypeKind["ZodDefault"]="ZodDefault";ZodFirstPartyTypeKind["ZodCatch"]="ZodCatch";ZodFirstPartyTypeKind["ZodPromise"]="ZodPromise";ZodFirstPartyTypeKind["ZodBranded"]="ZodBranded";ZodFirstPartyTypeKind["ZodPipeline"]="ZodPipeline";ZodFirstPartyTypeKind["ZodReadonly"]="ZodReadonly"})(ZodFirstPartyTypeKind||(ZodFirstPartyTypeKind={}));const instanceOfType=(cls,params={message:`Input not instance of ${cls.name}`})=>custom(data=>data instanceof cls,params);const stringType=ZodString.create;const numberType=ZodNumber.create;const nanType=ZodNaN.create;const bigIntType=ZodBigInt.create;const booleanType=ZodBoolean.create;const dateType=ZodDate.create;const symbolType=ZodSymbol.create;const undefinedType=ZodUndefined.create;const nullType=ZodNull.create;const anyType=ZodAny.create;const unknownType=ZodUnknown.create;const neverType=ZodNever.create;const voidType=ZodVoid.create;const arrayType=ZodArray.create;const objectType=ZodObject.create;const strictObjectType=ZodObject.strictCreate;const unionType=ZodUnion.create;const discriminatedUnionType=ZodDiscriminatedUnion.create;const intersectionType=ZodIntersection.create;const tupleType=ZodTuple.create;const recordType=ZodRecord.create;const mapType=ZodMap.create;const setType=ZodSet.create;const functionType=ZodFunction.create;const lazyType=ZodLazy.create;const literalType=ZodLiteral.create;const enumType=ZodEnum.create;const nativeEnumType=ZodNativeEnum.create;const promiseType=ZodPromise.create;const effectsType=ZodEffects.create;const optionalType=ZodOptional.create;const nullableType=ZodNullable.create;const preprocessType=ZodEffects.createWithPreprocess;const pipelineType=ZodPipeline.create;const ostring=()=>stringType().optional();const onumber=()=>numberType().optional();const oboolean=()=>booleanType().optional();const coerce={string:arg=>ZodString.create({...arg,coerce:true}),number:arg=>ZodNumber.create({...arg,coerce:true}),boolean:arg=>ZodBoolean.create({...arg,coerce:true}),bigint:arg=>ZodBigInt.create({...arg,coerce:true}),date:arg=>ZodDate.create({...arg,coerce:true})};const NEVER=INVALID;var z=Object.freeze({__proto__:null,defaultErrorMap:errorMap,setErrorMap:setErrorMap,getErrorMap:getErrorMap,makeIssue:makeIssue,EMPTY_PATH:EMPTY_PATH,addIssueToContext:addIssueToContext,ParseStatus:ParseStatus,INVALID:INVALID,DIRTY:DIRTY,OK:OK,isAborted:isAborted,isDirty:isDirty,isValid:isValid,isAsync:isAsync,get util(){return util},get objectUtil(){return objectUtil},ZodParsedType:ZodParsedType,getParsedType:getParsedType,ZodType:ZodType,datetimeRegex:datetimeRegex,ZodString:ZodString,ZodNumber:ZodNumber,ZodBigInt:ZodBigInt,ZodBoolean:ZodBoolean,ZodDate:ZodDate,ZodSymbol:ZodSymbol,ZodUndefined:ZodUndefined,ZodNull:ZodNull,ZodAny:ZodAny,ZodUnknown:ZodUnknown,ZodNever:ZodNever,ZodVoid:ZodVoid,ZodArray:ZodArray,ZodObject:ZodObject,ZodUnion:ZodUnion,ZodDiscriminatedUnion:ZodDiscriminatedUnion,ZodIntersection:ZodIntersection,ZodTuple:ZodTuple,ZodRecord:ZodRecord,ZodMap:ZodMap,ZodSet:ZodSet,ZodFunction:ZodFunction,ZodLazy:ZodLazy,ZodLiteral:ZodLiteral,ZodEnum:ZodEnum,ZodNativeEnum:ZodNativeEnum,ZodPromise:ZodPromise,ZodEffects:ZodEffects,ZodTransformer:ZodEffects,ZodOptional:ZodOptional,ZodNullable:ZodNullable,ZodDefault:ZodDefault,ZodCatch:ZodCatch,ZodNaN:ZodNaN,BRAND:BRAND,ZodBranded:ZodBranded,ZodPipeline:ZodPipeline,ZodReadonly:ZodReadonly,custom:custom,Schema:ZodType,ZodSchema:ZodType,late:late,get ZodFirstPartyTypeKind(){return ZodFirstPartyTypeKind},coerce:coerce,any:anyType,array:arrayType,bigint:bigIntType,boolean:booleanType,date:dateType,discriminatedUnion:discriminatedUnionType,effect:effectsType,enum:enumType,function:functionType,instanceof:instanceOfType,intersection:intersectionType,lazy:lazyType,literal:literalType,map:mapType,nan:nanType,nativeEnum:nativeEnumType,never:neverType,null:nullType,nullable:nullableType,number:numberType,object:objectType,oboolean:oboolean,onumber:onumber,optional:optionalType,ostring:ostring,pipeline:pipelineType,preprocess:preprocessType,promise:promiseType,record:recordType,set:setType,strictObject:strictObjectType,string:stringType,symbol:symbolType,transformer:effectsType,tuple:tupleType,undefined:undefinedType,union:unionType,unknown:unknownType,void:voidType,NEVER:NEVER,ZodIssueCode:ZodIssueCode,quotelessJson:quotelessJson,ZodError:ZodError});const SerializedSealingPair=z.object({privateKey:z.string(),publicKey:z.string()});const zPermitV2WithDefaults=z.object({name:z.string().optional().default("Unnamed Permit"),type:z.enum(["self","sharing","recipient"]),issuer:z.string().refine(val=>isAddress(val),{message:"PermitV2 issuer :: invalid address"}).refine(val=>val!==ZeroAddress,{message:"PermitV2 issuer :: must not be zeroAddress"}),expiration:z.number().optional().default(1e12),contracts:z.array(z.string()).optional().default([]),projects:z.array(z.string()).optional().default([]),recipient:z.string().optional().default(ZeroAddress).refine(val=>isAddress(val),{message:"PermitV2 recipient :: invalid address"}),validatorId:z.number().optional().default(0),validatorContract:z.string().optional().default(ZeroAddress).refine(val=>isAddress(val),{message:"PermitV2 validatorContract :: invalid address"}),sealingPair:SerializedSealingPair.optional(),issuerSignature:z.string().optional().default("0x"),recipientSignature:z.string().optional().default("0x")});const PermitV2RefineAccess=[data=>{return data.contracts.length+data.projects.length>0},{message:"PermitV2 access :: at least one contract or project must be accessible.",path:["contracts","projects"]}];const PermitV2RefineValidator=[data=>data.validatorId!==0&&data.validatorContract!==ZeroAddress||data.validatorId===0&&data.validatorContract===ZeroAddress,{message:"PermitV2 external validator :: validatorId and validatorContract must either both be set or both be unset.",path:["validatorId","validatorContract"]}];const PermitV2SignaturesSuperRefinement=options=>{return(data,ctx)=>{if(options.checkRecipient){if(data.type==="self"&&data.recipient!==ZeroAddress)ctx.addIssue({code:z.ZodIssueCode.custom,path:["recipient"],message:`PermitV2 (type '${data.type}') recipient :: must be empty (zeroAddress)`});if((data.type==="recipient"||data.type==="sharing")&&data.recipient===ZeroAddress){ctx.addIssue({code:z.ZodIssueCode.custom,path:["recipient"],message:`PermitV2 (type '${data.type}') recipient :: must not be empty`})}}if(options.checkSealingPair&&data.sealingPair==null)ctx.addIssue({code:z.ZodIssueCode.custom,path:["sealingPair"],message:`PermitV2 sealingPair :: must not be empty`});if((data.type==="self"||data.type==="sharing")&&data.recipientSignature!=="0x"){ctx.addIssue({code:z.ZodIssueCode.custom,path:["recipientSignature"],message:`PermitV2 (type '${data.type}') recipientSignature :: should not be populated by the issuer`})}if(data.type==="recipient"&&data.issuerSignature==="0x"){ctx.addIssue({code:z.ZodIssueCode.custom,path:["issuerSignature"],message:`PermitV2 (type 'recipient') issuerSignature :: \`issuer\` must sign the PermitV2 before sharing it with \`recipient\``})}if(options.checkSigned){if((data.type==="self"||data.type==="sharing")&&data.issuerSignature==="0x")ctx.addIssue({code:z.ZodIssueCode.custom,path:["issuerSignature"],message:`PermitV2 (type '${data.type}') issuerSignature :: must be populated with issuer's signature. Use \`PermitV2.sign\` or create permit with \`PermitV2.createAndSign\``});if(data.type==="recipient"&&data.recipientSignature==="0x"){ctx.addIssue({code:z.ZodIssueCode.custom,path:["recipientSignature"],message:`PermitV2 (type 'recipient') recipientSignature :: must be populated with recipient's signature. Use \`PermitV2.sign\` or create permit with \`PermitV2.createAndSign\``})}}return}};const PermitV2ParamsValidator=zPermitV2WithDefaults.refine(...PermitV2RefineAccess).refine(...PermitV2RefineValidator).superRefine(PermitV2SignaturesSuperRefinement({checkRecipient:true,checkSealingPair:false,checkSigned:false}));const FullyFormedPermitV2Validator=zPermitV2WithDefaults.required().refine(...PermitV2RefineAccess).refine(...PermitV2RefineValidator).superRefine(PermitV2SignaturesSuperRefinement({checkRecipient:true,checkSealingPair:true,checkSigned:true}));class PermitV2{constructor(options,metadata){this._signedChainId=undefined;this.updateName=name=>{this.name=name};this.getInterface=()=>{return{name:this.name,type:this.type,issuer:this.issuer,expiration:this.expiration,contracts:this.contracts,projects:this.projects,recipient:this.recipient,validatorId:this.validatorId,validatorContract:this.validatorContract,sealingPair:this.sealingPair,issuerSignature:this.issuerSignature,recipientSignature:this.recipientSignature}};this.export=()=>{const cleanedPermit={name:this.name,type:this.type,issuer:this.issuer,expiration:this.expiration};if(this.contracts.length>0)cleanedPermit.contracts=this.contracts;if(this.projects.length>0)cleanedPermit.projects=this.projects;if(this.recipient!==ZeroAddress)cleanedPermit.recipient=this.recipient;if(this.validatorId!==0)cleanedPermit.validatorId=this.validatorId;if(this.validatorContract!==ZeroAddress)cleanedPermit.validatorContract=this.validatorContract;if(this.type==="sharing"&&this.issuerSignature!=="0x")cleanedPermit.issuerSignature=this.issuerSignature;return JSON.stringify(cleanedPermit,undefined,2)};this.serialize=()=>{const{sealingPair,...permit}=this.getInterface();return{...permit,_signedChainId:this._signedChainId,sealingPair:{publicKey:sealingPair.publicKey,privateKey:sealingPair.privateKey}}};this.getPermission=(skipValidation=false)=>{const permitData=this.getInterface();if(!skipValidation){const validationResult=FullyFormedPermitV2Validator.safeParse(permitData);if(!validationResult.success){throw new Error(`PermitV2 :: getPermission :: permit validation failed - ${JSON.stringify(validationResult.error,null,2)} ${JSON.stringify(permitData,null,2)}`)}}const{name,type,sealingPair,...permit}=permitData;return{...permit,sealingKey:`0x${sealingPair.publicKey}`}};this.getHash=()=>keccak256(id(JSON.stringify({type:this.type,issuer:this.issuer,expiration:this.expiration,contracts:this.contracts,projects:this.projects,recipient:this.recipient,validatorId:this.validatorId,validatorContract:this.validatorContract})));this.getSignatureParams=(chainId,primaryType)=>{return{domain:getSignatureDomain(chainId),...getSignatureTypesAndMessage(primaryType,SignatureTypes[primaryType],this.getPermission(true))}};this.sign=async(chainId,signer)=>{if(chainId==null)throw new Error("PermitV2 :: sign - chainId undefined, cannot sign a permit with an unknown chainId");if(signer==null)throw new Error("PermitV2 :: sign - signer undefined, you must pass in a `signer` for the connected user to create a permitV2 signature");let primaryType="PermissionedV2IssuerSelf";if(this.type==="self")primaryType="PermissionedV2IssuerSelf";if(this.type==="sharing")primaryType="PermissionedV2IssuerShared";if(this.type==="recipient")primaryType="PermissionedV2Recipient";const{domain,types,message}=this.getSignatureParams(chainId,primaryType);const signature=await signer.signTypedData(domain,types,message);if(this.type==="self"||this.type==="sharing"){this.issuerSignature=signature}if(this.type==="recipient"){this.recipientSignature=signature}this._signedChainId=chainId};this.unsealCiphertext=ciphertext=>{if(chainIsHardhat(this._signedChainId))return hardhatMockUnseal(ciphertext);return this.sealingPair.unseal(ciphertext)};this.getSatisfies=requirements=>{let contractsSatisfied=true;const unsatisfiedContracts=[];for(const contract in requirements.contracts){if(!this.contracts.includes(contract)){contractsSatisfied=false;unsatisfiedContracts.push(contract)}}let projectsSatisfied=true;const unsatisfiedProjects=[];for(const project in requirements.projects){if(!this.projects.includes(project)){projectsSatisfied=false;unsatisfiedProjects.push(project)}}if(contractsSatisfied||projectsSatisfied)return{satisfies:true,unsatisfiedContracts:null,unsatisfiedProjects:null};return{satisfies:false,unsatisfiedContracts:unsatisfiedContracts,unsatisfiedProjects:unsatisfiedProjects}};this.isSigned=()=>{if(this.type==="self"||this.type==="sharing"){return this.issuerSignature!=="0x"}if(this.type==="recipient"){return this.recipientSignature!="0x"}return false};this.isExpired=()=>{return this.expiration{if(this.isExpired())return{valid:false,error:"expired"};if(!this.isSigned())return{valid:false,error:"not-signed"};return{valid:true,error:null}};this.name=options.name;this.type=options.type;this.issuer=options.issuer;this.expiration=options.expiration;this.contracts=options.contracts;this.projects=options.projects;this.recipient=options.recipient;this.validatorId=options.validatorId;this.validatorContract=options.validatorContract;this.sealingPair=options.sealingPair;this.issuerSignature=options.issuerSignature;this.recipientSignature=options.recipientSignature;this._signedChainId=metadata?._signedChainId}static async create(options){const{success,data:parsed,error}=PermitV2ParamsValidator.safeParse(options);if(!success){throw new Error("PermitV2 :: create :: Parsing PermitV2Options failed "+JSON.stringify(error,null,2))}const sealingPair=parsed.sealingPair!=null?new SealingKey(parsed.sealingPair.privateKey,parsed.sealingPair.publicKey):await GenerateSealingKey();return new PermitV2({...parsed,sealingPair:sealingPair})}static async createAndSign(options,chainId,signer){const permit=await PermitV2.create(options);await permit.sign(chainId,signer);return permit}unseal(item){const sealedItem=getAsSealedItem(item);if(sealedItem!=null){const bn=chainIsHardhat(this._signedChainId)?hardhatMockUnseal(sealedItem.data):this.sealingPair.unseal(sealedItem.data);if(isSealedBool(sealedItem)){return Boolean(bn).valueOf()}if(isSealedAddress(sealedItem)){return getAddress(`0x${bn.toString(16).slice(-40)}`)}if(isSealedUint(sealedItem)){return bn}}if(typeof item==="object"&&item!==null){if(Array.isArray(item)){return item.map(nestedItem=>this.unseal(nestedItem))}else{const result={};for(const key in item){result[key]=this.unseal(item[key])}return result}}return item}}PermitV2.deserialize=({_signedChainId,sealingPair,...permit})=>{return new PermitV2({...permit,sealingPair:new SealingKey(sealingPair.privateKey,sealingPair.publicKey)},{_signedChainId:_signedChainId})};PermitV2.validate=permit=>{return FullyFormedPermitV2Validator.safeParse(permit)};const createStoreImpl=createState=>{let state;const listeners=new Set;const setState=(partial,replace)=>{const nextState=typeof partial==="function"?partial(state):partial;if(!Object.is(nextState,state)){const previousState=state;state=(replace!=null?replace:typeof nextState!=="object"||nextState===null)?nextState:Object.assign({},state,nextState);listeners.forEach(listener=>listener(state,previousState))}};const getState=()=>state;const getInitialState=()=>initialState;const subscribe=listener=>{listeners.add(listener);return()=>listeners.delete(listener)};const api={setState:setState,getState:getState,getInitialState:getInitialState,subscribe:subscribe};const initialState=state=createState(setState,getState,api);return api};const createStore=createState=>createState?createStoreImpl(createState):createStoreImpl;function createJSONStorage(getStorage,options){let storage;try{storage=getStorage()}catch(e){return}const persistStorage={getItem:name=>{var _a;const parse=str2=>{if(str2===null){return null}return JSON.parse(str2,void 0)};const str=(_a=storage.getItem(name))!=null?_a:null;if(str instanceof Promise){return str.then(parse)}return parse(str)},setItem:(name,newValue)=>storage.setItem(name,JSON.stringify(newValue,void 0)),removeItem:name=>storage.removeItem(name)};return persistStorage}const toThenable=fn=>input=>{try{const result=fn(input);if(result instanceof Promise){return result}return{then(onFulfilled){return toThenable(onFulfilled)(result)},catch(_onRejected){return this}}}catch(e){return{then(_onFulfilled){return this},catch(onRejected){return toThenable(onRejected)(e)}}}};const persistImpl=(config,baseOptions)=>(set,get,api)=>{let options={storage:createJSONStorage(()=>localStorage),partialize:state=>state,version:0,merge:(persistedState,currentState)=>({...currentState,...persistedState}),...baseOptions};let hasHydrated=false;const hydrationListeners=new Set;const finishHydrationListeners=new Set;let storage=options.storage;if(!storage){return config((...args)=>{console.warn(`[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`);set(...args)},get,api)}const setItem=()=>{const state=options.partialize({...get()});return storage.setItem(options.name,{state:state,version:options.version})};const savedSetState=api.setState;api.setState=(state,replace)=>{savedSetState(state,replace);void setItem()};const configResult=config((...args)=>{set(...args);void setItem()},get,api);api.getInitialState=()=>configResult;let stateFromStorage;const hydrate=()=>{var _a,_b;if(!storage)return;hasHydrated=false;hydrationListeners.forEach(cb=>{var _a2;return cb((_a2=get())!=null?_a2:configResult)});const postRehydrationCallback=((_b=options.onRehydrateStorage)==null?void 0:_b.call(options,(_a=get())!=null?_a:configResult))||void 0;return toThenable(storage.getItem.bind(storage))(options.name).then(deserializedStorageValue=>{if(deserializedStorageValue){if(typeof deserializedStorageValue.version==="number"&&deserializedStorageValue.version!==options.version){if(options.migrate){return[true,options.migrate(deserializedStorageValue.state,deserializedStorageValue.version)]}console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`)}else{return[false,deserializedStorageValue.state]}}return[false,void 0]}).then(migrationResult=>{var _a2;const[migrated,migratedState]=migrationResult;stateFromStorage=options.merge(migratedState,(_a2=get())!=null?_a2:configResult);set(stateFromStorage,true);if(migrated){return setItem()}}).then(()=>{postRehydrationCallback==null?void 0:postRehydrationCallback(stateFromStorage,void 0);stateFromStorage=get();hasHydrated=true;finishHydrationListeners.forEach(cb=>cb(stateFromStorage))}).catch(e=>{postRehydrationCallback==null?void 0:postRehydrationCallback(void 0,e)})};api.persist={setOptions:newOptions=>{options={...options,...newOptions};if(newOptions.storage){storage=newOptions.storage}},clearStorage:()=>{storage==null?void 0:storage.removeItem(options.name)},getOptions:()=>options,rehydrate:()=>hydrate(),hasHydrated:()=>hasHydrated,onHydrate:cb=>{hydrationListeners.add(cb);return()=>{hydrationListeners.delete(cb)}},onFinishHydration:cb=>{finishHydrationListeners.add(cb);return()=>{finishHydrationListeners.delete(cb)}}};if(!options.skipHydration){hydrate()}return stateFromStorage||configResult};const persist=persistImpl;var NOTHING=Symbol.for("immer-nothing");var DRAFTABLE=Symbol.for("immer-draftable");var DRAFT_STATE=Symbol.for("immer-state");var errors=process.env.NODE_ENV!=="production"?[function(plugin){return`The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \`enable${plugin}()\` when initializing your application.`},function(thing){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`},"This object has been frozen and should not be mutated",function(data){return"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? "+data},"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.","Immer forbids circular references","The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(thing){return`'current' expects a draft, got: ${thing}`},"Object.defineProperty() cannot be used on an Immer draft","Object.setPrototypeOf() cannot be used on an Immer draft","Immer only supports deleting array indices","Immer only supports setting array indices and the 'length' property",function(thing){return`'original' expects a draft, got: ${thing}`}]:[];function die(error,...args){if(process.env.NODE_ENV!=="production"){const e=errors[error];const msg=typeof e==="function"?e.apply(null,args):e;throw new Error(`[Immer] ${msg}`)}throw new Error(`[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`)}var getPrototypeOf=Object.getPrototypeOf;function isDraft(value){return!!value&&!!value[DRAFT_STATE]}function isDraftable(value){if(!value)return false;return isPlainObject(value)||Array.isArray(value)||!!value[DRAFTABLE]||!!value.constructor?.[DRAFTABLE]||isMap(value)||isSet(value)}var objectCtorString=Object.prototype.constructor.toString();function isPlainObject(value){if(!value||typeof value!=="object")return false;const proto=getPrototypeOf(value);if(proto===null){return true}const Ctor=Object.hasOwnProperty.call(proto,"constructor")&&proto.constructor;if(Ctor===Object)return true;return typeof Ctor=="function"&&Function.toString.call(Ctor)===objectCtorString}function each(obj,iter){if(getArchtype(obj)===0){Reflect.ownKeys(obj).forEach(key=>{iter(key,obj[key],obj)})}else{obj.forEach((entry,index)=>iter(index,entry,obj))}}function getArchtype(thing){const state=thing[DRAFT_STATE];return state?state.type_:Array.isArray(thing)?1:isMap(thing)?2:isSet(thing)?3:0}function has(thing,prop){return getArchtype(thing)===2?thing.has(prop):Object.prototype.hasOwnProperty.call(thing,prop)}function set(thing,propOrOldValue,value){const t=getArchtype(thing);if(t===2)thing.set(propOrOldValue,value);else if(t===3){thing.add(value)}else thing[propOrOldValue]=value}function is(x,y){if(x===y){return x!==0||1/x===1/y}else{return x!==x&&y!==y}}function isMap(target){return target instanceof Map}function isSet(target){return target instanceof Set}function latest(state){return state.copy_||state.base_}function shallowCopy(base,strict){if(isMap(base)){return new Map(base)}if(isSet(base)){return new Set(base)}if(Array.isArray(base))return Array.prototype.slice.call(base);const isPlain=isPlainObject(base);if(strict===true||strict==="class_only"&&!isPlain){const descriptors=Object.getOwnPropertyDescriptors(base);delete descriptors[DRAFT_STATE];let keys=Reflect.ownKeys(descriptors);for(let i=0;i1){obj.set=obj.add=obj.clear=obj.delete=dontMutateFrozenCollections}Object.freeze(obj);if(deep)Object.entries(obj).forEach(([key,value])=>freeze(value,true));return obj}function dontMutateFrozenCollections(){die(2)}function isFrozen(obj){return Object.isFrozen(obj)}var plugins={};function getPlugin(pluginKey){const plugin=plugins[pluginKey];if(!plugin){die(0,pluginKey)}return plugin}var currentScope;function getCurrentScope(){return currentScope}function createScope(parent_,immer_){return{drafts_:[],parent_:parent_,immer_:immer_,canAutoFreeze_:true,unfinalizedDrafts_:0}}function usePatchesInScope(scope,patchListener){if(patchListener){getPlugin("Patches");scope.patches_=[];scope.inversePatches_=[];scope.patchListener_=patchListener}}function revokeScope(scope){leaveScope(scope);scope.drafts_.forEach(revokeDraft);scope.drafts_=null}function leaveScope(scope){if(scope===currentScope){currentScope=scope.parent_}}function enterScope(immer2){return currentScope=createScope(currentScope,immer2)}function revokeDraft(draft){const state=draft[DRAFT_STATE];if(state.type_===0||state.type_===1)state.revoke_();else state.revoked_=true}function processResult(result,scope){scope.unfinalizedDrafts_=scope.drafts_.length;const baseDraft=scope.drafts_[0];const isReplaced=result!==void 0&&result!==baseDraft;if(isReplaced){if(baseDraft[DRAFT_STATE].modified_){revokeScope(scope);die(4)}if(isDraftable(result)){result=finalize(scope,result);if(!scope.parent_)maybeFreeze(scope,result)}if(scope.patches_){getPlugin("Patches").generateReplacementPatches_(baseDraft[DRAFT_STATE].base_,result,scope.patches_,scope.inversePatches_)}}else{result=finalize(scope,baseDraft,[])}revokeScope(scope);if(scope.patches_){scope.patchListener_(scope.patches_,scope.inversePatches_)}return result!==NOTHING?result:void 0}function finalize(rootScope,value,path){if(isFrozen(value))return value;const state=value[DRAFT_STATE];if(!state){each(value,(key,childValue)=>finalizeProperty(rootScope,state,value,key,childValue,path));return value}if(state.scope_!==rootScope)return value;if(!state.modified_){maybeFreeze(rootScope,state.base_,true);return state.base_}if(!state.finalized_){state.finalized_=true;state.scope_.unfinalizedDrafts_--;const result=state.copy_;let resultEach=result;let isSet2=false;if(state.type_===3){resultEach=new Set(result);result.clear();isSet2=true}each(resultEach,(key,childValue)=>finalizeProperty(rootScope,state,result,key,childValue,path,isSet2));maybeFreeze(rootScope,result,false);if(path&&rootScope.patches_){getPlugin("Patches").generatePatches_(state,path,rootScope.patches_,rootScope.inversePatches_)}}return state.copy_}function finalizeProperty(rootScope,parentState,targetObject,prop,childValue,rootPath,targetIsSet){if(process.env.NODE_ENV!=="production"&&childValue===targetObject)die(5);if(isDraft(childValue)){const path=rootPath&&parentState&&parentState.type_!==3&&!has(parentState.assigned_,prop)?rootPath.concat(prop):void 0;const res=finalize(rootScope,childValue,path);set(targetObject,prop,res);if(isDraft(res)){rootScope.canAutoFreeze_=false}else return}else if(targetIsSet){targetObject.add(childValue)}if(isDraftable(childValue)&&!isFrozen(childValue)){if(!rootScope.immer_.autoFreeze_&&rootScope.unfinalizedDrafts_<1){return}finalize(rootScope,childValue);if((!parentState||!parentState.scope_.parent_)&&typeof prop!=="symbol"&&Object.prototype.propertyIsEnumerable.call(targetObject,prop))maybeFreeze(rootScope,childValue)}}function maybeFreeze(scope,value,deep=false){if(!scope.parent_&&scope.immer_.autoFreeze_&&scope.canAutoFreeze_){freeze(value,deep)}}function createProxyProxy(base,parent){const isArray=Array.isArray(base);const state={type_:isArray?1:0,scope_:parent?parent.scope_:getCurrentScope(),modified_:false,finalized_:false,assigned_:{},parent_:parent,base_:base,draft_:null,copy_:null,revoke_:null,isManual_:false};let target=state;let traps=objectTraps;if(isArray){target=[state];traps=arrayTraps}const{revoke,proxy}=Proxy.revocable(target,traps);state.draft_=proxy;state.revoke_=revoke;return proxy}var objectTraps={get(state,prop){if(prop===DRAFT_STATE)return state;const source=latest(state);if(!has(source,prop)){return readPropFromProto(state,source,prop)}const value=source[prop];if(state.finalized_||!isDraftable(value)){return value}if(value===peek(state.base_,prop)){prepareCopy(state);return state.copy_[prop]=createProxy(value,state)}return value},has(state,prop){return prop in latest(state)},ownKeys(state){return Reflect.ownKeys(latest(state))},set(state,prop,value){const desc=getDescriptorFromProto(latest(state),prop);if(desc?.set){desc.set.call(state.draft_,value);return true}if(!state.modified_){const current2=peek(latest(state),prop);const currentState=current2?.[DRAFT_STATE];if(currentState&¤tState.base_===value){state.copy_[prop]=value;state.assigned_[prop]=false;return true}if(is(value,current2)&&(value!==void 0||has(state.base_,prop)))return true;prepareCopy(state);markChanged(state)}if(state.copy_[prop]===value&&(value!==void 0||prop in state.copy_)||Number.isNaN(value)&&Number.isNaN(state.copy_[prop]))return true;state.copy_[prop]=value;state.assigned_[prop]=true;return true},deleteProperty(state,prop){if(peek(state.base_,prop)!==void 0||prop in state.base_){state.assigned_[prop]=false;prepareCopy(state);markChanged(state)}else{delete state.assigned_[prop]}if(state.copy_){delete state.copy_[prop]}return true},getOwnPropertyDescriptor(state,prop){const owner=latest(state);const desc=Reflect.getOwnPropertyDescriptor(owner,prop);if(!desc)return desc;return{writable:true,configurable:state.type_!==1||prop!=="length",enumerable:desc.enumerable,value:owner[prop]}},defineProperty(){die(11)},getPrototypeOf(state){return getPrototypeOf(state.base_)},setPrototypeOf(){die(12)}};var arrayTraps={};each(objectTraps,(key,fn)=>{arrayTraps[key]=function(){arguments[0]=arguments[0][0];return fn.apply(this,arguments)}});arrayTraps.deleteProperty=function(state,prop){if(process.env.NODE_ENV!=="production"&&isNaN(parseInt(prop)))die(13);return arrayTraps.set.call(this,state,prop,void 0)};arrayTraps.set=function(state,prop,value){if(process.env.NODE_ENV!=="production"&&prop!=="length"&&isNaN(parseInt(prop)))die(14);return objectTraps.set.call(this,state[0],prop,value,state[0])};function peek(draft,prop){const state=draft[DRAFT_STATE];const source=state?latest(state):draft;return source[prop]}function readPropFromProto(state,source,prop){const desc=getDescriptorFromProto(source,prop);return desc?`value`in desc?desc.value:desc.get?.call(state.draft_):void 0}function getDescriptorFromProto(source,prop){if(!(prop in source))return void 0;let proto=getPrototypeOf(source);while(proto){const desc=Object.getOwnPropertyDescriptor(proto,prop);if(desc)return desc;proto=getPrototypeOf(proto)}return void 0}function markChanged(state){if(!state.modified_){state.modified_=true;if(state.parent_){markChanged(state.parent_)}}}function prepareCopy(state){if(!state.copy_){state.copy_=shallowCopy(state.base_,state.scope_.immer_.useStrictShallowCopy_)}}var Immer2=class{constructor(config){this.autoFreeze_=true;this.useStrictShallowCopy_=false;this.produce=(base,recipe,patchListener)=>{if(typeof base==="function"&&typeof recipe!=="function"){const defaultBase=recipe;recipe=base;const self=this;return function curriedProduce(base2=defaultBase,...args){return self.produce(base2,draft=>recipe.call(this,draft,...args))}}if(typeof recipe!=="function")die(6);if(patchListener!==void 0&&typeof patchListener!=="function")die(7);let result;if(isDraftable(base)){const scope=enterScope(this);const proxy=createProxy(base,void 0);let hasError=true;try{result=recipe(proxy);hasError=false}finally{if(hasError)revokeScope(scope);else leaveScope(scope)}usePatchesInScope(scope,patchListener);return processResult(result,scope)}else if(!base||typeof base!=="object"){result=recipe(base);if(result===void 0)result=base;if(result===NOTHING)result=void 0;if(this.autoFreeze_)freeze(result,true);if(patchListener){const p=[];const ip=[];getPlugin("Patches").generateReplacementPatches_(base,result,p,ip);patchListener(p,ip)}return result}else die(1,base)};this.produceWithPatches=(base,recipe)=>{if(typeof base==="function"){return(state,...args)=>this.produceWithPatches(state,draft=>base(draft,...args))}let patches,inversePatches;const result=this.produce(base,recipe,(p,ip)=>{patches=p;inversePatches=ip});return[result,patches,inversePatches]};if(typeof config?.autoFreeze==="boolean")this.setAutoFreeze(config.autoFreeze);if(typeof config?.useStrictShallowCopy==="boolean")this.setUseStrictShallowCopy(config.useStrictShallowCopy)}createDraft(base){if(!isDraftable(base))die(8);if(isDraft(base))base=current(base);const scope=enterScope(this);const proxy=createProxy(base,void 0);proxy[DRAFT_STATE].isManual_=true;leaveScope(scope);return proxy}finishDraft(draft,patchListener){const state=draft&&draft[DRAFT_STATE];if(!state||!state.isManual_)die(9);const{scope_:scope}=state;usePatchesInScope(scope,patchListener);return processResult(void 0,scope)}setAutoFreeze(value){this.autoFreeze_=value}setUseStrictShallowCopy(value){this.useStrictShallowCopy_=value}applyPatches(base,patches){let i;for(i=patches.length-1;i>=0;i--){const patch=patches[i];if(patch.path.length===0&&patch.op==="replace"){base=patch.value;break}}if(i>-1){patches=patches.slice(i+1)}const applyPatchesImpl=getPlugin("Patches").applyPatches_;if(isDraft(base)){return applyPatchesImpl(base,patches)}return this.produce(base,draft=>applyPatchesImpl(draft,patches))}};function createProxy(value,parent){const draft=isMap(value)?getPlugin("MapSet").proxyMap_(value,parent):isSet(value)?getPlugin("MapSet").proxySet_(value,parent):createProxyProxy(value,parent);const scope=parent?parent.scope_:getCurrentScope();scope.drafts_.push(draft);return draft}function current(value){if(!isDraft(value))die(10,value);return currentImpl(value)}function currentImpl(value){if(!isDraftable(value)||isFrozen(value))return value;const state=value[DRAFT_STATE];let copy;if(state){if(!state.modified_)return state.base_;state.finalized_=true;copy=shallowCopy(value,state.scope_.immer_.useStrictShallowCopy_)}else{copy=shallowCopy(value,true)}each(copy,(key,childValue)=>{set(copy,key,currentImpl(childValue))});if(state){state.finalized_=false}return copy}var immer=new Immer2;var produce=immer.produce;immer.produceWithPatches.bind(immer);immer.setAutoFreeze.bind(immer);immer.setUseStrictShallowCopy.bind(immer);immer.applyPatches.bind(immer);immer.createDraft.bind(immer);immer.finishDraft.bind(immer);const _permitStore=createStore()(persist(()=>({permits:{},activePermitHash:{}}),{name:"fhenixjs-permits"}));const getPermit$1=(account,hash)=>{if(account==null||hash==null)return;const savedPermit=_permitStore.getState().permits[account]?.[hash];if(savedPermit==null)return;return PermitV2.deserialize(savedPermit)};const getActivePermit=account=>{if(account==null)return;const activePermitHash=_permitStore.getState().activePermitHash[account];return getPermit$1(account,activePermitHash)};const getPermits=account=>{if(account==null)return{};return Object.entries(_permitStore.getState().permits[account]??{}).reduce((acc,[hash,permit])=>{if(permit==undefined)return acc;return{...acc,[hash]:PermitV2.deserialize(permit)}},{})};const setPermit=(account,permitV2)=>{_permitStore.setState(produce(state=>{if(state.permits[account]==null)state.permits[account]={};state.permits[account][permitV2.getHash()]=permitV2.serialize()}))};const removePermit=(account,hash)=>{_permitStore.setState(produce(state=>{state.permits[account][hash]=undefined}))};const getActivePermitHash=account=>{if(account==null)return undefined;return _permitStore.getState().activePermitHash[account]};const setActivePermitHash=(account,hash)=>{_permitStore.setState(produce(state=>{state.activePermitHash[account]=hash}))};const removeActivePermitHash=account=>{_permitStore.setState(produce(state=>{state.activePermitHash[account]=undefined}))};const permitStore={store:_permitStore,getPermit:getPermit$1,getActivePermit:getActivePermit,getPermits:getPermits,setPermit:setPermit,removePermit:removePermit,getActivePermitHash:getActivePermitHash,setActivePermitHash:setActivePermitHash,removeActivePermitHash:removeActivePermitHash};const _sdkStore=createStore(()=>({fheKeysInitialized:false,securityZones:[0],fheKeys:{},accessRequirements:{contracts:[],projects:[]},providerInitialized:false,provider:undefined,chainId:undefined,signerInitialized:false,signer:undefined,account:undefined}));const _store_chainId=()=>_sdkStore.getState().chainId;const _store_getFheKey=(chainId,securityZone=0)=>{if(chainId==null||securityZone==null)return undefined;const serialized=_sdkStore.getState().fheKeys[chainId]?.[securityZone];if(serialized==null)return undefined;return TfheCompactPublicKey.deserialize(serialized)};const _store_getConnectedChainFheKey=(securityZone=0)=>{const state=_sdkStore.getState();if(securityZone==null)return undefined;if(state.chainId==null)return undefined;const serialized=state.fheKeys[state.chainId]?.[securityZone];if(serialized==null)return undefined;return TfheCompactPublicKey.deserialize(serialized)};const _store_setFheKey=(chainId,securityZone,fheKey)=>{if(chainId==null||securityZone==null)return;_sdkStore.setState(produce(state=>{if(state.fheKeys[chainId]==null)state.fheKeys[chainId]={};state.fheKeys[chainId][securityZone]=fheKey?.serialize()}))};const getChainIdFromProvider=async provider=>{const chainId=await provider.getChainId();if(chainId==null)throw new Error("sdk :: getChainIdFromProvider :: provider.getChainId returned a null result, ensure that your provider is connected to a network");return chainId};const _store_initialize=async params=>{const{provider,signer,securityZones=[0],contracts:contractRequirements=[],projects:projectRequirements=[]}=params;_sdkStore.setState({providerInitialized:false,signerInitialized:false,accessRequirements:{contracts:contractRequirements,projects:projectRequirements}});const chainId=await getChainIdFromProvider(provider);const chainIdChanged=chainId!=null&&chainId!==_sdkStore.getState().chainId;if(chainId!=null&&provider!=null){_sdkStore.setState({providerInitialized:true,provider:provider,chainId:chainId})}const account=await signer?.getAddress();if(account!=null&&signer!=null){_sdkStore.setState({signerInitialized:true,account:account,signer:signer})}else{_sdkStore.setState({signerInitialized:false,account:undefined,signer:undefined})}const securityZonesChanged=securityZones!==_sdkStore.getState().securityZones;if(chainIdChanged||securityZonesChanged){_sdkStore.setState({securityZones:securityZones,fheKeysInitialized:false})}if(!chainIsHardhat(chainId)&&!_sdkStore.getState().fheKeysInitialized){await Promise.all(securityZones.map(securityZone=>_store_fetchFheKey(chainId,provider,securityZone)))}_sdkStore.setState({fheKeysInitialized:true})};const _store_fetchFheKey=async(chainId,provider,securityZone=0)=>{const storedKey=_store_getFheKey(chainId,securityZone);if(storedKey!=null)return storedKey;const funcSig="0x1b1b484e";const callData=funcSig+toABIEncodedUint32(securityZone);const publicKey=await provider.call({to:FheOpsAddress,data:callData});if(typeof publicKey!=="string"){throw new Error("Error initializing fhenixjs; FHE publicKey fetched from provider invalid: not a string")}if(publicKey==="0x"){throw new Error("Error initializing fhenixjs; provided chain is not FHE enabled, no FHE publicKey found")}if(publicKey.length= ${PUBLIC_KEY_LENGTH_MIN}`)}const buff=fromHexString(publicKey.slice(130));try{const key=TfheCompactPublicKey.deserialize(buff);_store_setFheKey(chainId,securityZone,key);return key}catch(err){throw new Error(`Error deserializing public key ${err}`)}};const initialize=async params=>{await InitFhevm().catch(err=>{if(params.ignoreErrors){return undefined}else{return ResultErr(`initialize :: failed to initialize fhenixjs - is the network FHE-enabled? ${err}`)}});if(params.provider==null)return ResultErr("initialize :: missing provider - Please provide an AbstractProvider interface");if(params.securityZones!=null&¶ms.securityZones.length===0)return ResultErr("initialize :: a list of securityZones was provided, but it is empty");await _store_initialize(params);if(params.generatePermit===false)return ResultOk(undefined);const userActivePermit=getPermit();if(userActivePermit.success)return userActivePermit;return createPermit()};const _checkInitialized=(state,options)=>{if(options?.fheKeys!==false&&!state.fheKeysInitialized){return ResultErr("fhenixsdk not initialized. Use `fhenixsdk.initialize(...)`.")}if(options?.provider!==false&&!state.providerInitialized)return ResultErr("fhenixsdk not initialized with valid provider. Use `fhenixsdk.initialize(...)` with a valid provider that satisfies `AbstractProvider`.");if(options?.signer!==false&&!state.signerInitialized)return ResultErr("fhenixsdk not initialized with a valid signer. Use `fhenixsdk.initialize(...)` with a valid signer that satisfies `AbstractSigner`.");return ResultOk(null)};const createPermit=async options=>{const state=_sdkStore.getState();const initialized=_checkInitialized(state);if(!initialized.success)return ResultErr(`${createPermit.name} :: ${initialized.error}`);const optionsWithDefaults={type:"self",issuer:state.account,contracts:state.accessRequirements.contracts,projects:state.accessRequirements.projects,...options};let permit;try{permit=await PermitV2.createAndSign(optionsWithDefaults,state.chainId,state.signer)}catch(e){return ResultErr(`${createPermit.name} :: ${e}`)}permitStore.setPermit(state.account,permit);permitStore.setActivePermitHash(state.account,permit.getHash());return ResultOk(permit)};const importPermit=async imported=>{const state=_sdkStore.getState();const initialized=_checkInitialized(state);if(!initialized.success)return ResultErr(`${createPermit.name} :: ${initialized.error}`);if(typeof imported==="string"){try{imported=JSON.parse(imported)}catch(e){return ResultErr(`importPermit :: json parsing failed - ${e}`)}}const{success,data:parsedPermit,error:permitParsingError}=PermitV2ParamsValidator.safeParse(imported);if(!success){const errorString=Object.entries(permitParsingError.flatten().fieldErrors).map(([field,err])=>`- ${field}: ${err}`).join("\n");return ResultErr(`importPermit :: invalid permit data - ${errorString}`)}if(parsedPermit.type!=="self"){if(parsedPermit.issuer===state.account)parsedPermit.type="sharing";else if(parsedPermit.recipient===state.account)parsedPermit.type="recipient";else{return ResultErr(`importPermit :: invalid Permit - connected account <${state.account}> is not issuer or recipient`)}}let permit;try{permit=await PermitV2.create(parsedPermit)}catch(e){return ResultErr(`importPermit :: ${e}`)}const{valid,error}=permit.isValid();if(!valid){return ResultErr(`importPermit :: newly imported permit is invalid - ${error}`)}permitStore.setPermit(state.account,permit);permitStore.setActivePermitHash(state.account,permit.getHash());return ResultOk(permit)};const selectActivePermit=hash=>{const state=_sdkStore.getState();const initialized=_checkInitialized(state);if(!initialized.success)return ResultErr(`${selectActivePermit.name} :: ${initialized.error}`);const permit=permitStore.getPermit(state.account,hash);if(permit==null)return ResultErr(`${selectActivePermit.name} :: Permit with hash <${hash}> not found`);permitStore.setActivePermitHash(state.account,permit.getHash());return ResultOk(permit)};const getPermit=hash=>{const state=_sdkStore.getState();const initialized=_checkInitialized(state);if(!initialized.success)return ResultErr(`${getPermit.name} :: ${initialized.error}`);if(hash==null){const permit=permitStore.getActivePermit(state.account);if(permit==null)return ResultErr(`getPermit :: active permit not found`);return ResultOk(permit)}const permit=permitStore.getPermit(state.account,hash);if(permit==null)return ResultErr(`getPermit :: permit with hash <${hash}> not found`);return ResultOk(permit)};const getPermission=hash=>{const permitResult=getPermit(hash);if(!permitResult.success)return ResultErr(`${getPermission.name} :: ${permitResult.error}`);return ResultOk(permitResult.data.getPermission())};const getAllPermits=()=>{const state=_sdkStore.getState();const initialized=_checkInitialized(state);if(!initialized.success)return ResultErr(`${getAllPermits.name} :: ${initialized.error}`);return ResultOk(permitStore.getPermits(state.account))};const encryptValue=(value,type,securityZone=0)=>{const state=_sdkStore.getState();const initialized=_checkInitialized(state,{provider:false,signer:false});if(!initialized.success)return ResultErr(`${encryptValue.name} :: ${initialized.error}`);if(chainIsHardhat(state.chainId))return ResultOk(hardhatMockEncrypt(BigInt(value)));const fhePublicKey=_store_getFheKey(state.chainId,securityZone);if(fhePublicKey==null)return ResultErr(`encryptValue :: FHE publicKey not found for chain <${state.chainId}> and securityZone <${securityZone}>`);let outputSize=type;if(!outputSize){if(valueencrypt(nestedItem));const nestedItemResultErr=nestedItems.find(nestedItem=>!nestedItem.success);if(nestedItemResultErr)return nestedItemResultErr;return ResultOk(nestedItems.map(nestedItem=>nestedItem.data))}else{const result={};for(const key in item){const encryptedResult=encrypt(item[key]);if(!encryptedResult.success)return encryptedResult;result[key]=encryptedResult.data}return ResultOk(result)}}return ResultOk(item)}const unsealCiphertext=(ciphertext,account,hash)=>{const state=_sdkStore.getState();const initialized=_checkInitialized(state);if(!initialized.success)return ResultErr(`${getAllPermits.name} :: ${initialized.error}`);isString(ciphertext);const resolvedAccount=account??state.account;const resolvedHash=hash??permitStore.getActivePermitHash(resolvedAccount);if(resolvedAccount==null||resolvedHash==null){return ResultErr(`unsealCiphertext :: PermitV2 hash not provided and active PermitV2 not found`)}const permit=permitStore.getPermit(resolvedAccount,resolvedHash);if(permit==null){return ResultErr(`unsealCiphertext :: PermitV2 with account <${account}> and hash <${hash}> not found`)}let unsealed;try{unsealed=permit.unsealCiphertext(ciphertext)}catch(e){return ResultErr(`unsealCiphertext :: ${e}`)}return ResultOk(unsealed)};function unseal(item,account,hash){const resolvedAccount=account??_sdkStore.getState().account;const resolvedHash=hash??permitStore.getActivePermitHash(resolvedAccount);if(resolvedAccount==null||resolvedHash==null){return ResultErr(`unseal :: PermitV2 hash not provided and active PermitV2 not found`)}const permit=permitStore.getPermit(resolvedAccount,resolvedHash);if(permit==null){return ResultErr(`unseal :: PermitV2 with account <${account}> and hash <${hash}> not found`)}let unsealed;try{unsealed=permit.unseal(item)}catch(e){return ResultErr(`unseal :: ${e}`)}return ResultOk(unsealed)}const fhenixsdk={store:_sdkStore,initialize:initialize,createPermit:createPermit,importPermit:importPermit,selectActivePermit:selectActivePermit,getPermit:getPermit,getPermission:getPermission,getAllPermits:getAllPermits,encryptValue:encryptValue,encrypt:encrypt,unsealCiphertext:unsealCiphertext,unseal:unseal};var fhenix=Object.freeze({__proto__:null,Encryptable:Encryptable,get EncryptionTypes(){return exports.EncryptionTypes},FhenixClient:FhenixClient,FhenixClientSync:FhenixClientSync,GenerateSealingKey:GenerateSealingKey,PermitV2:PermitV2,SealingKey:SealingKey,createTfheKeypair:createTfheKeypair,createTfhePublicKey:createTfhePublicKey,fhenixsdk:fhenixsdk,generatePermit:generatePermit,getAllExistingPermits:getAllExistingPermits,getAllPermits:getAllPermits$1,getPermit:getPermit$2,getPermitFromLocalstorage:getPermitFromLocalstorage,permitStore:permitStore,removePermit:removePermit$1,removePermitFromLocalstorage:removePermitFromLocalstorage,storePermitInLocalStorage:storePermitInLocalStorage});exports.Encryptable=Encryptable;exports.FhenixClient=FhenixClient;exports.FhenixClientSync=FhenixClientSync;exports.GenerateSealingKey=GenerateSealingKey;exports.PermitV2=PermitV2;exports.SealingKey=SealingKey;exports.createTfheKeypair=createTfheKeypair;exports.createTfhePublicKey=createTfhePublicKey;exports.fhenixjs=fhenix;exports.fhenixsdk=fhenixsdk;exports.generatePermit=generatePermit;exports.getAllExistingPermits=getAllExistingPermits;exports.getAllPermits=getAllPermits$1;exports.getPermit=getPermit$2;exports.getPermitFromLocalstorage=getPermitFromLocalstorage;exports.permitStore=permitStore;exports.removePermit=removePermit$1;exports.removePermitFromLocalstorage=removePermitFromLocalstorage;exports.storePermitInLocalStorage=storePermitInLocalStorage}); \ No newline at end of file diff --git a/lib/commonjs/extensions/access_control/permit/index.d.ts b/lib/commonjs/extensions/access_control/permit/index.d.ts index 4f46b20..86e6f77 100644 --- a/lib/commonjs/extensions/access_control/permit/index.d.ts +++ b/lib/commonjs/extensions/access_control/permit/index.d.ts @@ -25,6 +25,7 @@ export type Permit = { */ publicKey: string; }; +export declare const parsePermit: (savedPermit: string) => Permit; export declare const getPermit: (contract: string, provider: SupportedProvider, autoGenerate?: boolean) => Promise; export declare const getAllExistingPermits: (account: string) => Record; export declare const getAllPermits: () => Map; diff --git a/lib/commonjs/extensions/access_control/permit/index.d.ts.map b/lib/commonjs/extensions/access_control/permit/index.d.ts.map index 53634b5..51a5dca 100644 --- a/lib/commonjs/extensions/access_control/permit/index.d.ts.map +++ b/lib/commonjs/extensions/access_control/permit/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/access_control/permit/index.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAsB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAIzE,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IAEvB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AA2BF,eAAO,MAAM,SAAS,aACV,MAAM,YACN,iBAAiB,iBACb,OAAO,KACpB,QAAQ,MAAM,GAAG,IAAI,CAiBvB,CAAC;AAEF,eAAO,MAAM,qBAAqB,YACvB,MAAM,KACd,OAAO,MAAM,EAAE,MAAM,CAuBvB,CAAC;AAEF,eAAO,MAAM,aAAa,QAAO,IAAI,MAAM,EAAE,MAAM,CA2BlD,CAAC;AAEF,UAAU,2BAA2B;IACnC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7E,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/B;AACD,UAAU,4BAA4B;IACpC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9E,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,MAAM,YAAY,GACpB,4BAA4B,GAC5B,2BAA2B,CAAC;AAsBhC,eAAO,MAAM,cAAc,aACf,MAAM,YACN,iBAAiB,iBACZ,YAAY,KAC1B,QAAQ,MAAM,CAoEhB,CAAC;AAEF,eAAO,MAAM,YAAY,aAAc,MAAM,WAAW,MAAM,KAAG,IAOhE,CAAC;AAEF,eAAO,MAAM,yBAAyB,aAC1B,MAAM,WACP,MAAM,KACd,MAAM,GAAG,SAqBX,CAAC;AAEF,eAAO,MAAM,yBAAyB,WAAY,MAAM,WAAW,MAAM,SAiBxE,CAAC;AAEF,eAAO,MAAM,4BAA4B,aAC7B,MAAM,WACP,MAAM,SAKhB,CAAC"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/access_control/permit/index.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAsB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAIzE,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IAEvB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAWF,eAAO,MAAM,WAAW,gBAAiB,MAAM,KAAG,MAcjD,CAAC;AAEF,eAAO,MAAM,SAAS,aACV,MAAM,YACN,iBAAiB,iBACb,OAAO,KACpB,QAAQ,MAAM,GAAG,IAAI,CAiBvB,CAAC;AAEF,eAAO,MAAM,qBAAqB,YACvB,MAAM,KACd,OAAO,MAAM,EAAE,MAAM,CAuBvB,CAAC;AAEF,eAAO,MAAM,aAAa,QAAO,IAAI,MAAM,EAAE,MAAM,CA2BlD,CAAC;AAEF,UAAU,2BAA2B;IACnC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7E,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/B;AACD,UAAU,4BAA4B;IACpC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9E,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,MAAM,YAAY,GACpB,4BAA4B,GAC5B,2BAA2B,CAAC;AAsBhC,eAAO,MAAM,cAAc,aACf,MAAM,YACN,iBAAiB,iBACZ,YAAY,KAC1B,QAAQ,MAAM,CAoEhB,CAAC;AAEF,eAAO,MAAM,YAAY,aAAc,MAAM,WAAW,MAAM,KAAG,IAOhE,CAAC;AAEF,eAAO,MAAM,yBAAyB,aAC1B,MAAM,WACP,MAAM,KACd,MAAM,GAAG,SAqBX,CAAC;AAEF,eAAO,MAAM,yBAAyB,WAAY,MAAM,WAAW,MAAM,SAiBxE,CAAC;AAEF,eAAO,MAAM,4BAA4B,aAC7B,MAAM,WACP,MAAM,SAKhB,CAAC"} \ No newline at end of file diff --git a/lib/commonjs/extensions/access_control/permit/index.js b/lib/commonjs/extensions/access_control/permit/index.js index c37ccd8..1b4e70a 100644 --- a/lib/commonjs/extensions/access_control/permit/index.js +++ b/lib/commonjs/extensions/access_control/permit/index.js @@ -1,6 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.removePermitFromLocalstorage = exports.storePermitInLocalStorage = exports.getPermitFromLocalstorage = exports.removePermit = exports.generatePermit = exports.getAllPermits = exports.getAllExistingPermits = exports.getPermit = void 0; +exports.removePermitFromLocalstorage = exports.storePermitInLocalStorage = exports.getPermitFromLocalstorage = exports.removePermit = exports.generatePermit = exports.getAllPermits = exports.getAllExistingPermits = exports.getPermit = exports.parsePermit = void 0; const utils_js_1 = require("../../../sdk/utils.js"); const types_js_1 = require("../../../sdk/types.js"); const sealing_js_1 = require("../../../sdk/sealing.js"); @@ -17,6 +17,7 @@ const parsePermit = (savedPermit) => { } throw new Error(`Cannot parse permit`); }; +exports.parsePermit = parsePermit; const getPermit = async (contract, provider, autoGenerate = true) => { (0, utils_js_1.isAddress)(contract); if (!provider) { @@ -42,7 +43,7 @@ const getAllExistingPermits = (account) => { if (permitRaw == null) return; try { - const permit = parsePermit(permitRaw); + const permit = (0, exports.parsePermit)(permitRaw); permits[contract] = permit; } catch (err) { @@ -68,7 +69,7 @@ const getAllPermits = () => { // contract = noPrefixPermit; // } try { - const permit = parsePermit(window.localStorage.getItem(key)); + const permit = (0, exports.parsePermit)(window.localStorage.getItem(key)); permits.set(contract, permit); } catch (err) { @@ -174,7 +175,7 @@ const getPermitFromLocalstorage = (contract, account) => { if (!savedPermit) { return undefined; } - return parsePermit(savedPermit); + return (0, exports.parsePermit)(savedPermit); }; exports.getPermitFromLocalstorage = getPermitFromLocalstorage; const storePermitInLocalStorage = (permit, account) => { diff --git a/lib/commonjs/extensions/access_control/permit/index.js.map b/lib/commonjs/extensions/access_control/permit/index.js.map index f8fd0bc..1d5cfb0 100644 --- a/lib/commonjs/extensions/access_control/permit/index.js.map +++ b/lib/commonjs/extensions/access_control/permit/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/extensions/access_control/permit/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/extensions/access_control/permit/index.ts"],"names":[],"mappings":";;;AAAA,oDAAkD;AAClD,oDAI+B;AAE/B,wDAAyE;AAEzE,MAAM,aAAa,GAAG,sBAAsB,CAAC;AAyCtC,MAAM,WAAW,GAAG,CAAC,WAAmB,EAAU,EAAE;IACzD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAqB,CAAC;IACtD,IAAI,CAAC,EAAE,CAAC;QACN,OAAO;YACL,eAAe,EAAE,CAAC,CAAC,eAAe;YAClC,UAAU,EAAE,IAAI,uBAAU,CACxB,CAAC,CAAC,UAAU,CAAC,UAAU,EACvB,CAAC,CAAC,UAAU,CAAC,SAAS,CACvB;YACD,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,SAAS,EAAE,KAAK,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE;SACzC,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AACzC,CAAC,CAAC;AAdW,QAAA,WAAW,eActB;AAEK,MAAM,SAAS,GAAG,KAAK,EAC5B,QAAgB,EAChB,QAA2B,EAC3B,eAAwB,IAAI,EACJ,EAAE;IAC1B,IAAA,oBAAS,EAAC,QAAQ,CAAC,CAAC;IACpB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,SAAS,GAAG,IAAA,iCAAsB,EAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;IAEzC,MAAM,WAAW,GAAG,IAAA,iCAAyB,EAC3C,QAAQ,EACR,MAAM,MAAM,CAAC,UAAU,EAAE,CAC1B,CAAC;IAEF,IAAI,WAAW,IAAI,IAAI;QAAE,OAAO,WAAW,CAAC;IAE5C,OAAO,YAAY,CAAC,CAAC,CAAC,IAAA,sBAAc,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAClE,CAAC,CAAC;AArBW,QAAA,SAAS,aAqBpB;AAEK,MAAM,qBAAqB,GAAG,CACnC,OAAe,EACS,EAAE;IAC1B,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,aAAa,SAAS,OAAO,EAAE,CAAC,CAAC;IAE9D,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC/C,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,UAAU,IAAI,IAAI;YAAE,OAAO;QAE/B,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAEnD,IAAI,SAAS,IAAI,IAAI;YAAE,OAAO;QAE9B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAA,mBAAW,EAAC,SAAS,CAAC,CAAC;YACtC,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAzBW,QAAA,qBAAqB,yBAyBhC;AAEK,MAAM,aAAa,GAAG,GAAwB,EAAE;IACrD,MAAM,OAAO,GAAwB,IAAI,GAAG,EAAE,CAAC;IAE/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YAEhD,wCAAwC;YACxC,yDAAyD;YACzD,qBAAqB;YACrB,sCAAsC;YACtC,2CAA2C;YAC3C,uBAAuB;YACvB,WAAW;YACX,+BAA+B;YAC/B,IAAI;YAEJ,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAA,mBAAW,EAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAE,CAAC,CAAC;gBAC9D,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAChC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AA3BW,QAAA,aAAa,iBA2BxB;AAeF,MAAM,IAAI,GAAG,KAAK,EAChB,MAAoB,EACpB,MAAoB,EACpB,KAAkB,EAClB,KAAoB,EACH,EAAE;IACnB,IACE,gBAAgB,IAAI,MAAM;QAC1B,OAAO,MAAM,CAAC,cAAc,IAAI,UAAU,EAC1C,CAAC;QACD,OAAO,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;SAAM,IACL,eAAe,IAAI,MAAM;QACzB,OAAO,MAAM,CAAC,aAAa,IAAI,UAAU,EACzC,CAAC;QACD,OAAO,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;AACxC,CAAC,CAAC;AAEK,MAAM,cAAc,GAAG,KAAK,EACjC,QAAgB,EAChB,QAA2B,EAC3B,YAA2B,EACV,EAAE;IACnB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,aAAa,GAAG,IAAA,iCAAsB,EAAC,QAAQ,CAAC,CAAC;IAEvD,IAAI,MAAoB,CAAC;IACzB,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,SAAS,GAAG,IAAA,iCAAsB,EAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,YAAY,CAAC;IACxB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;IAEjE,MAAM,OAAO,GAAG,MAAM,IAAA,+BAAkB,GAAE,CAAC;IAC3C,MAAM,SAAS,GAAW;QACxB,KAAK,EAAE;YACL,uDAAuD;YACvD,YAAY,EAAE;gBACZ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAChC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACnC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;gBACpC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE;aAC/C;YACD,wBAAwB;YACxB,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;SACvD;QACD,6FAA6F;QAC7F,gGAAgG;QAChG,sBAAsB;QACtB,yDAAyD;QACzD,WAAW,EAAE,cAAc;QAC3B,MAAM,EAAE;YACN,yEAAyE;YACzE,IAAI,EAAE,mBAAmB,EAAE,cAAc;YACzC,sCAAsC;YACtC,OAAO,EAAE,KAAK,EAAE,mBAAmB;YACnC,mDAAmD;YACnD,OAAO,EAAE,OAAO;YAChB,iGAAiG;YACjG,iBAAiB,EAAE,QAAQ,EAAE,2BAA2B;SACzD;QACD,OAAO,EAAE;YACP,SAAS,EAAE,KAAK,OAAO,CAAC,SAAS,EAAE;SACpC;KACF,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CACvB,MAAM,EACN,SAAS,CAAC,MAAM,EAChB,EAAE,YAAY,EAAE,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,EAC9C,SAAS,CAAC,OAAO,CAClB,CAAC;IAEF,MAAM,MAAM,GAAW;QACrB,eAAe,EAAE,QAAQ;QACzB,UAAU,EAAE,OAAO;QACnB,SAAS,EAAE,MAAM;QACjB,SAAS,EAAE,KAAK,OAAO,CAAC,SAAS,EAAE;QACnC,oBAAoB;QACpB,QAAQ;KACT,CAAC;IAEF,IAAA,iCAAyB,EAAC,MAAM,EAAE,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAxEW,QAAA,cAAc,kBAwEzB;AAEK,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,OAAe,EAAQ,EAAE;IACtE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,yBAAyB;QACzB,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,aAAa,GAAG,QAAQ,EAAE,CAAC,CAAC;IAChE,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,aAAa,GAAG,QAAQ,IAAI,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC,CAAC;AAPW,QAAA,YAAY,gBAOvB;AAEK,MAAM,yBAAyB,GAAG,CACvC,QAAgB,EAChB,OAAe,EACK,EAAE;IACtB,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACzD,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CACvC,GAAG,aAAa,GAAG,QAAQ,IAAI,OAAO,EAAE,CACzC,CAAC;QACF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,yBAAyB;YACzB,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,aAAa,GAAG,QAAQ,EAAE,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CACvC,GAAG,aAAa,GAAG,QAAQ,IAAI,OAAO,EAAE,CACzC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,IAAA,mBAAW,EAAC,WAAW,CAAC,CAAC;AAClC,CAAC,CAAC;AAxBW,QAAA,yBAAyB,6BAwBpC;AAEK,MAAM,yBAAyB,GAAG,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE;IAC3E,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACzD,+DAA+D;QAC/D,MAAM,UAAU,GAAqB;YACnC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,UAAU,EAAE;gBACV,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS;gBACtC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,UAAU;aACzC;YACD,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC;QAEF,MAAM,CAAC,YAAY,CAAC,OAAO,CACzB,GAAG,aAAa,GAAG,MAAM,CAAC,eAAe,IAAI,OAAO,EAAE,EACtD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAC3B,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAjBW,QAAA,yBAAyB,6BAiBpC;AAEK,MAAM,4BAA4B,GAAG,CAC1C,QAAgB,EAChB,OAAe,EACf,EAAE;IACF,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACzD,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,aAAa,GAAG,QAAQ,IAAI,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC,CAAC;AAPW,QAAA,4BAA4B,gCAOvC"} \ No newline at end of file diff --git a/lib/commonjs/fhenix.d.ts b/lib/commonjs/fhenix.d.ts index 5c9fe8f..af06b16 100644 --- a/lib/commonjs/fhenix.d.ts +++ b/lib/commonjs/fhenix.d.ts @@ -1,7 +1,5 @@ -export { FhenixClient, FhenixClientSync } from "./sdk/index.js"; -export { ContractPermits, InstanceParams, SupportedProvider, EncryptionTypes, EncryptedUint64, EncryptedUint128, EncryptedUint256, EncryptedUint32, EncryptedUint16, EncryptedUint8, EncryptedBool, EncryptedNumber, EncryptedAddress, } from "./sdk/types.js"; -export * from "./extensions/access_control/index.js"; export { SealingKey, GenerateSealingKey } from "./sdk/sealing.js"; export { createTfheKeypair, createTfhePublicKey } from "./sdk/keygen.js"; -export * from "./sdk/v2"; +export * from "./types"; +export * from "./sdk"; //# sourceMappingURL=fhenix.d.ts.map \ No newline at end of file diff --git a/lib/commonjs/fhenix.d.ts.map b/lib/commonjs/fhenix.d.ts.map index 58d322e..5d854e7 100644 --- a/lib/commonjs/fhenix.d.ts.map +++ b/lib/commonjs/fhenix.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"fhenix.d.ts","sourceRoot":"","sources":["../../src/fhenix.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,EACL,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,cAAc,EACd,aAAa,EACb,eAAe,EACf,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAExB,cAAc,sCAAsC,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,cAAc,UAAU,CAAC"} \ No newline at end of file +{"version":3,"file":"fhenix.d.ts","sourceRoot":"","sources":["../../src/fhenix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC"} \ No newline at end of file diff --git a/lib/commonjs/fhenix.js b/lib/commonjs/fhenix.js index 93cad39..f81bb95 100644 --- a/lib/commonjs/fhenix.js +++ b/lib/commonjs/fhenix.js @@ -1,8 +1,4 @@ "use strict"; -// for mobile -// if (typeof BigInt === "undefined") { -// global.BigInt = require("big-integer"); -// } var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); @@ -18,18 +14,13 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.createTfhePublicKey = exports.createTfheKeypair = exports.GenerateSealingKey = exports.SealingKey = exports.EncryptionTypes = exports.FhenixClientSync = exports.FhenixClient = void 0; -var index_js_1 = require("./sdk/index.js"); -Object.defineProperty(exports, "FhenixClient", { enumerable: true, get: function () { return index_js_1.FhenixClient; } }); -Object.defineProperty(exports, "FhenixClientSync", { enumerable: true, get: function () { return index_js_1.FhenixClientSync; } }); -var types_js_1 = require("./sdk/types.js"); -Object.defineProperty(exports, "EncryptionTypes", { enumerable: true, get: function () { return types_js_1.EncryptionTypes; } }); -__exportStar(require("./extensions/access_control/index.js"), exports); +exports.createTfhePublicKey = exports.createTfheKeypair = exports.GenerateSealingKey = exports.SealingKey = void 0; var sealing_js_1 = require("./sdk/sealing.js"); Object.defineProperty(exports, "SealingKey", { enumerable: true, get: function () { return sealing_js_1.SealingKey; } }); Object.defineProperty(exports, "GenerateSealingKey", { enumerable: true, get: function () { return sealing_js_1.GenerateSealingKey; } }); var keygen_js_1 = require("./sdk/keygen.js"); Object.defineProperty(exports, "createTfheKeypair", { enumerable: true, get: function () { return keygen_js_1.createTfheKeypair; } }); Object.defineProperty(exports, "createTfhePublicKey", { enumerable: true, get: function () { return keygen_js_1.createTfhePublicKey; } }); -__exportStar(require("./sdk/v2"), exports); +__exportStar(require("./types"), exports); +__exportStar(require("./sdk"), exports); //# sourceMappingURL=fhenix.js.map \ No newline at end of file diff --git a/lib/commonjs/fhenix.js.map b/lib/commonjs/fhenix.js.map index 552535c..811242c 100644 --- a/lib/commonjs/fhenix.js.map +++ b/lib/commonjs/fhenix.js.map @@ -1 +1 @@ -{"version":3,"file":"fhenix.js","sourceRoot":"","sources":["../../src/fhenix.ts"],"names":[],"mappings":";AAAA,aAAa;AACb,uCAAuC;AACvC,4CAA4C;AAC5C,IAAI;;;;;;;;;;;;;;;;;AAEJ,2CAAgE;AAAvD,wGAAA,YAAY,OAAA;AAAE,4GAAA,gBAAgB,OAAA;AAEvC,2CAcwB;AAVtB,2GAAA,eAAe,OAAA;AAYjB,uEAAqD;AAErD,+CAAkE;AAAzD,wGAAA,UAAU,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AACvC,6CAAyE;AAAhE,8GAAA,iBAAiB,OAAA;AAAE,gHAAA,mBAAmB,OAAA;AAE/C,2CAAyB"} \ No newline at end of file +{"version":3,"file":"fhenix.js","sourceRoot":"","sources":["../../src/fhenix.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,+CAAkE;AAAzD,wGAAA,UAAU,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AACvC,6CAAyE;AAAhE,8GAAA,iBAAiB,OAAA;AAAE,gHAAA,mBAAmB,OAAA;AAE/C,0CAAwB;AACxB,wCAAsB"} \ No newline at end of file diff --git a/lib/commonjs/index.d.ts b/lib/commonjs/index.d.ts index 2888f0a..cf96ef8 100644 --- a/lib/commonjs/index.d.ts +++ b/lib/commonjs/index.d.ts @@ -1,4 +1,6 @@ -import * as fhenixjs from "./fhenix.js"; -export { fhenixjs }; -export * from "./fhenix.js"; +export { SealingKey, GenerateSealingKey } from "./sdk/sealing.js"; +export { createTfheKeypair, createTfhePublicKey } from "./sdk/keygen.js"; +export * from "./types"; +export * from "./sdk/permit"; +export * from "./sdk"; //# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/lib/commonjs/index.d.ts.map b/lib/commonjs/index.d.ts.map index 4827dd9..a6db280 100644 --- a/lib/commonjs/index.d.ts.map +++ b/lib/commonjs/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB,cAAc,aAAa,CAAC"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,OAAO,CAAC"} \ No newline at end of file diff --git a/lib/commonjs/index.js b/lib/commonjs/index.js index b6f905e..554364b 100644 --- a/lib/commonjs/index.js +++ b/lib/commonjs/index.js @@ -10,24 +10,18 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi if (k2 === undefined) k2 = k; o[k2] = m[k]; })); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.fhenixjs = void 0; -const fhenixjs = __importStar(require("./fhenix.js")); -exports.fhenixjs = fhenixjs; -__exportStar(require("./fhenix.js"), exports); +exports.createTfhePublicKey = exports.createTfheKeypair = exports.GenerateSealingKey = exports.SealingKey = void 0; +var sealing_js_1 = require("./sdk/sealing.js"); +Object.defineProperty(exports, "SealingKey", { enumerable: true, get: function () { return sealing_js_1.SealingKey; } }); +Object.defineProperty(exports, "GenerateSealingKey", { enumerable: true, get: function () { return sealing_js_1.GenerateSealingKey; } }); +var keygen_js_1 = require("./sdk/keygen.js"); +Object.defineProperty(exports, "createTfheKeypair", { enumerable: true, get: function () { return keygen_js_1.createTfheKeypair; } }); +Object.defineProperty(exports, "createTfhePublicKey", { enumerable: true, get: function () { return keygen_js_1.createTfhePublicKey; } }); +__exportStar(require("./types"), exports); +__exportStar(require("./sdk/permit"), exports); +__exportStar(require("./sdk"), exports); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/commonjs/index.js.map b/lib/commonjs/index.js.map index a553463..cb6b56f 100644 --- a/lib/commonjs/index.js.map +++ b/lib/commonjs/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAAwC;AAE/B,4BAAQ;AAEjB,8CAA4B"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,+CAAkE;AAAzD,wGAAA,UAAU,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AACvC,6CAAyE;AAAhE,8GAAA,iBAAiB,OAAA;AAAE,gHAAA,mBAAmB,OAAA;AAE/C,0CAAwB;AACxB,+CAA6B;AAC7B,wCAAsB"} \ No newline at end of file diff --git a/lib/commonjs/sdk/consts.d.ts b/lib/commonjs/sdk/consts.d.ts index 4523c6d..b1db3cc 100644 --- a/lib/commonjs/sdk/consts.d.ts +++ b/lib/commonjs/sdk/consts.d.ts @@ -3,4 +3,5 @@ export declare const MAX_UINT16 = 65535; export declare const MAX_UINT32 = 4294967295; export declare const FheOpsAddress = "0x0000000000000000000000000000000000000080"; export declare const PUBLIC_KEY_LENGTH_MIN = 15000; +export declare const DEFAULT_COFHE_URL = "http://127.0.0.1:8448"; //# sourceMappingURL=consts.d.ts.map \ No newline at end of file diff --git a/lib/commonjs/sdk/consts.d.ts.map b/lib/commonjs/sdk/consts.d.ts.map index dadf4a2..2f85f20 100644 --- a/lib/commonjs/sdk/consts.d.ts.map +++ b/lib/commonjs/sdk/consts.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../../src/sdk/consts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,MAAM,CAAC;AAC7B,eAAO,MAAM,UAAU,QAAQ,CAAC;AAChC,eAAO,MAAM,UAAU,aAAa,CAAC;AACrC,eAAO,MAAM,aAAa,+CAA+C,CAAC;AAC1E,eAAO,MAAM,qBAAqB,QAAS,CAAC"} \ No newline at end of file +{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../../src/sdk/consts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,MAAM,CAAC;AAC7B,eAAO,MAAM,UAAU,QAAQ,CAAC;AAChC,eAAO,MAAM,UAAU,aAAa,CAAC;AACrC,eAAO,MAAM,aAAa,+CAA+C,CAAC;AAC1E,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAC5C,eAAO,MAAM,iBAAiB,0BAA0B,CAAC"} \ No newline at end of file diff --git a/lib/commonjs/sdk/consts.js b/lib/commonjs/sdk/consts.js index 061c9c1..4ec857e 100644 --- a/lib/commonjs/sdk/consts.js +++ b/lib/commonjs/sdk/consts.js @@ -1,9 +1,10 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.PUBLIC_KEY_LENGTH_MIN = exports.FheOpsAddress = exports.MAX_UINT32 = exports.MAX_UINT16 = exports.MAX_UINT8 = void 0; +exports.DEFAULT_COFHE_URL = exports.PUBLIC_KEY_LENGTH_MIN = exports.FheOpsAddress = exports.MAX_UINT32 = exports.MAX_UINT16 = exports.MAX_UINT8 = void 0; exports.MAX_UINT8 = 255; exports.MAX_UINT16 = 65535; exports.MAX_UINT32 = 4294967295; exports.FheOpsAddress = "0x0000000000000000000000000000000000000080"; exports.PUBLIC_KEY_LENGTH_MIN = 15000; +exports.DEFAULT_COFHE_URL = "http://127.0.0.1:8448"; //# sourceMappingURL=consts.js.map \ No newline at end of file diff --git a/lib/commonjs/sdk/consts.js.map b/lib/commonjs/sdk/consts.js.map index b08e8f0..3f2876a 100644 --- a/lib/commonjs/sdk/consts.js.map +++ b/lib/commonjs/sdk/consts.js.map @@ -1 +1 @@ -{"version":3,"file":"consts.js","sourceRoot":"","sources":["../../../src/sdk/consts.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG,GAAG,CAAC;AAChB,QAAA,UAAU,GAAG,KAAK,CAAC;AACnB,QAAA,UAAU,GAAG,UAAU,CAAC;AACxB,QAAA,aAAa,GAAG,4CAA4C,CAAC;AAC7D,QAAA,qBAAqB,GAAG,KAAM,CAAC"} \ No newline at end of file +{"version":3,"file":"consts.js","sourceRoot":"","sources":["../../../src/sdk/consts.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG,GAAG,CAAC;AAChB,QAAA,UAAU,GAAG,KAAK,CAAC;AACnB,QAAA,UAAU,GAAG,UAAU,CAAC;AACxB,QAAA,aAAa,GAAG,4CAA4C,CAAC;AAC7D,QAAA,qBAAqB,GAAG,KAAM,CAAC;AAC/B,QAAA,iBAAiB,GAAG,uBAAuB,CAAC"} \ No newline at end of file diff --git a/lib/commonjs/sdk/encrypt.d.ts b/lib/commonjs/sdk/encrypt.d.ts index 7e42ae8..161954f 100644 --- a/lib/commonjs/sdk/encrypt.d.ts +++ b/lib/commonjs/sdk/encrypt.d.ts @@ -1,5 +1,5 @@ import { TfheCompactPublicKey } from "./fhe/fhe.js"; -import { EncryptedNumber, EncryptedUint16, EncryptedUint32, EncryptedUint8, EncryptedBool, EncryptedUint64, EncryptedUint128, EncryptedUint256, EncryptedAddress, EncryptionTypes } from "./types.js"; +import { EncryptedNumber, EncryptedUint16, EncryptedUint32, EncryptedUint8, EncryptedBool, EncryptedUint64, EncryptedUint128, EncryptedUint256, EncryptedAddress, EncryptionTypes } from "../types"; /** * Encrypts a Uint8 value using TFHE (Fast Fully Homomorphic Encryption over the Torus). * @param {boolean} value - The Boolean value to encrypt. diff --git a/lib/commonjs/sdk/encrypt.d.ts.map b/lib/commonjs/sdk/encrypt.d.ts.map index 19deeac..21d8111 100644 --- a/lib/commonjs/sdk/encrypt.d.ts.map +++ b/lib/commonjs/sdk/encrypt.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"encrypt.d.ts","sourceRoot":"","sources":["../../../src/sdk/encrypt.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EASrB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,eAAe,EACf,eAAe,EACf,eAAe,EACf,cAAc,EACd,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EAChB,MAAM,YAAY,CAAC;AAGpB;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,UAChB,OAAO,aACH,oBAAoB,iBACjB,MAAM,KACnB,aASF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,UACjB,MAAM,aACF,oBAAoB,iBACjB,MAAM,KACnB,cASF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,UAClB,MAAM,aACF,oBAAoB,iBACjB,MAAM,KACnB,eASF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,UAClB,MAAM,aACF,oBAAoB,iBACjB,MAAM,KACnB,eASF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,UAClB,MAAM,GAAG,MAAM,aACX,oBAAoB,iBACjB,MAAM,KACnB,eAeF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,UACnB,MAAM,GAAG,MAAM,aACX,oBAAoB,iBACjB,MAAM,KACnB,gBAeF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,UACnB,MAAM,GAAG,MAAM,aACX,oBAAoB,iBACjB,MAAM,KACnB,gBAeF,CAAC;AACF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,UACnB,MAAM,GAAG,MAAM,aACX,oBAAoB,iBACjB,MAAM,KACnB,gBAeF,CAAC;AACF;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,UACX,MAAM,aACF,oBAAoB,SACzB,eAAe,iBACP,MAAM,KACnB,eAqBF,CAAC"} \ No newline at end of file +{"version":3,"file":"encrypt.d.ts","sourceRoot":"","sources":["../../../src/sdk/encrypt.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EASrB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,eAAe,EACf,eAAe,EACf,eAAe,EACf,cAAc,EACd,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EAChB,MAAM,UAAU,CAAC;AAGlB;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,UAChB,OAAO,aACH,oBAAoB,iBACjB,MAAM,KACnB,aASF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,UACjB,MAAM,aACF,oBAAoB,iBACjB,MAAM,KACnB,cASF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,UAClB,MAAM,aACF,oBAAoB,iBACjB,MAAM,KACnB,eASF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,UAClB,MAAM,aACF,oBAAoB,iBACjB,MAAM,KACnB,eASF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,UAClB,MAAM,GAAG,MAAM,aACX,oBAAoB,iBACjB,MAAM,KACnB,eAeF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,UACnB,MAAM,GAAG,MAAM,aACX,oBAAoB,iBACjB,MAAM,KACnB,gBAeF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,UACnB,MAAM,GAAG,MAAM,aACX,oBAAoB,iBACjB,MAAM,KACnB,gBAeF,CAAC;AACF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,UACnB,MAAM,GAAG,MAAM,aACX,oBAAoB,iBACjB,MAAM,KACnB,gBAeF,CAAC;AACF;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,UACX,MAAM,aACF,oBAAoB,SACzB,eAAe,iBACP,MAAM,KACnB,eAqBF,CAAC"} \ No newline at end of file diff --git a/lib/commonjs/sdk/encrypt.js b/lib/commonjs/sdk/encrypt.js index 5ed44e6..6bf3d2d 100644 --- a/lib/commonjs/sdk/encrypt.js +++ b/lib/commonjs/sdk/encrypt.js @@ -2,7 +2,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.encrypt = exports.encrypt_address = exports.encrypt_uint256 = exports.encrypt_uint128 = exports.encrypt_uint64 = exports.encrypt_uint32 = exports.encrypt_uint16 = exports.encrypt_uint8 = exports.encrypt_bool = void 0; const fhe_js_1 = require("./fhe/fhe.js"); -const types_js_1 = require("./types.js"); +const types_1 = require("../types"); const utils_js_1 = require("./utils.js"); /** * Encrypts a Uint8 value using TFHE (Fast Fully Homomorphic Encryption over the Torus). @@ -157,23 +157,23 @@ exports.encrypt_address = encrypt_address; * @returns {Uint8Array} - The encrypted value serialized as Uint8Array. * @throws {Error} - Throws an error if an invalid type is specified. */ -const encrypt = (value, publicKey, type = types_js_1.EncryptionTypes.uint8, securityZone = 0) => { +const encrypt = (value, publicKey, type = types_1.EncryptionTypes.uint8, securityZone = 0) => { switch (type) { - case types_js_1.EncryptionTypes.bool: + case types_1.EncryptionTypes.bool: return (0, exports.encrypt_bool)(!!value, publicKey, securityZone); - case types_js_1.EncryptionTypes.uint8: + case types_1.EncryptionTypes.uint8: return (0, exports.encrypt_uint8)(value, publicKey, securityZone); - case types_js_1.EncryptionTypes.uint16: + case types_1.EncryptionTypes.uint16: return (0, exports.encrypt_uint16)(value, publicKey, securityZone); - case types_js_1.EncryptionTypes.uint32: + case types_1.EncryptionTypes.uint32: return (0, exports.encrypt_uint32)(value, publicKey, securityZone); - case types_js_1.EncryptionTypes.uint64: + case types_1.EncryptionTypes.uint64: return (0, exports.encrypt_uint64)(value.toString(16), publicKey, securityZone); - case types_js_1.EncryptionTypes.uint128: + case types_1.EncryptionTypes.uint128: return (0, exports.encrypt_uint128)(value.toString(16), publicKey, securityZone); - case types_js_1.EncryptionTypes.uint256: + case types_1.EncryptionTypes.uint256: return (0, exports.encrypt_uint256)(value.toString(16), publicKey, securityZone); - case types_js_1.EncryptionTypes.address: + case types_1.EncryptionTypes.address: return (0, exports.encrypt_address)(value.toString(16), publicKey, securityZone); default: throw new Error("Invalid type"); diff --git a/lib/commonjs/sdk/encrypt.js.map b/lib/commonjs/sdk/encrypt.js.map index 94ec523..ec85535 100644 --- a/lib/commonjs/sdk/encrypt.js.map +++ b/lib/commonjs/sdk/encrypt.js.map @@ -1 +1 @@ -{"version":3,"file":"encrypt.js","sourceRoot":"","sources":["../../../src/sdk/encrypt.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"encrypt.js","sourceRoot":"","sources":["../../../src/sdk/encrypt.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/commonjs/sdk/fhe/tfhe-browser.js b/lib/commonjs/sdk/fhe/tfhe-browser.js index 3119e4c..edbcd11 100644 --- a/lib/commonjs/sdk/fhe/tfhe-browser.js +++ b/lib/commonjs/sdk/fhe/tfhe-browser.js @@ -1,13 +1,4 @@ "use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; Object.defineProperty(exports, "__esModule", { value: true }); exports.FheInt160 = exports.FheInt16 = exports.FheInt128 = exports.FheBool = exports.CompressedFheUint8 = exports.CompressedFheUint64 = exports.CompressedFheUint32 = exports.CompressedFheUint256 = exports.CompressedFheUint160 = exports.CompressedFheUint16 = exports.CompressedFheUint128 = exports.CompressedFheInt8 = exports.CompressedFheInt64 = exports.CompressedFheInt32 = exports.CompressedFheInt256 = exports.CompressedFheInt160 = exports.CompressedFheInt16 = exports.CompressedFheInt128 = exports.CompressedFheBool = exports.CompactFheUint8List = exports.CompactFheUint8 = exports.CompactFheUint64List = exports.CompactFheUint64 = exports.CompactFheUint32List = exports.CompactFheUint32 = exports.CompactFheUint256List = exports.CompactFheUint256 = exports.CompactFheUint16List = exports.CompactFheUint160List = exports.CompactFheUint160 = exports.CompactFheUint16 = exports.CompactFheUint128List = exports.CompactFheUint128 = exports.CompactFheInt8List = exports.CompactFheInt8 = exports.CompactFheInt64List = exports.CompactFheInt64 = exports.CompactFheInt32List = exports.CompactFheInt32 = exports.CompactFheInt256List = exports.CompactFheInt256 = exports.CompactFheInt16List = exports.CompactFheInt160List = exports.CompactFheInt160 = exports.CompactFheInt16 = exports.CompactFheInt128List = exports.CompactFheInt128 = exports.CompactFheBoolList = exports.CompactFheBool = exports.init_panic_hook = void 0; exports.initSync = exports.tfheBrowser = exports.TfhePublicKey = exports.TfheConfigBuilder = exports.TfheConfig = exports.TfheCompressedServerKey = exports.TfheCompressedPublicKey = exports.TfheCompressedCompactPublicKey = exports.TfheCompactPublicKey = exports.TfheClientKey = exports.FheUint8 = exports.FheUint64 = exports.FheUint32 = exports.FheUint256 = exports.FheUint160 = exports.FheUint16 = exports.FheUint128 = exports.FheInt8 = exports.FheInt64 = exports.FheInt32 = exports.FheInt256 = void 0; @@ -10178,35 +10169,33 @@ class tfheBrowser { } } exports.tfheBrowser = tfheBrowser; -function __wbg_load(module, imports) { - return __awaiter(this, void 0, void 0, function* () { - if (typeof Response === "function" && module instanceof Response) { - if (typeof WebAssembly.instantiateStreaming === "function") { - try { - return yield WebAssembly.instantiateStreaming(module, imports); +async function __wbg_load(module, imports) { + if (typeof Response === "function" && module instanceof Response) { + if (typeof WebAssembly.instantiateStreaming === "function") { + try { + return await WebAssembly.instantiateStreaming(module, imports); + } + catch (e) { + if (module.headers.get("Content-Type") != "application/wasm") { + console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); } - catch (e) { - if (module.headers.get("Content-Type") != "application/wasm") { - console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); - } - else { - throw e; - } + else { + throw e; } } - const bytes = yield module.arrayBuffer(); - return yield WebAssembly.instantiate(bytes, imports); + } + const bytes = await module.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); + } + else { + const instance = await WebAssembly.instantiate(module, imports); + if (instance instanceof WebAssembly.Instance) { + return { instance, module }; } else { - const instance = yield WebAssembly.instantiate(module, imports); - if (instance instanceof WebAssembly.Instance) { - return { instance, module }; - } - else { - return instance; - } + return instance; } - }); + } } function __wbg_get_imports() { const imports = {}; @@ -10530,24 +10519,22 @@ function initSync(module) { return __wbg_finalize_init(instance, module); } exports.initSync = initSync; -function __wbg_init(input) { - return __awaiter(this, void 0, void 0, function* () { - if (wasm !== undefined) - return wasm; - // FHENIX: disabling this because it fucks with frameworks that try to resolve it - // if (typeof input === 'undefined') { - // input = new URL('tfhe_bg.wasm', import.meta.url); - // } - const imports = __wbg_get_imports(); - if (typeof input === "string" || - (typeof Request === "function" && input instanceof Request) || - (typeof URL === "function" && input instanceof URL)) { - input = fetch(input); - } - __wbg_init_memory(imports); - const { instance, module } = yield __wbg_load(yield input, imports); - return __wbg_finalize_init(instance, module); - }); +async function __wbg_init(input) { + if (wasm !== undefined) + return wasm; + // FHENIX: disabling this because it fucks with frameworks that try to resolve it + // if (typeof input === 'undefined') { + // input = new URL('tfhe_bg.wasm', import.meta.url); + // } + const imports = __wbg_get_imports(); + if (typeof input === "string" || + (typeof Request === "function" && input instanceof Request) || + (typeof URL === "function" && input instanceof URL)) { + input = fetch(input); + } + __wbg_init_memory(imports); + const { instance, module } = await __wbg_load(await input, imports); + return __wbg_finalize_init(instance, module); } exports.default = __wbg_init; //# sourceMappingURL=tfhe-browser.js.map \ No newline at end of file diff --git a/lib/commonjs/sdk/fhe/tfhe.js b/lib/commonjs/sdk/fhe/tfhe.js index 8cbfd43..c024821 100644 --- a/lib/commonjs/sdk/fhe/tfhe.js +++ b/lib/commonjs/sdk/fhe/tfhe.js @@ -1,5472 +1,45 @@ -let imports = {}; -imports['__wbindgen_placeholder__'] = module.exports; -let wasm; -const { TextDecoder, TextEncoder } = require(`util`); - -const heap = new Array(128).fill(undefined); - -heap.push(undefined, null, true, false); - -let heap_next = heap.length; - -function addHeapObject(obj) { - if (heap_next === heap.length) heap.push(heap.length + 1); - const idx = heap_next; - heap_next = heap[idx]; - - heap[idx] = obj; - return idx; -} - -function getObject(idx) { return heap[idx]; } - -function dropObject(idx) { - if (idx < 132) return; - heap[idx] = heap_next; - heap_next = idx; -} - -function takeObject(idx) { - const ret = getObject(idx); - dropObject(idx); - return ret; -} - -let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); - -cachedTextDecoder.decode(); - -let cachedUint8Memory0 = null; - -function getUint8Memory0() { - if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) { - cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); - } - return cachedUint8Memory0; -} - -function getStringFromWasm0(ptr, len) { - ptr = ptr >>> 0; - return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); -} - -function isLikeNone(x) { - return x === undefined || x === null; -} - -let cachedBigInt64Memory0 = null; - -function getBigInt64Memory0() { - if (cachedBigInt64Memory0 === null || cachedBigInt64Memory0.byteLength === 0) { - cachedBigInt64Memory0 = new BigInt64Array(wasm.memory.buffer); - } - return cachedBigInt64Memory0; -} - -let cachedInt32Memory0 = null; - -function getInt32Memory0() { - if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) { - cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); - } - return cachedInt32Memory0; -} - -function debugString(val) { - // primitive types - const type = typeof val; - if (type == 'number' || type == 'boolean' || val == null) { - return `${val}`; - } - if (type == 'string') { - return `"${val}"`; - } - if (type == 'symbol') { - const description = val.description; - if (description == null) { - return 'Symbol'; - } else { - return `Symbol(${description})`; - } - } - if (type == 'function') { - const name = val.name; - if (typeof name == 'string' && name.length > 0) { - return `Function(${name})`; - } else { - return 'Function'; - } - } - // objects - if (Array.isArray(val)) { - const length = val.length; - let debug = '['; - if (length > 0) { - debug += debugString(val[0]); - } - for(let i = 1; i < length; i++) { - debug += ', ' + debugString(val[i]); - } - debug += ']'; - return debug; - } - // Test for built-in - const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); - let className; - if (builtInMatches.length > 1) { - className = builtInMatches[1]; - } else { - // Failed to match the standard '[object ClassName]' - return toString.call(val); - } - if (className == 'Object') { - // we're a user defined class or Object - // JSON.stringify avoids problems with cycles, and is generally much - // easier than looping through ownProperties of `val`. - try { - return 'Object(' + JSON.stringify(val) + ')'; - } catch (_) { - return 'Object'; - } - } - // errors - if (val instanceof Error) { - return `${val.name}: ${val.message}\n${val.stack}`; - } - // TODO we could test for more things here, like `Set`s and `Map`s. - return className; -} - -let WASM_VECTOR_LEN = 0; - -let cachedTextEncoder = new TextEncoder('utf-8'); - -const encodeString = (typeof cachedTextEncoder.encodeInto === 'function' - ? function (arg, view) { - return cachedTextEncoder.encodeInto(arg, view); -} - : function (arg, view) { - const buf = cachedTextEncoder.encode(arg); - view.set(buf); - return { - read: arg.length, - written: buf.length - }; +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; }); - -function passStringToWasm0(arg, malloc, realloc) { - - if (realloc === undefined) { - const buf = cachedTextEncoder.encode(arg); - const ptr = malloc(buf.length, 1) >>> 0; - getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf); - WASM_VECTOR_LEN = buf.length; - return ptr; - } - - let len = arg.length; - let ptr = malloc(len, 1) >>> 0; - - const mem = getUint8Memory0(); - - let offset = 0; - - for (; offset < len; offset++) { - const code = arg.charCodeAt(offset); - if (code > 0x7F) break; - mem[ptr + offset] = code; - } - - if (offset !== len) { - if (offset !== 0) { - arg = arg.slice(offset); - } - ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; - const view = getUint8Memory0().subarray(ptr + offset, ptr + len); - const ret = encodeString(arg, view); - - offset += ret.written; - } - - WASM_VECTOR_LEN = offset; - return ptr; -} -/** -*/ -module.exports.init_panic_hook = function() { - wasm.init_panic_hook(); -}; - -function _assertClass(instance, klass) { - if (!(instance instanceof klass)) { - throw new Error(`expected instance of ${klass.name}`); - } - return instance.ptr; -} - -function getArrayU8FromWasm0(ptr, len) { - ptr = ptr >>> 0; - return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len); -} - -function passArray8ToWasm0(arg, malloc) { - const ptr = malloc(arg.length * 1, 1) >>> 0; - getUint8Memory0().set(arg, ptr / 1); - WASM_VECTOR_LEN = arg.length; - return ptr; -} - -let cachedUint32Memory0 = null; - -function getUint32Memory0() { - if (cachedUint32Memory0 === null || cachedUint32Memory0.byteLength === 0) { - cachedUint32Memory0 = new Uint32Array(wasm.memory.buffer); - } - return cachedUint32Memory0; -} - -function getArrayJsValueFromWasm0(ptr, len) { - ptr = ptr >>> 0; - const mem = getUint32Memory0(); - const slice = mem.subarray(ptr / 4, ptr / 4 + len); - const result = []; - for (let i = 0; i < slice.length; i++) { - result.push(takeObject(slice[i])); - } +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); return result; -} - -function handleError(f, args) { - try { - return f.apply(this, args); - } catch (e) { - wasm.__wbindgen_exn_store(addHeapObject(e)); - } -} -/** -*/ -module.exports.ShortintEncryptionKeyChoice = Object.freeze({ Big:0,"0":"Big",Small:1,"1":"Small", }); -/** -*/ -module.exports.ShortintParametersName = Object.freeze({ PARAM_MESSAGE_1_CARRY_0_KS_PBS:0,"0":"PARAM_MESSAGE_1_CARRY_0_KS_PBS",PARAM_MESSAGE_1_CARRY_1_KS_PBS:1,"1":"PARAM_MESSAGE_1_CARRY_1_KS_PBS",PARAM_MESSAGE_2_CARRY_0_KS_PBS:2,"2":"PARAM_MESSAGE_2_CARRY_0_KS_PBS",PARAM_MESSAGE_1_CARRY_2_KS_PBS:3,"3":"PARAM_MESSAGE_1_CARRY_2_KS_PBS",PARAM_MESSAGE_2_CARRY_1_KS_PBS:4,"4":"PARAM_MESSAGE_2_CARRY_1_KS_PBS",PARAM_MESSAGE_3_CARRY_0_KS_PBS:5,"5":"PARAM_MESSAGE_3_CARRY_0_KS_PBS",PARAM_MESSAGE_1_CARRY_3_KS_PBS:6,"6":"PARAM_MESSAGE_1_CARRY_3_KS_PBS",PARAM_MESSAGE_2_CARRY_2_KS_PBS:7,"7":"PARAM_MESSAGE_2_CARRY_2_KS_PBS",PARAM_MESSAGE_3_CARRY_1_KS_PBS:8,"8":"PARAM_MESSAGE_3_CARRY_1_KS_PBS",PARAM_MESSAGE_4_CARRY_0_KS_PBS:9,"9":"PARAM_MESSAGE_4_CARRY_0_KS_PBS",PARAM_MESSAGE_1_CARRY_4_KS_PBS:10,"10":"PARAM_MESSAGE_1_CARRY_4_KS_PBS",PARAM_MESSAGE_2_CARRY_3_KS_PBS:11,"11":"PARAM_MESSAGE_2_CARRY_3_KS_PBS",PARAM_MESSAGE_3_CARRY_2_KS_PBS:12,"12":"PARAM_MESSAGE_3_CARRY_2_KS_PBS",PARAM_MESSAGE_4_CARRY_1_KS_PBS:13,"13":"PARAM_MESSAGE_4_CARRY_1_KS_PBS",PARAM_MESSAGE_5_CARRY_0_KS_PBS:14,"14":"PARAM_MESSAGE_5_CARRY_0_KS_PBS",PARAM_MESSAGE_1_CARRY_5_KS_PBS:15,"15":"PARAM_MESSAGE_1_CARRY_5_KS_PBS",PARAM_MESSAGE_2_CARRY_4_KS_PBS:16,"16":"PARAM_MESSAGE_2_CARRY_4_KS_PBS",PARAM_MESSAGE_3_CARRY_3_KS_PBS:17,"17":"PARAM_MESSAGE_3_CARRY_3_KS_PBS",PARAM_MESSAGE_4_CARRY_2_KS_PBS:18,"18":"PARAM_MESSAGE_4_CARRY_2_KS_PBS",PARAM_MESSAGE_5_CARRY_1_KS_PBS:19,"19":"PARAM_MESSAGE_5_CARRY_1_KS_PBS",PARAM_MESSAGE_6_CARRY_0_KS_PBS:20,"20":"PARAM_MESSAGE_6_CARRY_0_KS_PBS",PARAM_MESSAGE_1_CARRY_6_KS_PBS:21,"21":"PARAM_MESSAGE_1_CARRY_6_KS_PBS",PARAM_MESSAGE_2_CARRY_5_KS_PBS:22,"22":"PARAM_MESSAGE_2_CARRY_5_KS_PBS",PARAM_MESSAGE_3_CARRY_4_KS_PBS:23,"23":"PARAM_MESSAGE_3_CARRY_4_KS_PBS",PARAM_MESSAGE_4_CARRY_3_KS_PBS:24,"24":"PARAM_MESSAGE_4_CARRY_3_KS_PBS",PARAM_MESSAGE_5_CARRY_2_KS_PBS:25,"25":"PARAM_MESSAGE_5_CARRY_2_KS_PBS",PARAM_MESSAGE_6_CARRY_1_KS_PBS:26,"26":"PARAM_MESSAGE_6_CARRY_1_KS_PBS",PARAM_MESSAGE_7_CARRY_0_KS_PBS:27,"27":"PARAM_MESSAGE_7_CARRY_0_KS_PBS",PARAM_MESSAGE_1_CARRY_7_KS_PBS:28,"28":"PARAM_MESSAGE_1_CARRY_7_KS_PBS",PARAM_MESSAGE_2_CARRY_6_KS_PBS:29,"29":"PARAM_MESSAGE_2_CARRY_6_KS_PBS",PARAM_MESSAGE_3_CARRY_5_KS_PBS:30,"30":"PARAM_MESSAGE_3_CARRY_5_KS_PBS",PARAM_MESSAGE_4_CARRY_4_KS_PBS:31,"31":"PARAM_MESSAGE_4_CARRY_4_KS_PBS",PARAM_MESSAGE_5_CARRY_3_KS_PBS:32,"32":"PARAM_MESSAGE_5_CARRY_3_KS_PBS",PARAM_MESSAGE_6_CARRY_2_KS_PBS:33,"33":"PARAM_MESSAGE_6_CARRY_2_KS_PBS",PARAM_MESSAGE_7_CARRY_1_KS_PBS:34,"34":"PARAM_MESSAGE_7_CARRY_1_KS_PBS",PARAM_MESSAGE_8_CARRY_0_KS_PBS:35,"35":"PARAM_MESSAGE_8_CARRY_0_KS_PBS",PARAM_MESSAGE_1_CARRY_1_PBS_KS:36,"36":"PARAM_MESSAGE_1_CARRY_1_PBS_KS",PARAM_MESSAGE_2_CARRY_2_PBS_KS:37,"37":"PARAM_MESSAGE_2_CARRY_2_PBS_KS",PARAM_MESSAGE_3_CARRY_3_PBS_KS:38,"38":"PARAM_MESSAGE_3_CARRY_3_PBS_KS",PARAM_MESSAGE_4_CARRY_4_PBS_KS:39,"39":"PARAM_MESSAGE_4_CARRY_4_PBS_KS",PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS:40,"40":"PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS",PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS:41,"41":"PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS",PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS:42,"42":"PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS",PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS:43,"43":"PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS",PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS:44,"44":"PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS",PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS:45,"45":"PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS",PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS:46,"46":"PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS",PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS:47,"47":"PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS",PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS:48,"48":"PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS",PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS:49,"49":"PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS",PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS:50,"50":"PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS",PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS:51,"51":"PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS",PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS:52,"52":"PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS",PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS:53,"53":"PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS",PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS:54,"54":"PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS",PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS:55,"55":"PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS",PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS:56,"56":"PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS",PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS:57,"57":"PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS",PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS:58,"58":"PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS",PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS:59,"59":"PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS",PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS:60,"60":"PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS",PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS:61,"61":"PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS",PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS:62,"62":"PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS",PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS:63,"63":"PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS",PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS:64,"64":"PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS",PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS:65,"65":"PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS",PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS:66,"66":"PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS",PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS:67,"67":"PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS",PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS:68,"68":"PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS",PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS:69,"69":"PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS",PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS:70,"70":"PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS",PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40:71,"71":"PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40",PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M40:72,"72":"PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M40",PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M40:73,"73":"PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M40",PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M40:74,"74":"PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M40",PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_TUNIFORM_2M40:75,"75":"PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_TUNIFORM_2M40",PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_TUNIFORM_2M40:76,"76":"PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_TUNIFORM_2M40",PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40:77,"77":"PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40",PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40:78,"78":"PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40",PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M40:79,"79":"PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M40",PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M40:80,"80":"PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M40",PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M40:81,"81":"PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M40",PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_TUNIFORM_2M40:82,"82":"PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_TUNIFORM_2M40",PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40:83,"83":"PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40",PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40:84,"84":"PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40",PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M40:85,"85":"PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M40",PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M40:86,"86":"PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M40",PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M40:87,"87":"PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M40",PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40:88,"88":"PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40",PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40:89,"89":"PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40",PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M40:90,"90":"PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M40",PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M40:91,"91":"PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M40",PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40:92,"92":"PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40",PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40:93,"93":"PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40",PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M40:94,"94":"PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M40",PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40:95,"95":"PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40",PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40:96,"96":"PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40",PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40:97,"97":"PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40",PARAM_MESSAGE_1_CARRY_0:98,"98":"PARAM_MESSAGE_1_CARRY_0",PARAM_MESSAGE_1_CARRY_1:99,"99":"PARAM_MESSAGE_1_CARRY_1",PARAM_MESSAGE_2_CARRY_0:100,"100":"PARAM_MESSAGE_2_CARRY_0",PARAM_MESSAGE_1_CARRY_2:101,"101":"PARAM_MESSAGE_1_CARRY_2",PARAM_MESSAGE_2_CARRY_1:102,"102":"PARAM_MESSAGE_2_CARRY_1",PARAM_MESSAGE_3_CARRY_0:103,"103":"PARAM_MESSAGE_3_CARRY_0",PARAM_MESSAGE_1_CARRY_3:104,"104":"PARAM_MESSAGE_1_CARRY_3",PARAM_MESSAGE_2_CARRY_2:105,"105":"PARAM_MESSAGE_2_CARRY_2",PARAM_MESSAGE_3_CARRY_1:106,"106":"PARAM_MESSAGE_3_CARRY_1",PARAM_MESSAGE_4_CARRY_0:107,"107":"PARAM_MESSAGE_4_CARRY_0",PARAM_MESSAGE_1_CARRY_4:108,"108":"PARAM_MESSAGE_1_CARRY_4",PARAM_MESSAGE_2_CARRY_3:109,"109":"PARAM_MESSAGE_2_CARRY_3",PARAM_MESSAGE_3_CARRY_2:110,"110":"PARAM_MESSAGE_3_CARRY_2",PARAM_MESSAGE_4_CARRY_1:111,"111":"PARAM_MESSAGE_4_CARRY_1",PARAM_MESSAGE_5_CARRY_0:112,"112":"PARAM_MESSAGE_5_CARRY_0",PARAM_MESSAGE_1_CARRY_5:113,"113":"PARAM_MESSAGE_1_CARRY_5",PARAM_MESSAGE_2_CARRY_4:114,"114":"PARAM_MESSAGE_2_CARRY_4",PARAM_MESSAGE_3_CARRY_3:115,"115":"PARAM_MESSAGE_3_CARRY_3",PARAM_MESSAGE_4_CARRY_2:116,"116":"PARAM_MESSAGE_4_CARRY_2",PARAM_MESSAGE_5_CARRY_1:117,"117":"PARAM_MESSAGE_5_CARRY_1",PARAM_MESSAGE_6_CARRY_0:118,"118":"PARAM_MESSAGE_6_CARRY_0",PARAM_MESSAGE_1_CARRY_6:119,"119":"PARAM_MESSAGE_1_CARRY_6",PARAM_MESSAGE_2_CARRY_5:120,"120":"PARAM_MESSAGE_2_CARRY_5",PARAM_MESSAGE_3_CARRY_4:121,"121":"PARAM_MESSAGE_3_CARRY_4",PARAM_MESSAGE_4_CARRY_3:122,"122":"PARAM_MESSAGE_4_CARRY_3",PARAM_MESSAGE_5_CARRY_2:123,"123":"PARAM_MESSAGE_5_CARRY_2",PARAM_MESSAGE_6_CARRY_1:124,"124":"PARAM_MESSAGE_6_CARRY_1",PARAM_MESSAGE_7_CARRY_0:125,"125":"PARAM_MESSAGE_7_CARRY_0",PARAM_MESSAGE_1_CARRY_7:126,"126":"PARAM_MESSAGE_1_CARRY_7",PARAM_MESSAGE_2_CARRY_6:127,"127":"PARAM_MESSAGE_2_CARRY_6",PARAM_MESSAGE_3_CARRY_5:128,"128":"PARAM_MESSAGE_3_CARRY_5",PARAM_MESSAGE_4_CARRY_4:129,"129":"PARAM_MESSAGE_4_CARRY_4",PARAM_MESSAGE_5_CARRY_3:130,"130":"PARAM_MESSAGE_5_CARRY_3",PARAM_MESSAGE_6_CARRY_2:131,"131":"PARAM_MESSAGE_6_CARRY_2",PARAM_MESSAGE_7_CARRY_1:132,"132":"PARAM_MESSAGE_7_CARRY_1",PARAM_MESSAGE_8_CARRY_0:133,"133":"PARAM_MESSAGE_8_CARRY_0",PARAM_SMALL_MESSAGE_1_CARRY_1:134,"134":"PARAM_SMALL_MESSAGE_1_CARRY_1",PARAM_SMALL_MESSAGE_2_CARRY_2:135,"135":"PARAM_SMALL_MESSAGE_2_CARRY_2",PARAM_SMALL_MESSAGE_3_CARRY_3:136,"136":"PARAM_SMALL_MESSAGE_3_CARRY_3",PARAM_SMALL_MESSAGE_4_CARRY_4:137,"137":"PARAM_SMALL_MESSAGE_4_CARRY_4", }); -/** -*/ -module.exports.BooleanParameterSet = Object.freeze({ Default:0,"0":"Default",TfheLib:1,"1":"TfheLib",DefaultKsPbs:2,"2":"DefaultKsPbs",TfheLibKsPbs:3,"3":"TfheLibKsPbs", }); -/** -*/ -module.exports.BooleanEncryptionKeyChoice = Object.freeze({ Big:0,"0":"Big",Small:1,"1":"Small", }); -/** -*/ -class Boolean { - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_boolean_free(ptr); - } - /** - * @param {number} parameter_choice - * @returns {BooleanParameters} - */ - static get_parameters(parameter_choice) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.boolean_get_parameters(retptr, parameter_choice); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return BooleanParameters.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} std_dev - * @returns {BooleanNoiseDistribution} - */ - static new_gaussian_from_std_dev(std_dev) { - const ret = wasm.boolean_new_gaussian_from_std_dev(std_dev); - return BooleanNoiseDistribution.__wrap(ret); - } - /** - * @param {number} bound_log2 - * @returns {BooleanNoiseDistribution} - */ - static try_new_t_uniform(bound_log2) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.boolean_try_new_t_uniform(retptr, bound_log2); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return BooleanNoiseDistribution.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} lwe_dimension - * @param {number} glwe_dimension - * @param {number} polynomial_size - * @param {BooleanNoiseDistribution} lwe_noise_distribution - * @param {BooleanNoiseDistribution} glwe_noise_distribution - * @param {number} pbs_base_log - * @param {number} pbs_level - * @param {number} ks_base_log - * @param {number} ks_level - * @param {number} encryption_key_choice - * @returns {BooleanParameters} - */ - static new_parameters(lwe_dimension, glwe_dimension, polynomial_size, lwe_noise_distribution, glwe_noise_distribution, pbs_base_log, pbs_level, ks_base_log, ks_level, encryption_key_choice) { - _assertClass(lwe_noise_distribution, BooleanNoiseDistribution); - _assertClass(glwe_noise_distribution, BooleanNoiseDistribution); - const ret = wasm.boolean_new_parameters(lwe_dimension, glwe_dimension, polynomial_size, lwe_noise_distribution.__wbg_ptr, glwe_noise_distribution.__wbg_ptr, pbs_base_log, pbs_level, ks_base_log, ks_level, encryption_key_choice); - return BooleanParameters.__wrap(ret); - } - /** - * @param {bigint} seed_high_bytes - * @param {bigint} seed_low_bytes - * @param {BooleanParameters} parameters - * @returns {BooleanClientKey} - */ - static new_client_key_from_seed_and_parameters(seed_high_bytes, seed_low_bytes, parameters) { - _assertClass(parameters, BooleanParameters); - const ret = wasm.boolean_new_client_key_from_seed_and_parameters(seed_high_bytes, seed_low_bytes, parameters.__wbg_ptr); - return BooleanClientKey.__wrap(ret); - } - /** - * @param {BooleanParameters} parameters - * @returns {BooleanClientKey} - */ - static new_client_key(parameters) { - _assertClass(parameters, BooleanParameters); - const ret = wasm.boolean_new_client_key(parameters.__wbg_ptr); - return BooleanClientKey.__wrap(ret); - } - /** - * @param {BooleanClientKey} client_key - * @returns {BooleanPublicKey} - */ - static new_public_key(client_key) { - _assertClass(client_key, BooleanClientKey); - const ret = wasm.boolean_new_public_key(client_key.__wbg_ptr); - return BooleanPublicKey.__wrap(ret); - } - /** - * @param {BooleanClientKey} client_key - * @returns {BooleanCompressedServerKey} - */ - static new_compressed_server_key(client_key) { - _assertClass(client_key, BooleanClientKey); - const ret = wasm.boolean_new_compressed_server_key(client_key.__wbg_ptr); - return BooleanCompressedServerKey.__wrap(ret); - } - /** - * @param {BooleanClientKey} client_key - * @param {boolean} message - * @returns {BooleanCiphertext} - */ - static encrypt(client_key, message) { - _assertClass(client_key, BooleanClientKey); - const ret = wasm.boolean_encrypt(client_key.__wbg_ptr, message); - return BooleanCiphertext.__wrap(ret); - } - /** - * @param {BooleanClientKey} client_key - * @param {boolean} message - * @returns {BooleanCompressedCiphertext} - */ - static encrypt_compressed(client_key, message) { - _assertClass(client_key, BooleanClientKey); - const ret = wasm.boolean_encrypt_compressed(client_key.__wbg_ptr, message); - return BooleanCompressedCiphertext.__wrap(ret); - } - /** - * @param {BooleanCompressedCiphertext} compressed_ciphertext - * @returns {BooleanCiphertext} - */ - static decompress_ciphertext(compressed_ciphertext) { - _assertClass(compressed_ciphertext, BooleanCompressedCiphertext); - const ret = wasm.boolean_decompress_ciphertext(compressed_ciphertext.__wbg_ptr); - return BooleanCiphertext.__wrap(ret); - } - /** - * @param {BooleanPublicKey} public_key - * @param {boolean} message - * @returns {BooleanCiphertext} - */ - static encrypt_with_public_key(public_key, message) { - _assertClass(public_key, BooleanPublicKey); - const ret = wasm.boolean_encrypt_with_public_key(public_key.__wbg_ptr, message); - return BooleanCiphertext.__wrap(ret); - } - /** - * @param {boolean} message - * @returns {BooleanCiphertext} - */ - static trivial_encrypt(message) { - const ret = wasm.boolean_trivial_encrypt(message); - return BooleanCiphertext.__wrap(ret); - } - /** - * @param {BooleanClientKey} client_key - * @param {BooleanCiphertext} ct - * @returns {boolean} - */ - static decrypt(client_key, ct) { - _assertClass(client_key, BooleanClientKey); - _assertClass(ct, BooleanCiphertext); - const ret = wasm.boolean_decrypt(client_key.__wbg_ptr, ct.__wbg_ptr); - return ret !== 0; - } - /** - * @param {BooleanCiphertext} ciphertext - * @returns {Uint8Array} - */ - static serialize_ciphertext(ciphertext) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(ciphertext, BooleanCiphertext); - wasm.boolean_serialize_ciphertext(retptr, ciphertext.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {BooleanCiphertext} - */ - static deserialize_ciphertext(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.boolean_deserialize_ciphertext(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return BooleanCiphertext.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {BooleanCompressedCiphertext} ciphertext - * @returns {Uint8Array} - */ - static serialize_compressed_ciphertext(ciphertext) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(ciphertext, BooleanCompressedCiphertext); - wasm.boolean_serialize_compressed_ciphertext(retptr, ciphertext.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {BooleanCompressedCiphertext} - */ - static deserialize_compressed_ciphertext(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.boolean_deserialize_compressed_ciphertext(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return BooleanCompressedCiphertext.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {BooleanClientKey} client_key - * @returns {Uint8Array} - */ - static serialize_client_key(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, BooleanClientKey); - wasm.boolean_serialize_client_key(retptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {BooleanClientKey} - */ - static deserialize_client_key(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.boolean_deserialize_client_key(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return BooleanClientKey.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {BooleanPublicKey} public_key - * @returns {Uint8Array} - */ - static serialize_public_key(public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, BooleanPublicKey); - wasm.boolean_serialize_public_key(retptr, public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {BooleanPublicKey} - */ - static deserialize_public_key(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.boolean_deserialize_public_key(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return BooleanPublicKey.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {BooleanCompressedServerKey} server_key - * @returns {Uint8Array} - */ - static serialize_compressed_server_key(server_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(server_key, BooleanCompressedServerKey); - wasm.boolean_serialize_compressed_server_key(retptr, server_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {BooleanCompressedServerKey} - */ - static deserialize_compressed_server_key(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.boolean_deserialize_compressed_server_key(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return BooleanCompressedServerKey.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.Boolean = Boolean; -/** -*/ -class BooleanCiphertext { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(BooleanCiphertext.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_booleanciphertext_free(ptr); - } -} -module.exports.BooleanCiphertext = BooleanCiphertext; -/** -*/ -class BooleanClientKey { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(BooleanClientKey.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_booleanclientkey_free(ptr); - } -} -module.exports.BooleanClientKey = BooleanClientKey; -/** -*/ -class BooleanCompressedCiphertext { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(BooleanCompressedCiphertext.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_booleancompressedciphertext_free(ptr); - } -} -module.exports.BooleanCompressedCiphertext = BooleanCompressedCiphertext; -/** -*/ -class BooleanCompressedServerKey { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(BooleanCompressedServerKey.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_booleancompressedserverkey_free(ptr); - } -} -module.exports.BooleanCompressedServerKey = BooleanCompressedServerKey; -/** -*/ -class BooleanNoiseDistribution { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(BooleanNoiseDistribution.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_booleannoisedistribution_free(ptr); - } -} -module.exports.BooleanNoiseDistribution = BooleanNoiseDistribution; -/** -*/ -class BooleanParameters { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(BooleanParameters.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_booleanparameters_free(ptr); - } -} -module.exports.BooleanParameters = BooleanParameters; -/** -*/ -class BooleanPublicKey { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(BooleanPublicKey.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_booleanpublickey_free(ptr); - } -} -module.exports.BooleanPublicKey = BooleanPublicKey; -/** -*/ -class CompactFheBool { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheBool.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfhebool_free(ptr); - } - /** - * @param {boolean} value - * @param {TfheCompactPublicKey} client_key - * @returns {CompactFheBool} - */ - static encrypt_with_compact_public_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheCompactPublicKey); - wasm.compactfhebool_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheBool.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheBool} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfhebool_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheBool.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfhebool_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheBool} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfhebool_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheBool.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfhebool_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompactFheBool} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfhebool_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheBool.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.CompactFheBool = CompactFheBool; -/** -*/ -class CompactFheBoolList { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheBoolList.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfheboollist_free(ptr); - } - /** - * @returns {any[]} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheboollist_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayJsValueFromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 4); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheboollist_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheBoolList} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheboollist_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheBoolList.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.CompactFheBoolList = CompactFheBoolList; -/** -*/ -class CompactFheUint128 { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheUint128.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfheuint128_free(ptr); - } - /** - * @param {any} value - * @param {TfheCompactPublicKey} client_key - * @returns {CompactFheUint128} - */ - static encrypt_with_compact_public_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheCompactPublicKey); - wasm.compactfheuint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint128.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheUint128} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint128_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint128.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint128_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheUint128} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint128_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint128.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint128_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompactFheUint128} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint128_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint128.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.CompactFheUint128 = CompactFheUint128; -/** -*/ -class CompactFheUint16 { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheUint16.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfheuint16_free(ptr); - } - /** - * @param {number} value - * @param {TfheCompactPublicKey} client_key - * @returns {CompactFheUint16} - */ - static encrypt_with_compact_public_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheCompactPublicKey); - wasm.compactfheuint16_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint16.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheUint16} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint16_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint16.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint16_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheUint16} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint16_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint16.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompactFheUint16} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint16.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.CompactFheUint16 = CompactFheUint16; -/** -*/ -class CompactFheUint160 { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheUint160.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfheuint160_free(ptr); - } - /** - * @param {any} value - * @param {TfheCompactPublicKey} client_key - * @returns {CompactFheUint160} - */ - static encrypt_with_compact_public_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheCompactPublicKey); - wasm.compactfheuint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint160.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheUint160} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint160_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint160.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint160_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheUint160} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint160_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint160.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint160_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompactFheUint160} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint160_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint160.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.CompactFheUint160 = CompactFheUint160; -/** -*/ -class CompactFheUint16List { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheUint16List.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfheuint16list_free(ptr); - } - /** - * @returns {any[]} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint16list_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayJsValueFromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 4); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint16list_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheUint16List} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint16list_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint16List.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.CompactFheUint16List = CompactFheUint16List; -/** -*/ -class CompactFheUint256 { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheUint256.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfheuint256_free(ptr); - } - /** - * @param {any} value - * @param {TfheCompactPublicKey} client_key - * @returns {CompactFheUint256} - */ - static encrypt_with_compact_public_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheCompactPublicKey); - wasm.compactfheuint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint256.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheUint256} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint256_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint256.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint256_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheUint256} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint256_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint256.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint256_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompactFheUint256} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint256_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint256.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.CompactFheUint256 = CompactFheUint256; -/** -*/ -class CompactFheUint32 { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheUint32.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfheuint32_free(ptr); - } - /** - * @param {number} value - * @param {TfheCompactPublicKey} client_key - * @returns {CompactFheUint32} - */ - static encrypt_with_compact_public_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheCompactPublicKey); - wasm.compactfheuint32_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint32.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheUint32} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint32_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint32.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint32_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheUint32} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint32_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint32.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompactFheUint32} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint32.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.CompactFheUint32 = CompactFheUint32; -/** -*/ -class CompactFheUint32List { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheUint32List.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfheuint32list_free(ptr); - } - /** - * @returns {any[]} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint32list_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayJsValueFromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 4); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint32list_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheUint32List} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint32list_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint32List.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.CompactFheUint32List = CompactFheUint32List; -/** -*/ -class CompactFheUint64 { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheUint64.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfheuint64_free(ptr); - } - /** - * @param {bigint} value - * @param {TfheCompactPublicKey} client_key - * @returns {CompactFheUint64} - */ - static encrypt_with_compact_public_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheCompactPublicKey); - wasm.compactfheuint64_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint64.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheUint64} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint64_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint64.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint64_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheUint64} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint64_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint64.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompactFheUint64} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint64.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.CompactFheUint64 = CompactFheUint64; -/** -*/ -class CompactFheUint64List { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheUint64List.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfheuint64list_free(ptr); - } - /** - * @returns {any[]} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint64list_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayJsValueFromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 4); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint64list_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheUint64List} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint64list_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint64List.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.CompactFheUint64List = CompactFheUint64List; -/** -*/ -class CompactFheUint8 { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheUint8.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfheuint8_free(ptr); - } - /** - * @param {number} value - * @param {TfheCompactPublicKey} client_key - * @returns {CompactFheUint8} - */ - static encrypt_with_compact_public_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheCompactPublicKey); - wasm.compactfheuint8_encrypt_with_compact_public_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint8.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheUint8} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint8_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint8.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint8_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheUint8} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint8_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint8.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompactFheUint8} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint8.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.CompactFheUint8 = CompactFheUint8; -/** -*/ -class CompactFheUint8List { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompactFheUint8List.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compactfheuint8list_free(ptr); - } - /** - * @returns {any[]} - */ - expand() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint8list_expand(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayJsValueFromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 4); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compactfheuint8list_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompactFheUint8List} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compactfheuint8list_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompactFheUint8List.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.CompactFheUint8List = CompactFheUint8List; -/** -*/ -class CompressedFheBool { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompressedFheBool.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compressedfhebool_free(ptr); - } - /** - * @param {boolean} value - * @param {TfheClientKey} client_key - * @returns {CompressedFheBool} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.compressedfhebool_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompressedFheBool.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheBool} - */ - decompress() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compressedfhebool_decompress(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheBool.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compressedfhebool_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompressedFheBool} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compressedfhebool_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompressedFheBool.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compressedfhebool_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompressedFheBool} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compressedfhebool_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompressedFheBool.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.CompressedFheBool = CompressedFheBool; -/** -*/ -class CompressedFheUint16 { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompressedFheUint16.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compressedfheuint16_free(ptr); - } - /** - * @param {number} value - * @param {TfheClientKey} client_key - * @returns {CompressedFheUint16} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.compressedfheuint16_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompressedFheUint16.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheUint16} - */ - decompress() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compressedfheuint16_decompress(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint16.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compressedfheuint16_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompressedFheUint16} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compressedfheuint16_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompressedFheUint16.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compressedfheuint16_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompressedFheUint16} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compressedfheuint16_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompressedFheUint16.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.CompressedFheUint16 = CompressedFheUint16; -/** -*/ -class CompressedFheUint32 { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompressedFheUint32.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compressedfheuint32_free(ptr); - } - /** - * @param {number} value - * @param {TfheClientKey} client_key - * @returns {CompressedFheUint32} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.compressedfheuint32_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompressedFheUint32.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheUint32} - */ - decompress() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compressedfheuint32_decompress(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint32.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compressedfheuint32_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompressedFheUint32} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compressedfheuint32_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompressedFheUint32.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compressedfheuint32_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompressedFheUint32} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compressedfheuint32_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompressedFheUint32.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.CompressedFheUint32 = CompressedFheUint32; -/** -*/ -class CompressedFheUint64 { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompressedFheUint64.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compressedfheuint64_free(ptr); - } - /** - * @param {bigint} value - * @param {TfheClientKey} client_key - * @returns {CompressedFheUint64} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.compressedfheuint64_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompressedFheUint64.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheUint64} - */ - decompress() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compressedfheuint64_decompress(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint64.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compressedfheuint64_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompressedFheUint64} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compressedfheuint64_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompressedFheUint64.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compressedfheuint64_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompressedFheUint64} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compressedfheuint64_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompressedFheUint64.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.CompressedFheUint64 = CompressedFheUint64; -/** -*/ -class CompressedFheUint8 { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(CompressedFheUint8.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compressedfheuint8_free(ptr); - } - /** - * @param {number} value - * @param {TfheClientKey} client_key - * @returns {CompressedFheUint8} - */ - static encrypt_with_client_key(value, client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.compressedfheuint8_encrypt_with_client_key(retptr, value, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompressedFheUint8.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {FheUint8} - */ - decompress() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compressedfheuint8_decompress(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint8.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compressedfheuint8_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {CompressedFheUint8} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compressedfheuint8_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompressedFheUint8.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {bigint} serialized_size_limit - * @returns {Uint8Array} - */ - safe_serialize(serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.compressedfheuint8_safe_serialize(retptr, this.__wbg_ptr, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @param {bigint} serialized_size_limit - * @returns {CompressedFheUint8} - */ - static safe_deserialize(buffer, serialized_size_limit) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compressedfheuint8_safe_deserialize(retptr, ptr0, len0, serialized_size_limit); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return CompressedFheUint8.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.CompressedFheUint8 = CompressedFheUint8; -/** -*/ -class FheBool { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheBool.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fhebool_free(ptr); - } - /** - * @param {boolean} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheBool} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fhebool_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheBool.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fhebool_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.FheBool = FheBool; -/** -*/ -class FheUint128 { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheUint128.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheuint128_free(ptr); - } - /** - * @param {any} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheUint128} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheuint128_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint128.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.FheUint128 = FheUint128; -/** -*/ -class FheUint16 { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheUint16.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheuint16_free(ptr); - } - /** - * @param {number} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheUint16} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheuint16_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint16.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint16_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.FheUint16 = FheUint16; -/** -*/ -class FheUint160 { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheUint160.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheuint160_free(ptr); - } - /** - * @param {any} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheUint160} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheuint160_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint160.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.FheUint160 = FheUint160; -/** -*/ -class FheUint256 { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheUint256.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheuint256_free(ptr); - } - /** - * @param {any} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheUint256} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheuint256_encrypt_with_compact_public_key(retptr, addHeapObject(value), compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint256.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.FheUint256 = FheUint256; -/** -*/ -class FheUint32 { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheUint32.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheuint32_free(ptr); - } - /** - * @param {number} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheUint32} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheuint32_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint32.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint32_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.FheUint32 = FheUint32; -/** -*/ -class FheUint64 { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheUint64.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheuint64_free(ptr); - } - /** - * @param {bigint} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheUint64} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheuint64_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint64.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint64_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.FheUint64 = FheUint64; -/** -*/ -class FheUint8 { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FheUint8.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_fheuint8_free(ptr); - } - /** - * @param {number} value - * @param {TfheCompactPublicKey} compact_public_key - * @returns {FheUint8} - */ - static encrypt_with_compact_public_key(value, compact_public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(compact_public_key, TfheCompactPublicKey); - wasm.fheuint8_encrypt_with_compact_public_key(retptr, value, compact_public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return FheUint8.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.fheuint8_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.FheUint8 = FheUint8; -/** -*/ -class Shortint { - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_shortint_free(ptr); - } - /** - * @param {number} message_bits - * @param {number} carry_bits - * @returns {ShortintParameters} - */ - static get_parameters(message_bits, carry_bits) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.shortint_get_parameters(retptr, message_bits, carry_bits); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return ShortintParameters.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} message_bits - * @param {number} carry_bits - * @returns {ShortintParameters} - */ - static get_parameters_small(message_bits, carry_bits) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.shortint_get_parameters_small(retptr, message_bits, carry_bits); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return ShortintParameters.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} std_dev - * @returns {ShortintNoiseDistribution} - */ - static new_gaussian_from_std_dev(std_dev) { - const ret = wasm.boolean_new_gaussian_from_std_dev(std_dev); - return ShortintNoiseDistribution.__wrap(ret); - } - /** - * @param {number} bound_log2 - * @returns {ShortintNoiseDistribution} - */ - static try_new_t_uniform(bound_log2) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.shortint_try_new_t_uniform(retptr, bound_log2); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return ShortintNoiseDistribution.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {number} lwe_dimension - * @param {number} glwe_dimension - * @param {number} polynomial_size - * @param {ShortintNoiseDistribution} lwe_noise_distribution - * @param {ShortintNoiseDistribution} glwe_noise_distribution - * @param {number} pbs_base_log - * @param {number} pbs_level - * @param {number} ks_base_log - * @param {number} ks_level - * @param {number} message_modulus - * @param {number} carry_modulus - * @param {number} max_noise_level - * @param {number} log2_p_fail - * @param {number} modulus_power_of_2_exponent - * @param {number} encryption_key_choice - * @returns {ShortintParameters} - */ - static new_parameters(lwe_dimension, glwe_dimension, polynomial_size, lwe_noise_distribution, glwe_noise_distribution, pbs_base_log, pbs_level, ks_base_log, ks_level, message_modulus, carry_modulus, max_noise_level, log2_p_fail, modulus_power_of_2_exponent, encryption_key_choice) { - _assertClass(lwe_noise_distribution, ShortintNoiseDistribution); - _assertClass(glwe_noise_distribution, ShortintNoiseDistribution); - const ret = wasm.shortint_new_parameters(lwe_dimension, glwe_dimension, polynomial_size, lwe_noise_distribution.__wbg_ptr, glwe_noise_distribution.__wbg_ptr, pbs_base_log, pbs_level, ks_base_log, ks_level, message_modulus, carry_modulus, max_noise_level, log2_p_fail, modulus_power_of_2_exponent, encryption_key_choice); - return ShortintParameters.__wrap(ret); - } - /** - * @param {bigint} seed_high_bytes - * @param {bigint} seed_low_bytes - * @param {ShortintParameters} parameters - * @returns {ShortintClientKey} - */ - static new_client_key_from_seed_and_parameters(seed_high_bytes, seed_low_bytes, parameters) { - _assertClass(parameters, ShortintParameters); - const ret = wasm.shortint_new_client_key_from_seed_and_parameters(seed_high_bytes, seed_low_bytes, parameters.__wbg_ptr); - return ShortintClientKey.__wrap(ret); - } - /** - * @param {ShortintParameters} parameters - * @returns {ShortintClientKey} - */ - static new_client_key(parameters) { - _assertClass(parameters, ShortintParameters); - const ret = wasm.shortint_new_client_key(parameters.__wbg_ptr); - return ShortintClientKey.__wrap(ret); - } - /** - * @param {ShortintClientKey} client_key - * @returns {ShortintPublicKey} - */ - static new_public_key(client_key) { - _assertClass(client_key, ShortintClientKey); - const ret = wasm.shortint_new_public_key(client_key.__wbg_ptr); - return ShortintPublicKey.__wrap(ret); - } - /** - * @param {ShortintClientKey} client_key - * @returns {ShortintCompressedPublicKey} - */ - static new_compressed_public_key(client_key) { - _assertClass(client_key, ShortintClientKey); - const ret = wasm.shortint_new_compressed_public_key(client_key.__wbg_ptr); - return ShortintCompressedPublicKey.__wrap(ret); - } - /** - * @param {ShortintClientKey} client_key - * @returns {ShortintCompressedServerKey} - */ - static new_compressed_server_key(client_key) { - _assertClass(client_key, ShortintClientKey); - const ret = wasm.shortint_new_compressed_server_key(client_key.__wbg_ptr); - return ShortintCompressedServerKey.__wrap(ret); - } - /** - * @param {ShortintClientKey} client_key - * @param {bigint} message - * @returns {ShortintCiphertext} - */ - static encrypt(client_key, message) { - _assertClass(client_key, ShortintClientKey); - const ret = wasm.shortint_encrypt(client_key.__wbg_ptr, message); - return ShortintCiphertext.__wrap(ret); - } - /** - * @param {ShortintClientKey} client_key - * @param {bigint} message - * @returns {ShortintCompressedCiphertext} - */ - static encrypt_compressed(client_key, message) { - _assertClass(client_key, ShortintClientKey); - const ret = wasm.shortint_encrypt_compressed(client_key.__wbg_ptr, message); - return ShortintCompressedCiphertext.__wrap(ret); - } - /** - * @param {ShortintCompressedCiphertext} compressed_ciphertext - * @returns {ShortintCiphertext} - */ - static decompress_ciphertext(compressed_ciphertext) { - _assertClass(compressed_ciphertext, ShortintCompressedCiphertext); - const ret = wasm.shortint_decompress_ciphertext(compressed_ciphertext.__wbg_ptr); - return ShortintCiphertext.__wrap(ret); - } - /** - * @param {ShortintPublicKey} public_key - * @param {bigint} message - * @returns {ShortintCiphertext} - */ - static encrypt_with_public_key(public_key, message) { - _assertClass(public_key, ShortintPublicKey); - const ret = wasm.shortint_encrypt_with_public_key(public_key.__wbg_ptr, message); - return ShortintCiphertext.__wrap(ret); - } - /** - * @param {ShortintCompressedPublicKey} public_key - * @param {bigint} message - * @returns {ShortintCiphertext} - */ - static encrypt_with_compressed_public_key(public_key, message) { - _assertClass(public_key, ShortintCompressedPublicKey); - const ret = wasm.shortint_encrypt_with_compressed_public_key(public_key.__wbg_ptr, message); - return ShortintCiphertext.__wrap(ret); - } - /** - * @param {ShortintClientKey} client_key - * @param {ShortintCiphertext} ct - * @returns {bigint} - */ - static decrypt(client_key, ct) { - _assertClass(client_key, ShortintClientKey); - _assertClass(ct, ShortintCiphertext); - const ret = wasm.shortint_decrypt(client_key.__wbg_ptr, ct.__wbg_ptr); - return BigInt.asUintN(64, ret); - } - /** - * @param {ShortintCiphertext} ciphertext - * @returns {Uint8Array} - */ - static serialize_ciphertext(ciphertext) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(ciphertext, ShortintCiphertext); - wasm.shortint_serialize_ciphertext(retptr, ciphertext.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {ShortintCiphertext} - */ - static deserialize_ciphertext(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.shortint_deserialize_ciphertext(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return ShortintCiphertext.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {ShortintCompressedCiphertext} ciphertext - * @returns {Uint8Array} - */ - static serialize_compressed_ciphertext(ciphertext) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(ciphertext, ShortintCompressedCiphertext); - wasm.shortint_serialize_compressed_ciphertext(retptr, ciphertext.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {ShortintCompressedCiphertext} - */ - static deserialize_compressed_ciphertext(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.shortint_deserialize_compressed_ciphertext(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return ShortintCompressedCiphertext.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {ShortintClientKey} client_key - * @returns {Uint8Array} - */ - static serialize_client_key(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, ShortintClientKey); - wasm.shortint_serialize_client_key(retptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {ShortintClientKey} - */ - static deserialize_client_key(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.shortint_deserialize_client_key(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return ShortintClientKey.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {ShortintPublicKey} public_key - * @returns {Uint8Array} - */ - static serialize_public_key(public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, ShortintPublicKey); - wasm.shortint_serialize_public_key(retptr, public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {ShortintPublicKey} - */ - static deserialize_public_key(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.shortint_deserialize_public_key(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return ShortintPublicKey.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {ShortintCompressedPublicKey} public_key - * @returns {Uint8Array} - */ - static serialize_compressed_public_key(public_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(public_key, ShortintCompressedPublicKey); - wasm.shortint_serialize_compressed_public_key(retptr, public_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {ShortintCompressedPublicKey} - */ - static deserialize_compressed_public_key(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.shortint_deserialize_compressed_public_key(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return ShortintCompressedPublicKey.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {ShortintCompressedServerKey} server_key - * @returns {Uint8Array} - */ - static serialize_compressed_server_key(server_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(server_key, ShortintCompressedServerKey); - wasm.shortint_serialize_compressed_server_key(retptr, server_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {ShortintCompressedServerKey} - */ - static deserialize_compressed_server_key(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.shortint_deserialize_compressed_server_key(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return ShortintCompressedServerKey.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.Shortint = Shortint; -/** -*/ -class ShortintCiphertext { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(ShortintCiphertext.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_shortintciphertext_free(ptr); - } -} -module.exports.ShortintCiphertext = ShortintCiphertext; -/** -*/ -class ShortintClientKey { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(ShortintClientKey.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_shortintclientkey_free(ptr); - } -} -module.exports.ShortintClientKey = ShortintClientKey; -/** -*/ -class ShortintCompressedCiphertext { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(ShortintCompressedCiphertext.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_shortintcompressedciphertext_free(ptr); - } -} -module.exports.ShortintCompressedCiphertext = ShortintCompressedCiphertext; -/** -*/ -class ShortintCompressedPublicKey { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(ShortintCompressedPublicKey.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_shortintcompressedpublickey_free(ptr); - } -} -module.exports.ShortintCompressedPublicKey = ShortintCompressedPublicKey; -/** -*/ -class ShortintCompressedServerKey { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(ShortintCompressedServerKey.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_shortintcompressedserverkey_free(ptr); - } -} -module.exports.ShortintCompressedServerKey = ShortintCompressedServerKey; -/** -*/ -class ShortintNoiseDistribution { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(ShortintNoiseDistribution.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_shortintnoisedistribution_free(ptr); - } -} -module.exports.ShortintNoiseDistribution = ShortintNoiseDistribution; -/** -*/ -class ShortintParameters { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(ShortintParameters.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_shortintparameters_free(ptr); - } - /** - * @returns {number} - */ - lwe_dimension() { - const ret = wasm.shortintparameters_lwe_dimension(this.__wbg_ptr); - return ret >>> 0; - } - /** - * @param {number} new_value - */ - set_lwe_dimension(new_value) { - wasm.shortintparameters_set_lwe_dimension(this.__wbg_ptr, new_value); - } - /** - * @returns {number} - */ - glwe_dimension() { - const ret = wasm.shortintparameters_glwe_dimension(this.__wbg_ptr); - return ret >>> 0; - } - /** - * @param {number} new_value - */ - set_glwe_dimension(new_value) { - wasm.shortintparameters_set_glwe_dimension(this.__wbg_ptr, new_value); - } - /** - * @returns {number} - */ - polynomial_size() { - const ret = wasm.shortintparameters_polynomial_size(this.__wbg_ptr); - return ret >>> 0; - } - /** - * @param {number} new_value - */ - set_polynomial_size(new_value) { - wasm.shortintparameters_set_polynomial_size(this.__wbg_ptr, new_value); - } - /** - * @returns {ShortintNoiseDistribution} - */ - lwe_noise_distribution() { - const ret = wasm.shortintparameters_glwe_noise_distribution(this.__wbg_ptr); - return ShortintNoiseDistribution.__wrap(ret); - } - /** - * @param {ShortintNoiseDistribution} new_value - */ - set_lwe_noise_distribution(new_value) { - _assertClass(new_value, ShortintNoiseDistribution); - wasm.shortintparameters_set_lwe_noise_distribution(this.__wbg_ptr, new_value.__wbg_ptr); - } - /** - * @returns {ShortintNoiseDistribution} - */ - glwe_noise_distribution() { - const ret = wasm.shortintparameters_glwe_noise_distribution(this.__wbg_ptr); - return ShortintNoiseDistribution.__wrap(ret); - } - /** - * @param {ShortintNoiseDistribution} new_value - */ - set_glwe_noise_distribution(new_value) { - _assertClass(new_value, ShortintNoiseDistribution); - wasm.shortintparameters_set_glwe_noise_distribution(this.__wbg_ptr, new_value.__wbg_ptr); - } - /** - * @returns {number} - */ - pbs_base_log() { - const ret = wasm.shortintparameters_pbs_base_log(this.__wbg_ptr); - return ret >>> 0; - } - /** - * @param {number} new_value - */ - set_pbs_base_log(new_value) { - wasm.shortintparameters_set_pbs_base_log(this.__wbg_ptr, new_value); - } - /** - * @returns {number} - */ - pbs_level() { - const ret = wasm.shortintparameters_pbs_level(this.__wbg_ptr); - return ret >>> 0; - } - /** - * @param {number} new_value - */ - set_pbs_level(new_value) { - wasm.shortintparameters_set_pbs_level(this.__wbg_ptr, new_value); - } - /** - * @returns {number} - */ - ks_base_log() { - const ret = wasm.shortintparameters_ks_base_log(this.__wbg_ptr); - return ret >>> 0; - } - /** - * @param {number} new_value - */ - set_ks_base_log(new_value) { - wasm.shortintparameters_set_ks_base_log(this.__wbg_ptr, new_value); - } - /** - * @returns {number} - */ - ks_level() { - const ret = wasm.shortintparameters_ks_level(this.__wbg_ptr); - return ret >>> 0; - } - /** - * @param {number} new_value - */ - set_ks_level(new_value) { - wasm.shortintparameters_set_ks_level(this.__wbg_ptr, new_value); - } - /** - * @returns {number} - */ - message_modulus() { - const ret = wasm.shortintparameters_message_modulus(this.__wbg_ptr); - return ret >>> 0; - } - /** - * @param {number} new_value - */ - set_message_modulus(new_value) { - wasm.shortintparameters_set_message_modulus(this.__wbg_ptr, new_value); - } - /** - * @returns {number} - */ - carry_modulus() { - const ret = wasm.shortintparameters_carry_modulus(this.__wbg_ptr); - return ret >>> 0; - } - /** - * @param {number} new_value - */ - set_carry_modulus(new_value) { - wasm.shortintparameters_set_carry_modulus(this.__wbg_ptr, new_value); - } - /** - * @returns {number} - */ - encryption_key_choice() { - const ret = wasm.shortintparameters_encryption_key_choice(this.__wbg_ptr); - return ret >>> 0; - } - /** - * @param {number} new_value - */ - set_encryption_key_choice(new_value) { - wasm.shortintparameters_set_encryption_key_choice(this.__wbg_ptr, new_value); - } - /** - * @param {number} name - */ - constructor(name) { - const ret = wasm.shortintparameters_new(name); - return ShortintParameters.__wrap(ret); - } -} -module.exports.ShortintParameters = ShortintParameters; -/** -*/ -class ShortintPublicKey { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(ShortintPublicKey.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_shortintpublickey_free(ptr); - } -} -module.exports.ShortintPublicKey = ShortintPublicKey; -/** -*/ -class TfheClientKey { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(TfheClientKey.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_tfheclientkey_free(ptr); - } - /** - * @param {TfheConfig} config - * @returns {TfheClientKey} - */ - static generate(config) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(config, TfheConfig); - wasm.tfheclientkey_generate(retptr, config.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfheClientKey.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {TfheConfig} config - * @param {any} seed - * @returns {TfheClientKey} - */ - static generate_with_seed(config, seed) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(config, TfheConfig); - wasm.tfheclientkey_generate_with_seed(retptr, config.__wbg_ptr, addHeapObject(seed)); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfheClientKey.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.tfheclientkey_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {TfheClientKey} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.tfheclientkey_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfheClientKey.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.TfheClientKey = TfheClientKey; -/** -*/ -class TfheCompactPublicKey { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(TfheCompactPublicKey.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_tfhecompactpublickey_free(ptr); - } - /** - * @param {TfheClientKey} client_key - * @returns {TfheCompactPublicKey} - */ - static new(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.tfhecompactpublickey_new(retptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfheCompactPublicKey.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.tfhecompactpublickey_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {TfheCompactPublicKey} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.tfhecompactpublickey_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfheCompactPublicKey.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.TfheCompactPublicKey = TfheCompactPublicKey; -/** -*/ -class TfheCompressedCompactPublicKey { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(TfheCompressedCompactPublicKey.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_tfhecompressedcompactpublickey_free(ptr); - } - /** - * @param {TfheClientKey} client_key - * @returns {TfheCompressedCompactPublicKey} - */ - static new(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.tfhecompressedcompactpublickey_new(retptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfheCompressedCompactPublicKey.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.tfhecompressedcompactpublickey_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {TfheCompressedCompactPublicKey} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.tfhecompressedcompactpublickey_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfheCompressedCompactPublicKey.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {TfheCompactPublicKey} - */ - decompress() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.tfhecompressedcompactpublickey_decompress(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfheCompactPublicKey.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.TfheCompressedCompactPublicKey = TfheCompressedCompactPublicKey; -/** -*/ -class TfheCompressedPublicKey { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(TfheCompressedPublicKey.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_tfhecompressedpublickey_free(ptr); - } - /** - * @param {TfheClientKey} client_key - * @returns {TfheCompressedPublicKey} - */ - static new(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.tfhecompressedpublickey_new(retptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfheCompressedPublicKey.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {TfhePublicKey} - */ - decompress() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.tfhecompressedpublickey_decompress(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfhePublicKey.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.tfhecompressedpublickey_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {TfheCompressedPublicKey} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.tfhecompressedpublickey_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfheCompressedPublicKey.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.TfheCompressedPublicKey = TfheCompressedPublicKey; -/** -*/ -class TfheCompressedServerKey { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(TfheCompressedServerKey.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_tfhecompressedserverkey_free(ptr); - } - /** - * @param {TfheClientKey} client_key - * @returns {TfheCompressedServerKey} - */ - static new(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.tfhecompressedserverkey_new(retptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfheCompressedServerKey.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.tfhecompressedserverkey_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {TfheCompressedServerKey} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.tfhecompressedserverkey_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfheCompressedServerKey.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.TfheCompressedServerKey = TfheCompressedServerKey; -/** -*/ -class TfheConfig { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(TfheConfig.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_tfheconfig_free(ptr); - } -} -module.exports.TfheConfig = TfheConfig; -/** -*/ -class TfheConfigBuilder { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(TfheConfigBuilder.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_tfheconfigbuilder_free(ptr); - } - /** - * @returns {TfheConfigBuilder} - */ - static default() { - const ret = wasm.tfheconfigbuilder_default(); - return TfheConfigBuilder.__wrap(ret); - } - /** - * @returns {TfheConfigBuilder} - */ - static default_with_small_encryption() { - const ret = wasm.tfheconfigbuilder_default_with_small_encryption(); - return TfheConfigBuilder.__wrap(ret); - } - /** - * @returns {TfheConfigBuilder} - */ - static default_with_big_encryption() { - const ret = wasm.tfheconfigbuilder_default(); - return TfheConfigBuilder.__wrap(ret); - } - /** - * @param {ShortintParameters} block_parameters - * @returns {TfheConfigBuilder} - */ - use_custom_parameters(block_parameters) { - const ptr = this.__destroy_into_raw(); - _assertClass(block_parameters, ShortintParameters); - const ret = wasm.tfheconfigbuilder_use_custom_parameters(ptr, block_parameters.__wbg_ptr); - return TfheConfigBuilder.__wrap(ret); - } - /** - * @returns {TfheConfig} - */ - build() { - const ptr = this.__destroy_into_raw(); - const ret = wasm.tfheconfigbuilder_build(ptr); - return TfheConfig.__wrap(ret); - } -} -module.exports.TfheConfigBuilder = TfheConfigBuilder; -/** -*/ -class TfhePublicKey { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(TfhePublicKey.prototype); - obj.__wbg_ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_tfhepublickey_free(ptr); - } - /** - * @param {TfheClientKey} client_key - * @returns {TfhePublicKey} - */ - static new(client_key) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - _assertClass(client_key, TfheClientKey); - wasm.tfhepublickey_new(retptr, client_key.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfhePublicKey.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {Uint8Array} - */ - serialize() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.tfhepublickey_serialize(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Uint8Array} buffer - * @returns {TfhePublicKey} - */ - static deserialize(buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buffer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.tfhepublickey_deserialize(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return TfhePublicKey.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -} -module.exports.TfhePublicKey = TfhePublicKey; -/** -*/ -class tfhe { - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_tfhe_free(ptr); - } -} -module.exports.tfhe = tfhe; - -module.exports.__wbindgen_bigint_from_u64 = function(arg0) { - const ret = BigInt.asUintN(64, arg0); - return addHeapObject(ret); -}; - -module.exports.__wbindgen_shr = function(arg0, arg1) { - const ret = getObject(arg0) >> getObject(arg1); - return addHeapObject(ret); -}; - -module.exports.__wbindgen_object_drop_ref = function(arg0) { - takeObject(arg0); -}; - -module.exports.__wbindgen_jsval_eq = function(arg0, arg1) { - const ret = getObject(arg0) === getObject(arg1); - return ret; -}; - -module.exports.__wbindgen_error_new = function(arg0, arg1) { - const ret = new Error(getStringFromWasm0(arg0, arg1)); - return addHeapObject(ret); -}; - -module.exports.__wbindgen_bigint_from_str = function(arg0, arg1) { - const ret = BigInt(getStringFromWasm0(arg0, arg1)); - return addHeapObject(ret); -}; - -module.exports.__wbindgen_bit_and = function(arg0, arg1) { - const ret = getObject(arg0) & getObject(arg1); - return addHeapObject(ret); -}; - -module.exports.__wbg_fhebool_new = function(arg0) { - const ret = FheBool.__wrap(arg0); - return addHeapObject(ret); -}; - -module.exports.__wbg_fheuint8_new = function(arg0) { - const ret = FheUint8.__wrap(arg0); - return addHeapObject(ret); -}; - -module.exports.__wbg_fheuint16_new = function(arg0) { - const ret = FheUint16.__wrap(arg0); - return addHeapObject(ret); -}; - -module.exports.__wbg_fheuint32_new = function(arg0) { - const ret = FheUint32.__wrap(arg0); - return addHeapObject(ret); -}; - -module.exports.__wbg_fheuint64_new = function(arg0) { - const ret = FheUint64.__wrap(arg0); - return addHeapObject(ret); -}; - -module.exports.__wbg_new_abda76e883ba8a5f = function() { - const ret = new Error(); - return addHeapObject(ret); -}; - -module.exports.__wbg_stack_658279fe44541cf6 = function(arg0, arg1) { - const ret = getObject(arg1).stack; - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; -}; - -module.exports.__wbg_error_f851667af71bcfc6 = function(arg0, arg1) { - let deferred0_0; - let deferred0_1; - try { - deferred0_0 = arg0; - deferred0_1 = arg1; - console.error(getStringFromWasm0(arg0, arg1)); - } finally { - wasm.__wbindgen_free(deferred0_0, deferred0_1, 1); - } -}; - -module.exports.__wbg_crypto_c48a774b022d20ac = function(arg0) { - const ret = getObject(arg0).crypto; - return addHeapObject(ret); -}; - -module.exports.__wbindgen_is_object = function(arg0) { - const val = getObject(arg0); - const ret = typeof(val) === 'object' && val !== null; - return ret; -}; - -module.exports.__wbg_process_298734cf255a885d = function(arg0) { - const ret = getObject(arg0).process; - return addHeapObject(ret); -}; - -module.exports.__wbg_versions_e2e78e134e3e5d01 = function(arg0) { - const ret = getObject(arg0).versions; - return addHeapObject(ret); -}; - -module.exports.__wbg_node_1cd7a5d853dbea79 = function(arg0) { - const ret = getObject(arg0).node; - return addHeapObject(ret); -}; - -module.exports.__wbindgen_is_string = function(arg0) { - const ret = typeof(getObject(arg0)) === 'string'; - return ret; -}; - -module.exports.__wbg_require_8f08ceecec0f4fee = function() { return handleError(function () { - const ret = module.require; - return addHeapObject(ret); -}, arguments) }; - -module.exports.__wbindgen_string_new = function(arg0, arg1) { - const ret = getStringFromWasm0(arg0, arg1); - return addHeapObject(ret); -}; - -module.exports.__wbg_msCrypto_bcb970640f50a1e8 = function(arg0) { - const ret = getObject(arg0).msCrypto; - return addHeapObject(ret); -}; - -module.exports.__wbg_randomFillSync_dc1e9a60c158336d = function() { return handleError(function (arg0, arg1) { - getObject(arg0).randomFillSync(takeObject(arg1)); -}, arguments) }; - -module.exports.__wbg_getRandomValues_37fa2ca9e4e07fab = function() { return handleError(function (arg0, arg1) { - getObject(arg0).getRandomValues(getObject(arg1)); -}, arguments) }; - -module.exports.__wbindgen_is_function = function(arg0) { - const ret = typeof(getObject(arg0)) === 'function'; - return ret; -}; - -module.exports.__wbg_newnoargs_581967eacc0e2604 = function(arg0, arg1) { - const ret = new Function(getStringFromWasm0(arg0, arg1)); - return addHeapObject(ret); -}; - -module.exports.__wbg_call_cb65541d95d71282 = function() { return handleError(function (arg0, arg1) { - const ret = getObject(arg0).call(getObject(arg1)); - return addHeapObject(ret); -}, arguments) }; - -module.exports.__wbg_self_1ff1d729e9aae938 = function() { return handleError(function () { - const ret = self.self; - return addHeapObject(ret); -}, arguments) }; - -module.exports.__wbg_window_5f4faef6c12b79ec = function() { return handleError(function () { - const ret = window.window; - return addHeapObject(ret); -}, arguments) }; - -module.exports.__wbg_globalThis_1d39714405582d3c = function() { return handleError(function () { - const ret = globalThis.globalThis; - return addHeapObject(ret); -}, arguments) }; - -module.exports.__wbg_global_651f05c6a0944d1c = function() { return handleError(function () { - const ret = global.global; - return addHeapObject(ret); -}, arguments) }; - -module.exports.__wbindgen_is_undefined = function(arg0) { - const ret = getObject(arg0) === undefined; - return ret; -}; - -module.exports.__wbg_call_01734de55d61e11d = function() { return handleError(function (arg0, arg1, arg2) { - const ret = getObject(arg0).call(getObject(arg1), getObject(arg2)); - return addHeapObject(ret); -}, arguments) }; - -module.exports.__wbg_buffer_085ec1f694018c4f = function(arg0) { - const ret = getObject(arg0).buffer; - return addHeapObject(ret); -}; - -module.exports.__wbg_newwithbyteoffsetandlength_6da8e527659b86aa = function(arg0, arg1, arg2) { - const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0); - return addHeapObject(ret); -}; - -module.exports.__wbg_new_8125e318e6245eed = function(arg0) { - const ret = new Uint8Array(getObject(arg0)); - return addHeapObject(ret); -}; - -module.exports.__wbg_set_5cf90238115182c3 = function(arg0, arg1, arg2) { - getObject(arg0).set(getObject(arg1), arg2 >>> 0); -}; - -module.exports.__wbg_newwithlength_e5d69174d6984cd7 = function(arg0) { - const ret = new Uint8Array(arg0 >>> 0); - return addHeapObject(ret); -}; - -module.exports.__wbg_subarray_13db269f57aa838d = function(arg0, arg1, arg2) { - const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0); - return addHeapObject(ret); -}; - -module.exports.__wbindgen_object_clone_ref = function(arg0) { - const ret = getObject(arg0); - return addHeapObject(ret); -}; - -module.exports.__wbindgen_bigint_get_as_i64 = function(arg0, arg1) { - const v = getObject(arg1); - const ret = typeof(v) === 'bigint' ? v : undefined; - getBigInt64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? BigInt(0) : ret; - getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret); -}; - -module.exports.__wbindgen_debug_string = function(arg0, arg1) { - const ret = debugString(getObject(arg1)); - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; -}; - -module.exports.__wbindgen_throw = function(arg0, arg1) { - throw new Error(getStringFromWasm0(arg0, arg1)); -}; - -module.exports.__wbindgen_memory = function() { - const ret = wasm.memory; - return addHeapObject(ret); }; - -const path = require('path').join(__dirname, 'tfhe_bg.wasm'); -const bytes = require('fs').readFileSync(path); - -const wasmModule = new WebAssembly.Module(bytes); -const wasmInstance = new WebAssembly.Instance(wasmModule, imports); -wasm = wasmInstance.exports; -module.exports.__wasm = wasm; - +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CompactFheUint256 = exports.CompactFheUint160 = exports.CompactFheUint128 = exports.CompactFheUint64 = exports.CompactFheUint32 = exports.CompactFheUint16 = exports.CompactFheUint8 = exports.CompactFheBool = exports.TfheCompactPublicKey = void 0; +const wasm = __importStar(require("./tfhe_bg.wasm")); +const tfhe_bg_js_1 = require("./tfhe_bg.js"); +(0, tfhe_bg_js_1.__wbg_set_wasm)(wasm); +__exportStar(require("./tfhe_bg.js"), exports); +var tfhe_bg_js_2 = require("./tfhe_bg.js"); +Object.defineProperty(exports, "TfheCompactPublicKey", { enumerable: true, get: function () { return tfhe_bg_js_2.TfheCompactPublicKey; } }); +var tfhe_bg_js_3 = require("./tfhe_bg.js"); +Object.defineProperty(exports, "CompactFheBool", { enumerable: true, get: function () { return tfhe_bg_js_3.CompactFheBool; } }); +Object.defineProperty(exports, "CompactFheUint8", { enumerable: true, get: function () { return tfhe_bg_js_3.CompactFheUint8; } }); +Object.defineProperty(exports, "CompactFheUint16", { enumerable: true, get: function () { return tfhe_bg_js_3.CompactFheUint16; } }); +Object.defineProperty(exports, "CompactFheUint32", { enumerable: true, get: function () { return tfhe_bg_js_3.CompactFheUint32; } }); +Object.defineProperty(exports, "CompactFheUint64", { enumerable: true, get: function () { return tfhe_bg_js_3.CompactFheUint64; } }); +Object.defineProperty(exports, "CompactFheUint128", { enumerable: true, get: function () { return tfhe_bg_js_3.CompactFheUint128; } }); +Object.defineProperty(exports, "CompactFheUint160", { enumerable: true, get: function () { return tfhe_bg_js_3.CompactFheUint160; } }); +Object.defineProperty(exports, "CompactFheUint256", { enumerable: true, get: function () { return tfhe_bg_js_3.CompactFheUint256; } }); +//# sourceMappingURL=tfhe.js.map \ No newline at end of file diff --git a/lib/commonjs/sdk/fhe/tfhe_bg.d.ts b/lib/commonjs/sdk/fhe/tfhe_bg.d.ts index fc5d1ad..796f780 100644 --- a/lib/commonjs/sdk/fhe/tfhe_bg.d.ts +++ b/lib/commonjs/sdk/fhe/tfhe_bg.d.ts @@ -25,7 +25,7 @@ export function __wbg_fheint160_new(arg0: any): number; export function __wbg_fheint16_new(arg0: any): number; export function __wbg_fheint8_new(arg0: any): number; export function __wbg_fheint128_new(arg0: any): number; -export function __wbindgen_boolean_get(arg0: any): 1 | 0 | 2; +export function __wbindgen_boolean_get(arg0: any): 0 | 2 | 1; export function __wbindgen_bigint_from_str(arg0: any, arg1: any): number; export function __wbindgen_bit_and(arg0: any, arg1: any): number; export function __wbindgen_number_new(arg0: any): number; diff --git a/lib/commonjs/sdk/index.d.ts b/lib/commonjs/sdk/index.d.ts index 5b45fe7..dd929dd 100644 --- a/lib/commonjs/sdk/index.d.ts +++ b/lib/commonjs/sdk/index.d.ts @@ -1,199 +1,40 @@ -import { TfheCompactPublicKey } from "./fhe/fhe.js"; -import { ContractPermits, EncryptedAddress, EncryptedBool, EncryptedNumber, EncryptedUint128, EncryptedUint16, EncryptedUint256, EncryptedUint32, EncryptedUint64, EncryptedUint8, EncryptionTypes, InstanceParams, InstanceParamsWithFhePublicKeys, SupportedProvider } from "./types.js"; -import { Permission, Permit, PermitSigner } from "../extensions/access_control/index.js"; -declare abstract class FhenixClientBase { - private permits; - abstract fhePublicKeys: Array> | Array; - protected provider: SupportedProvider; - /** - * Creates an instance of FhenixClient. - * Initializes the fhevm library if needed and retrieves the public key for encryption from the provider. - * @param {InstanceParams} params - Parameters to initialize the client. - */ - constructor(params: InstanceParams); - /** - * Encrypts a Uint8 value using the stored public key. - * @param {number} value - The Uint8 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedBool} - The encrypted value serialized as EncryptedUint8. Use the .data property to access the Uint8Array. - */ - abstract encrypt_bool(value: boolean, securityZone?: number): Promise | EncryptedBool; - /** - * Encrypts a Uint8 value using the stored public key. - * @param {number} value - The Uint8 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedUint8} - The encrypted value serialized as EncryptedUint8. Use the .data property to access the Uint8Array. - */ - abstract encrypt_uint8(value: number, securityZone?: number): Promise | EncryptedUint8; - /** - * Encrypts a Uint16 value using the stored public key. - * @param {number} value - The Uint16 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedUint16} - The encrypted value serialized as EncryptedUint16. Use the .data property to access the Uint8Array. - */ - abstract encrypt_uint16(value: number, securityZone?: number): Promise | EncryptedUint16; - /** - * Encrypts a Uint32 value using the stored public key. - * @param {number} value - The Uint32 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedUint32} - The encrypted value serialized as EncryptedUint32. Use the .data property to access the Uint8Array. - */ - abstract encrypt_uint32(value: number, securityZone?: number): Promise | EncryptedUint32; - /** - * Encrypts a Uint64 value using the stored public key. - * @param {bigint | string} value - The Uint32 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedUint64} - The encrypted value serialized as EncryptedUint64. Use the .data property to access the Uint8Array. - */ - abstract encrypt_uint64(value: bigint | string, securityZone?: number): Promise | EncryptedUint64; - /** - * Encrypts a Uint128 value using the stored public key. - * @param {bigint | string} value - The Uint128 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedUint128} - The encrypted value serialized as EncryptedUint128. Use the .data property to access the Uint8Array. - */ - abstract encrypt_uint128(value: bigint | string, securityZone?: number): Promise | EncryptedUint128; - /** - * Encrypts a Uint256 value using the stored public key. - * @param {bigint | string} value - The Uint256 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedUint256} - The encrypted value serialized as EncryptedUint256. Use the .data property to access the Uint8Array. - */ - abstract encrypt_uint256(value: bigint | string, securityZone?: number): Promise | EncryptedUint256; - /** - * Encrypts an Address (Uint160) value using the stored public key. - * @param {bigint | string} value - The Address (Uint160) value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedAddress} - The encrypted value serialized as EncryptedAddress. Use the .data property to access the Uint8Array. - */ - abstract encrypt_address(value: bigint | string, securityZone?: number): Promise | EncryptedAddress; - /** - * Encrypts a numeric value according to the specified encryption type or the most efficient one based on the value. - * @param {number} value - The numeric value to encrypt. - * @param {EncryptionTypes} type - Optional. The encryption type (uint8, uint16, uint32). - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedNumber} - The encrypted value serialized as Uint8Array. Use the .data property to access the Uint8Array. - */ - abstract encrypt(value: number, type?: EncryptionTypes, securityZone?: number): Promise | EncryptedNumber; - /** - * Unseals an encrypted message using the stored permit for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} ciphertext - The encrypted message to unseal. - * @param {string} account - The account attached to existing permits. - * @returns bigint - The unsealed message. - */ - unseal(contractAddress: string, ciphertext: string, account: string): bigint; - /** - * Creates a new permit for a specific contract address. Also saves the permit to localstorage (if available) - * @param {string} contractAddress - The address of the contract. - * @param {SupportedProvider} provider - The provider from which to sign the permit - must container a signer. - * @param signer - the signer to use to sign the permit if provider does not support signing (e.g. hardhat) - * @returns Permit - The permit associated with the contract address. - * - * @throws {Error} - If the provider does not contain a signer, or if a provider is not set - */ - generatePermit(contractAddress: string, provider?: SupportedProvider, signer?: PermitSigner): Promise; - /** - * Reusable permit loading and storing from local storage - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The address of the user account. - * @returns {Permit | undefined} - The permit loaded from local storage - */ - private _loadPermitFromLocalStorage; - /** - * Retrieves the stored permit for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The address of the user account. - * @returns {Permit} - The permit associated with the contract address. - */ - getPermit(contractAddress: string, account: string): Permit | undefined; - /** - * Retrieves all stored permits for a specific account. - * @param {string} account - The address of the user account. - * @returns {Record} - The permits associated with each contract address. - */ - loadAllPermitsFromLocalStorage(account: string): Record; - /** - * Stores a permit for a specific contract address. Will overwrite any existing permit for the same contract address. - * Does not store the permit in localstorage (should it?) - * @param {Permit} permit - The permit to store. - */ - storePermit(permit: Permit, account: string): void; - /** - * Removes a stored permit for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The account address of the permit. - */ - removePermit(contractAddress: string, account: string): void; - /** - * Checks if a permit exists for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The account address attached to the stored permits - * @returns {boolean} - True if a permit exists, false otherwise. - */ - hasPermit(contractAddress: string, account: string): boolean; - /** - * Exports all stored permits. - * @returns {ContractPermits} - All stored permits. - */ - exportPermits(): ContractPermits; - extractPermitPermission(permit: Permit): Permission; - /** - * Retrieves the FHE public key from the provider. - * @param {SupportedProvider} provider - The provider from which to retrieve the key. - * @param securityZone - The security zone for which to retrieve the key (default 0). - * @returns {Promise} - The retrieved public key. - */ - static getFheKeyFromProvider(provider: SupportedProvider, securityZone?: number): Promise; -} +import { PermitV2 } from "./permit"; +import { SdkStore } from "./store.js"; +import { MappedCoFheEncryptedTypes, PermitV2Options, PermitV2Interface, PermissionV2, Result, MappedUnsealedTypes, InitializationParams } from "../types"; /** - * The FhenixClient class provides functionalities to interact with a FHE (Fully Homomorphic Encryption) system. - * It includes methods for encryption, unsealing, and managing permits. + * Encrypts a numeric value according to the specified encryption type or the most efficient one based on the value. + * Useful when not using `Encryptable` utility structures. + * @param {item} value - The numeric value to encrypt. + * @param {EncryptionTypes} type - Optional. The encryption type (uint8, uint16, uint32). + * @param securityZone - The security zone for which to encrypt the value (default 0). + * @returns {EncryptedNumber} - The encrypted value serialized as Uint8Array. Use the .data property to access the Uint8Array. */ -export declare class FhenixClient extends FhenixClientBase { - private defaultSecurityZone; - fhePublicKeys: Array>; - /** - * Creates an instance of FhenixClient. - * Initializes the fhevm library if needed and retrieves the public key for encryption from the provider. - * @param {InstanceParams} params - Parameters to initialize the client. - */ - constructor(params: InstanceParams); - private _getPublicKey; - encrypt_bool(value: boolean, securityZone?: number): Promise; - encrypt_uint8(value: number, securityZone?: number): Promise; - encrypt_uint16(value: number, securityZone?: number): Promise; - encrypt_uint32(value: number, securityZone?: number): Promise; - encrypt_uint64(value: bigint | string, securityZone?: number): Promise; - encrypt_uint128(value: bigint | string, securityZone?: number): Promise; - encrypt_uint256(value: bigint | string, securityZone?: number): Promise; - encrypt_address(value: bigint | string, securityZone?: number): Promise; - encrypt(value: number, type?: EncryptionTypes, securityZone?: number): Promise; -} +declare function encrypt(item: T): Promise>>; +declare function encrypt(item: [...T]): Promise]>>; /** - * The FhenixClientSync class provides functionalities to interact with a FHE (Fully Homomorphic Encryption) system. - * It includes methods for encryption, unsealing, and managing permits. + * Uses the privateKey of `permit.sealingPair` to recursively unseal any contained `SealedItems`. + * If `item` is a single `SealedItem` it will be individually. + * NOTE: Only unseals typed `SealedItem`s returned from `FHE.sealoutputTyped` and the FHE bindings' `e____.sealTyped`. * - * The Sync FhenixClient allows the `client.encrypt_()` functions to be performed synchronously - * - * @Note The Sync FhenixClient must be created using `await FhenixClientSync.create({provider})` instead of `new FhenixClient({provider})` + * @param {any | any[]} item - Array, object, or item. Any nested `SealedItems` will be unsealed. + * @returns - Recursively unsealed data in the target type, SealedBool -> boolean, SealedAddress -> string, etc. */ -export declare class FhenixClientSync extends FhenixClientBase { - fhePublicKeys: Array; - constructor(params: InstanceParamsWithFhePublicKeys); - static create(params: InstanceParams & { - securityZones?: number[]; - }): Promise; - private _getPublicKey; - encrypt_bool(value: boolean, securityZone?: number): EncryptedBool; - encrypt_uint8(value: number, securityZone?: number): EncryptedUint8; - encrypt_uint16(value: number, securityZone?: number): EncryptedUint16; - encrypt_uint32(value: number, securityZone?: number): EncryptedUint32; - encrypt_uint64(value: bigint | string, securityZone?: number): EncryptedUint64; - encrypt_uint128(value: bigint | string, securityZone?: number): EncryptedUint128; - encrypt_uint256(value: bigint | string, securityZone?: number): EncryptedUint256; - encrypt_address(value: bigint | string, securityZone?: number): EncryptedAddress; - encrypt(value: number, type?: EncryptionTypes, securityZone?: number): EncryptedNumber; -} +declare function unseal(item: T, account?: string, hash?: string): Result>; +export declare const fhenixsdk: { + store: import("zustand/vanilla.js").StoreApi; + initialize: (params: InitializationParams & { + ignoreErrors?: boolean; + generatePermit?: boolean; + }) => Promise>; + createPermit: (options?: PermitV2Options) => Promise>; + importPermit: (imported: string | PermitV2Interface) => Promise>; + selectActivePermit: (hash: string) => Result; + getPermit: (hash?: string) => Result; + getPermission: (hash?: string) => Result; + getAllPermits: () => Result>; + encrypt: typeof encrypt; + unsealCiphertext: (ciphertext: string, account?: string, hash?: string) => Result; + unseal: typeof unseal; +}; export {}; //# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/lib/commonjs/sdk/index.d.ts.map b/lib/commonjs/sdk/index.d.ts.map index b7104f3..bc8bbf0 100644 --- a/lib/commonjs/sdk/index.d.ts.map +++ b/lib/commonjs/sdk/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sdk/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sdk/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAwC,MAAM,UAAU,CAAC;AAE1E,OAAO,EAIL,QAAQ,EACT,MAAM,YAAY,CAAC;AAYpB,OAAO,EAGL,yBAAyB,EAEzB,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,MAAM,EAGN,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,UAAU,CAAC;AA2RlB;;;;;;;GAOG;AACH,iBAAe,OAAO,CAAC,CAAC,EACtB,IAAI,EAAE,CAAC,GACN,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,iBAAe,OAAO,CAAC,CAAC,SAAS,GAAG,EAAE,EACpC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GACX,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAyLtD;;;;;;;GAOG;AACH,iBAAS,MAAM,CAAC,CAAC,EACf,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAwBhC;AAID,eAAO,MAAM,SAAS;;yBAjgBZ,oBAAoB,GAAG;QAC7B,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,KACA,QAAQ,OAAO,QAAQ,GAAG,SAAS,CAAC,CAAC;6BAoF5B,eAAe,KACxB,QAAQ,OAAO,QAAQ,CAAC,CAAC;6BAyChB,MAAM,GAAG,iBAAiB,KACnC,QAAQ,OAAO,QAAQ,CAAC,CAAC;+BAiEM,MAAM,KAAG,OAAO,QAAQ,CAAC;uBAyBjC,MAAM,KAAG,OAAO,QAAQ,CAAC;2BA8BrB,MAAM,KAAG,OAAO,YAAY,CAAC;yBAYjC,OAAO,OAAO,MAAM,EAAE,QAAQ,CAAC,CAAC;;mCA8K5C,MAAM,YACR,MAAM,SACT,MAAM,KACZ,OAAO,MAAM,CAAC;;CAwFhB,CAAC"} \ No newline at end of file diff --git a/lib/commonjs/sdk/index.js b/lib/commonjs/sdk/index.js index bff4e7a..00cf36e 100644 --- a/lib/commonjs/sdk/index.js +++ b/lib/commonjs/sdk/index.js @@ -1,444 +1,401 @@ "use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; Object.defineProperty(exports, "__esModule", { value: true }); -exports.FhenixClientSync = exports.FhenixClient = void 0; -const fhe_js_1 = require("./fhe/fhe.js"); +exports.fhenixsdk = void 0; +/* eslint-disable @typescript-eslint/no-explicit-any */ const utils_js_1 = require("./utils.js"); -const types_js_1 = require("./types.js"); -const index_js_1 = require("../extensions/access_control/index.js"); -const consts_js_1 = require("./consts.js"); -const tfheEncrypt = __importStar(require("./encrypt.js")); +const utils_hardhat_js_1 = require("./utils.hardhat.js"); +const permit_1 = require("./permit"); const validation_js_1 = require("./validation.js"); +const store_js_1 = require("./store.js"); +const encrypt_js_1 = require("./encrypt.js"); const init_js_1 = require("./init.js"); -class FhenixClientBase { - /** - * Creates an instance of FhenixClient. - * Initializes the fhevm library if needed and retrieves the public key for encryption from the provider. - * @param {InstanceParams} params - Parameters to initialize the client. - */ - constructor(params) { - this.permits = {}; - (0, validation_js_1.isPlainObject)(params); - const { provider } = params; - this.provider = provider; - if (!this.provider) { - throw new Error("Failed to initialize Fhenix Client - must include a web3 provider"); +const types_1 = require("../types"); +/** + * Initializes the `fhenixsdk` to enable encrypting input data, creating permits / permissions, and decrypting sealed outputs. + * Initializes `fhevm` client FHE wasm module and fetches the provided chain's FHE publicKey. + * If a valid signer is provided, a `permit/permission` is generated automatically + */ +const initialize = async (params) => { + // Initialize the fhevm + await (0, init_js_1.InitFhevm)().catch((err) => { + if (params.ignoreErrors) { + return undefined; } - } - // Unsealing Method - /** - * Unseals an encrypted message using the stored permit for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} ciphertext - The encrypted message to unseal. - * @param {string} account - The account attached to existing permits. - * @returns bigint - The unsealed message. - */ - unseal(contractAddress, ciphertext, account) { - (0, utils_js_1.isAddress)(contractAddress); - (0, validation_js_1.isString)(ciphertext); - const permit = this.getPermit(contractAddress, account); - if (permit == null) { - throw new Error(`Missing keypair for ${contractAddress}`); + else { + return (0, types_1.ResultErr)(`initialize :: failed to initialize fhenixjs - is the network FHE-enabled? ${err}`); } - return this.permits[contractAddress].sealingKey.unseal(ciphertext); - } - // Permit Management Methods - /** - * Creates a new permit for a specific contract address. Also saves the permit to localstorage (if available) - * @param {string} contractAddress - The address of the contract. - * @param {SupportedProvider} provider - The provider from which to sign the permit - must container a signer. - * @param signer - the signer to use to sign the permit if provider does not support signing (e.g. hardhat) - * @returns Permit - The permit associated with the contract address. - * - * @throws {Error} - If the provider does not contain a signer, or if a provider is not set - */ - async generatePermit(contractAddress, provider, signer) { - if (!provider && this.provider === undefined) { - throw new Error("error getting provider"); + }); + if (params.provider == null) + return (0, types_1.ResultErr)("initialize :: missing provider - Please provide an AbstractProvider interface"); + if (params.securityZones != null && params.securityZones.length === 0) + return (0, types_1.ResultErr)("initialize :: a list of securityZones was provided, but it is empty"); + await (0, store_js_1._store_initialize)(params); + // `generatePermit` must set to `false` to early exit here + if (params.generatePermit === false) + return (0, types_1.ResultOk)(undefined); + // Return the existing active permit + const userActivePermit = getPermit(); + if (userActivePermit.success) + return userActivePermit; + // Create permit and return it + return createPermit(); +}; +/** + * Internal reusable initialization checker + */ +const _checkInitialized = (state, options) => { + if (options?.fheKeys !== false && !state.fheKeysInitialized) { + return (0, types_1.ResultErr)("fhenixsdk not initialized. Use `fhenixsdk.initialize(...)`."); + } + if (options?.coFheUrl !== false && !state.coFheUrl) + return (0, types_1.ResultErr)("fhenixsdk not initialized with a coFheUrl. Set `coFheUrl` in `fhenixsdk.initialize`."); + if (options?.provider !== false && !state.providerInitialized) + return (0, types_1.ResultErr)("fhenixsdk not initialized with valid provider. Use `fhenixsdk.initialize(...)` with a valid provider that satisfies `AbstractProvider`."); + if (options?.signer !== false && !state.signerInitialized) + return (0, types_1.ResultErr)("fhenixsdk not initialized with a valid signer. Use `fhenixsdk.initialize(...)` with a valid signer that satisfies `AbstractSigner`."); + return (0, types_1.ResultOk)(null); +}; +// Permit +/** + * Creates a new permit with options, prompts user for signature. + * Handles all `permit.type`s, and prompts for the correct signature type. + * The created PermitV2 will be inserted into the store and marked as the active permit. + * NOTE: This is a wrapper around `PermitV2.create` and `PermitV2.sign` + * + * @param {PermitV2Options} options - Partial PermitV2 fields to create the Permit with, if no options provided will be filled with the defaults: + * { type: "self", issuer: initializedUserAddress, projects: initializedProjects, contracts: initializedContracts } + * @returns {Result} - Newly created PermitV2 as a Result object + */ +const createPermit = async (options) => { + const state = store_js_1._sdkStore.getState(); + const initialized = _checkInitialized(state); + if (!initialized.success) + return (0, types_1.ResultErr)(`${createPermit.name} :: ${initialized.error}`); + const optionsWithDefaults = { + type: "self", + issuer: state.account, + contracts: state.accessRequirements.contracts, + projects: state.accessRequirements.projects, + ...options, + }; + let permit; + try { + permit = await permit_1.PermitV2.createAndSign(optionsWithDefaults, state.chainId, state.signer); + } + catch (e) { + return (0, types_1.ResultErr)(`${createPermit.name} :: ${e}`); + } + permit_1.permitStore.setPermit(state.account, permit); + permit_1.permitStore.setActivePermitHash(state.account, permit.getHash()); + return (0, types_1.ResultOk)(permit); +}; +/** + * Imports a fully formed existing permit, expected to be valid. + * Does not ask for user signature, expects to already be populated. + * Will throw an error if the imported permit is invalid, see `PermitV2.isValid`. + * The imported PermitV2 will be inserted into the store and marked as the active permit. + * + * @param {string | PermitV2Interface} imported - Permit to import as a text string or PermitV2Interface + */ +const importPermit = async (imported) => { + const state = store_js_1._sdkStore.getState(); + const initialized = _checkInitialized(state); + if (!initialized.success) + return (0, types_1.ResultErr)(`${createPermit.name} :: ${initialized.error}`); + // Import validation + if (typeof imported === "string") { + try { + imported = JSON.parse(imported); + } + catch (e) { + return (0, types_1.ResultErr)(`importPermit :: json parsing failed - ${e}`); } - const permit = await (0, index_js_1.generatePermit)(contractAddress, provider || this.provider, signer); - // Permit has already been put into local storage, it can be inserted directly into `this.permits` - this.permits[contractAddress] = permit; - return permit; - } - /** - * Reusable permit loading and storing from local storage - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The address of the user account. - * @returns {Permit | undefined} - The permit loaded from local storage - */ - _loadPermitFromLocalStorage(contractAddress, account) { - const fromLs = (0, index_js_1.getPermitFromLocalstorage)(contractAddress, account); - if (fromLs == null) - return undefined; - this.permits[contractAddress] = fromLs; - return fromLs; - } - /** - * Retrieves the stored permit for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The address of the user account. - * @returns {Permit} - The permit associated with the contract address. - */ - getPermit(contractAddress, account) { - const permitFromLs = this._loadPermitFromLocalStorage(contractAddress, account); - if (permitFromLs != null) - return permitFromLs; - return this.permits[contractAddress]; - } - /** - * Retrieves all stored permits for a specific account. - * @param {string} account - The address of the user account. - * @returns {Record} - The permits associated with each contract address. - */ - loadAllPermitsFromLocalStorage(account) { - const existingPermits = (0, index_js_1.getAllExistingPermits)(account); - Object.keys(existingPermits).forEach((contractAddress) => { - this.permits[contractAddress] = existingPermits[contractAddress]; - }); - return this.permits; - } - /** - * Stores a permit for a specific contract address. Will overwrite any existing permit for the same contract address. - * Does not store the permit in localstorage (should it?) - * @param {Permit} permit - The permit to store. - */ - storePermit(permit, account) { - (0, index_js_1.storePermitInLocalStorage)(permit, account); - this.permits[permit.contractAddress] = permit; } - /** - * Removes a stored permit for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The account address of the permit. - */ - removePermit(contractAddress, account) { - if (this.hasPermit(contractAddress, account)) { - (0, index_js_1.removePermitFromLocalstorage)(contractAddress, account); - delete this.permits[contractAddress]; + const { success, data: parsedPermit, error: permitParsingError, } = permit_1.PermitV2ParamsValidator.safeParse(imported); + if (!success) { + const errorString = Object.entries(permitParsingError.flatten().fieldErrors) + .map(([field, err]) => `- ${field}: ${err}`) + .join("\n"); + return (0, types_1.ResultErr)(`importPermit :: invalid permit data - ${errorString}`); + } + if (parsedPermit.type !== "self") { + if (parsedPermit.issuer === state.account) + parsedPermit.type = "sharing"; + else if (parsedPermit.recipient === state.account) + parsedPermit.type = "recipient"; + else { + return (0, types_1.ResultErr)(`importPermit :: invalid Permit - connected account <${state.account}> is not issuer or recipient`); } } - /** - * Checks if a permit exists for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The account address attached to the stored permits - * @returns {boolean} - True if a permit exists, false otherwise. - */ - hasPermit(contractAddress, account) { - const permitFromLs = this._loadPermitFromLocalStorage(contractAddress, account); - if (permitFromLs != null) - return true; - return this.permits[contractAddress] != null; + let permit; + try { + permit = await permit_1.PermitV2.create(parsedPermit); } - /** - * Exports all stored permits. - * @returns {ContractPermits} - All stored permits. - */ - exportPermits() { - return this.permits; + catch (e) { + return (0, types_1.ResultErr)(`importPermit :: ${e}`); } - extractPermitPermission(permit) { - return { - signature: permit.signature, - publicKey: permit.publicKey, - }; + const { valid, error } = permit.isValid(); + if (!valid) { + return (0, types_1.ResultErr)(`importPermit :: newly imported permit is invalid - ${error}`); } - // Private helper methods - /** - * Retrieves the FHE public key from the provider. - * @param {SupportedProvider} provider - The provider from which to retrieve the key. - * @param securityZone - The security zone for which to retrieve the key (default 0). - * @returns {Promise} - The retrieved public key. - */ - static async getFheKeyFromProvider(provider, securityZone = 0) { - const requestMethod = (0, types_js_1.determineRequestMethod)(provider); - const funcSig = "0x1b1b484e"; // cast sig "getNetworkPublicKey(int32)" - const callData = funcSig + (0, utils_js_1.toABIEncodedUint32)(securityZone); - const callParams = [{ to: consts_js_1.FheOpsAddress, data: callData }, "latest"]; - const publicKeyP = requestMethod(provider, "eth_call", callParams).catch((err) => { - throw Error(`Error while requesting network public key from provider for security zone ${securityZone}: ${JSON.stringify(err)}`); - }); - const publicKey = await publicKeyP; - if (typeof publicKey !== "string") { - throw new Error("Error using publicKey from provider: expected string"); - } - if (publicKey.length < consts_js_1.PUBLIC_KEY_LENGTH_MIN) { - throw new Error(`Error initializing fhenixjs; got shorter than expected public key: ${publicKey.length}`); - } - // magically know how to decode rlp or w/e returns from the evm json-rpc - const buff = (0, utils_js_1.fromHexString)(publicKey.slice(130)); - try { - return fhe_js_1.TfheCompactPublicKey.deserialize(buff); - } - catch (err) { - throw new Error(`Error deserializing public key ${err}`); - } - } -} + permit_1.permitStore.setPermit(state.account, permit); + permit_1.permitStore.setActivePermitHash(state.account, permit.getHash()); + return (0, types_1.ResultOk)(permit); +}; /** - * The FhenixClient class provides functionalities to interact with a FHE (Fully Homomorphic Encryption) system. - * It includes methods for encryption, unsealing, and managing permits. + * Selects the active permit using its hash. + * If the hash is not found in the stored permits store, throws an error. + * The matched permit will be marked as the active permit. + * + * @param {string} hash - The `PermitV2.getHash` of the target permit. */ -class FhenixClient extends FhenixClientBase { - /** - * Creates an instance of FhenixClient. - * Initializes the fhevm library if needed and retrieves the public key for encryption from the provider. - * @param {InstanceParams} params - Parameters to initialize the client. - */ - constructor(params) { - super(params); - this.defaultSecurityZone = 0; - this.fhePublicKeys = []; - (0, init_js_1.InitFhevm)().catch((err) => { - if (params.ignoreErrors) { - return undefined; - } - else { - throw new Error(`Failed to initialize fhenixjs - is the network FHE-enabled? ${err}`); +const selectActivePermit = (hash) => { + const state = store_js_1._sdkStore.getState(); + const initialized = _checkInitialized(state); + if (!initialized.success) + return (0, types_1.ResultErr)(`${selectActivePermit.name} :: ${initialized.error}`); + const permit = permit_1.permitStore.getPermit(state.account, hash); + if (permit == null) + return (0, types_1.ResultErr)(`${selectActivePermit.name} :: Permit with hash <${hash}> not found`); + permit_1.permitStore.setActivePermitHash(state.account, permit.getHash()); + return (0, types_1.ResultOk)(permit); +}; +/** + * Retrieves a stored permit based on its hash. + * If no hash is provided, the currently active permit will be retrieved. + * + * @param {string} hash - Optional `PermitV2.getHash` of the permit. + * @returns {Result} - The active permit or permit associated with `hash` as a Result object. + */ +const getPermit = (hash) => { + const state = store_js_1._sdkStore.getState(); + const initialized = _checkInitialized(state); + if (!initialized.success) + return (0, types_1.ResultErr)(`${getPermit.name} :: ${initialized.error}`); + if (hash == null) { + const permit = permit_1.permitStore.getActivePermit(state.account); + if (permit == null) + return (0, types_1.ResultErr)(`getPermit :: active permit not found`); + return (0, types_1.ResultOk)(permit); + } + const permit = permit_1.permitStore.getPermit(state.account, hash); + if (permit == null) + return (0, types_1.ResultErr)(`getPermit :: permit with hash <${hash}> not found`); + return (0, types_1.ResultOk)(permit); +}; +/** + * Retrieves a stored permission based on the permit's hash. + * If no hash is provided, the currently active permit will be used. + * The `PermissionV2` is extracted from the permit. + * + * @param {string} hash - Optional hash of the permission to get, defaults to active permit's permission + * @returns {Result} - The active permission or permission associated with `hash`, as a result object. + */ +const getPermission = (hash) => { + const permitResult = getPermit(hash); + if (!permitResult.success) + return (0, types_1.ResultErr)(`${getPermission.name} :: ${permitResult.error}`); + return (0, types_1.ResultOk)(permitResult.data.getPermission()); +}; +/** + * Exports all stored permits. + * @returns {Result>} - All stored permits. + */ +const getAllPermits = () => { + const state = store_js_1._sdkStore.getState(); + const initialized = _checkInitialized(state); + if (!initialized.success) + return (0, types_1.ResultErr)(`${getAllPermits.name} :: ${initialized.error}`); + return (0, types_1.ResultOk)(permit_1.permitStore.getPermits(state.account)); +}; +async function encrypt(item) { + const state = store_js_1._sdkStore.getState(); + // Only need to check `fheKeysInitialized`, signer and provider not needed for encryption + const initialized = _checkInitialized(state, { + provider: false, + signer: false, + }); + if (!initialized.success) + return (0, types_1.ResultErr)(`${encrypt.name} :: ${initialized.error}`); + // Permission + if (item === "permission") { + return getPermission(); + } + // EncryptableItem + if ((0, types_1.isEncryptableItem)(item)) { + // Early exit with mock encrypted value if chain is hardhat + // TODO: Determine how CoFHE encrypted items will be handled in hardhat + if ((0, utils_hardhat_js_1.chainIsHardhat)(state.coFheUrl)) + return (0, types_1.ResultOk)((0, utils_hardhat_js_1.hardhatMockEncrypt)(BigInt(item.data))); + const fhePublicKey = (0, store_js_1._store_getConnectedChainFheKey)(item.securityZone ?? 0); + if (fhePublicKey == null) + return (0, types_1.ResultErr)("encrypt :: fheKey for current chain not found"); + let preEncryptedItem; + // prettier-ignore + try { + switch (item.utype) { + case types_1.FheUType.bool: { + preEncryptedItem = (0, encrypt_js_1.encrypt_bool)(item.data, fhePublicKey, item.securityZone); + break; + } + case types_1.FheUType.uint8: { + preEncryptedItem = (0, encrypt_js_1.encrypt_uint8)(item.data, fhePublicKey, item.securityZone); + break; + } + case types_1.FheUType.uint16: { + preEncryptedItem = (0, encrypt_js_1.encrypt_uint16)(item.data, fhePublicKey, item.securityZone); + break; + } + case types_1.FheUType.uint32: { + preEncryptedItem = (0, encrypt_js_1.encrypt_uint32)(item.data, fhePublicKey, item.securityZone); + break; + } + case types_1.FheUType.uint64: { + preEncryptedItem = (0, encrypt_js_1.encrypt_uint64)(item.data, fhePublicKey, item.securityZone); + break; + } + case types_1.FheUType.uint128: { + preEncryptedItem = (0, encrypt_js_1.encrypt_uint128)(item.data, fhePublicKey, item.securityZone); + break; + } + case types_1.FheUType.uint256: { + preEncryptedItem = (0, encrypt_js_1.encrypt_uint256)(item.data, fhePublicKey, item.securityZone); + break; + } + case types_1.FheUType.address: { + preEncryptedItem = (0, encrypt_js_1.encrypt_address)(item.data, fhePublicKey, item.securityZone); + break; + } } - }); - // In the future the default array can be updated to include additional security zones - // This is not strictly necessary, as the pubKey for additional zones can also be fetched during an encryption. - // By default, doesn't skip fetching the public key - if (params.skipPubKeyFetch !== true) { - this.fhePublicKeys = [this.defaultSecurityZone].map((securityZone) => FhenixClientBase.getFheKeyFromProvider(params.provider, securityZone)); } - } - async _getPublicKey(securityZone) { - let fhePublicKey = await this.fhePublicKeys[securityZone]; - if (!fhePublicKey) { - this.fhePublicKeys[securityZone] = FhenixClientBase.getFheKeyFromProvider(this.provider, securityZone); - fhePublicKey = await this.fhePublicKeys[securityZone]; - if (!fhePublicKey) { - throw new Error(`Public key for security zone ${securityZone} somehow not initialized`); - } + catch (e) { + return (0, types_1.ResultErr)(`encrypt :: tfhe_encrypt_xxxx :: ${e}`); } - return fhePublicKey; - } - async encrypt_bool(value, securityZone = 0) { - const fhePublicKey = await this._getPublicKey(securityZone); - return tfheEncrypt.encrypt_bool(value, fhePublicKey, securityZone); - } - async encrypt_uint8(value, securityZone = 0) { - (0, validation_js_1.isNumber)(value); - const fhePublicKey = await this._getPublicKey(securityZone); - (0, utils_js_1.ValidateUintInRange)(value, consts_js_1.MAX_UINT8, 0); - return tfheEncrypt.encrypt_uint8(value, fhePublicKey, securityZone); - } - async encrypt_uint16(value, securityZone = 0) { - (0, validation_js_1.isNumber)(value); - const fhePublicKey = await this._getPublicKey(securityZone); - (0, utils_js_1.ValidateUintInRange)(value, consts_js_1.MAX_UINT16, 0); - return tfheEncrypt.encrypt_uint16(value, fhePublicKey, securityZone); - } - async encrypt_uint32(value, securityZone = 0) { - (0, validation_js_1.isNumber)(value); - const fhePublicKey = await this._getPublicKey(securityZone); - (0, utils_js_1.ValidateUintInRange)(value, consts_js_1.MAX_UINT32, 0); - return tfheEncrypt.encrypt_uint32(value, fhePublicKey, securityZone); - } - async encrypt_uint64(value, securityZone = 0) { - (0, validation_js_1.isBigIntOrHexString)(value); - const fhePublicKey = await this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return tfheEncrypt.encrypt_uint64(value, fhePublicKey, securityZone); - } - async encrypt_uint128(value, securityZone = 0) { - (0, validation_js_1.isBigIntOrHexString)(value); - const fhePublicKey = await this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return tfheEncrypt.encrypt_uint128(value, fhePublicKey, securityZone); - } - async encrypt_uint256(value, securityZone = 0) { - (0, validation_js_1.isBigIntOrHexString)(value); - const fhePublicKey = await this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return tfheEncrypt.encrypt_uint256(value, fhePublicKey, securityZone); - } - async encrypt_address(value, securityZone = 0) { - (0, validation_js_1.isBigIntOrHexString)(value); - const fhePublicKey = await this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return tfheEncrypt.encrypt_address(value, fhePublicKey, securityZone); + // Send preEncryptedItem to CoFHE route `/UpdateCT`, receive `ctHash` to use as contract input + const res = (await fetch(`${state.coFheUrl}/UpdateCT`, { + method: "POST", + headers: { + "Content-Type": "application/json", // Ensure the server knows you're sending JSON + }, + body: JSON.stringify({ + UType: item.utype, + Value: (0, utils_js_1.toHexString)(preEncryptedItem.data), + SecurityZone: item.securityZone, + }), + })); + const data = await res.json(); + // Transform data into final CoFHE input variable + return (0, types_1.ResultOk)({ + securityZone: item.securityZone, + hash: BigInt(`0x${data.ctHash}`), + utype: item.utype, + signature: data.signature, + }); } - async encrypt(value, type, securityZone = 0) { - (0, validation_js_1.isNumber)(value); - let outputSize = type; - const fhePublicKey = await this._getPublicKey(securityZone); - // choose the most efficient ciphertext size if not selected - if (!outputSize) { - if (value < consts_js_1.MAX_UINT8) { - outputSize = types_js_1.EncryptionTypes.uint8; - } - else if (value < consts_js_1.MAX_UINT16) { - outputSize = types_js_1.EncryptionTypes.uint16; - } - else if (value < consts_js_1.MAX_UINT32) { - outputSize = types_js_1.EncryptionTypes.uint32; - } - else { - throw new Error(`Encryption input must be smaller than ${consts_js_1.MAX_UINT32}`); - } + // Object | Array + if (typeof item === "object" && item !== null) { + if (Array.isArray(item)) { + // Array - recurse + const nestedItems = await Promise.all(item.map((nestedItem) => encrypt(nestedItem))); + // Any nested error break out + const nestedItemResultErr = nestedItems.find((nestedItem) => !nestedItem.success); + if (nestedItemResultErr != null) + return nestedItemResultErr; + return (0, types_1.ResultOk)(nestedItems.map((nestedItem) => nestedItem.data)); } - switch (outputSize) { - case types_js_1.EncryptionTypes.uint8: - (0, utils_js_1.ValidateUintInRange)(value, consts_js_1.MAX_UINT8, 0); - break; - case types_js_1.EncryptionTypes.uint16: - (0, utils_js_1.ValidateUintInRange)(value, consts_js_1.MAX_UINT16, 0); - break; - case types_js_1.EncryptionTypes.uint32: - (0, utils_js_1.ValidateUintInRange)(value, consts_js_1.MAX_UINT32, 0); - break; - default: + else { + // Object - recurse + const nestedKeyedItems = await Promise.all(Object.entries(item).map(async ([key, value]) => ({ + key, + value: await encrypt(value), + }))); + // Any nested error break out + const nestedItemResultErr = nestedKeyedItems.find(({ value }) => !value.success); + if (nestedItemResultErr != null) + return nestedItemResultErr; + const result = {}; + nestedKeyedItems.forEach(({ key, value }) => { + result[key] = value.data; + }); + return (0, types_1.ResultOk)(result); } - return tfheEncrypt.encrypt(value, fhePublicKey, type, securityZone); } + // Primitive + return (0, types_1.ResultOk)(item); } -exports.FhenixClient = FhenixClient; +// Unseal /** - * The FhenixClientSync class provides functionalities to interact with a FHE (Fully Homomorphic Encryption) system. - * It includes methods for encryption, unsealing, and managing permits. + * Unseals an encrypted message using the stored permit for a specific contract address. + * NOTE: Wrapper around `PermitV2.unseal` * - * The Sync FhenixClient allows the `client.encrypt_()` functions to be performed synchronously + * @param {string} ciphertext - The encrypted message to unseal. + * @param {string} account - Users address, defaults to store.account + * @param {string} hash - The hash of the permit to use for this operation, defaults to active permitV2 hash + * @returns bigint - The unsealed message. + */ +const unsealCiphertext = (ciphertext, account, hash) => { + const state = store_js_1._sdkStore.getState(); + const initialized = _checkInitialized(state); + if (!initialized.success) + return (0, types_1.ResultErr)(`${getAllPermits.name} :: ${initialized.error}`); + (0, validation_js_1.isString)(ciphertext); + const resolvedAccount = account ?? state.account; + const resolvedHash = hash ?? permit_1.permitStore.getActivePermitHash(resolvedAccount); + if (resolvedAccount == null || resolvedHash == null) { + return (0, types_1.ResultErr)(`unsealCiphertext :: PermitV2 hash not provided and active PermitV2 not found`); + } + const permit = permit_1.permitStore.getPermit(resolvedAccount, resolvedHash); + if (permit == null) { + return (0, types_1.ResultErr)(`unsealCiphertext :: PermitV2 with account <${account}> and hash <${hash}> not found`); + } + let unsealed; + try { + unsealed = permit.unsealCiphertext(ciphertext); + } + catch (e) { + return (0, types_1.ResultErr)(`unsealCiphertext :: ${e}`); + } + return (0, types_1.ResultOk)(unsealed); +}; +/** + * Uses the privateKey of `permit.sealingPair` to recursively unseal any contained `SealedItems`. + * If `item` is a single `SealedItem` it will be individually. + * NOTE: Only unseals typed `SealedItem`s returned from `FHE.sealoutputTyped` and the FHE bindings' `e____.sealTyped`. * - * @Note The Sync FhenixClient must be created using `await FhenixClientSync.create({provider})` instead of `new FhenixClient({provider})` + * @param {any | any[]} item - Array, object, or item. Any nested `SealedItems` will be unsealed. + * @returns - Recursively unsealed data in the target type, SealedBool -> boolean, SealedAddress -> string, etc. */ -class FhenixClientSync extends FhenixClientBase { - constructor(params) { - super(params); - this.fhePublicKeys = []; - this.fhePublicKeys = params.fhePublicKeys; - } - static async create(params) { - (0, validation_js_1.isPlainObject)(params); - if (params.skipPubKeyFetch === true) { - console.warn("warning: FhenixClientSync doesn't support skipping public key fetching on creation"); - } - const { provider, ignoreErrors, securityZones = [0] } = params; - if (!provider) { - throw new Error("Failed to initialize Fhenix Client - must include a web3 provider"); - } - await (0, init_js_1.InitFhevm)().catch((err) => { - if (ignoreErrors) { - return undefined; - } - else { - throw new Error(`Failed to initialize fhenixjs - is the network FHE-enabled? ${err}`); - } - }); - const fhePublicKeys = await Promise.all(securityZones.map((securityZone) => FhenixClientBase.getFheKeyFromProvider(params.provider, securityZone))); - return new FhenixClientSync({ ...params, fhePublicKeys }); - } - // Encryption Methods - _getPublicKey(securityZone) { - const fhePublicKey = this.fhePublicKeys[securityZone]; - if (!fhePublicKey) { - throw new Error(`Public key for security zone ${securityZone} not initialized`); - } - return fhePublicKey; - } - encrypt_bool(value, securityZone = 0) { - const fhePublicKey = this._getPublicKey(securityZone); - return tfheEncrypt.encrypt_bool(value, fhePublicKey, securityZone); - } - encrypt_uint8(value, securityZone = 0) { - (0, validation_js_1.isNumber)(value); - const fhePublicKey = this._getPublicKey(securityZone); - (0, utils_js_1.ValidateUintInRange)(value, consts_js_1.MAX_UINT8, 0); - return tfheEncrypt.encrypt_uint8(value, fhePublicKey, securityZone); +function unseal(item, account, hash) { + const resolvedAccount = account ?? store_js_1._sdkStore.getState().account; + const resolvedHash = hash ?? permit_1.permitStore.getActivePermitHash(resolvedAccount); + if (resolvedAccount == null || resolvedHash == null) { + return (0, types_1.ResultErr)(`unseal :: PermitV2 hash not provided and active PermitV2 not found`); } - encrypt_uint16(value, securityZone = 0) { - (0, validation_js_1.isNumber)(value); - const fhePublicKey = this._getPublicKey(securityZone); - (0, utils_js_1.ValidateUintInRange)(value, consts_js_1.MAX_UINT16, 0); - return tfheEncrypt.encrypt_uint16(value, fhePublicKey, securityZone); + const permit = permit_1.permitStore.getPermit(resolvedAccount, resolvedHash); + if (permit == null) { + return (0, types_1.ResultErr)(`unseal :: PermitV2 with account <${account}> and hash <${hash}> not found`); } - encrypt_uint32(value, securityZone = 0) { - (0, validation_js_1.isNumber)(value); - const fhePublicKey = this._getPublicKey(securityZone); - (0, utils_js_1.ValidateUintInRange)(value, consts_js_1.MAX_UINT32, 0); - return tfheEncrypt.encrypt_uint32(value, fhePublicKey, securityZone); + let unsealed; + try { + unsealed = permit.unseal(item); } - encrypt_uint64(value, securityZone = 0) { - (0, validation_js_1.isBigIntOrHexString)(value); - const fhePublicKey = this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return tfheEncrypt.encrypt_uint64(value, fhePublicKey, securityZone); - } - encrypt_uint128(value, securityZone = 0) { - (0, validation_js_1.isBigIntOrHexString)(value); - const fhePublicKey = this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return tfheEncrypt.encrypt_uint128(value, fhePublicKey, securityZone); - } - encrypt_uint256(value, securityZone = 0) { - (0, validation_js_1.isBigIntOrHexString)(value); - const fhePublicKey = this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return tfheEncrypt.encrypt_uint256(value, fhePublicKey, securityZone); - } - encrypt_address(value, securityZone = 0) { - (0, validation_js_1.isBigIntOrHexString)(value); - const fhePublicKey = this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return tfheEncrypt.encrypt_address(value, fhePublicKey, securityZone); - } - encrypt(value, type, securityZone = 0) { - (0, validation_js_1.isNumber)(value); - let outputSize = type; - const fhePublicKey = this._getPublicKey(securityZone); - // choose the most efficient ciphertext size if not selected - if (!outputSize) { - if (value < consts_js_1.MAX_UINT8) { - outputSize = types_js_1.EncryptionTypes.uint8; - } - else if (value < consts_js_1.MAX_UINT16) { - outputSize = types_js_1.EncryptionTypes.uint16; - } - else if (value < consts_js_1.MAX_UINT32) { - outputSize = types_js_1.EncryptionTypes.uint32; - } - else { - throw new Error(`Encryption input must be smaller than ${consts_js_1.MAX_UINT32}`); - } - } - switch (outputSize) { - case types_js_1.EncryptionTypes.uint8: - (0, utils_js_1.ValidateUintInRange)(value, consts_js_1.MAX_UINT8, 0); - break; - case types_js_1.EncryptionTypes.uint16: - (0, utils_js_1.ValidateUintInRange)(value, consts_js_1.MAX_UINT16, 0); - break; - case types_js_1.EncryptionTypes.uint32: - (0, utils_js_1.ValidateUintInRange)(value, consts_js_1.MAX_UINT32, 0); - break; - default: - } - return tfheEncrypt.encrypt(value, fhePublicKey, type, securityZone); + catch (e) { + return (0, types_1.ResultErr)(`unseal :: ${e}`); } + return (0, types_1.ResultOk)(unsealed); } -exports.FhenixClientSync = FhenixClientSync; +// Export +exports.fhenixsdk = { + store: store_js_1._sdkStore, + initialize, + createPermit, + importPermit, + selectActivePermit, + getPermit, + getPermission, + getAllPermits, + encrypt, + unsealCiphertext, + unseal, +}; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/commonjs/sdk/index.js.map b/lib/commonjs/sdk/index.js.map index 836a83f..8eb4fef 100644 --- a/lib/commonjs/sdk/index.js.map +++ b/lib/commonjs/sdk/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sdk/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sdk/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/commonjs/sdk/permit/generate.d.ts b/lib/commonjs/sdk/permit/generate.d.ts new file mode 100644 index 0000000..fd0acd3 --- /dev/null +++ b/lib/commonjs/sdk/permit/generate.d.ts @@ -0,0 +1,20 @@ +import { PermissionV2 } from "../../types"; +import { EIP712Message, EIP712Types } from "../../types/EIP712"; +export declare const SignatureTypes: { + readonly PermissionedV2IssuerSelf: ("recipient" | "contracts" | "projects" | "issuer" | "expiration" | "validatorId" | "validatorContract" | "sealingKey")[]; + readonly PermissionedV2IssuerShared: ("recipient" | "contracts" | "projects" | "issuer" | "expiration" | "validatorId" | "validatorContract")[]; + readonly PermissionedV2Recipient: ("issuerSignature" | "sealingKey")[]; +}; +export type PermitV2SignaturePrimaryType = keyof typeof SignatureTypes; +export declare const getSignatureTypesAndMessage: (primaryType: PermitV2SignaturePrimaryType, fields: T[] | readonly T[], values: Pick & Partial) => { + types: EIP712Types; + primaryType: string; + message: EIP712Message; +}; +export declare const getSignatureDomain: (chainId: string) => { + name: string; + version: string; + chainId: number; + verifyingContract: string; +}; +//# sourceMappingURL=generate.d.ts.map \ No newline at end of file diff --git a/lib/commonjs/sdk/permit/generate.d.ts.map b/lib/commonjs/sdk/permit/generate.d.ts.map new file mode 100644 index 0000000..2c56428 --- /dev/null +++ b/lib/commonjs/sdk/permit/generate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../../src/sdk/permit/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAiBhE,eAAO,MAAM,cAAc;;;;CAwBjB,CAAC;AACX,MAAM,MAAM,4BAA4B,GAAG,MAAM,OAAO,cAAc,CAAC;AAEvE,eAAO,MAAM,2BAA2B,qKAGzB,4BAA4B,UACjC,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,UAClB,KAAK,YAAY,EAAE,CAAC,CAAC,GAAG,QAAQ,YAAY,CAAC,KACpD;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAgBnE,CAAC;AAEF,eAAO,MAAM,kBAAkB,YAAa,MAAM;;;;;CAKhD,CAAC"} \ No newline at end of file diff --git a/lib/commonjs/sdk/permit/generate.js b/lib/commonjs/sdk/permit/generate.js new file mode 100644 index 0000000..98c04e4 --- /dev/null +++ b/lib/commonjs/sdk/permit/generate.js @@ -0,0 +1,61 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getSignatureDomain = exports.getSignatureTypesAndMessage = exports.SignatureTypes = void 0; +const ethers_1 = require("ethers"); +const PermitV2SignatureAllFields = [ + { name: "issuer", type: "address" }, + { name: "expiration", type: "uint64" }, + { name: "contracts", type: "address[]" }, + { name: "projects", type: "string[]" }, + { name: "recipient", type: "address" }, + { name: "validatorId", type: "uint256" }, + { name: "validatorContract", type: "address" }, + { name: "sealingKey", type: "bytes32" }, + { name: "issuerSignature", type: "bytes" }, +]; +exports.SignatureTypes = { + PermissionedV2IssuerSelf: [ + "issuer", + "expiration", + "contracts", + "projects", + "recipient", + "validatorId", + "validatorContract", + "sealingKey", + ], + PermissionedV2IssuerShared: [ + "issuer", + "expiration", + "contracts", + "projects", + "recipient", + "validatorId", + "validatorContract", + ], + PermissionedV2Recipient: [ + "sealingKey", + "issuerSignature", + ], +}; +const getSignatureTypesAndMessage = (primaryType, fields, values) => { + const types = { + [primaryType]: PermitV2SignatureAllFields.filter((fieldType) => fields.includes(fieldType.name)), + }; + const message = {}; + fields.forEach((field) => { + if (field in values) { + message[field] = values[field]; + } + }); + return { types, primaryType, message: message }; +}; +exports.getSignatureTypesAndMessage = getSignatureTypesAndMessage; +const getSignatureDomain = (chainId) => ({ + name: "Fhenix Permission v2.0.0", + version: "v2.0.0", + chainId: parseInt(chainId), + verifyingContract: ethers_1.ZeroAddress, +}); +exports.getSignatureDomain = getSignatureDomain; +//# sourceMappingURL=generate.js.map \ No newline at end of file diff --git a/lib/commonjs/sdk/permit/generate.js.map b/lib/commonjs/sdk/permit/generate.js.map new file mode 100644 index 0000000..a198839 --- /dev/null +++ b/lib/commonjs/sdk/permit/generate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../../src/sdk/permit/generate.ts"],"names":[],"mappings":";;;AAEA,mCAAqC;AAErC,MAAM,0BAA0B,GAAG;IACjC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;IACnC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE;IACtC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE;IACxC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE;IACtC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;IACtC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE;IACxC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE;IAC9C,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE;IACvC,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE;CAClC,CAAC;AAIE,QAAA,cAAc,GAAG;IAC5B,wBAAwB,EAAE;QACxB,QAAQ;QACR,YAAY;QACZ,WAAW;QACX,UAAU;QACV,WAAW;QACX,aAAa;QACb,mBAAmB;QACnB,YAAY;KAC4B;IAC1C,0BAA0B,EAAE;QAC1B,QAAQ;QACR,YAAY;QACZ,WAAW;QACX,UAAU;QACV,WAAW;QACX,aAAa;QACb,mBAAmB;KACqB;IAC1C,uBAAuB,EAAE;QACvB,YAAY;QACZ,iBAAiB;KACuB;CAClC,CAAC;AAGJ,MAAM,2BAA2B,GAAG,CAGzC,WAAyC,EACzC,MAA0B,EAC1B,MAAqD,EACgB,EAAE;IACvE,MAAM,KAAK,GAAG;QACZ,CAAC,WAAW,CAAC,EAAE,0BAA0B,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAC7D,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAS,CAAC,CACrC;KACF,CAAC;IAEF,MAAM,OAAO,GACX,EAAsD,CAAC;IACzD,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,OAAwB,EAAE,CAAC;AACnE,CAAC,CAAC;AAtBW,QAAA,2BAA2B,+BAsBtC;AAEK,MAAM,kBAAkB,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,CAAC;IACtD,IAAI,EAAE,0BAA0B;IAChC,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;IAC1B,iBAAiB,EAAE,oBAAW;CAC/B,CAAC,CAAC;AALU,QAAA,kBAAkB,sBAK5B"} \ No newline at end of file diff --git a/lib/commonjs/sdk/permit/index.d.ts b/lib/commonjs/sdk/permit/index.d.ts new file mode 100644 index 0000000..5cdabbe --- /dev/null +++ b/lib/commonjs/sdk/permit/index.d.ts @@ -0,0 +1,5 @@ +export { permitStore } from "./store"; +export { PermitV2 } from "./permit"; +export { PermitV2ParamsValidator, FullyFormedPermitV2Validator, } from "./permit.z"; +export { SignatureTypes, getSignatureTypesAndMessage, getSignatureDomain, } from "./generate"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/lib/commonjs/sdk/permit/index.d.ts.map b/lib/commonjs/sdk/permit/index.d.ts.map new file mode 100644 index 0000000..a0aefac --- /dev/null +++ b/lib/commonjs/sdk/permit/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/sdk/permit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EACL,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,cAAc,EACd,2BAA2B,EAC3B,kBAAkB,GACnB,MAAM,YAAY,CAAC"} \ No newline at end of file diff --git a/lib/commonjs/sdk/permit/index.js b/lib/commonjs/sdk/permit/index.js new file mode 100644 index 0000000..e9a153c --- /dev/null +++ b/lib/commonjs/sdk/permit/index.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getSignatureDomain = exports.getSignatureTypesAndMessage = exports.SignatureTypes = exports.FullyFormedPermitV2Validator = exports.PermitV2ParamsValidator = exports.PermitV2 = exports.permitStore = void 0; +var store_1 = require("./store"); +Object.defineProperty(exports, "permitStore", { enumerable: true, get: function () { return store_1.permitStore; } }); +var permit_1 = require("./permit"); +Object.defineProperty(exports, "PermitV2", { enumerable: true, get: function () { return permit_1.PermitV2; } }); +var permit_z_1 = require("./permit.z"); +Object.defineProperty(exports, "PermitV2ParamsValidator", { enumerable: true, get: function () { return permit_z_1.PermitV2ParamsValidator; } }); +Object.defineProperty(exports, "FullyFormedPermitV2Validator", { enumerable: true, get: function () { return permit_z_1.FullyFormedPermitV2Validator; } }); +var generate_1 = require("./generate"); +Object.defineProperty(exports, "SignatureTypes", { enumerable: true, get: function () { return generate_1.SignatureTypes; } }); +Object.defineProperty(exports, "getSignatureTypesAndMessage", { enumerable: true, get: function () { return generate_1.getSignatureTypesAndMessage; } }); +Object.defineProperty(exports, "getSignatureDomain", { enumerable: true, get: function () { return generate_1.getSignatureDomain; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/commonjs/sdk/permit/index.js.map b/lib/commonjs/sdk/permit/index.js.map new file mode 100644 index 0000000..dcd3194 --- /dev/null +++ b/lib/commonjs/sdk/permit/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/sdk/permit/index.ts"],"names":[],"mappings":";;;AAAA,iCAAsC;AAA7B,oGAAA,WAAW,OAAA;AACpB,mCAAoC;AAA3B,kGAAA,QAAQ,OAAA;AACjB,uCAGoB;AAFlB,mHAAA,uBAAuB,OAAA;AACvB,wHAAA,4BAA4B,OAAA;AAE9B,uCAIoB;AAHlB,0GAAA,cAAc,OAAA;AACd,uHAAA,2BAA2B,OAAA;AAC3B,8GAAA,kBAAkB,OAAA"} \ No newline at end of file diff --git a/lib/commonjs/sdk/permit/permit.d.ts b/lib/commonjs/sdk/permit/permit.d.ts new file mode 100644 index 0000000..cf3f1c0 --- /dev/null +++ b/lib/commonjs/sdk/permit/permit.d.ts @@ -0,0 +1,233 @@ +import { PermitV2SignaturePrimaryType } from "./generate"; +import { SealingKey } from "../sealing"; +import { PermissionV2, PermitV2Interface, PermitV2Metadata, PermitV2Options, SerializedPermitV2, MappedUnsealedTypes, AbstractSigner } from "../../types"; +export declare class PermitV2 implements PermitV2Interface, PermitV2Metadata { + /** + * Name for this permit, for organization and UI usage, not included in signature. + */ + name: string; + /** + * The type of the PermitV2 (self / sharing) + * (self) Permit that will be signed and used by the issuer + * (sharing) Permit that is signed by the issuer, but intended to be shared with recipient + * (recipient) Permit that has been received, and signed by the recipient + */ + type: "self" | "sharing" | "recipient"; + /** + * (base) User that initially created the permission, target of data fetching + */ + issuer: string; + /** + * (base) Expiration timestamp + */ + expiration: number; + /** + * (base) List of contract addresses that can be accessed with this permission + */ + contracts: string[]; + /** + * (base) List of project identifiers (strings) that can be accessed + */ + projects: string[]; + /** + * (sharing) The user that this permission will be shared with + * ** optional, use `address(0)` to disable ** + */ + recipient: string; + /** + * (issuer defined validation) An id used to query a contract to check this permissions validity + * ** optional, use `0` to disable ** + */ + validatorId: number; + /** + * (issuer defined validation) The contract to query to determine permission validity + * ** optional, user `address(0)` to disable ** + */ + validatorContract: string; + /** + * (base) The publicKey of a sealingPair used to re-encrypt `issuer`s confidential data + * (non-sharing) Populated by `issuer` + * (sharing) Populated by `recipient` + */ + sealingPair: SealingKey; + /** + * (base) `signTypedData` signature created by `issuer`. + * (base) Shared- and Self- permissions differ in signature format: (`sealingKey` absent in shared signature) + * (non-sharing) < issuer, expiration, contracts, projects, recipient, validatorId, validatorContract, sealingKey > + * (sharing) < issuer, expiration, contracts, projects, recipient, validatorId, validatorContract > + */ + issuerSignature: string; + /** + * (sharing) `signTypedData` signature created by `recipient` with format: + * (sharing) < sealingKey, issuerSignature> + * ** required for shared permits ** + */ + recipientSignature: string; + /** + * Chain that this permit was signed on. In part used for mock encrypt/unseal on hardhat network. + * Should not be set manually, included in metadata as part of serialization flows. + */ + _signedChainId: string | undefined; + constructor(options: PermitV2Interface, metadata?: Partial); + static create(options: PermitV2Options): Promise; + static createAndSign(options: PermitV2Options, chainId: string | undefined, signer: AbstractSigner | undefined): Promise; + updateName: (name: string) => void; + /** + * Creates a `PermitV2` from a serialized permit, hydrating methods and classes + * NOTE: Does not return a stringified permit + * + * @param {SerializedPermitV2} - Permit structure excluding classes + * @returns {PermitV2} - New instance of PermitV2 class + */ + static deserialize: ({ _signedChainId, sealingPair, ...permit }: SerializedPermitV2) => PermitV2; + static validate: (permit: PermitV2) => import("zod").SafeParseReturnType<{ + type: "self" | "sharing" | "recipient"; + issuer: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + recipient?: string | undefined; + contracts?: string[] | undefined; + projects?: string[] | undefined; + name?: string | undefined; + expiration?: number | undefined; + validatorId?: number | undefined; + validatorContract?: string | undefined; + issuerSignature?: string | undefined; + recipientSignature?: string | undefined; + }, { + recipient: string; + contracts: string[]; + projects: string[]; + name: string; + type: "self" | "sharing" | "recipient"; + issuer: string; + expiration: number; + validatorId: number; + validatorContract: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + issuerSignature: string; + recipientSignature: string; + }>; + /** + * Utility to extract the public data from a permit. + * Used in `serialize`, `getPermission`, `getHash` etc + */ + getInterface: () => PermitV2Interface; + /** + * Export the necessary permit data to share a permit with another user + */ + export: () => string; + /** + * Returns a serializable permit instance, removing classes and methods. + * NOTE: Does not return a stringified permit + */ + serialize: () => SerializedPermitV2; + /** + * Extracts a contract input ready permission from this permit. + * The permission inherits most fields from the permit, however + * `permit.sealingPair` is removed and replaced by `permit.sealingPair.publicKey` in the `sealingKey` field. + * + * @permit {boolean} skipValidation - Flag to prevent running validation on the permit before returning the extracted permission. Used internally. + * @returns {PermissionV2} + */ + getPermission: (skipValidation?: boolean) => PermissionV2; + /** + * Returns a stable hash depending on the core data of the permit. + * Is used in the store as each permit's key in the permit map. + */ + getHash: () => string; + /** + * Returns the domain, types, primaryType, and message fields required to request the user's signature + * Primary type is returned to allow viem clients to more easily connect + */ + getSignatureParams: (chainId: string, primaryType: PermitV2SignaturePrimaryType) => { + types: import("../../types/EIP712").EIP712Types; + primaryType: string; + message: import("../../types/EIP712").EIP712Message; + domain: { + name: string; + version: string; + chainId: number; + verifyingContract: string; + }; + }; + /** + * Determines the required signature type. + * Creates the EIP712 types and message. + * Prompts the user for their signature. + * Inserts the signature into `issuerSignature` or `recipientSignature` as necessary. + * + * @param {string} chainId - Used as part of the EIP712 domain, throws if undefined + * @param {AbstractSigner} signer - Signer responsible for signing the EIP712 permit signature, throws if undefined + */ + sign: (chainId: string | undefined, signer: AbstractSigner | undefined) => Promise; + /** + * Use the privateKey of `permit.sealingPair` to unseal `ciphertext` returned from the Fhenix chain. + * Useful when not using `SealedItem` structs and need to unseal an individual ciphertext. + */ + unsealCiphertext: (ciphertext: string) => bigint; + /** + * Uses the privateKey of `permit.sealingPair` to recursively unseal any contained `SealedItems`. + * If `item` is a single `SealedItem` it will be individually. + * NOTE: Only unseals typed `SealedItem`s returned from `FHE.sealoutputTyped` and the FHE bindings' `e____.sealTyped`. + * + * @param {any | any[]} item - Array, object, or item. Any nested `SealedItems` will be unsealed. + * @returns - Recursively unsealed data in the target type, SealedBool -> boolean, SealedAddress -> string, etc. + */ + unseal(item: T): MappedUnsealedTypes; + unseal(item: [...T]): [...MappedUnsealedTypes]; + /** + * Check if permit satisfies the requirements param. + * Permit must satisfy either the contracts list or the projects list + * + * @param {{contracts?: string[], projects?: string[]}} requirements - Lists of contract and project requirements. + * @returns {satisfies: boolean, unsatisfiedContracts, unsatisfiedProjects} - satisfied if either req list is fulfilled. + */ + getSatisfies: (requirements: { + contracts?: string[]; + projects?: string[]; + }) => { + satisfies: true; + unsatisfiedContracts: null; + unsatisfiedProjects: null; + } | { + satisfies: false; + unsatisfiedContracts: string[]; + unsatisfiedProjects: string[]; + }; + /** + * Returns whether the active party has created their signature. + * If `permit.type` is self or sharing, the active party is `issuer`. + * If `permit.type` is recipient, the active party is `recipient` + * + * @returns {boolean} + */ + isSigned: () => boolean; + /** + * Returns whether this permit has expired due to `permit.expiration` + * + * @returns {boolean} + */ + isExpired: () => boolean; + /** + * Overall validity checker of a permit, checks the signatures and expirations + * + * @returns {{valid: boolean, error: string}} - If `valid`, `error` is null, else `error` indicates which validity check failed + */ + isValid: () => { + readonly valid: false; + readonly error: "expired"; + } | { + readonly valid: false; + readonly error: "not-signed"; + } | { + readonly valid: true; + readonly error: null; + }; +} +//# sourceMappingURL=permit.d.ts.map \ No newline at end of file diff --git a/lib/commonjs/sdk/permit/permit.d.ts.map b/lib/commonjs/sdk/permit/permit.d.ts.map new file mode 100644 index 0000000..fb03794 --- /dev/null +++ b/lib/commonjs/sdk/permit/permit.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"permit.d.ts","sourceRoot":"","sources":["../../../../src/sdk/permit/permit.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/commonjs/sdk/permit/permit.js b/lib/commonjs/sdk/permit/permit.js new file mode 100644 index 0000000..c3b684f --- /dev/null +++ b/lib/commonjs/sdk/permit/permit.js @@ -0,0 +1,331 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PermitV2 = void 0; +/* eslint-disable @typescript-eslint/no-explicit-any */ +const ethers_1 = require("ethers"); +const generate_1 = require("./generate"); +const permit_z_1 = require("./permit.z"); +const sealing_1 = require("../sealing"); +const utils_hardhat_1 = require("../utils.hardhat"); +const types_1 = require("../../types"); +class PermitV2 { + constructor(options, metadata) { + /** + * Chain that this permit was signed on. In part used for mock encrypt/unseal on hardhat network. + * Should not be set manually, included in metadata as part of serialization flows. + */ + this._signedChainId = undefined; + this.updateName = (name) => { + this.name = name; + }; + /** + * Utility to extract the public data from a permit. + * Used in `serialize`, `getPermission`, `getHash` etc + */ + this.getInterface = () => { + return { + name: this.name, + type: this.type, + issuer: this.issuer, + expiration: this.expiration, + contracts: this.contracts, + projects: this.projects, + recipient: this.recipient, + validatorId: this.validatorId, + validatorContract: this.validatorContract, + sealingPair: this.sealingPair, + issuerSignature: this.issuerSignature, + recipientSignature: this.recipientSignature, + }; + }; + /** + * Export the necessary permit data to share a permit with another user + */ + this.export = () => { + const cleanedPermit = { + name: this.name, + type: this.type, + issuer: this.issuer, + expiration: this.expiration, + }; + if (this.contracts.length > 0) + cleanedPermit.contracts = this.contracts; + if (this.projects.length > 0) + cleanedPermit.projects = this.projects; + if (this.recipient !== ethers_1.ZeroAddress) + cleanedPermit.recipient = this.recipient; + if (this.validatorId !== 0) + cleanedPermit.validatorId = this.validatorId; + if (this.validatorContract !== ethers_1.ZeroAddress) + cleanedPermit.validatorContract = this.validatorContract; + if (this.type === "sharing" && this.issuerSignature !== "0x") + cleanedPermit.issuerSignature = this.issuerSignature; + return JSON.stringify(cleanedPermit, undefined, 2); + }; + /** + * Returns a serializable permit instance, removing classes and methods. + * NOTE: Does not return a stringified permit + */ + this.serialize = () => { + const { sealingPair, ...permit } = this.getInterface(); + return { + ...permit, + _signedChainId: this._signedChainId, + sealingPair: { + publicKey: sealingPair.publicKey, + privateKey: sealingPair.privateKey, + }, + }; + }; + /** + * Extracts a contract input ready permission from this permit. + * The permission inherits most fields from the permit, however + * `permit.sealingPair` is removed and replaced by `permit.sealingPair.publicKey` in the `sealingKey` field. + * + * @permit {boolean} skipValidation - Flag to prevent running validation on the permit before returning the extracted permission. Used internally. + * @returns {PermissionV2} + */ + this.getPermission = (skipValidation = false) => { + const permitData = this.getInterface(); + if (!skipValidation) { + const validationResult = permit_z_1.FullyFormedPermitV2Validator.safeParse(permitData); + if (!validationResult.success) { + throw new Error(`PermitV2 :: getPermission :: permit validation failed - ${JSON.stringify(validationResult.error, null, 2)} ${JSON.stringify(permitData, null, 2)}`); + } + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { name, type, sealingPair, ...permit } = permitData; + return { + ...permit, + sealingKey: `0x${sealingPair.publicKey}`, + }; + }; + /** + * Returns a stable hash depending on the core data of the permit. + * Is used in the store as each permit's key in the permit map. + */ + this.getHash = () => (0, ethers_1.keccak256)((0, ethers_1.id)(JSON.stringify({ + type: this.type, + issuer: this.issuer, + expiration: this.expiration, + contracts: this.contracts, + projects: this.projects, + recipient: this.recipient, + validatorId: this.validatorId, + validatorContract: this.validatorContract, + }))); + /** + * Returns the domain, types, primaryType, and message fields required to request the user's signature + * Primary type is returned to allow viem clients to more easily connect + */ + this.getSignatureParams = (chainId, primaryType) => { + return { + domain: (0, generate_1.getSignatureDomain)(chainId), + ...(0, generate_1.getSignatureTypesAndMessage)(primaryType, generate_1.SignatureTypes[primaryType], this.getPermission(true)), + }; + }; + /** + * Determines the required signature type. + * Creates the EIP712 types and message. + * Prompts the user for their signature. + * Inserts the signature into `issuerSignature` or `recipientSignature` as necessary. + * + * @param {string} chainId - Used as part of the EIP712 domain, throws if undefined + * @param {AbstractSigner} signer - Signer responsible for signing the EIP712 permit signature, throws if undefined + */ + this.sign = async (chainId, signer) => { + if (chainId == null) + throw new Error("PermitV2 :: sign - chainId undefined, cannot sign a permit with an unknown chainId"); + if (signer == null) + throw new Error("PermitV2 :: sign - signer undefined, you must pass in a `signer` for the connected user to create a permitV2 signature"); + let primaryType = "PermissionedV2IssuerSelf"; + if (this.type === "self") + primaryType = "PermissionedV2IssuerSelf"; + if (this.type === "sharing") + primaryType = "PermissionedV2IssuerShared"; + if (this.type === "recipient") + primaryType = "PermissionedV2Recipient"; + const { domain, types, message } = this.getSignatureParams(chainId, primaryType); + const signature = await signer.signTypedData(domain, types, message); + if (this.type === "self" || this.type === "sharing") { + this.issuerSignature = signature; + } + if (this.type === "recipient") { + this.recipientSignature = signature; + } + this._signedChainId = chainId; + }; + /** + * Use the privateKey of `permit.sealingPair` to unseal `ciphertext` returned from the Fhenix chain. + * Useful when not using `SealedItem` structs and need to unseal an individual ciphertext. + */ + this.unsealCiphertext = (ciphertext) => { + // Early exit with mock unseal if interacting with hardhat network + if ((0, utils_hardhat_1.chainIsHardhat)(this._signedChainId)) + return (0, utils_hardhat_1.hardhatMockUnseal)(ciphertext); + return this.sealingPair.unseal(ciphertext); + }; + /** + * Check if permit satisfies the requirements param. + * Permit must satisfy either the contracts list or the projects list + * + * @param {{contracts?: string[], projects?: string[]}} requirements - Lists of contract and project requirements. + * @returns {satisfies: boolean, unsatisfiedContracts, unsatisfiedProjects} - satisfied if either req list is fulfilled. + */ + this.getSatisfies = (requirements) => { + let contractsSatisfied = true; + const unsatisfiedContracts = []; + for (const contract in requirements.contracts) { + if (!this.contracts.includes(contract)) { + contractsSatisfied = false; + unsatisfiedContracts.push(contract); + } + } + let projectsSatisfied = true; + const unsatisfiedProjects = []; + for (const project in requirements.projects) { + if (!this.projects.includes(project)) { + projectsSatisfied = false; + unsatisfiedProjects.push(project); + } + } + if (contractsSatisfied || projectsSatisfied) + return { + satisfies: true, + unsatisfiedContracts: null, + unsatisfiedProjects: null, + }; + return { + satisfies: false, + unsatisfiedContracts, + unsatisfiedProjects, + }; + }; + /** + * Returns whether the active party has created their signature. + * If `permit.type` is self or sharing, the active party is `issuer`. + * If `permit.type` is recipient, the active party is `recipient` + * + * @returns {boolean} + */ + this.isSigned = () => { + if (this.type === "self" || this.type === "sharing") { + return this.issuerSignature !== "0x"; + } + if (this.type === "recipient") { + return this.recipientSignature != "0x"; + } + return false; + }; + /** + * Returns whether this permit has expired due to `permit.expiration` + * + * @returns {boolean} + */ + this.isExpired = () => { + return this.expiration < Math.floor(Date.now() / 1000); + }; + /** + * Overall validity checker of a permit, checks the signatures and expirations + * + * @returns {{valid: boolean, error: string}} - If `valid`, `error` is null, else `error` indicates which validity check failed + */ + this.isValid = () => { + if (this.isExpired()) + return { valid: false, error: "expired" }; + if (!this.isSigned()) + return { valid: false, error: "not-signed" }; + return { valid: true, error: null }; + }; + this.name = options.name; + this.type = options.type; + this.issuer = options.issuer; + this.expiration = options.expiration; + this.contracts = options.contracts; + this.projects = options.projects; + this.recipient = options.recipient; + this.validatorId = options.validatorId; + this.validatorContract = options.validatorContract; + this.sealingPair = options.sealingPair; + this.issuerSignature = options.issuerSignature; + this.recipientSignature = options.recipientSignature; + this._signedChainId = metadata?._signedChainId; + } + static async create(options) { + const { success, data: parsed, error, } = permit_z_1.PermitV2ParamsValidator.safeParse(options); + if (!success) { + throw new Error("PermitV2 :: create :: Parsing PermitV2Options failed " + + JSON.stringify(error, null, 2)); + } + const sealingPair = parsed.sealingPair != null + ? new sealing_1.SealingKey(parsed.sealingPair.privateKey, parsed.sealingPair.publicKey) + : await (0, sealing_1.GenerateSealingKey)(); + return new PermitV2({ + ...parsed, + sealingPair, + }); + } + static async createAndSign(options, chainId, signer) { + const permit = await PermitV2.create(options); + await permit.sign(chainId, signer); + return permit; + } + unseal(item) { + // SealedItem + const sealedItem = (0, types_1.getAsSealedItem)(item); + if (sealedItem != null) { + const bn = (0, utils_hardhat_1.chainIsHardhat)(this._signedChainId) + ? (0, utils_hardhat_1.hardhatMockUnseal)(sealedItem.data) + : this.sealingPair.unseal(sealedItem.data); + if ((0, types_1.isSealedBool)(sealedItem)) { + // Return a boolean for SealedBool + return Boolean(bn).valueOf(); + } + if ((0, types_1.isSealedAddress)(sealedItem)) { + // Return a string for SealedAddress + return (0, ethers_1.getAddress)(`0x${bn.toString(16).slice(-40)}`); + } + if ((0, types_1.isSealedUint)(sealedItem)) { + // Return a bigint for SealedUint + return bn; + } + } + // Object | Array + if (typeof item === "object" && item !== null) { + if (Array.isArray(item)) { + // Array - recurse + return item.map((nestedItem) => this.unseal(nestedItem)); + } + else { + // Object - recurse + const result = {}; + for (const key in item) { + result[key] = this.unseal(item[key]); + } + return result; + } + } + // Primitive + return item; + } +} +exports.PermitV2 = PermitV2; +/** + * Creates a `PermitV2` from a serialized permit, hydrating methods and classes + * NOTE: Does not return a stringified permit + * + * @param {SerializedPermitV2} - Permit structure excluding classes + * @returns {PermitV2} - New instance of PermitV2 class + */ +PermitV2.deserialize = ({ _signedChainId, sealingPair, ...permit }) => { + return new PermitV2({ + ...permit, + sealingPair: new sealing_1.SealingKey(sealingPair.privateKey, sealingPair.publicKey), + }, { + _signedChainId, + }); +}; +PermitV2.validate = (permit) => { + return permit_z_1.FullyFormedPermitV2Validator.safeParse(permit); +}; +//# sourceMappingURL=permit.js.map \ No newline at end of file diff --git a/lib/commonjs/sdk/permit/permit.js.map b/lib/commonjs/sdk/permit/permit.js.map new file mode 100644 index 0000000..ae06b03 --- /dev/null +++ b/lib/commonjs/sdk/permit/permit.js.map @@ -0,0 +1 @@ +{"version":3,"file":"permit.js","sourceRoot":"","sources":["../../../../src/sdk/permit/permit.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,mCAAgE;AAChE,yCAKoB;AACpB,yCAGoB;AACpB,wCAA4D;AAC5D,oDAAqE;AACrE,uCAYqB;AAErB,MAAa,QAAQ;IAqEnB,YACE,OAA0B,EAC1B,QAAoC;QARtC;;;WAGG;QACI,mBAAc,GAAuB,SAAS,CAAC;QA4DtD,eAAU,GAAG,CAAC,IAAY,EAAE,EAAE;YAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;QAgCF;;;WAGG;QACH,iBAAY,GAAG,GAAsB,EAAE;YACrC,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gBACzC,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;aAC5C,CAAC;QACJ,CAAC,CAAC;QAEF;;WAEG;QACH,WAAM,GAAG,GAAG,EAAE;YACZ,MAAM,aAAa,GAA4B;gBAC7C,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC;YAEF,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;gBAAE,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACxE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;gBAAE,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YACrE,IAAI,IAAI,CAAC,SAAS,KAAK,oBAAW;gBAChC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAC3C,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC;gBAAE,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YACzE,IAAI,IAAI,CAAC,iBAAiB,KAAK,oBAAW;gBACxC,aAAa,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;YAC3D,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI;gBAC1D,aAAa,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;YAEvD,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC;QAEF;;;WAGG;QACH,cAAS,GAAG,GAAuB,EAAE;YACnC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACvD,OAAO;gBACL,GAAG,MAAM;gBACT,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,WAAW,EAAE;oBACX,SAAS,EAAE,WAAW,CAAC,SAAS;oBAChC,UAAU,EAAE,WAAW,CAAC,UAAU;iBACnC;aACF,CAAC;QACJ,CAAC,CAAC;QAEF;;;;;;;WAOG;QACH,kBAAa,GAAG,CAAC,cAAc,GAAG,KAAK,EAAgB,EAAE;YACvD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAEvC,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,gBAAgB,GACpB,uCAA4B,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBAErD,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;oBAC9B,MAAM,IAAI,KAAK,CACb,2DAA2D,IAAI,CAAC,SAAS,CACvE,gBAAgB,CAAC,KAAK,EACtB,IAAI,EACJ,CAAC,CACF,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAC3C,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,6DAA6D;YAC7D,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,GAAG,UAAU,CAAC;YAC1D,OAAO;gBACL,GAAG,MAAM;gBACT,UAAU,EAAE,KAAK,WAAW,CAAC,SAAS,EAAE;aACzC,CAAC;QACJ,CAAC,CAAC;QAEF;;;WAGG;QACH,YAAO,GAAG,GAAG,EAAE,CACb,IAAA,kBAAS,EACP,IAAA,WAAE,EACA,IAAI,CAAC,SAAS,CAAC;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;SAC1C,CAAC,CACH,CACF,CAAC;QAEJ;;;WAGG;QACH,uBAAkB,GAAG,CACnB,OAAe,EACf,WAAyC,EACzC,EAAE;YACF,OAAO;gBACL,MAAM,EAAE,IAAA,6BAAkB,EAAC,OAAO,CAAC;gBACnC,GAAG,IAAA,sCAA2B,EAC5B,WAAW,EACX,yBAAc,CAAC,WAAW,CAAC,EAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CACzB;aACF,CAAC;QACJ,CAAC,CAAC;QAEF;;;;;;;;WAQG;QACH,SAAI,GAAG,KAAK,EACV,OAA2B,EAC3B,MAAkC,EAClC,EAAE;YACF,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,CACb,oFAAoF,CACrF,CAAC;YACJ,IAAI,MAAM,IAAI,IAAI;gBAChB,MAAM,IAAI,KAAK,CACb,wHAAwH,CACzH,CAAC;YAEJ,IAAI,WAAW,GAAiC,0BAA0B,CAAC;YAC3E,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;gBAAE,WAAW,GAAG,0BAA0B,CAAC;YACnE,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;gBAAE,WAAW,GAAG,4BAA4B,CAAC;YACxE,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;gBAAE,WAAW,GAAG,yBAAyB,CAAC;YAEvE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,kBAAkB,CACxD,OAAO,EACP,WAAW,CACZ,CAAC;YACF,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAErE,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACpD,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;YACnC,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC9B,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;YACtC,CAAC;YAED,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAChC,CAAC,CAAC;QAEF;;;WAGG;QACH,qBAAgB,GAAG,CAAC,UAAkB,EAAU,EAAE;YAChD,kEAAkE;YAClE,IAAI,IAAA,8BAAc,EAAC,IAAI,CAAC,cAAc,CAAC;gBACrC,OAAO,IAAA,iCAAiB,EAAC,UAAU,CAAC,CAAC;YAEvC,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC,CAAC;QAqDF;;;;;;WAMG;QACH,iBAAY,GAAG,CAAC,YAGf,EAMK,EAAE;YACN,IAAI,kBAAkB,GAAG,IAAI,CAAC;YAC9B,MAAM,oBAAoB,GAAa,EAAE,CAAC;YAC1C,KAAK,MAAM,QAAQ,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;gBAC9C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACvC,kBAAkB,GAAG,KAAK,CAAC;oBAC3B,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;YAED,IAAI,iBAAiB,GAAG,IAAI,CAAC;YAC7B,MAAM,mBAAmB,GAAa,EAAE,CAAC;YACzC,KAAK,MAAM,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;gBAC5C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBACrC,iBAAiB,GAAG,KAAK,CAAC;oBAC1B,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC;YAED,IAAI,kBAAkB,IAAI,iBAAiB;gBACzC,OAAO;oBACL,SAAS,EAAE,IAAI;oBACf,oBAAoB,EAAE,IAAI;oBAC1B,mBAAmB,EAAE,IAAI;iBAC1B,CAAC;YAEJ,OAAO;gBACL,SAAS,EAAE,KAAK;gBAChB,oBAAoB;gBACpB,mBAAmB;aACpB,CAAC;QACJ,CAAC,CAAC;QAEF;;;;;;WAMG;QACH,aAAQ,GAAG,GAAG,EAAE;YACd,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACpD,OAAO,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC;YACvC,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC9B,OAAO,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC;YACzC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF;;;;WAIG;QACH,cAAS,GAAG,GAAG,EAAE;YACf,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QACzD,CAAC,CAAC;QAEF;;;;WAIG;QACH,YAAO,GAAG,GAAG,EAAE;YACb,IAAI,IAAI,CAAC,SAAS,EAAE;gBAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAW,CAAC;YACzE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAW,CAAC;YAC5E,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAW,CAAC;QAC/C,CAAC,CAAC;QA3ZA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;QACnD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC/C,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;QAErD,IAAI,CAAC,cAAc,GAAG,QAAQ,EAAE,cAAc,CAAC;IACjD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAwB;QAC1C,MAAM,EACJ,OAAO,EACP,IAAI,EAAE,MAAM,EACZ,KAAK,GACN,GAAG,kCAAuB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAE/C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,uDAAuD;gBACrD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CACjC,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GACf,MAAM,CAAC,WAAW,IAAI,IAAI;YACxB,CAAC,CAAC,IAAI,oBAAU,CACZ,MAAM,CAAC,WAAW,CAAC,UAAU,EAC7B,MAAM,CAAC,WAAW,CAAC,SAAS,CAC7B;YACH,CAAC,CAAC,MAAM,IAAA,4BAAkB,GAAE,CAAC;QAEjC,OAAO,IAAI,QAAQ,CAAC;YAClB,GAAG,MAAM;YACT,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,aAAa,CACxB,OAAwB,EACxB,OAA2B,EAC3B,MAAkC;QAElC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACnC,OAAO,MAAM,CAAC;IAChB,CAAC;IA0OD,MAAM,CAAI,IAAO;QACf,aAAa;QACb,MAAM,UAAU,GAAG,IAAA,uBAAe,EAAC,IAAI,CAAC,CAAC;QACzC,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,EAAE,GAAG,IAAA,8BAAc,EAAC,IAAI,CAAC,cAAc,CAAC;gBAC5C,CAAC,CAAC,IAAA,iCAAiB,EAAC,UAAU,CAAC,IAAI,CAAC;gBACpC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAE7C,IAAI,IAAA,oBAAY,EAAC,UAAU,CAAC,EAAE,CAAC;gBAC7B,kCAAkC;gBAClC,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,EAAS,CAAC;YACtC,CAAC;YACD,IAAI,IAAA,uBAAe,EAAC,UAAU,CAAC,EAAE,CAAC;gBAChC,oCAAoC;gBACpC,OAAO,IAAA,mBAAU,EAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAQ,CAAC;YAC9D,CAAC;YACD,IAAI,IAAA,oBAAY,EAAC,UAAU,CAAC,EAAE,CAAC;gBAC7B,iCAAiC;gBACjC,OAAO,EAAS,CAAC;YACnB,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAC9C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,kBAAkB;gBAClB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACN,mBAAmB;gBACnB,MAAM,MAAM,GAAQ,EAAE,CAAC;gBACvB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvC,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAED,YAAY;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;;AA9YH,4BAqeC;AAlWC;;;;;;GAMG;AACI,oBAAW,GAAG,CAAC,EACpB,cAAc,EACd,WAAW,EACX,GAAG,MAAM,EACU,EAAE,EAAE;IACvB,OAAO,IAAI,QAAQ,CACjB;QACE,GAAG,MAAM;QACT,WAAW,EAAE,IAAI,oBAAU,CACzB,WAAW,CAAC,UAAU,EACtB,WAAW,CAAC,SAAS,CACtB;KACF,EACD;QACE,cAAc;KACf,CACF,CAAC;AACJ,CAAC,AAjBiB,CAiBhB;AAEK,iBAAQ,GAAG,CAAC,MAAgB,EAAE,EAAE;IACrC,OAAO,uCAA4B,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACxD,CAAC,AAFc,CAEb"} \ No newline at end of file diff --git a/lib/commonjs/sdk/permit/permit.z.d.ts b/lib/commonjs/sdk/permit/permit.z.d.ts new file mode 100644 index 0000000..ff37d75 --- /dev/null +++ b/lib/commonjs/sdk/permit/permit.z.d.ts @@ -0,0 +1,315 @@ +import { z } from "zod"; +/** + * Validator for the params used when creating a fresh PermitV2 + * Has defaults added that will be populated in the options object + * Signatures superRefinement checks only the recipient, sealingPair and signatures are not necessary in the Permit params + */ +export declare const PermitV2ParamsValidator: z.ZodEffects>; + type: z.ZodEnum<["self", "sharing", "recipient"]>; + issuer: z.ZodEffects, string, string>; + expiration: z.ZodDefault>; + contracts: z.ZodDefault>>; + projects: z.ZodDefault>>; + recipient: z.ZodEffects>, string, string | undefined>; + validatorId: z.ZodDefault>; + validatorContract: z.ZodEffects>, string, string | undefined>; + sealingPair: z.ZodOptional>; + issuerSignature: z.ZodDefault>; + recipientSignature: z.ZodDefault>; +}, "strip", z.ZodTypeAny, { + recipient: string; + contracts: string[]; + projects: string[]; + name: string; + type: "self" | "sharing" | "recipient"; + issuer: string; + expiration: number; + validatorId: number; + validatorContract: string; + issuerSignature: string; + recipientSignature: string; + sealingPair?: { + publicKey: string; + privateKey: string; + } | undefined; +}, { + type: "self" | "sharing" | "recipient"; + issuer: string; + recipient?: string | undefined; + contracts?: string[] | undefined; + projects?: string[] | undefined; + name?: string | undefined; + expiration?: number | undefined; + validatorId?: number | undefined; + validatorContract?: string | undefined; + sealingPair?: { + publicKey: string; + privateKey: string; + } | undefined; + issuerSignature?: string | undefined; + recipientSignature?: string | undefined; +}>, { + recipient: string; + contracts: string[]; + projects: string[]; + name: string; + type: "self" | "sharing" | "recipient"; + issuer: string; + expiration: number; + validatorId: number; + validatorContract: string; + issuerSignature: string; + recipientSignature: string; + sealingPair?: { + publicKey: string; + privateKey: string; + } | undefined; +}, { + type: "self" | "sharing" | "recipient"; + issuer: string; + recipient?: string | undefined; + contracts?: string[] | undefined; + projects?: string[] | undefined; + name?: string | undefined; + expiration?: number | undefined; + validatorId?: number | undefined; + validatorContract?: string | undefined; + sealingPair?: { + publicKey: string; + privateKey: string; + } | undefined; + issuerSignature?: string | undefined; + recipientSignature?: string | undefined; +}>, { + recipient: string; + contracts: string[]; + projects: string[]; + name: string; + type: "self" | "sharing" | "recipient"; + issuer: string; + expiration: number; + validatorId: number; + validatorContract: string; + issuerSignature: string; + recipientSignature: string; + sealingPair?: { + publicKey: string; + privateKey: string; + } | undefined; +}, { + type: "self" | "sharing" | "recipient"; + issuer: string; + recipient?: string | undefined; + contracts?: string[] | undefined; + projects?: string[] | undefined; + name?: string | undefined; + expiration?: number | undefined; + validatorId?: number | undefined; + validatorContract?: string | undefined; + sealingPair?: { + publicKey: string; + privateKey: string; + } | undefined; + issuerSignature?: string | undefined; + recipientSignature?: string | undefined; +}>, { + recipient: string; + contracts: string[]; + projects: string[]; + name: string; + type: "self" | "sharing" | "recipient"; + issuer: string; + expiration: number; + validatorId: number; + validatorContract: string; + issuerSignature: string; + recipientSignature: string; + sealingPair?: { + publicKey: string; + privateKey: string; + } | undefined; +}, { + type: "self" | "sharing" | "recipient"; + issuer: string; + recipient?: string | undefined; + contracts?: string[] | undefined; + projects?: string[] | undefined; + name?: string | undefined; + expiration?: number | undefined; + validatorId?: number | undefined; + validatorContract?: string | undefined; + sealingPair?: { + publicKey: string; + privateKey: string; + } | undefined; + issuerSignature?: string | undefined; + recipientSignature?: string | undefined; +}>; +/** + * Validator for a PermitV2 that is expected to be fully formed + * Does not allow optional values or offer defaults + * Validates that the correct signatures are populated + * Validates sealingPair is populated + */ +export declare const FullyFormedPermitV2Validator: z.ZodEffects>; + type: z.ZodEnum<["self", "sharing", "recipient"]>; + issuer: z.ZodEffects, string, string>; + expiration: z.ZodDefault>; + contracts: z.ZodDefault>>; + projects: z.ZodDefault>>; + recipient: z.ZodEffects>, string, string | undefined>; + validatorId: z.ZodDefault>; + validatorContract: z.ZodEffects>, string, string | undefined>; + sealingPair: z.ZodObject<{ + privateKey: z.ZodString; + publicKey: z.ZodString; + }, "strip", z.ZodTypeAny, { + publicKey: string; + privateKey: string; + }, { + publicKey: string; + privateKey: string; + }>; + issuerSignature: z.ZodDefault>; + recipientSignature: z.ZodDefault>; +}, "strip", z.ZodTypeAny, { + recipient: string; + contracts: string[]; + projects: string[]; + name: string; + type: "self" | "sharing" | "recipient"; + issuer: string; + expiration: number; + validatorId: number; + validatorContract: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + issuerSignature: string; + recipientSignature: string; +}, { + type: "self" | "sharing" | "recipient"; + issuer: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + recipient?: string | undefined; + contracts?: string[] | undefined; + projects?: string[] | undefined; + name?: string | undefined; + expiration?: number | undefined; + validatorId?: number | undefined; + validatorContract?: string | undefined; + issuerSignature?: string | undefined; + recipientSignature?: string | undefined; +}>, { + recipient: string; + contracts: string[]; + projects: string[]; + name: string; + type: "self" | "sharing" | "recipient"; + issuer: string; + expiration: number; + validatorId: number; + validatorContract: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + issuerSignature: string; + recipientSignature: string; +}, { + type: "self" | "sharing" | "recipient"; + issuer: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + recipient?: string | undefined; + contracts?: string[] | undefined; + projects?: string[] | undefined; + name?: string | undefined; + expiration?: number | undefined; + validatorId?: number | undefined; + validatorContract?: string | undefined; + issuerSignature?: string | undefined; + recipientSignature?: string | undefined; +}>, { + recipient: string; + contracts: string[]; + projects: string[]; + name: string; + type: "self" | "sharing" | "recipient"; + issuer: string; + expiration: number; + validatorId: number; + validatorContract: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + issuerSignature: string; + recipientSignature: string; +}, { + type: "self" | "sharing" | "recipient"; + issuer: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + recipient?: string | undefined; + contracts?: string[] | undefined; + projects?: string[] | undefined; + name?: string | undefined; + expiration?: number | undefined; + validatorId?: number | undefined; + validatorContract?: string | undefined; + issuerSignature?: string | undefined; + recipientSignature?: string | undefined; +}>, { + recipient: string; + contracts: string[]; + projects: string[]; + name: string; + type: "self" | "sharing" | "recipient"; + issuer: string; + expiration: number; + validatorId: number; + validatorContract: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + issuerSignature: string; + recipientSignature: string; +}, { + type: "self" | "sharing" | "recipient"; + issuer: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + recipient?: string | undefined; + contracts?: string[] | undefined; + projects?: string[] | undefined; + name?: string | undefined; + expiration?: number | undefined; + validatorId?: number | undefined; + validatorContract?: string | undefined; + issuerSignature?: string | undefined; + recipientSignature?: string | undefined; +}>; +//# sourceMappingURL=permit.z.d.ts.map \ No newline at end of file diff --git a/lib/commonjs/sdk/permit/permit.z.d.ts.map b/lib/commonjs/sdk/permit/permit.z.d.ts.map new file mode 100644 index 0000000..6345ffb --- /dev/null +++ b/lib/commonjs/sdk/permit/permit.z.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"permit.z.d.ts","sourceRoot":"","sources":["../../../../src/sdk/permit/permit.z.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoKxB;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASjC,CAAC;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUtC,CAAC"} \ No newline at end of file diff --git a/lib/commonjs/sdk/permit/permit.z.js b/lib/commonjs/sdk/permit/permit.z.js new file mode 100644 index 0000000..c7f142c --- /dev/null +++ b/lib/commonjs/sdk/permit/permit.z.js @@ -0,0 +1,172 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.FullyFormedPermitV2Validator = exports.PermitV2ParamsValidator = void 0; +const ethers_1 = require("ethers"); +const zod_1 = require("zod"); +const SerializedSealingPair = zod_1.z.object({ + privateKey: zod_1.z.string(), + publicKey: zod_1.z.string(), +}); +const zPermitV2WithDefaults = zod_1.z.object({ + name: zod_1.z.string().optional().default("Unnamed Permit"), + type: zod_1.z.enum(["self", "sharing", "recipient"]), + issuer: zod_1.z + .string() + .refine((val) => (0, ethers_1.isAddress)(val), { + message: "PermitV2 issuer :: invalid address", + }) + .refine((val) => val !== ethers_1.ZeroAddress, { + message: "PermitV2 issuer :: must not be zeroAddress", + }), + expiration: zod_1.z.number().optional().default(1000000000000), + contracts: zod_1.z.array(zod_1.z.string()).optional().default([]), + projects: zod_1.z.array(zod_1.z.string()).optional().default([]), + recipient: zod_1.z + .string() + .optional() + .default(ethers_1.ZeroAddress) + .refine((val) => (0, ethers_1.isAddress)(val), { + message: "PermitV2 recipient :: invalid address", + }), + validatorId: zod_1.z.number().optional().default(0), + validatorContract: zod_1.z + .string() + .optional() + .default(ethers_1.ZeroAddress) + .refine((val) => (0, ethers_1.isAddress)(val), { + message: "PermitV2 validatorContract :: invalid address", + }), + sealingPair: SerializedSealingPair.optional(), + issuerSignature: zod_1.z.string().optional().default("0x"), + recipientSignature: zod_1.z.string().optional().default("0x"), +}); +/** + * Ensures that this Permit will provide access to a non-zero amount of contracts + * by ensuring that `contracts` and `projects` aren't both empty arrays. + */ +const PermitV2RefineAccess = [ + (data) => { + return data.contracts.length + data.projects.length > 0; + }, + { + message: "PermitV2 access :: at least one contract or project must be accessible.", + path: ["contracts", "projects"], + }, +]; +/** + * Permits allow a hook into an optional external validator contract, + * this check ensures that IF an external validator is applied, that both `validatorId` and `validatorContract` are populated, + * ELSE ensures that both `validatorId` and `validatorContract` are empty + */ +const PermitV2RefineValidator = [ + (data) => (data.validatorId !== 0 && data.validatorContract !== ethers_1.ZeroAddress) || + (data.validatorId === 0 && data.validatorContract === ethers_1.ZeroAddress), + { + message: "PermitV2 external validator :: validatorId and validatorContract must either both be set or both be unset.", + path: ["validatorId", "validatorContract"], + }, +]; +/** + * SuperRefinement that checks a PermitV2s signatures + * checkRecipient - whether to validate that `recipient` is empty for permit with type , and populated for + * checkSealingPair - only the fully formed permit requires the sealing pair, it can be optional for permitV2 create params + * checkExistingSignatures - not optional - checks that the permit's type matches the populated signature fields + * checkSigned - checks that the active user's signature has been signed and added. -> issuerSignature, -> recipientSignature + */ +const PermitV2SignaturesSuperRefinement = (options) => { + return (data, ctx) => { + // Check Recipient + // If type , `PermitV2.recipient` must be zeroAddress + // If type , `PermitV2.recipient` must not be zeroAddress + if (options.checkRecipient) { + if (data.type === "self" && data.recipient !== ethers_1.ZeroAddress) + ctx.addIssue({ + code: zod_1.z.ZodIssueCode.custom, + path: ["recipient"], + message: `PermitV2 (type '${data.type}') recipient :: must be empty (zeroAddress)`, + }); + if ((data.type === "recipient" || data.type === "sharing") && + data.recipient === ethers_1.ZeroAddress) { + ctx.addIssue({ + code: zod_1.z.ZodIssueCode.custom, + path: ["recipient"], + message: `PermitV2 (type '${data.type}') recipient :: must not be empty`, + }); + } + } + // Check Sealing Pair + if (options.checkSealingPair && data.sealingPair == null) + ctx.addIssue({ + code: zod_1.z.ZodIssueCode.custom, + path: ["sealingPair"], + message: `PermitV2 sealingPair :: must not be empty`, + }); + // Check existing signatures match type (not checking this user's signature, but the other signature) + // If type , `PermitV2.recipientSignature` must be empty + // If type , `PermitV2.issuerSignature` must not be empty + if ((data.type === "self" || data.type === "sharing") && + data.recipientSignature !== "0x") { + ctx.addIssue({ + code: zod_1.z.ZodIssueCode.custom, + path: ["recipientSignature"], + message: `PermitV2 (type '${data.type}') recipientSignature :: should not be populated by the issuer`, + }); + } + if (data.type === "recipient" && data.issuerSignature === "0x") { + ctx.addIssue({ + code: zod_1.z.ZodIssueCode.custom, + path: ["issuerSignature"], + message: `PermitV2 (type 'recipient') issuerSignature :: \`issuer\` must sign the PermitV2 before sharing it with \`recipient\``, + }); + } + // Check Signed + // If type , `PermitV2.issuerSignature` must not be empty + // If type , `PermitV2.recipientSignature` must not be empty + if (options.checkSigned) { + if ((data.type === "self" || data.type === "sharing") && + data.issuerSignature === "0x") + ctx.addIssue({ + code: zod_1.z.ZodIssueCode.custom, + path: ["issuerSignature"], + message: `PermitV2 (type '${data.type}') issuerSignature :: must be populated with issuer's signature. Use \`PermitV2.sign\` or create permit with \`PermitV2.createAndSign\``, + }); + if (data.type === "recipient" && data.recipientSignature === "0x") { + ctx.addIssue({ + code: zod_1.z.ZodIssueCode.custom, + path: ["recipientSignature"], + message: `PermitV2 (type 'recipient') recipientSignature :: must be populated with recipient's signature. Use \`PermitV2.sign\` or create permit with \`PermitV2.createAndSign\``, + }); + } + } + return; + }; +}; +/** + * Validator for the params used when creating a fresh PermitV2 + * Has defaults added that will be populated in the options object + * Signatures superRefinement checks only the recipient, sealingPair and signatures are not necessary in the Permit params + */ +exports.PermitV2ParamsValidator = zPermitV2WithDefaults + .refine(...PermitV2RefineAccess) + .refine(...PermitV2RefineValidator) + .superRefine(PermitV2SignaturesSuperRefinement({ + checkRecipient: true, + checkSealingPair: false, // SealingPair not required when creating a fresh permit + checkSigned: false, // Signature not required when creating a fresh permit +})); +/** + * Validator for a PermitV2 that is expected to be fully formed + * Does not allow optional values or offer defaults + * Validates that the correct signatures are populated + * Validates sealingPair is populated + */ +exports.FullyFormedPermitV2Validator = zPermitV2WithDefaults + .required() + .refine(...PermitV2RefineAccess) + .refine(...PermitV2RefineValidator) + .superRefine(PermitV2SignaturesSuperRefinement({ + checkRecipient: true, + checkSealingPair: true, + checkSigned: true, +})); +//# sourceMappingURL=permit.z.js.map \ No newline at end of file diff --git a/lib/commonjs/sdk/permit/permit.z.js.map b/lib/commonjs/sdk/permit/permit.z.js.map new file mode 100644 index 0000000..320f459 --- /dev/null +++ b/lib/commonjs/sdk/permit/permit.z.js.map @@ -0,0 +1 @@ +{"version":3,"file":"permit.z.js","sourceRoot":"","sources":["../../../../src/sdk/permit/permit.z.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/commonjs/sdk/permit/store.d.ts b/lib/commonjs/sdk/permit/store.d.ts new file mode 100644 index 0000000..422843a --- /dev/null +++ b/lib/commonjs/sdk/permit/store.d.ts @@ -0,0 +1,62 @@ +import { SerializedPermitV2 } from "../../types"; +import { PermitV2 } from "./permit"; +type AccountRecord = Record; +type HashRecord = Record; +type PermitsStore = { + permits: AccountRecord>; + activePermitHash: AccountRecord; +}; +export declare const _permitStore: Omit, "persist"> & { + persist: { + setOptions: (options: Partial>) => void; + clearStorage: () => void; + rehydrate: () => void | Promise; + hasHydrated: () => boolean; + onHydrate: (fn: (state: PermitsStore) => void) => () => void; + onFinishHydration: (fn: (state: PermitsStore) => void) => () => void; + getOptions: () => Partial>; + }; +}; +export declare const getPermit: (account: string | undefined, hash: string | undefined) => PermitV2 | undefined; +export declare const getActivePermit: (account: string | undefined) => PermitV2 | undefined; +export declare const getPermits: (account: string | undefined) => Record; +export declare const setPermit: (account: string, permitV2: PermitV2) => void; +export declare const removePermit: (account: string, hash: string) => void; +export declare const getActivePermitHash: (account: string | undefined) => string | undefined; +export declare const setActivePermitHash: (account: string, hash: string) => void; +export declare const removeActivePermitHash: (account: string) => void; +export declare const permitStore: { + store: Omit, "persist"> & { + persist: { + setOptions: (options: Partial>) => void; + clearStorage: () => void; + rehydrate: () => void | Promise; + hasHydrated: () => boolean; + onHydrate: (fn: (state: PermitsStore) => void) => () => void; + onFinishHydration: (fn: (state: PermitsStore) => void) => () => void; + getOptions: () => Partial>; + }; + }; + getPermit: (account: string | undefined, hash: string | undefined) => PermitV2 | undefined; + getActivePermit: (account: string | undefined) => PermitV2 | undefined; + getPermits: (account: string | undefined) => Record; + setPermit: (account: string, permitV2: PermitV2) => void; + removePermit: (account: string, hash: string) => void; + getActivePermitHash: (account: string | undefined) => string | undefined; + setActivePermitHash: (account: string, hash: string) => void; + removeActivePermitHash: (account: string) => void; +}; +export {}; +//# sourceMappingURL=store.d.ts.map \ No newline at end of file diff --git a/lib/commonjs/sdk/permit/store.d.ts.map b/lib/commonjs/sdk/permit/store.d.ts.map new file mode 100644 index 0000000..c9938ae --- /dev/null +++ b/lib/commonjs/sdk/permit/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/sdk/permit/store.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,KAAK,aAAa,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC1C,KAAK,UAAU,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAEvC,KAAK,YAAY,GAAG;IAClB,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC,CAAC;IACnE,gBAAgB,EAAE,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACrD,CAAC;AAIF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;CAQxB,CAAC;AAIF,eAAO,MAAM,SAAS,YACX,MAAM,GAAG,SAAS,QACrB,MAAM,GAAG,SAAS,KACvB,QAAQ,GAAG,SAOb,CAAC;AAEF,eAAO,MAAM,eAAe,YACjB,MAAM,GAAG,SAAS,KAC1B,QAAQ,GAAG,SAKb,CAAC;AAEF,eAAO,MAAM,UAAU,YACZ,MAAM,GAAG,SAAS,KAC1B,OAAO,MAAM,EAAE,QAAQ,CAUzB,CAAC;AAEF,eAAO,MAAM,SAAS,YAAa,MAAM,YAAY,QAAQ,SAO5D,CAAC;AAEF,eAAO,MAAM,YAAY,YAAa,MAAM,QAAQ,MAAM,SAMzD,CAAC;AAIF,eAAO,MAAM,mBAAmB,YACrB,MAAM,GAAG,SAAS,KAC1B,MAAM,GAAG,SAGX,CAAC;AAEF,eAAO,MAAM,mBAAmB,YAAa,MAAM,QAAQ,MAAM,SAMhE,CAAC;AAEF,eAAO,MAAM,sBAAsB,YAAa,MAAM,SAMrD,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;yBA5Eb,MAAM,GAAG,SAAS,QACrB,MAAM,GAAG,SAAS,KACvB,QAAQ,GAAG,SAAS;+BAUZ,MAAM,GAAG,SAAS,KAC1B,QAAQ,GAAG,SAAS;0BAQZ,MAAM,GAAG,SAAS,KAC1B,OAAO,MAAM,EAAE,QAAQ,CAAC;yBAYQ,MAAM,YAAY,QAAQ;4BASvB,MAAM,QAAQ,MAAM;mCAW/C,MAAM,GAAG,SAAS,KAC1B,MAAM,GAAG,SAAS;mCAKwB,MAAM,QAAQ,MAAM;sCAQjB,MAAM;CAoBrD,CAAC"} \ No newline at end of file diff --git a/lib/commonjs/sdk/permit/store.js b/lib/commonjs/sdk/permit/store.js new file mode 100644 index 0000000..9b5c000 --- /dev/null +++ b/lib/commonjs/sdk/permit/store.js @@ -0,0 +1,85 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.permitStore = exports.removeActivePermitHash = exports.setActivePermitHash = exports.getActivePermitHash = exports.removePermit = exports.setPermit = exports.getPermits = exports.getActivePermit = exports.getPermit = exports._permitStore = void 0; +const vanilla_1 = require("zustand/vanilla"); +const middleware_1 = require("zustand/middleware"); +const immer_1 = require("immer"); +const permit_1 = require("./permit"); +// Stores generated permits for each user, a hash indicating the active permit for each user, and a list of fheKeys as a cache +// Can be used to create reactive hooks +exports._permitStore = (0, vanilla_1.createStore)()((0, middleware_1.persist)(() => ({ + permits: {}, + activePermitHash: {}, +}), { name: "fhenixjs-permits" })); +// Permit V2 +const getPermit = (account, hash) => { + if (account == null || hash == null) + return; + const savedPermit = exports._permitStore.getState().permits[account]?.[hash]; + if (savedPermit == null) + return; + return permit_1.PermitV2.deserialize(savedPermit); +}; +exports.getPermit = getPermit; +const getActivePermit = (account) => { + if (account == null) + return; + const activePermitHash = exports._permitStore.getState().activePermitHash[account]; + return (0, exports.getPermit)(account, activePermitHash); +}; +exports.getActivePermit = getActivePermit; +const getPermits = (account) => { + if (account == null) + return {}; + return Object.entries(exports._permitStore.getState().permits[account] ?? {}).reduce((acc, [hash, permit]) => { + if (permit == undefined) + return acc; + return { ...acc, [hash]: permit_1.PermitV2.deserialize(permit) }; + }, {}); +}; +exports.getPermits = getPermits; +const setPermit = (account, permitV2) => { + exports._permitStore.setState((0, immer_1.produce)((state) => { + if (state.permits[account] == null) + state.permits[account] = {}; + state.permits[account][permitV2.getHash()] = permitV2.serialize(); + })); +}; +exports.setPermit = setPermit; +const removePermit = (account, hash) => { + exports._permitStore.setState((0, immer_1.produce)((state) => { + state.permits[account][hash] = undefined; + })); +}; +exports.removePermit = removePermit; +// Active Permit Hash +const getActivePermitHash = (account) => { + if (account == null) + return undefined; + return exports._permitStore.getState().activePermitHash[account]; +}; +exports.getActivePermitHash = getActivePermitHash; +const setActivePermitHash = (account, hash) => { + exports._permitStore.setState((0, immer_1.produce)((state) => { + state.activePermitHash[account] = hash; + })); +}; +exports.setActivePermitHash = setActivePermitHash; +const removeActivePermitHash = (account) => { + exports._permitStore.setState((0, immer_1.produce)((state) => { + state.activePermitHash[account] = undefined; + })); +}; +exports.removeActivePermitHash = removeActivePermitHash; +exports.permitStore = { + store: exports._permitStore, + getPermit: exports.getPermit, + getActivePermit: exports.getActivePermit, + getPermits: exports.getPermits, + setPermit: exports.setPermit, + removePermit: exports.removePermit, + getActivePermitHash: exports.getActivePermitHash, + setActivePermitHash: exports.setActivePermitHash, + removeActivePermitHash: exports.removeActivePermitHash, +}; +//# sourceMappingURL=store.js.map \ No newline at end of file diff --git a/lib/commonjs/sdk/permit/store.js.map b/lib/commonjs/sdk/permit/store.js.map new file mode 100644 index 0000000..262f087 --- /dev/null +++ b/lib/commonjs/sdk/permit/store.js.map @@ -0,0 +1 @@ +{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../src/sdk/permit/store.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/commonjs/sdk/store.d.ts b/lib/commonjs/sdk/store.d.ts new file mode 100644 index 0000000..17ff538 --- /dev/null +++ b/lib/commonjs/sdk/store.d.ts @@ -0,0 +1,45 @@ +import { TfheCompactPublicKey } from "./fhe/fhe"; +import { AbstractProvider, AbstractSigner, InitializationParams, PermitV2AccessRequirements } from "../types"; +type ChainRecord = Record; +type SecurityZoneRecord = Record; +type SdkStoreProviderInitialization = { + providerInitialized: false; + signer: never; + account: never; +} | { + providerInitialized: true; + provider: AbstractProvider; + chainId: string; +}; +type SdkStoreSignerInitialization = { + signerInitialized: false; + signer: never; + account: never; +} | { + signerInitialized: true; + signer: AbstractSigner; + account: string; +}; +export type SdkStore = SdkStoreProviderInitialization & SdkStoreSignerInitialization & { + provider: AbstractProvider; + chainId: string; + fheKeysInitialized: boolean; + securityZones: number[]; + fheKeys: ChainRecord>; + accessRequirements: PermitV2AccessRequirements; + coFheUrl: string | undefined; +}; +export declare const _sdkStore: import("zustand/vanilla").StoreApi; +export declare const _store_getConnectedChainFheKey: (securityZone?: number) => TfheCompactPublicKey | undefined; +export declare const _store_setFheKey: (chainId: string | undefined, securityZone: number | undefined, fheKey: TfheCompactPublicKey | undefined) => void; +export declare const _store_initialize: (params: InitializationParams) => Promise; +/** + * Retrieves the FHE public key from the provider. + * If the key already exists in the store it is returned, else it is fetched, stored, and returned + * @param {string} chainId - The chain to fetch the FHE key for, if no chainId provided, undefined is returned + * @param securityZone - The security zone for which to retrieve the key (default 0). + * @returns {Promise} - The retrieved public key. + */ +export declare const _store_fetchFheKey: (chainId: string, securityZone?: number, forceFetch?: boolean) => Promise; +export {}; +//# sourceMappingURL=store.d.ts.map \ No newline at end of file diff --git a/lib/commonjs/sdk/store.d.ts.map b/lib/commonjs/sdk/store.d.ts.map new file mode 100644 index 0000000..9bf72a2 --- /dev/null +++ b/lib/commonjs/sdk/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/sdk/store.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAIjD,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,0BAA0B,EAC3B,MAAM,UAAU,CAAC;AAElB,KAAK,WAAW,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACxC,KAAK,kBAAkB,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAE/C,KAAK,8BAA8B,GAC/B;IACE,mBAAmB,EAAE,KAAK,CAAC;IAC3B,MAAM,EAAE,KAAK,CAAC;IACd,OAAO,EAAE,KAAK,CAAC;CAChB,GACD;IACE,mBAAmB,EAAE,IAAI,CAAC;IAC1B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEN,KAAK,4BAA4B,GAC7B;IACE,iBAAiB,EAAE,KAAK,CAAC;IACzB,MAAM,EAAE,KAAK,CAAC;IACd,OAAO,EAAE,KAAK,CAAC;CAChB,GACD;IACE,iBAAiB,EAAE,IAAI,CAAC;IACxB,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEN,MAAM,MAAM,QAAQ,GAAG,8BAA8B,GACnD,4BAA4B,GAAG;IAC7B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAEhB,kBAAkB,EAAE,OAAO,CAAC;IAE5B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,WAAW,CAAC,kBAAkB,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC;IACjE,kBAAkB,EAAE,0BAA0B,CAAC;IAE/C,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B,CAAC;AAEJ,eAAO,MAAM,SAAS,8CAsBrB,CAAC;AAgBF,eAAO,MAAM,8BAA8B,6BAExC,oBAAoB,GAAG,SAUzB,CAAC;AAEF,eAAO,MAAM,gBAAgB,YAClB,MAAM,GAAG,SAAS,gBACb,MAAM,GAAG,SAAS,UACxB,oBAAoB,GAAG,SAAS,SAUzC,CAAC;AAsBF,eAAO,MAAM,iBAAiB,WAAkB,oBAAoB,kBAkEnE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,YACpB,MAAM,iBACD,MAAM,2BAEnB,QAAQ,oBAAoB,CA2D9B,CAAC"} \ No newline at end of file diff --git a/lib/commonjs/sdk/store.js b/lib/commonjs/sdk/store.js new file mode 100644 index 0000000..cd72a6c --- /dev/null +++ b/lib/commonjs/sdk/store.js @@ -0,0 +1,171 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports._store_fetchFheKey = exports._store_initialize = exports._store_setFheKey = exports._store_getConnectedChainFheKey = exports._sdkStore = void 0; +/* eslint-disable @typescript-eslint/no-explicit-any */ +const vanilla_1 = require("zustand/vanilla"); +const immer_1 = require("immer"); +const fhe_1 = require("./fhe/fhe"); +const utils_1 = require("./utils"); +const utils_hardhat_1 = require("./utils.hardhat"); +const consts_1 = require("./consts"); +exports._sdkStore = (0, vanilla_1.createStore)(() => ({ + fheKeysInitialized: false, + securityZones: [0], + fheKeys: {}, + accessRequirements: { + contracts: [], + projects: [], + }, + coFheUrl: undefined, + providerInitialized: false, + provider: undefined, + chainId: undefined, + signerInitialized: false, + signer: undefined, + account: undefined, +})); +// Store getters / setters +const _store_getFheKey = (chainId, securityZone = 0) => { + if (chainId == null || securityZone == null) + return undefined; + const serialized = exports._sdkStore.getState().fheKeys[chainId]?.[securityZone]; + if (serialized == null) + return undefined; + return fhe_1.TfheCompactPublicKey.deserialize(serialized); +}; +const _store_getConnectedChainFheKey = (securityZone = 0) => { + const state = exports._sdkStore.getState(); + if (securityZone == null) + return undefined; + if (state.chainId == null) + return undefined; + const serialized = state.fheKeys[state.chainId]?.[securityZone]; + if (serialized == null) + return undefined; + return fhe_1.TfheCompactPublicKey.deserialize(serialized); +}; +exports._store_getConnectedChainFheKey = _store_getConnectedChainFheKey; +const _store_setFheKey = (chainId, securityZone, fheKey) => { + if (chainId == null || securityZone == null) + return; + exports._sdkStore.setState((0, immer_1.produce)((state) => { + if (state.fheKeys[chainId] == null) + state.fheKeys[chainId] = {}; + state.fheKeys[chainId][securityZone] = fheKey?.serialize(); + })); +}; +exports._store_setFheKey = _store_setFheKey; +const getChainIdFromProvider = async (provider) => { + var chainId = null; + try { + chainId = await provider.getChainId(); + } + catch (err) { + const network = await provider.getNetwork(); + chainId = network.chainId; + } + if (chainId == null) + throw new Error("sdk :: getChainIdFromProvider :: provider.getChainId returned a null result, ensure that your provider is connected to a network"); + return chainId; +}; +// External functionality +const _store_initialize = async (params) => { + const { provider, signer, securityZones = [0], contracts: contractRequirements = [], projects: projectRequirements = [], coFheUrl = undefined, } = params; + exports._sdkStore.setState({ + providerInitialized: false, + signerInitialized: false, + accessRequirements: { + contracts: contractRequirements, + projects: projectRequirements, + }, + coFheUrl, + }); + // PROVIDER + // Fetch chain Id from provider + const chainId = await getChainIdFromProvider(provider); + const chainIdChanged = chainId != null && chainId !== exports._sdkStore.getState().chainId; + if (chainId != null && provider != null) { + exports._sdkStore.setState({ providerInitialized: true, provider, chainId }); + } + // SIGNER + // Account is fetched and stored here, the `account` field in the store is used to index which permits belong to which users + // In sdk functions, `state.account != null` is validated, this is a check to ensure that a valid signer has been provided + // which is necessary to interact with permits + const account = await signer?.getAddress(); + if (account != null && signer != null) { + exports._sdkStore.setState({ signerInitialized: true, account, signer }); + } + else { + exports._sdkStore.setState({ + signerInitialized: false, + account: undefined, + signer: undefined, + }); + } + // If chainId, securityZones, or CoFhe enabled changes, update the store and update fheKeys for re-initialization + const securityZonesChanged = securityZones !== exports._sdkStore.getState().securityZones; + if (chainIdChanged || securityZonesChanged) { + exports._sdkStore.setState({ + securityZones, + fheKeysInitialized: false, + }); + } + // Fetch FHE keys (skipped if hardhat) + if (!(0, utils_hardhat_1.chainIsHardhat)(chainId) && !exports._sdkStore.getState().fheKeysInitialized) { + await Promise.all(securityZones.map((securityZone) => (0, exports._store_fetchFheKey)(chainId, securityZone, true))); + } + exports._sdkStore.setState({ fheKeysInitialized: true }); +}; +exports._store_initialize = _store_initialize; +/** + * Retrieves the FHE public key from the provider. + * If the key already exists in the store it is returned, else it is fetched, stored, and returned + * @param {string} chainId - The chain to fetch the FHE key for, if no chainId provided, undefined is returned + * @param securityZone - The security zone for which to retrieve the key (default 0). + * @returns {Promise} - The retrieved public key. + */ +const _store_fetchFheKey = async (chainId, securityZone = 0, forceFetch = false) => { + const storedKey = _store_getFheKey(chainId, securityZone); + if (storedKey != null && !forceFetch) + return storedKey; + const coFheUrl = exports._sdkStore.getState().coFheUrl; + if (coFheUrl == null || typeof coFheUrl !== "string") { + throw new Error("Error initializing fhenixjs; coFheUrl invalid, ensure it is set in `fhenixsdk.initialize`"); + } + let publicKey = undefined; + // Fetch publicKey from CoFhe + try { + // TODO: misspelling? + const res = await fetch(`${coFheUrl}/GetNetworkPublickKey`, { + method: "POST", + body: JSON.stringify({ + SecurityZone: securityZone, + }), + }); + const data = await res.json(); + publicKey = `0x${data.securityZone}`; + } + catch (err) { + throw new Error(`Error initializing fhenixjs; fetching FHE publicKey from CoFHE failed with error ${err}`); + } + if (publicKey == null || typeof publicKey !== "string") { + throw new Error(`Error initializing fhenixjs; FHE publicKey fetched from CoFHE invalid: not a string`); + } + if (publicKey === "0x") { + throw new Error("Error initializing fhenixjs; provided chain is not FHE enabled, no FHE publicKey found"); + } + if (publicKey.length < consts_1.PUBLIC_KEY_LENGTH_MIN) { + throw new Error(`Error initializing fhenixjs; got shorter than expected FHE publicKey: ${publicKey.length}. Expected length >= ${consts_1.PUBLIC_KEY_LENGTH_MIN}`); + } + const buff = (0, utils_1.fromHexString)(publicKey); + try { + const key = fhe_1.TfheCompactPublicKey.deserialize(buff); + (0, exports._store_setFheKey)(chainId, securityZone, key); + return key; + } + catch (err) { + throw new Error(`Error deserializing public key ${err}`); + } +}; +exports._store_fetchFheKey = _store_fetchFheKey; +//# sourceMappingURL=store.js.map \ No newline at end of file diff --git a/lib/commonjs/sdk/store.js.map b/lib/commonjs/sdk/store.js.map new file mode 100644 index 0000000..a0376ab --- /dev/null +++ b/lib/commonjs/sdk/store.js.map @@ -0,0 +1 @@ +{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/sdk/store.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/commonjs/sdk/types.d.ts b/lib/commonjs/sdk/types.d.ts index 6cd2e52..6710430 100644 --- a/lib/commonjs/sdk/types.d.ts +++ b/lib/commonjs/sdk/types.d.ts @@ -36,6 +36,8 @@ export type InstanceParams = { provider: SupportedProvider; ignoreErrors?: boolean; skipPubKeyFetch?: boolean; + cofhe?: boolean; + cofheURL?: string; }; /** * Type of the constructor of the sync fhenix client diff --git a/lib/commonjs/sdk/types.d.ts.map b/lib/commonjs/sdk/types.d.ts.map index ebe7b4d..8cc9368 100644 --- a/lib/commonjs/sdk/types.d.ts.map +++ b/lib/commonjs/sdk/types.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/sdk/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAErE;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAErD;;;GAGG;AACH,oBAAY,eAAe;IACzB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,+BAA+B,GAAG,cAAc,GAAG;IAC7D,aAAa,EAAE,KAAK,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAAC;CACxD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,UAAU,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAGF,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,SAAS,CAAC,IAAI,OAAO,CAAC;IACtB,SAAS,CAAC,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAChE;AAED;;;;;;GAMG;AAEH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,QAAQ,CAuB5E;AAED;;;;;;GAMG;AAEH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,QAAQ,CAM5E;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,aAAc,SAAQ,eAAe;CAAG;AACzD,MAAM,WAAW,cAAe,SAAQ,eAAe;CAAG;AAC1D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAC5D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAC5D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG"} \ No newline at end of file +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/sdk/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAErE;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAErD;;;GAGG;AACH,oBAAY,eAAe;IACzB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,+BAA+B,GAAG,cAAc,GAAG;IAC7D,aAAa,EAAE,KAAK,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAAC;CACxD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,UAAU,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAGF,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,SAAS,CAAC,IAAI,OAAO,CAAC;IACtB,SAAS,CAAC,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAChE;AAED;;;;;;GAMG;AAEH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,QAAQ,CAuB5E;AAED;;;;;;GAMG;AAEH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,QAAQ,CAM5E;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,aAAc,SAAQ,eAAe;CAAG;AACzD,MAAM,WAAW,cAAe,SAAQ,eAAe;CAAG;AAC1D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAC5D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAC5D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG"} \ No newline at end of file diff --git a/lib/commonjs/sdk/types.js.map b/lib/commonjs/sdk/types.js.map index e5072ab..e13b006 100644 --- a/lib/commonjs/sdk/types.js.map +++ b/lib/commonjs/sdk/types.js.map @@ -1 +1 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/sdk/types.ts"],"names":[],"mappings":";;;AAWA;;;GAGG;AACH,IAAY,eASX;AATD,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,kCAAe,CAAA;IACf,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;IACjB,sCAAmB,CAAA;IACnB,sCAAmB,CAAA;IACnB,sCAAmB,CAAA;AACrB,CAAC,EATW,eAAe,+BAAf,eAAe,QAS1B;AA8CD;;;;;;GAMG;AACH,yDAAyD;AACzD,SAAgB,sBAAsB,CAAC,QAA2B;IAChE,IAAI,SAAS,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QACpE,OAAO,CAAC,CAAoB,EAAE,MAAc,EAAE,MAAkB,EAAE,EAAE,CAEhE,CAAC,CAAC,OAOH,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1B,CAAC;SAAM,IAAI,MAAM,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACrE,OAAO,CAAC,CAAoB,EAAE,MAAc,EAAE,MAAkB,EAAE,EAAE,CACjE,CAAC,CAAC,IAAiE,CAClE,MAAM,EACN,MAAM,CACP,CAAC;IACN,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;IACJ,CAAC;AACH,CAAC;AAvBD,wDAuBC;AAED;;;;;;GAMG;AACH,yDAAyD;AACzD,SAAgB,sBAAsB,CAAC,QAA2B;IAChE,IAAI,WAAW,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;QACxE,OAAO,CAAC,CAAoB,EAAE,EAAE,CAAE,CAAC,CAAC,SAA2B,EAAE,CAAC;IACpE,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAND,wDAMC"} \ No newline at end of file +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/sdk/types.ts"],"names":[],"mappings":";;;AAWA;;;GAGG;AACH,IAAY,eASX;AATD,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,kCAAe,CAAA;IACf,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;IACjB,sCAAmB,CAAA;IACnB,sCAAmB,CAAA;IACnB,sCAAmB,CAAA;AACrB,CAAC,EATW,eAAe,+BAAf,eAAe,QAS1B;AAgDD;;;;;;GAMG;AACH,yDAAyD;AACzD,SAAgB,sBAAsB,CAAC,QAA2B;IAChE,IAAI,SAAS,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QACpE,OAAO,CAAC,CAAoB,EAAE,MAAc,EAAE,MAAkB,EAAE,EAAE,CAEhE,CAAC,CAAC,OAOH,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1B,CAAC;SAAM,IAAI,MAAM,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACrE,OAAO,CAAC,CAAoB,EAAE,MAAc,EAAE,MAAkB,EAAE,EAAE,CACjE,CAAC,CAAC,IAAiE,CAClE,MAAM,EACN,MAAM,CACP,CAAC;IACN,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;IACJ,CAAC;AACH,CAAC;AAvBD,wDAuBC;AAED;;;;;;GAMG;AACH,yDAAyD;AACzD,SAAgB,sBAAsB,CAAC,QAA2B;IAChE,IAAI,WAAW,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;QACxE,OAAO,CAAC,CAAoB,EAAE,EAAE,CAAE,CAAC,CAAC,SAA2B,EAAE,CAAC;IACpE,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAND,wDAMC"} \ No newline at end of file diff --git a/lib/commonjs/sdk/utils.d.ts b/lib/commonjs/sdk/utils.d.ts index 629a420..6af02c9 100644 --- a/lib/commonjs/sdk/utils.d.ts +++ b/lib/commonjs/sdk/utils.d.ts @@ -1,4 +1,3 @@ -import { EncryptedNumber } from "./types.js"; export declare const ValidateUintInRange: (value: number, max: number, min: number) => void; export declare const fromHexString: (hexString: string) => Uint8Array; export declare const toHexString: (bytes: Uint8Array) => string; @@ -8,7 +7,5 @@ export declare function isAddress(address: string): void; export declare function toABIEncodedUint32(value: number): string; export declare const stringToUint8Array: (value: string) => Uint8Array; export declare const uint8ArrayToString: (value: Uint8Array) => string; -export declare const chainIsHardhat: (chainId?: string) => boolean; -export declare const hardhatMockUnseal: (value: string) => bigint; -export declare const hardhatMockEncrypt: (value: bigint, securityZone?: number) => EncryptedNumber; +export declare const bigintToUint8Array: (bigNum: bigint) => Uint8Array; //# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/lib/commonjs/sdk/utils.d.ts.map b/lib/commonjs/sdk/utils.d.ts.map index 6634e46..b52d6d2 100644 --- a/lib/commonjs/sdk/utils.d.ts.map +++ b/lib/commonjs/sdk/utils.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/sdk/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,eAAO,MAAM,mBAAmB,UACvB,MAAM,OACR,MAAM,OACN,MAAM,KACV,IAQF,CAAC;AAEF,eAAO,MAAM,aAAa,cAAe,MAAM,KAAG,UAKjD,CAAC;AAEF,eAAO,MAAM,WAAW,UAAW,UAAU,WAC8B,CAAC;AAE5E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAElD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAE5D;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,QAIxC;AA0GD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,UAQ/C;AAID,eAAO,MAAM,kBAAkB,UAAW,MAAM,KAAG,UAElD,CAAC;AACF,eAAO,MAAM,kBAAkB,UAAW,UAAU,KAAG,MAItD,CAAC;AAuBF,eAAO,MAAM,cAAc,aAAc,MAAM,KAAG,OAGjD,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAAW,MAAM,KAAG,MAMjD,CAAC;AAEF,eAAO,MAAM,kBAAkB,UACtB,MAAM,4BAEZ,eAGD,CAAC"} \ No newline at end of file +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/sdk/utils.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,UACvB,MAAM,OACR,MAAM,OACN,MAAM,KACV,IAQF,CAAC;AAEF,eAAO,MAAM,aAAa,cAAe,MAAM,KAAG,UAKjD,CAAC;AAEF,eAAO,MAAM,WAAW,UAAW,UAAU,WAC8B,CAAC;AAE5E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAElD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAE5D;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,QAIxC;AA0GD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,UAQ/C;AAID,eAAO,MAAM,kBAAkB,UAAW,MAAM,KAAG,UAElD,CAAC;AACF,eAAO,MAAM,kBAAkB,UAAW,UAAU,KAAG,MAItD,CAAC;AACF,eAAO,MAAM,kBAAkB,WAAY,MAAM,KAAG,UAgBnD,CAAC"} \ No newline at end of file diff --git a/lib/commonjs/sdk/utils.hardhat.d.ts b/lib/commonjs/sdk/utils.hardhat.d.ts new file mode 100644 index 0000000..53ae8cb --- /dev/null +++ b/lib/commonjs/sdk/utils.hardhat.d.ts @@ -0,0 +1,5 @@ +import { EncryptedNumber } from "../types"; +export declare const chainIsHardhat: (chainId?: string) => boolean; +export declare const hardhatMockUnseal: (value: string) => bigint; +export declare const hardhatMockEncrypt: (value: bigint, securityZone?: number) => EncryptedNumber; +//# sourceMappingURL=utils.hardhat.d.ts.map \ No newline at end of file diff --git a/lib/commonjs/sdk/utils.hardhat.d.ts.map b/lib/commonjs/sdk/utils.hardhat.d.ts.map new file mode 100644 index 0000000..bb6f941 --- /dev/null +++ b/lib/commonjs/sdk/utils.hardhat.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.hardhat.d.ts","sourceRoot":"","sources":["../../../src/sdk/utils.hardhat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAO3C,eAAO,MAAM,cAAc,aAAc,MAAM,KAAG,OAGjD,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAAW,MAAM,KAAG,MAMjD,CAAC;AAEF,eAAO,MAAM,kBAAkB,UACtB,MAAM,4BAEZ,eAGD,CAAC"} \ No newline at end of file diff --git a/lib/commonjs/sdk/utils.hardhat.js b/lib/commonjs/sdk/utils.hardhat.js new file mode 100644 index 0000000..0972e3b --- /dev/null +++ b/lib/commonjs/sdk/utils.hardhat.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.hardhatMockEncrypt = exports.hardhatMockUnseal = exports.chainIsHardhat = void 0; +const utils_1 = require("./utils"); +// HARDHAT MOCKS +// Mock FHE operations are automatically injected on the hardhat network +// The utility functions allow the client / sdk to interact with the mocked FHE ops +const chainIsHardhat = (chainId) => { + if (chainId == null) + return false; + return parseInt(chainId) === 31337; +}; +exports.chainIsHardhat = chainIsHardhat; +const hardhatMockUnseal = (value) => { + let result = BigInt(0); + for (const byteArrayItem of (0, utils_1.stringToUint8Array)(value)) { + result = (result << BigInt(8)) + BigInt(byteArrayItem); + } + return result; +}; +exports.hardhatMockUnseal = hardhatMockUnseal; +const hardhatMockEncrypt = (value, securityZone = 0) => ({ + data: (0, utils_1.bigintToUint8Array)(BigInt(value)), + securityZone: securityZone || 0, +}); +exports.hardhatMockEncrypt = hardhatMockEncrypt; +//# sourceMappingURL=utils.hardhat.js.map \ No newline at end of file diff --git a/lib/commonjs/sdk/utils.hardhat.js.map b/lib/commonjs/sdk/utils.hardhat.js.map new file mode 100644 index 0000000..cd98939 --- /dev/null +++ b/lib/commonjs/sdk/utils.hardhat.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.hardhat.js","sourceRoot":"","sources":["../../../src/sdk/utils.hardhat.ts"],"names":[],"mappings":";;;AACA,mCAAiE;AAEjE,gBAAgB;AAChB,wEAAwE;AACxE,mFAAmF;AAE5E,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAW,EAAE;IAC1D,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IAClC,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC;AACrC,CAAC,CAAC;AAHW,QAAA,cAAc,kBAGzB;AAEK,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAU,EAAE;IACzD,IAAI,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,KAAK,MAAM,aAAa,IAAI,IAAA,0BAAkB,EAAC,KAAK,CAAC,EAAE,CAAC;QACtD,MAAM,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AANW,QAAA,iBAAiB,qBAM5B;AAEK,MAAM,kBAAkB,GAAG,CAChC,KAAa,EACb,YAAY,GAAG,CAAC,EACC,EAAE,CAAC,CAAC;IACrB,IAAI,EAAE,IAAA,0BAAkB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvC,YAAY,EAAE,YAAY,IAAI,CAAC;CAChC,CAAC,CAAC;AANU,QAAA,kBAAkB,sBAM5B"} \ No newline at end of file diff --git a/lib/commonjs/sdk/utils.js b/lib/commonjs/sdk/utils.js index 962e199..92e1bec 100644 --- a/lib/commonjs/sdk/utils.js +++ b/lib/commonjs/sdk/utils.js @@ -1,6 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.hardhatMockEncrypt = exports.hardhatMockUnseal = exports.chainIsHardhat = exports.uint8ArrayToString = exports.stringToUint8Array = exports.toABIEncodedUint32 = exports.isAddress = exports.toBeArray = exports.toBigInt = exports.toHexString = exports.fromHexString = exports.ValidateUintInRange = void 0; +exports.bigintToUint8Array = exports.uint8ArrayToString = exports.stringToUint8Array = exports.toABIEncodedUint32 = exports.isAddress = exports.toBeArray = exports.toBigInt = exports.toHexString = exports.fromHexString = exports.ValidateUintInRange = void 0; const validation_js_1 = require("./validation.js"); const ValidateUintInRange = (value, max, min) => { (0, validation_js_1.isNumber)(value); @@ -145,7 +145,7 @@ const uint8ArrayToString = (value) => { .join(""); }; exports.uint8ArrayToString = uint8ArrayToString; -function bigintToUint8Array(bigNum) { +const bigintToUint8Array = (bigNum) => { const byteLength = 32; const byteArray = new Uint8Array(byteLength); // Create a BigInt mask for each byte @@ -158,27 +158,6 @@ function bigintToUint8Array(bigNum) { bigNum >>= BigInt(8); } return byteArray; -} -// HARDHAT MOCKS -// Mock FHE operations are automatically injected on the hardhat network -// The utility functions allow the client / sdk to interact with the mocked FHE ops -const chainIsHardhat = (chainId) => { - if (chainId == null) - return false; - return parseInt(chainId) === 31337; -}; -exports.chainIsHardhat = chainIsHardhat; -const hardhatMockUnseal = (value) => { - let result = BigInt(0); - for (const byteArrayItem of (0, exports.stringToUint8Array)(value)) { - result = (result << BigInt(8)) + BigInt(byteArrayItem); - } - return result; }; -exports.hardhatMockUnseal = hardhatMockUnseal; -const hardhatMockEncrypt = (value, securityZone = 0) => ({ - data: bigintToUint8Array(BigInt(value)), - securityZone: securityZone || 0, -}); -exports.hardhatMockEncrypt = hardhatMockEncrypt; +exports.bigintToUint8Array = bigintToUint8Array; //# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/lib/commonjs/sdk/utils.js.map b/lib/commonjs/sdk/utils.js.map index 2707c89..2befa08 100644 --- a/lib/commonjs/sdk/utils.js.map +++ b/lib/commonjs/sdk/utils.js.map @@ -1 +1 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/sdk/utils.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/sdk/utils.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/commonjs/types/EIP712.d.ts b/lib/commonjs/types/EIP712.d.ts new file mode 100644 index 0000000..5c53072 --- /dev/null +++ b/lib/commonjs/types/EIP712.d.ts @@ -0,0 +1,19 @@ +export type EIP712Type = { + name: string; + type: string; +}; +export type EIP712Types = Record; +export type EIP712Message = Record; +export type EIP712Domain = { + chainId: number; + name: string; + verifyingContract: string; + version: string; +}; +export type EIP712 = { + domain: EIP712Domain; + message: EIP712Message; + primaryType: string; + types: EIP712Types; +}; +//# sourceMappingURL=EIP712.d.ts.map \ No newline at end of file diff --git a/lib/commonjs/types/EIP712.d.ts.map b/lib/commonjs/types/EIP712.d.ts.map new file mode 100644 index 0000000..cc88f84 --- /dev/null +++ b/lib/commonjs/types/EIP712.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"EIP712.d.ts","sourceRoot":"","sources":["../../../src/types/EIP712.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AACxD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;AACvD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACnD,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,WAAW,CAAC;CACpB,CAAC"} \ No newline at end of file diff --git a/lib/commonjs/types/EIP712.js b/lib/commonjs/types/EIP712.js new file mode 100644 index 0000000..4549da3 --- /dev/null +++ b/lib/commonjs/types/EIP712.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=EIP712.js.map \ No newline at end of file diff --git a/lib/commonjs/types/EIP712.js.map b/lib/commonjs/types/EIP712.js.map new file mode 100644 index 0000000..2d8ac8f --- /dev/null +++ b/lib/commonjs/types/EIP712.js.map @@ -0,0 +1 @@ +{"version":3,"file":"EIP712.js","sourceRoot":"","sources":["../../../src/types/EIP712.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/lib/commonjs/types/base.d.ts b/lib/commonjs/types/base.d.ts new file mode 100644 index 0000000..91cf6a0 --- /dev/null +++ b/lib/commonjs/types/base.d.ts @@ -0,0 +1,36 @@ +/** + * An enumeration of supported encryption types. + * uint8, uint16, and uint32 represent the different sizes of integers that can be encrypted. + */ +export declare enum EncryptionTypes { + bool = "bool", + uint8 = "uint8", + uint16 = "uint16", + uint32 = "uint32", + uint64 = "uint64", + uint128 = "uint128", + uint256 = "uint256", + address = "address" +} +/** + * Mapping of encryption types to their utype integer + */ +export declare enum FheUType { + bool = 13, + uint8 = 0, + uint16 = 1, + uint32 = 2, + uint64 = 3, + uint128 = 4, + uint256 = 5, + address = 12 +} +/** + * List of All FHE uint types (excludes bool and address) + */ +export declare const FheUintUTypes: readonly [FheUType.uint8, FheUType.uint16, FheUType.uint32, FheUType.uint64, FheUType.uint128, FheUType.uint256]; +/** + * List of All FHE types (uints, bool, and address) + */ +export declare const FheAllUTypes: readonly [FheUType.bool, FheUType.uint8, FheUType.uint16, FheUType.uint32, FheUType.uint64, FheUType.uint128, FheUType.uint256, FheUType.address]; +//# sourceMappingURL=base.d.ts.map \ No newline at end of file diff --git a/lib/commonjs/types/base.d.ts.map b/lib/commonjs/types/base.d.ts.map new file mode 100644 index 0000000..8476a65 --- /dev/null +++ b/lib/commonjs/types/base.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/types/base.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,eAAe;IACzB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,oBAAY,QAAQ;IAClB,IAAI,KAAK;IACT,KAAK,IAAI;IACT,MAAM,IAAI;IACV,MAAM,IAAI;IACV,MAAM,IAAI;IACV,OAAO,IAAI;IACX,OAAO,IAAI;IACX,OAAO,KAAK;CACb;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,kHAOhB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,YAAY,mJASf,CAAC"} \ No newline at end of file diff --git a/lib/commonjs/types/base.js b/lib/commonjs/types/base.js new file mode 100644 index 0000000..33eb716 --- /dev/null +++ b/lib/commonjs/types/base.js @@ -0,0 +1,57 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.FheAllUTypes = exports.FheUintUTypes = exports.FheUType = exports.EncryptionTypes = void 0; +/** + * An enumeration of supported encryption types. + * uint8, uint16, and uint32 represent the different sizes of integers that can be encrypted. + */ +var EncryptionTypes; +(function (EncryptionTypes) { + EncryptionTypes["bool"] = "bool"; + EncryptionTypes["uint8"] = "uint8"; + EncryptionTypes["uint16"] = "uint16"; + EncryptionTypes["uint32"] = "uint32"; + EncryptionTypes["uint64"] = "uint64"; + EncryptionTypes["uint128"] = "uint128"; + EncryptionTypes["uint256"] = "uint256"; + EncryptionTypes["address"] = "address"; +})(EncryptionTypes || (exports.EncryptionTypes = EncryptionTypes = {})); +/** + * Mapping of encryption types to their utype integer + */ +var FheUType; +(function (FheUType) { + FheUType[FheUType["bool"] = 13] = "bool"; + FheUType[FheUType["uint8"] = 0] = "uint8"; + FheUType[FheUType["uint16"] = 1] = "uint16"; + FheUType[FheUType["uint32"] = 2] = "uint32"; + FheUType[FheUType["uint64"] = 3] = "uint64"; + FheUType[FheUType["uint128"] = 4] = "uint128"; + FheUType[FheUType["uint256"] = 5] = "uint256"; + FheUType[FheUType["address"] = 12] = "address"; +})(FheUType || (exports.FheUType = FheUType = {})); +/** + * List of All FHE uint types (excludes bool and address) + */ +exports.FheUintUTypes = [ + FheUType.uint8, + FheUType.uint16, + FheUType.uint32, + FheUType.uint64, + FheUType.uint128, + FheUType.uint256, +]; +/** + * List of All FHE types (uints, bool, and address) + */ +exports.FheAllUTypes = [ + FheUType.bool, + FheUType.uint8, + FheUType.uint16, + FheUType.uint32, + FheUType.uint64, + FheUType.uint128, + FheUType.uint256, + FheUType.address, +]; +//# sourceMappingURL=base.js.map \ No newline at end of file diff --git a/lib/commonjs/types/base.js.map b/lib/commonjs/types/base.js.map new file mode 100644 index 0000000..b2a84e1 --- /dev/null +++ b/lib/commonjs/types/base.js.map @@ -0,0 +1 @@ +{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/types/base.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,IAAY,eASX;AATD,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,kCAAe,CAAA;IACf,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;IACjB,sCAAmB,CAAA;IACnB,sCAAmB,CAAA;IACnB,sCAAmB,CAAA;AACrB,CAAC,EATW,eAAe,+BAAf,eAAe,QAS1B;AAED;;GAEG;AACH,IAAY,QASX;AATD,WAAY,QAAQ;IAClB,wCAAS,CAAA;IACT,yCAAS,CAAA;IACT,2CAAU,CAAA;IACV,2CAAU,CAAA;IACV,2CAAU,CAAA;IACV,6CAAW,CAAA;IACX,6CAAW,CAAA;IACX,8CAAY,CAAA;AACd,CAAC,EATW,QAAQ,wBAAR,QAAQ,QASnB;AAED;;GAEG;AACU,QAAA,aAAa,GAAG;IAC3B,QAAQ,CAAC,KAAK;IACd,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,OAAO;IAChB,QAAQ,CAAC,OAAO;CACR,CAAC;AAEX;;GAEG;AACU,QAAA,YAAY,GAAG;IAC1B,QAAQ,CAAC,IAAI;IACb,QAAQ,CAAC,KAAK;IACd,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,OAAO;IAChB,QAAQ,CAAC,OAAO;IAChB,QAAQ,CAAC,OAAO;CACR,CAAC"} \ No newline at end of file diff --git a/lib/commonjs/types/encryptable.d.ts b/lib/commonjs/types/encryptable.d.ts new file mode 100644 index 0000000..54fd5eb --- /dev/null +++ b/lib/commonjs/types/encryptable.d.ts @@ -0,0 +1,61 @@ +import { Primitive, LiteralToPrimitive } from "type-fest"; +import { FheUType } from "./base"; +import { PermissionV2 } from "./permit"; +import { CoFheEncryptedBool, CoFheEncryptedUint8, CoFheEncryptedUint16, CoFheEncryptedUint32, CoFheEncryptedUint64, CoFheEncryptedUint128, CoFheEncryptedUint256, CoFheEncryptedAddress } from "./encrypted"; +export type EncryptableBool = { + data: boolean; + securityZone?: number; + utype: FheUType.bool; +}; +export type EncryptableUint8 = { + data: number; + securityZone?: number; + utype: FheUType.uint8; +}; +export type EncryptableUint16 = { + data: number; + securityZone?: number; + utype: FheUType.uint16; +}; +export type EncryptableUint32 = { + data: number; + securityZone?: number; + utype: FheUType.uint32; +}; +export type EncryptableUint64 = { + data: string | bigint; + securityZone?: number; + utype: FheUType.uint64; +}; +export type EncryptableUint128 = { + data: string | bigint; + securityZone?: number; + utype: FheUType.uint128; +}; +export type EncryptableUint256 = { + data: string | bigint; + securityZone?: number; + utype: FheUType.uint256; +}; +export type EncryptableAddress = { + data: string; + securityZone?: number; + utype: FheUType.address; +}; +export declare const Encryptable: { + readonly bool: (data: EncryptableBool["data"], securityZone?: number) => EncryptableBool; + readonly uint8: (data: EncryptableUint8["data"], securityZone?: number) => EncryptableUint8; + readonly uint16: (data: EncryptableUint16["data"], securityZone?: number) => EncryptableUint16; + readonly uint32: (data: EncryptableUint32["data"], securityZone?: number) => EncryptableUint32; + readonly uint64: (data: EncryptableUint64["data"], securityZone?: number) => EncryptableUint64; + readonly uint128: (data: EncryptableUint128["data"], securityZone?: number) => EncryptableUint128; + readonly uint256: (data: EncryptableUint256["data"], securityZone?: number) => EncryptableUint256; + readonly address: (data: EncryptableAddress["data"], securityZone?: number) => EncryptableAddress; +}; +export type EncryptableItem = EncryptableBool | EncryptableUint8 | EncryptableUint16 | EncryptableUint32 | EncryptableUint64 | EncryptableUint128 | EncryptableUint256 | EncryptableAddress; +export type CoFheEncryptedItemMap = E extends EncryptableBool ? CoFheEncryptedBool : E extends EncryptableUint8 ? CoFheEncryptedUint8 : E extends EncryptableUint16 ? CoFheEncryptedUint16 : E extends EncryptableUint32 ? CoFheEncryptedUint32 : E extends EncryptableUint64 ? CoFheEncryptedUint64 : E extends EncryptableUint128 ? CoFheEncryptedUint128 : E extends EncryptableUint256 ? CoFheEncryptedUint256 : E extends EncryptableAddress ? CoFheEncryptedAddress : never; +export type MappedCoFheEncryptedTypes = T extends "permission" ? PermissionV2 : T extends Primitive ? LiteralToPrimitive : T extends EncryptableItem ? CoFheEncryptedItemMap : { + [K in keyof T]: MappedCoFheEncryptedTypes; +}; +export declare function isEncryptableItem(value: any): value is EncryptableItem; +//# sourceMappingURL=encryptable.d.ts.map \ No newline at end of file diff --git a/lib/commonjs/types/encryptable.d.ts.map b/lib/commonjs/types/encryptable.d.ts.map new file mode 100644 index 0000000..c062b31 --- /dev/null +++ b/lib/commonjs/types/encryptable.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"encryptable.d.ts","sourceRoot":"","sources":["../../../src/types/encryptable.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/commonjs/types/encryptable.js b/lib/commonjs/types/encryptable.js new file mode 100644 index 0000000..5aa662b --- /dev/null +++ b/lib/commonjs/types/encryptable.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isEncryptableItem = exports.Encryptable = void 0; +const base_1 = require("./base"); +exports.Encryptable = { + bool: (data, securityZone = 0) => ({ data, securityZone, utype: base_1.FheUType.bool }), + uint8: (data, securityZone = 0) => ({ data, securityZone, utype: base_1.FheUType.uint8 }), + uint16: (data, securityZone = 0) => ({ data, securityZone, utype: base_1.FheUType.uint16 }), + uint32: (data, securityZone = 0) => ({ data, securityZone, utype: base_1.FheUType.uint32 }), + uint64: (data, securityZone = 0) => ({ data, securityZone, utype: base_1.FheUType.uint64 }), + uint128: (data, securityZone = 0) => ({ data, securityZone, utype: base_1.FheUType.uint128 }), + uint256: (data, securityZone = 0) => ({ data, securityZone, utype: base_1.FheUType.uint256 }), + address: (data, securityZone = 0) => ({ data, securityZone, utype: base_1.FheUType.address }), +}; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function isEncryptableItem(value) { + return (typeof value === "object" && + value !== null && + ["string", "number", "bigint", "boolean"].includes(typeof value.data) && + typeof value.securityZone === "number" && + base_1.FheAllUTypes.includes(value.utype)); +} +exports.isEncryptableItem = isEncryptableItem; +//# sourceMappingURL=encryptable.js.map \ No newline at end of file diff --git a/lib/commonjs/types/encryptable.js.map b/lib/commonjs/types/encryptable.js.map new file mode 100644 index 0000000..cd128db --- /dev/null +++ b/lib/commonjs/types/encryptable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"encryptable.js","sourceRoot":"","sources":["../../../src/types/encryptable.ts"],"names":[],"mappings":";;;AACA,iCAAgD;AAsDnC,QAAA,WAAW,GAAG;IACzB,IAAI,EAAE,CAAC,IAA6B,EAAE,YAAY,GAAG,CAAC,EAAE,EAAE,CACxD,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,eAAQ,CAAC,IAAI,EAAE,CAAoB;IACnE,KAAK,EAAE,CAAC,IAA8B,EAAE,YAAY,GAAG,CAAC,EAAE,EAAE,CAC1D,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,eAAQ,CAAC,KAAK,EAAE,CAAqB;IACrE,MAAM,EAAE,CAAC,IAA+B,EAAE,YAAY,GAAG,CAAC,EAAE,EAAE,CAC5D,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,eAAQ,CAAC,MAAM,EAAE,CAAsB;IACvE,MAAM,EAAE,CAAC,IAA+B,EAAE,YAAY,GAAG,CAAC,EAAE,EAAE,CAC5D,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,eAAQ,CAAC,MAAM,EAAE,CAAsB;IACvE,MAAM,EAAE,CAAC,IAA+B,EAAE,YAAY,GAAG,CAAC,EAAE,EAAE,CAC5D,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,eAAQ,CAAC,MAAM,EAAE,CAAsB;IACvE,OAAO,EAAE,CAAC,IAAgC,EAAE,YAAY,GAAG,CAAC,EAAE,EAAE,CAC9D,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,eAAQ,CAAC,OAAO,EAAE,CAAuB;IACzE,OAAO,EAAE,CAAC,IAAgC,EAAE,YAAY,GAAG,CAAC,EAAE,EAAE,CAC9D,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,eAAQ,CAAC,OAAO,EAAE,CAAuB;IACzE,OAAO,EAAE,CAAC,IAAgC,EAAE,YAAY,GAAG,CAAC,EAAE,EAAE,CAC9D,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,eAAQ,CAAC,OAAO,EAAE,CAAuB;CACjE,CAAC;AA0CX,8DAA8D;AAC9D,SAAgB,iBAAiB,CAAC,KAAU;IAC1C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC;QACrE,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;QACtC,mBAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CACnC,CAAC;AACJ,CAAC;AARD,8CAQC"} \ No newline at end of file diff --git a/lib/commonjs/types/encrypted.d.ts b/lib/commonjs/types/encrypted.d.ts new file mode 100644 index 0000000..2e172ad --- /dev/null +++ b/lib/commonjs/types/encrypted.d.ts @@ -0,0 +1,52 @@ +import { FheUType } from "./base"; +export type EncryptedNumber = { + data: Uint8Array; + securityZone: number; +}; +export interface EncryptedBool extends EncryptedNumber { +} +export interface EncryptedUint8 extends EncryptedNumber { +} +export interface EncryptedUint16 extends EncryptedNumber { +} +export interface EncryptedUint32 extends EncryptedNumber { +} +export interface EncryptedUint64 extends EncryptedNumber { +} +export interface EncryptedUint128 extends EncryptedNumber { +} +export interface EncryptedUint256 extends EncryptedNumber { +} +export interface EncryptedAddress extends EncryptedNumber { +} +export type CoFheEncryptedNumber = { + securityZone: number; + hash: bigint; + signature: string; + utype: FheUType; +}; +export type CoFheEncryptedBool = CoFheEncryptedNumber & { + utype: FheUType.bool; +}; +export type CoFheEncryptedUint8 = CoFheEncryptedNumber & { + utype: FheUType.uint8; +}; +export type CoFheEncryptedUint16 = CoFheEncryptedNumber & { + utype: FheUType.uint16; +}; +export type CoFheEncryptedUint32 = CoFheEncryptedNumber & { + utype: FheUType.uint32; +}; +export type CoFheEncryptedUint64 = CoFheEncryptedNumber & { + utype: FheUType.uint64; +}; +export type CoFheEncryptedUint128 = CoFheEncryptedNumber & { + utype: FheUType.uint128; +}; +export type CoFheEncryptedUint256 = CoFheEncryptedNumber & { + utype: FheUType.uint256; +}; +export type CoFheEncryptedAddress = CoFheEncryptedNumber & { + utype: FheUType.address; +}; +//# sourceMappingURL=encrypted.d.ts.map \ No newline at end of file diff --git a/lib/commonjs/types/encrypted.d.ts.map b/lib/commonjs/types/encrypted.d.ts.map new file mode 100644 index 0000000..311438e --- /dev/null +++ b/lib/commonjs/types/encrypted.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"encrypted.d.ts","sourceRoot":"","sources":["../../../src/types/encrypted.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,aAAc,SAAQ,eAAe;CAAG;AACzD,MAAM,WAAW,cAAe,SAAQ,eAAe;CAAG;AAC1D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAC5D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAC5D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAE5D,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;CACjB,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,GAAG;IACtD,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,GAAG;IACvD,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;CACvB,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,GAAG;IACxD,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,GAAG;IACxD,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,GAAG;IACxD,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GAAG;IACzD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GAAG;IACzD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GAAG;IACzD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;CACzB,CAAC"} \ No newline at end of file diff --git a/lib/commonjs/types/encrypted.js b/lib/commonjs/types/encrypted.js new file mode 100644 index 0000000..63d4a1f --- /dev/null +++ b/lib/commonjs/types/encrypted.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=encrypted.js.map \ No newline at end of file diff --git a/lib/commonjs/types/encrypted.js.map b/lib/commonjs/types/encrypted.js.map new file mode 100644 index 0000000..d752f98 --- /dev/null +++ b/lib/commonjs/types/encrypted.js.map @@ -0,0 +1 @@ +{"version":3,"file":"encrypted.js","sourceRoot":"","sources":["../../../src/types/encrypted.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/lib/commonjs/types/index.d.ts b/lib/commonjs/types/index.d.ts new file mode 100644 index 0000000..27bb824 --- /dev/null +++ b/lib/commonjs/types/index.d.ts @@ -0,0 +1,8 @@ +export * from "./encryptable"; +export * from "./encrypted"; +export * from "./permit"; +export * from "./result"; +export * from "./sealed"; +export * from "./base"; +export * from "./sdk"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/lib/commonjs/types/index.d.ts.map b/lib/commonjs/types/index.d.ts.map new file mode 100644 index 0000000..832e292 --- /dev/null +++ b/lib/commonjs/types/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC"} \ No newline at end of file diff --git a/lib/commonjs/types/index.js b/lib/commonjs/types/index.js new file mode 100644 index 0000000..4b4477c --- /dev/null +++ b/lib/commonjs/types/index.js @@ -0,0 +1,24 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./encryptable"), exports); +__exportStar(require("./encrypted"), exports); +__exportStar(require("./permit"), exports); +__exportStar(require("./result"), exports); +__exportStar(require("./sealed"), exports); +__exportStar(require("./base"), exports); +__exportStar(require("./sdk"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/commonjs/types/index.js.map b/lib/commonjs/types/index.js.map new file mode 100644 index 0000000..38a89af --- /dev/null +++ b/lib/commonjs/types/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,8CAA4B;AAC5B,2CAAyB;AACzB,2CAAyB;AACzB,2CAAyB;AACzB,yCAAuB;AACvB,wCAAsB"} \ No newline at end of file diff --git a/lib/commonjs/types/permit.d.ts b/lib/commonjs/types/permit.d.ts new file mode 100644 index 0000000..67198d4 --- /dev/null +++ b/lib/commonjs/types/permit.d.ts @@ -0,0 +1,111 @@ +import { SealingKey } from "../sdk/sealing"; +/** + * Type representing the full PermitV2 + */ +export type PermitV2Interface = { + /** + * Name for this permit, for organization and UI usage, not included in signature. + */ + name: string; + /** + * The type of the PermitV2 (self / sharing) + * (self) Permit that will be signed and used by the issuer + * (sharing) Permit that is signed by the issuer, but intended to be shared with recipient + * (recipient) Permit that has been received, and signed by the recipient + */ + type: "self" | "sharing" | "recipient"; + /** + * (base) User that initially created the permission, target of data fetching + */ + issuer: string; + /** + * (base) Expiration timestamp + */ + expiration: number; + /** + * (base) List of contract addresses that can be accessed with this permission + */ + contracts: string[]; + /** + * (base) List of project identifiers (strings) that can be accessed + */ + projects: string[]; + /** + * (sharing) The user that this permission will be shared with + * ** optional, use `address(0)` to disable ** + */ + recipient: string; + /** + * (issuer defined validation) An id used to query a contract to check this permissions validity + * ** optional, use `0` to disable ** + */ + validatorId: number; + /** + * (issuer defined validation) The contract to query to determine permission validity + * ** optional, user `address(0)` to disable ** + */ + validatorContract: string; + /** + * (base) The publicKey of a sealingPair used to re-encrypt `issuer`s confidential data + * (non-sharing) Populated by `issuer` + * (sharing) Populated by `recipient` + */ + sealingPair: SealingKey; + /** + * (base) `signTypedData` signature created by `issuer`. + * (base) Shared- and Self- permissions differ in signature format: (`sealingKey` absent in shared signature) + * (non-sharing) < issuer, expiration, contracts, projects, recipient, validatorId, validatorContract, sealingKey > + * (sharing) < issuer, expiration, contracts, projects, recipient, validatorId, validatorContract > + */ + issuerSignature: string; + /** + * (sharing) `signTypedData` signature created by `recipient` with format: + * (sharing) < sealingKey, issuerSignature> + * ** required for shared permits ** + */ + recipientSignature: string; +}; +/** + * Optional additional metadata of a PermitV2 + * Can be passed into the constructor, but not necessary + * Useful for deserialization + */ +export type PermitV2Metadata = { + /** + * Chain that this permit was signed on. In part used for mock encrypt/unseal on hardhat network. + * Should not be set manually, included in metadata as part of serialization flows. + */ + _signedChainId: string | undefined; +}; +export type PickPartial = Expand & Partial>>; +export type PermitV2Satisfiers = Expand>; +export type PermitV2Core = Expand & Partial>>; +export type PermitV2Options = Expand> & { + type: "self"; + issuer: string; +}> | Expand> & { + type: "sharing"; + issuer: string; + recipient: string; +}> | Expand & { + type: "recipient"; + issuer: string; + recipient: string; + issuerSignature: string; +}>; +export type SerializedPermitV2 = Omit & PermitV2Metadata & { + sealingPair: { + privateKey: string; + publicKey: string; + }; +}; +/** + * A type representing the PermissionV2 struct that is passed to PermissionedV2.sol to grant encrypted data access. + */ +export type PermissionV2 = Expand & { + sealingKey: string; +}>; +export type Expand = T extends infer O ? { + [K in keyof O]: O[K]; +} : never; +//# sourceMappingURL=permit.d.ts.map \ No newline at end of file diff --git a/lib/commonjs/types/permit.d.ts.map b/lib/commonjs/types/permit.d.ts.map new file mode 100644 index 0000000..60f6112 --- /dev/null +++ b/lib/commonjs/types/permit.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"permit.d.ts","sourceRoot":"","sources":["../../../src/types/permit.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/commonjs/types/permit.js b/lib/commonjs/types/permit.js new file mode 100644 index 0000000..7845809 --- /dev/null +++ b/lib/commonjs/types/permit.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=permit.js.map \ No newline at end of file diff --git a/lib/commonjs/types/permit.js.map b/lib/commonjs/types/permit.js.map new file mode 100644 index 0000000..496764c --- /dev/null +++ b/lib/commonjs/types/permit.js.map @@ -0,0 +1 @@ +{"version":3,"file":"permit.js","sourceRoot":"","sources":["../../../src/types/permit.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/lib/commonjs/types/result.d.ts b/lib/commonjs/types/result.d.ts new file mode 100644 index 0000000..6b65e9c --- /dev/null +++ b/lib/commonjs/types/result.d.ts @@ -0,0 +1,12 @@ +export type Result = { + success: true; + data: T; + error: null; +} | { + success: false; + data: null; + error: E; +}; +export declare const ResultErr: (error: E) => Result; +export declare const ResultOk: (data: T) => Result; +//# sourceMappingURL=result.d.ts.map \ No newline at end of file diff --git a/lib/commonjs/types/result.d.ts.map b/lib/commonjs/types/result.d.ts.map new file mode 100644 index 0000000..dfb4b55 --- /dev/null +++ b/lib/commonjs/types/result.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../../src/types/result.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,IAC5B;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAE,GACvC;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC;AAE7C,eAAO,MAAM,SAAS,gBAAiB,CAAC,KAAG,OAAO,CAAC,EAAE,CAAC,CAIpD,CAAC;AAEH,eAAO,MAAM,QAAQ,eAAgB,CAAC,KAAG,OAAO,CAAC,EAAE,CAAC,CAIlD,CAAC"} \ No newline at end of file diff --git a/lib/commonjs/types/result.js b/lib/commonjs/types/result.js new file mode 100644 index 0000000..3b508a0 --- /dev/null +++ b/lib/commonjs/types/result.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ResultOk = exports.ResultErr = void 0; +const ResultErr = (error) => ({ + success: false, + data: null, + error, +}); +exports.ResultErr = ResultErr; +const ResultOk = (data) => ({ + success: true, + data, + error: null, +}); +exports.ResultOk = ResultOk; +//# sourceMappingURL=result.js.map \ No newline at end of file diff --git a/lib/commonjs/types/result.js.map b/lib/commonjs/types/result.js.map new file mode 100644 index 0000000..da8926e --- /dev/null +++ b/lib/commonjs/types/result.js.map @@ -0,0 +1 @@ +{"version":3,"file":"result.js","sourceRoot":"","sources":["../../../src/types/result.ts"],"names":[],"mappings":";;;AAIO,MAAM,SAAS,GAAG,CAAO,KAAQ,EAAgB,EAAE,CAAC,CAAC;IAC1D,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,IAAI;IACV,KAAK;CACN,CAAC,CAAC;AAJU,QAAA,SAAS,aAInB;AAEI,MAAM,QAAQ,GAAG,CAAO,IAAO,EAAgB,EAAE,CAAC,CAAC;IACxD,OAAO,EAAE,IAAI;IACb,IAAI;IACJ,KAAK,EAAE,IAAI;CACZ,CAAC,CAAC;AAJU,QAAA,QAAQ,YAIlB"} \ No newline at end of file diff --git a/lib/commonjs/types/sdk.d.ts b/lib/commonjs/types/sdk.d.ts new file mode 100644 index 0000000..3d1cc45 --- /dev/null +++ b/lib/commonjs/types/sdk.d.ts @@ -0,0 +1,33 @@ +export interface AbstractProvider { + getChainId(): Promise; + getNetwork(): Promise<{ + chainId: string; + }>; + call(tx: { + to: string; + data: string; + }): Promise; +} +export interface AbstractSigner { + getAddress(): Promise; + signTypedData(domain: object, types: Record>, value: object): Promise; +} +export type PermitV2AccessRequirements = { + contracts: string[]; + projects: string[]; +}; +type PermitV2AccessRequirementsParams = { + contracts?: never[]; + projects: string[]; +} | { + contracts: string[]; + projects?: never[]; +}; +export type InitializationParams = { + provider: AbstractProvider; + signer?: AbstractSigner; + securityZones?: number[]; + coFheUrl?: string; +} & PermitV2AccessRequirementsParams; +export {}; +//# sourceMappingURL=sdk.d.ts.map \ No newline at end of file diff --git a/lib/commonjs/types/sdk.d.ts.map b/lib/commonjs/types/sdk.d.ts.map new file mode 100644 index 0000000..3c42ab1 --- /dev/null +++ b/lib/commonjs/types/sdk.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../../src/types/sdk.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,UAAU,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3C,IAAI,CAAC,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,aAAa,CACX,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EACpC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAAC;CACpB;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,KAAK,gCAAgC,GACjC;IACE,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,GACD;IACE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;CACpB,CAAC;AAEN,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,gCAAgC,CAAC"} \ No newline at end of file diff --git a/lib/commonjs/types/sdk.js b/lib/commonjs/types/sdk.js new file mode 100644 index 0000000..be39684 --- /dev/null +++ b/lib/commonjs/types/sdk.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=sdk.js.map \ No newline at end of file diff --git a/lib/commonjs/types/sdk.js.map b/lib/commonjs/types/sdk.js.map new file mode 100644 index 0000000..5a4b954 --- /dev/null +++ b/lib/commonjs/types/sdk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../../src/types/sdk.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/lib/commonjs/types/sealed.d.ts b/lib/commonjs/types/sealed.d.ts new file mode 100644 index 0000000..69a59c9 --- /dev/null +++ b/lib/commonjs/types/sealed.d.ts @@ -0,0 +1,24 @@ +import { LiteralToPrimitive, Primitive } from "type-fest"; +import { FheUintUTypes, FheUType } from "./base"; +export type SealedBool = { + data: string; + utype: FheUType.bool; +}; +export type SealedUint = { + data: string; + utype: (typeof FheUintUTypes)[number]; +}; +export type SealedAddress = { + data: string; + utype: FheUType.address; +}; +export type SealedItem = SealedBool | SealedUint | SealedAddress; +export type UnsealedItemMap = S extends SealedBool ? boolean : S extends SealedUint ? bigint : S extends SealedAddress ? string : never; +export type MappedUnsealedTypes = T extends Primitive ? LiteralToPrimitive : T extends SealedItem ? UnsealedItemMap : { + [K in keyof T]: MappedUnsealedTypes; +}; +export declare function getAsSealedItem(value: any): SealedItem | undefined; +export declare function isSealedBool(value: SealedItem): boolean; +export declare function isSealedUint(value: SealedItem): boolean; +export declare function isSealedAddress(value: SealedItem): boolean; +//# sourceMappingURL=sealed.d.ts.map \ No newline at end of file diff --git a/lib/commonjs/types/sealed.d.ts.map b/lib/commonjs/types/sealed.d.ts.map new file mode 100644 index 0000000..a089a12 --- /dev/null +++ b/lib/commonjs/types/sealed.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"sealed.d.ts","sourceRoot":"","sources":["../../../src/types/sealed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAgB,aAAa,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAE/D,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;CACvC,CAAC;AACF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,aAAa,CAAC;AAEjE,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,UAAU,IAAI,CAAC,SAAS,UAAU,GACpE,OAAO,GACP,CAAC,SAAS,UAAU,GAClB,MAAM,GACN,CAAC,SAAS,aAAa,GACrB,MAAM,GACN,KAAK,CAAC;AAEd,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GACpD,kBAAkB,CAAC,CAAC,CAAC,GACrB,CAAC,SAAS,UAAU,GAClB,eAAe,CAAC,CAAC,CAAC,GAClB;KACG,CAAC,IAAI,MAAM,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC1C,CAAC;AAIR,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,GAAG,UAAU,GAAG,SAAS,CAqBlE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAEvD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAEvD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAE1D"} \ No newline at end of file diff --git a/lib/commonjs/types/sealed.js b/lib/commonjs/types/sealed.js new file mode 100644 index 0000000..2a6ac06 --- /dev/null +++ b/lib/commonjs/types/sealed.js @@ -0,0 +1,36 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isSealedAddress = exports.isSealedUint = exports.isSealedBool = exports.getAsSealedItem = void 0; +const base_1 = require("./base"); +// Determine if `value` is an instance of a `sealedItem` { data: string, utype: 0-5 | 12 | 13 } +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function getAsSealedItem(value) { + if (Array.isArray(value) && + value.length === 2 && + typeof value[0] === "string" && + base_1.FheAllUTypes.includes(parseInt(`${value[1]}`))) + return { + data: value[0], + utype: value[1], + }; + if (typeof value === "object" && + value !== null && + typeof value.data === "string" && + base_1.FheAllUTypes.includes(value.utype)) + return value; + return undefined; +} +exports.getAsSealedItem = getAsSealedItem; +function isSealedBool(value) { + return parseInt(`${value.utype}`) === base_1.FheUType.bool; +} +exports.isSealedBool = isSealedBool; +function isSealedUint(value) { + return base_1.FheUintUTypes.includes(parseInt(`${value.utype}`)); +} +exports.isSealedUint = isSealedUint; +function isSealedAddress(value) { + return parseInt(`${value.utype}`) === base_1.FheUType.address; +} +exports.isSealedAddress = isSealedAddress; +//# sourceMappingURL=sealed.js.map \ No newline at end of file diff --git a/lib/commonjs/types/sealed.js.map b/lib/commonjs/types/sealed.js.map new file mode 100644 index 0000000..1ea25ed --- /dev/null +++ b/lib/commonjs/types/sealed.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sealed.js","sourceRoot":"","sources":["../../../src/types/sealed.ts"],"names":[],"mappings":";;;AACA,iCAA+D;AAgC/D,+FAA+F;AAC/F,8DAA8D;AAC9D,SAAgB,eAAe,CAAC,KAAU;IACxC,IACE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACpB,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ;QAC5B,mBAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAE9C,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YACd,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;SAChB,CAAC;IAEJ,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,mBAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;QAElC,OAAO,KAAmB,CAAC;IAE7B,OAAO,SAAS,CAAC;AACnB,CAAC;AArBD,0CAqBC;AAED,SAAgB,YAAY,CAAC,KAAiB;IAC5C,OAAO,QAAQ,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,eAAQ,CAAC,IAAI,CAAC;AACtD,CAAC;AAFD,oCAEC;AAED,SAAgB,YAAY,CAAC,KAAiB;IAC5C,OAAO,oBAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC5D,CAAC;AAFD,oCAEC;AAED,SAAgB,eAAe,CAAC,KAAiB;IAC/C,OAAO,QAAQ,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,eAAQ,CAAC,OAAO,CAAC;AACzD,CAAC;AAFD,0CAEC"} \ No newline at end of file diff --git a/lib/commonjs/types/types.d.ts b/lib/commonjs/types/types.d.ts new file mode 100644 index 0000000..0136410 --- /dev/null +++ b/lib/commonjs/types/types.d.ts @@ -0,0 +1,86 @@ +/** + * An enumeration of supported encryption types. + * uint8, uint16, and uint32 represent the different sizes of integers that can be encrypted. + */ +export declare enum EncryptionTypes { + bool = "bool", + uint8 = "uint8", + uint16 = "uint16", + uint32 = "uint32", + uint64 = "uint64", + uint128 = "uint128", + uint256 = "uint256", + address = "address" +} +/** + * Mapping of encryption types to their utype integer + */ +export declare enum FheUType { + bool = 13, + uint8 = 0, + uint16 = 1, + uint32 = 2, + uint64 = 3, + uint128 = 4, + uint256 = 5, + address = 12 +} +/** + * List of All FHE uint types (excludes bool and address) + */ +export declare const FheUintUTypes: readonly [FheUType.uint8, FheUType.uint16, FheUType.uint32, FheUType.uint64, FheUType.uint128, FheUType.uint256]; +/** + * List of All FHE types (uints, bool, and address) + */ +export declare const FheAllUTypes: readonly [FheUType.bool, FheUType.uint8, FheUType.uint16, FheUType.uint32, FheUType.uint64, FheUType.uint128, FheUType.uint256, FheUType.address]; +export type EncryptedNumber = { + data: Uint8Array; + securityZone: number; +}; +export interface EncryptedBool extends EncryptedNumber { +} +export interface EncryptedUint8 extends EncryptedNumber { +} +export interface EncryptedUint16 extends EncryptedNumber { +} +export interface EncryptedUint32 extends EncryptedNumber { +} +export interface EncryptedUint64 extends EncryptedNumber { +} +export interface EncryptedUint128 extends EncryptedNumber { +} +export interface EncryptedUint256 extends EncryptedNumber { +} +export interface EncryptedAddress extends EncryptedNumber { +} +export type CoFheEncryptedNumber = { + securityZone: number; + hash: bigint; + signature: string; + utype: FheUType; +}; +export type CoFheEncryptedBool = CoFheEncryptedNumber & { + utype: FheUType.bool; +}; +export type CoFheEncryptedUint8 = CoFheEncryptedNumber & { + utype: FheUType.uint8; +}; +export type CoFheEncryptedUint16 = CoFheEncryptedNumber & { + utype: FheUType.uint16; +}; +export type CoFheEncryptedUint32 = CoFheEncryptedNumber & { + utype: FheUType.uint32; +}; +export type CoFheEncryptedUint64 = CoFheEncryptedNumber & { + utype: FheUType.uint64; +}; +export type CoFheEncryptedUint128 = CoFheEncryptedNumber & { + utype: FheUType.uint128; +}; +export type CoFheEncryptedUint256 = CoFheEncryptedNumber & { + utype: FheUType.uint256; +}; +export type CoFheEncryptedAddress = CoFheEncryptedNumber & { + utype: FheUType.address; +}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/lib/commonjs/types/types.d.ts.map b/lib/commonjs/types/types.d.ts.map new file mode 100644 index 0000000..85efcd6 --- /dev/null +++ b/lib/commonjs/types/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,eAAe;IACzB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,oBAAY,QAAQ;IAClB,IAAI,KAAK;IACT,KAAK,IAAI;IACT,MAAM,IAAI;IACV,MAAM,IAAI;IACV,MAAM,IAAI;IACV,OAAO,IAAI;IACX,OAAO,IAAI;IACX,OAAO,KAAK;CACb;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,kHAOhB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,YAAY,mJASf,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,aAAc,SAAQ,eAAe;CAAG;AACzD,MAAM,WAAW,cAAe,SAAQ,eAAe;CAAG;AAC1D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAC5D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAC5D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAE5D,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;CACjB,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,GAAG;IACtD,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,GAAG;IACvD,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;CACvB,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,GAAG;IACxD,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,GAAG;IACxD,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,GAAG;IACxD,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GAAG;IACzD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GAAG;IACzD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GAAG;IACzD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;CACzB,CAAC"} \ No newline at end of file diff --git a/lib/commonjs/types/types.js b/lib/commonjs/types/types.js new file mode 100644 index 0000000..bd1bab7 --- /dev/null +++ b/lib/commonjs/types/types.js @@ -0,0 +1,57 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.FheAllUTypes = exports.FheUintUTypes = exports.FheUType = exports.EncryptionTypes = void 0; +/** + * An enumeration of supported encryption types. + * uint8, uint16, and uint32 represent the different sizes of integers that can be encrypted. + */ +var EncryptionTypes; +(function (EncryptionTypes) { + EncryptionTypes["bool"] = "bool"; + EncryptionTypes["uint8"] = "uint8"; + EncryptionTypes["uint16"] = "uint16"; + EncryptionTypes["uint32"] = "uint32"; + EncryptionTypes["uint64"] = "uint64"; + EncryptionTypes["uint128"] = "uint128"; + EncryptionTypes["uint256"] = "uint256"; + EncryptionTypes["address"] = "address"; +})(EncryptionTypes || (exports.EncryptionTypes = EncryptionTypes = {})); +/** + * Mapping of encryption types to their utype integer + */ +var FheUType; +(function (FheUType) { + FheUType[FheUType["bool"] = 13] = "bool"; + FheUType[FheUType["uint8"] = 0] = "uint8"; + FheUType[FheUType["uint16"] = 1] = "uint16"; + FheUType[FheUType["uint32"] = 2] = "uint32"; + FheUType[FheUType["uint64"] = 3] = "uint64"; + FheUType[FheUType["uint128"] = 4] = "uint128"; + FheUType[FheUType["uint256"] = 5] = "uint256"; + FheUType[FheUType["address"] = 12] = "address"; +})(FheUType || (exports.FheUType = FheUType = {})); +/** + * List of All FHE uint types (excludes bool and address) + */ +exports.FheUintUTypes = [ + FheUType.uint8, + FheUType.uint16, + FheUType.uint32, + FheUType.uint64, + FheUType.uint128, + FheUType.uint256, +]; +/** + * List of All FHE types (uints, bool, and address) + */ +exports.FheAllUTypes = [ + FheUType.bool, + FheUType.uint8, + FheUType.uint16, + FheUType.uint32, + FheUType.uint64, + FheUType.uint128, + FheUType.uint256, + FheUType.address, +]; +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/lib/commonjs/types/types.js.map b/lib/commonjs/types/types.js.map new file mode 100644 index 0000000..ffdbb3e --- /dev/null +++ b/lib/commonjs/types/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/types/types.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,IAAY,eASX;AATD,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,kCAAe,CAAA;IACf,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;IACjB,sCAAmB,CAAA;IACnB,sCAAmB,CAAA;IACnB,sCAAmB,CAAA;AACrB,CAAC,EATW,eAAe,+BAAf,eAAe,QAS1B;AAED;;GAEG;AACH,IAAY,QASX;AATD,WAAY,QAAQ;IAClB,wCAAS,CAAA;IACT,yCAAS,CAAA;IACT,2CAAU,CAAA;IACV,2CAAU,CAAA;IACV,2CAAU,CAAA;IACV,6CAAW,CAAA;IACX,6CAAW,CAAA;IACX,8CAAY,CAAA;AACd,CAAC,EATW,QAAQ,wBAAR,QAAQ,QASnB;AAED;;GAEG;AACU,QAAA,aAAa,GAAG;IAC3B,QAAQ,CAAC,KAAK;IACd,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,OAAO;IAChB,QAAQ,CAAC,OAAO;CACR,CAAC;AAEX;;GAEG;AACU,QAAA,YAAY,GAAG;IAC1B,QAAQ,CAAC,IAAI;IACb,QAAQ,CAAC,KAAK;IACd,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,OAAO;IAChB,QAAQ,CAAC,OAAO;IAChB,QAAQ,CAAC,OAAO;CACR,CAAC"} \ No newline at end of file diff --git a/lib/esm/extensions/access_control/permit/index.d.ts b/lib/esm/extensions/access_control/permit/index.d.ts index 4f46b20..86e6f77 100644 --- a/lib/esm/extensions/access_control/permit/index.d.ts +++ b/lib/esm/extensions/access_control/permit/index.d.ts @@ -25,6 +25,7 @@ export type Permit = { */ publicKey: string; }; +export declare const parsePermit: (savedPermit: string) => Permit; export declare const getPermit: (contract: string, provider: SupportedProvider, autoGenerate?: boolean) => Promise; export declare const getAllExistingPermits: (account: string) => Record; export declare const getAllPermits: () => Map; diff --git a/lib/esm/extensions/access_control/permit/index.d.ts.map b/lib/esm/extensions/access_control/permit/index.d.ts.map index 53634b5..51a5dca 100644 --- a/lib/esm/extensions/access_control/permit/index.d.ts.map +++ b/lib/esm/extensions/access_control/permit/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/access_control/permit/index.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAsB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAIzE,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IAEvB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AA2BF,eAAO,MAAM,SAAS,aACV,MAAM,YACN,iBAAiB,iBACb,OAAO,KACpB,QAAQ,MAAM,GAAG,IAAI,CAiBvB,CAAC;AAEF,eAAO,MAAM,qBAAqB,YACvB,MAAM,KACd,OAAO,MAAM,EAAE,MAAM,CAuBvB,CAAC;AAEF,eAAO,MAAM,aAAa,QAAO,IAAI,MAAM,EAAE,MAAM,CA2BlD,CAAC;AAEF,UAAU,2BAA2B;IACnC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7E,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/B;AACD,UAAU,4BAA4B;IACpC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9E,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,MAAM,YAAY,GACpB,4BAA4B,GAC5B,2BAA2B,CAAC;AAsBhC,eAAO,MAAM,cAAc,aACf,MAAM,YACN,iBAAiB,iBACZ,YAAY,KAC1B,QAAQ,MAAM,CAoEhB,CAAC;AAEF,eAAO,MAAM,YAAY,aAAc,MAAM,WAAW,MAAM,KAAG,IAOhE,CAAC;AAEF,eAAO,MAAM,yBAAyB,aAC1B,MAAM,WACP,MAAM,KACd,MAAM,GAAG,SAqBX,CAAC;AAEF,eAAO,MAAM,yBAAyB,WAAY,MAAM,WAAW,MAAM,SAiBxE,CAAC;AAEF,eAAO,MAAM,4BAA4B,aAC7B,MAAM,WACP,MAAM,SAKhB,CAAC"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/access_control/permit/index.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAsB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAIzE,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IAEvB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAWF,eAAO,MAAM,WAAW,gBAAiB,MAAM,KAAG,MAcjD,CAAC;AAEF,eAAO,MAAM,SAAS,aACV,MAAM,YACN,iBAAiB,iBACb,OAAO,KACpB,QAAQ,MAAM,GAAG,IAAI,CAiBvB,CAAC;AAEF,eAAO,MAAM,qBAAqB,YACvB,MAAM,KACd,OAAO,MAAM,EAAE,MAAM,CAuBvB,CAAC;AAEF,eAAO,MAAM,aAAa,QAAO,IAAI,MAAM,EAAE,MAAM,CA2BlD,CAAC;AAEF,UAAU,2BAA2B;IACnC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7E,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/B;AACD,UAAU,4BAA4B;IACpC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9E,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,MAAM,YAAY,GACpB,4BAA4B,GAC5B,2BAA2B,CAAC;AAsBhC,eAAO,MAAM,cAAc,aACf,MAAM,YACN,iBAAiB,iBACZ,YAAY,KAC1B,QAAQ,MAAM,CAoEhB,CAAC;AAEF,eAAO,MAAM,YAAY,aAAc,MAAM,WAAW,MAAM,KAAG,IAOhE,CAAC;AAEF,eAAO,MAAM,yBAAyB,aAC1B,MAAM,WACP,MAAM,KACd,MAAM,GAAG,SAqBX,CAAC;AAEF,eAAO,MAAM,yBAAyB,WAAY,MAAM,WAAW,MAAM,SAiBxE,CAAC;AAEF,eAAO,MAAM,4BAA4B,aAC7B,MAAM,WACP,MAAM,SAKhB,CAAC"} \ No newline at end of file diff --git a/lib/esm/extensions/access_control/permit/index.js b/lib/esm/extensions/access_control/permit/index.js index 08186cd..82d309b 100644 --- a/lib/esm/extensions/access_control/permit/index.js +++ b/lib/esm/extensions/access_control/permit/index.js @@ -2,7 +2,7 @@ import { isAddress } from "../../../sdk/utils.js"; import { determineRequestMethod, determineRequestSigner, } from "../../../sdk/types.js"; import { GenerateSealingKey, SealingKey } from "../../../sdk/sealing.js"; const PERMIT_PREFIX = "Fhenix_saved_permit_"; -const parsePermit = (savedPermit) => { +export const parsePermit = (savedPermit) => { const o = JSON.parse(savedPermit); if (o) { return { diff --git a/lib/esm/extensions/access_control/permit/index.js.map b/lib/esm/extensions/access_control/permit/index.js.map index d023904..f51eb12 100644 --- a/lib/esm/extensions/access_control/permit/index.js.map +++ b/lib/esm/extensions/access_control/permit/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/extensions/access_control/permit/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/extensions/access_control/permit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GAEvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAEzE,MAAM,aAAa,GAAG,sBAAsB,CAAC;AAyC7C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,WAAmB,EAAU,EAAE;IACzD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAqB,CAAC;IACtD,IAAI,CAAC,EAAE,CAAC;QACN,OAAO;YACL,eAAe,EAAE,CAAC,CAAC,eAAe;YAClC,UAAU,EAAE,IAAI,UAAU,CACxB,CAAC,CAAC,UAAU,CAAC,UAAU,EACvB,CAAC,CAAC,UAAU,CAAC,SAAS,CACvB;YACD,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,SAAS,EAAE,KAAK,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE;SACzC,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAC5B,QAAgB,EAChB,QAA2B,EAC3B,eAAwB,IAAI,EACJ,EAAE;IAC1B,SAAS,CAAC,QAAQ,CAAC,CAAC;IACpB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,SAAS,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;IAEzC,MAAM,WAAW,GAAG,yBAAyB,CAC3C,QAAQ,EACR,MAAM,MAAM,CAAC,UAAU,EAAE,CAC1B,CAAC;IAEF,IAAI,WAAW,IAAI,IAAI;QAAE,OAAO,WAAW,CAAC;IAE5C,OAAO,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAClE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,OAAe,EACS,EAAE;IAC1B,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,aAAa,SAAS,OAAO,EAAE,CAAC,CAAC;IAE9D,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC/C,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,UAAU,IAAI,IAAI;YAAE,OAAO;QAE/B,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAEnD,IAAI,SAAS,IAAI,IAAI;YAAE,OAAO;QAE9B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;YACtC,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,GAAwB,EAAE;IACrD,MAAM,OAAO,GAAwB,IAAI,GAAG,EAAE,CAAC;IAE/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YAEhD,wCAAwC;YACxC,yDAAyD;YACzD,qBAAqB;YACrB,sCAAsC;YACtC,2CAA2C;YAC3C,uBAAuB;YACvB,WAAW;YACX,+BAA+B;YAC/B,IAAI;YAEJ,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAE,CAAC,CAAC;gBAC9D,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAChC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAeF,MAAM,IAAI,GAAG,KAAK,EAChB,MAAoB,EACpB,MAAoB,EACpB,KAAkB,EAClB,KAAoB,EACH,EAAE;IACnB,IACE,gBAAgB,IAAI,MAAM;QAC1B,OAAO,MAAM,CAAC,cAAc,IAAI,UAAU,EAC1C,CAAC;QACD,OAAO,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;SAAM,IACL,eAAe,IAAI,MAAM;QACzB,OAAO,MAAM,CAAC,aAAa,IAAI,UAAU,EACzC,CAAC;QACD,OAAO,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,QAAgB,EAChB,QAA2B,EAC3B,YAA2B,EACV,EAAE;IACnB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,aAAa,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAEvD,IAAI,MAAoB,CAAC;IACzB,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,SAAS,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,YAAY,CAAC;IACxB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;IAEjE,MAAM,OAAO,GAAG,MAAM,kBAAkB,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAW;QACxB,KAAK,EAAE;YACL,uDAAuD;YACvD,YAAY,EAAE;gBACZ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAChC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACnC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;gBACpC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE;aAC/C;YACD,wBAAwB;YACxB,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;SACvD;QACD,6FAA6F;QAC7F,gGAAgG;QAChG,sBAAsB;QACtB,yDAAyD;QACzD,WAAW,EAAE,cAAc;QAC3B,MAAM,EAAE;YACN,yEAAyE;YACzE,IAAI,EAAE,mBAAmB,EAAE,cAAc;YACzC,sCAAsC;YACtC,OAAO,EAAE,KAAK,EAAE,mBAAmB;YACnC,mDAAmD;YACnD,OAAO,EAAE,OAAO;YAChB,iGAAiG;YACjG,iBAAiB,EAAE,QAAQ,EAAE,2BAA2B;SACzD;QACD,OAAO,EAAE;YACP,SAAS,EAAE,KAAK,OAAO,CAAC,SAAS,EAAE;SACpC;KACF,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CACvB,MAAM,EACN,SAAS,CAAC,MAAM,EAChB,EAAE,YAAY,EAAE,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,EAC9C,SAAS,CAAC,OAAO,CAClB,CAAC;IAEF,MAAM,MAAM,GAAW;QACrB,eAAe,EAAE,QAAQ;QACzB,UAAU,EAAE,OAAO;QACnB,SAAS,EAAE,MAAM;QACjB,SAAS,EAAE,KAAK,OAAO,CAAC,SAAS,EAAE;QACnC,oBAAoB;QACpB,QAAQ;KACT,CAAC;IAEF,yBAAyB,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,OAAe,EAAQ,EAAE;IACtE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,yBAAyB;QACzB,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,aAAa,GAAG,QAAQ,EAAE,CAAC,CAAC;IAChE,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,aAAa,GAAG,QAAQ,IAAI,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,QAAgB,EAChB,OAAe,EACK,EAAE;IACtB,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACzD,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CACvC,GAAG,aAAa,GAAG,QAAQ,IAAI,OAAO,EAAE,CACzC,CAAC;QACF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,yBAAyB;YACzB,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,aAAa,GAAG,QAAQ,EAAE,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CACvC,GAAG,aAAa,GAAG,QAAQ,IAAI,OAAO,EAAE,CACzC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,WAAW,CAAC,WAAW,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE;IAC3E,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACzD,+DAA+D;QAC/D,MAAM,UAAU,GAAqB;YACnC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,UAAU,EAAE;gBACV,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS;gBACtC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,UAAU;aACzC;YACD,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC;QAEF,MAAM,CAAC,YAAY,CAAC,OAAO,CACzB,GAAG,aAAa,GAAG,MAAM,CAAC,eAAe,IAAI,OAAO,EAAE,EACtD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAC3B,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,QAAgB,EAChB,OAAe,EACf,EAAE;IACF,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACzD,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,aAAa,GAAG,QAAQ,IAAI,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC,CAAC"} \ No newline at end of file diff --git a/lib/esm/fhenix.d.ts b/lib/esm/fhenix.d.ts index 5c9fe8f..af06b16 100644 --- a/lib/esm/fhenix.d.ts +++ b/lib/esm/fhenix.d.ts @@ -1,7 +1,5 @@ -export { FhenixClient, FhenixClientSync } from "./sdk/index.js"; -export { ContractPermits, InstanceParams, SupportedProvider, EncryptionTypes, EncryptedUint64, EncryptedUint128, EncryptedUint256, EncryptedUint32, EncryptedUint16, EncryptedUint8, EncryptedBool, EncryptedNumber, EncryptedAddress, } from "./sdk/types.js"; -export * from "./extensions/access_control/index.js"; export { SealingKey, GenerateSealingKey } from "./sdk/sealing.js"; export { createTfheKeypair, createTfhePublicKey } from "./sdk/keygen.js"; -export * from "./sdk/v2"; +export * from "./types"; +export * from "./sdk"; //# sourceMappingURL=fhenix.d.ts.map \ No newline at end of file diff --git a/lib/esm/fhenix.d.ts.map b/lib/esm/fhenix.d.ts.map index 58d322e..5d854e7 100644 --- a/lib/esm/fhenix.d.ts.map +++ b/lib/esm/fhenix.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"fhenix.d.ts","sourceRoot":"","sources":["../../src/fhenix.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,EACL,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,cAAc,EACd,aAAa,EACb,eAAe,EACf,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAExB,cAAc,sCAAsC,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,cAAc,UAAU,CAAC"} \ No newline at end of file +{"version":3,"file":"fhenix.d.ts","sourceRoot":"","sources":["../../src/fhenix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC"} \ No newline at end of file diff --git a/lib/esm/fhenix.js b/lib/esm/fhenix.js index 482dc58..dd117d0 100644 --- a/lib/esm/fhenix.js +++ b/lib/esm/fhenix.js @@ -1,11 +1,5 @@ -// for mobile -// if (typeof BigInt === "undefined") { -// global.BigInt = require("big-integer"); -// } -export { FhenixClient, FhenixClientSync } from "./sdk/index.js"; -export { EncryptionTypes, } from "./sdk/types.js"; -export * from "./extensions/access_control/index.js"; export { SealingKey, GenerateSealingKey } from "./sdk/sealing.js"; export { createTfheKeypair, createTfhePublicKey } from "./sdk/keygen.js"; -export * from "./sdk/v2"; +export * from "./types"; +export * from "./sdk"; //# sourceMappingURL=fhenix.js.map \ No newline at end of file diff --git a/lib/esm/fhenix.js.map b/lib/esm/fhenix.js.map index b32ac0f..23dcdb5 100644 --- a/lib/esm/fhenix.js.map +++ b/lib/esm/fhenix.js.map @@ -1 +1 @@ -{"version":3,"file":"fhenix.js","sourceRoot":"","sources":["../../src/fhenix.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,uCAAuC;AACvC,4CAA4C;AAC5C,IAAI;AAEJ,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,EAIL,eAAe,GAUhB,MAAM,gBAAgB,CAAC;AAExB,cAAc,sCAAsC,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,cAAc,UAAU,CAAC"} \ No newline at end of file +{"version":3,"file":"fhenix.js","sourceRoot":"","sources":["../../src/fhenix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC"} \ No newline at end of file diff --git a/lib/esm/index.d.ts b/lib/esm/index.d.ts index 2888f0a..cf96ef8 100644 --- a/lib/esm/index.d.ts +++ b/lib/esm/index.d.ts @@ -1,4 +1,6 @@ -import * as fhenixjs from "./fhenix.js"; -export { fhenixjs }; -export * from "./fhenix.js"; +export { SealingKey, GenerateSealingKey } from "./sdk/sealing.js"; +export { createTfheKeypair, createTfhePublicKey } from "./sdk/keygen.js"; +export * from "./types"; +export * from "./sdk/permit"; +export * from "./sdk"; //# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/lib/esm/index.d.ts.map b/lib/esm/index.d.ts.map index 4827dd9..a6db280 100644 --- a/lib/esm/index.d.ts.map +++ b/lib/esm/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB,cAAc,aAAa,CAAC"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,OAAO,CAAC"} \ No newline at end of file diff --git a/lib/esm/index.js b/lib/esm/index.js index 4591c61..e879a1a 100644 --- a/lib/esm/index.js +++ b/lib/esm/index.js @@ -1,4 +1,6 @@ -import * as fhenixjs from "./fhenix.js"; -export { fhenixjs }; -export * from "./fhenix.js"; +export { SealingKey, GenerateSealingKey } from "./sdk/sealing.js"; +export { createTfheKeypair, createTfhePublicKey } from "./sdk/keygen.js"; +export * from "./types"; +export * from "./sdk/permit"; +export * from "./sdk"; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/esm/index.js.map b/lib/esm/index.js.map index 412de0c..25c01e4 100644 --- a/lib/esm/index.js.map +++ b/lib/esm/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB,cAAc,aAAa,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,OAAO,CAAC"} \ No newline at end of file diff --git a/lib/esm/sdk/consts.d.ts b/lib/esm/sdk/consts.d.ts index 4523c6d..b1db3cc 100644 --- a/lib/esm/sdk/consts.d.ts +++ b/lib/esm/sdk/consts.d.ts @@ -3,4 +3,5 @@ export declare const MAX_UINT16 = 65535; export declare const MAX_UINT32 = 4294967295; export declare const FheOpsAddress = "0x0000000000000000000000000000000000000080"; export declare const PUBLIC_KEY_LENGTH_MIN = 15000; +export declare const DEFAULT_COFHE_URL = "http://127.0.0.1:8448"; //# sourceMappingURL=consts.d.ts.map \ No newline at end of file diff --git a/lib/esm/sdk/consts.d.ts.map b/lib/esm/sdk/consts.d.ts.map index dadf4a2..2f85f20 100644 --- a/lib/esm/sdk/consts.d.ts.map +++ b/lib/esm/sdk/consts.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../../src/sdk/consts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,MAAM,CAAC;AAC7B,eAAO,MAAM,UAAU,QAAQ,CAAC;AAChC,eAAO,MAAM,UAAU,aAAa,CAAC;AACrC,eAAO,MAAM,aAAa,+CAA+C,CAAC;AAC1E,eAAO,MAAM,qBAAqB,QAAS,CAAC"} \ No newline at end of file +{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../../src/sdk/consts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,MAAM,CAAC;AAC7B,eAAO,MAAM,UAAU,QAAQ,CAAC;AAChC,eAAO,MAAM,UAAU,aAAa,CAAC;AACrC,eAAO,MAAM,aAAa,+CAA+C,CAAC;AAC1E,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAC5C,eAAO,MAAM,iBAAiB,0BAA0B,CAAC"} \ No newline at end of file diff --git a/lib/esm/sdk/consts.js b/lib/esm/sdk/consts.js index 83b33a9..1bf87b1 100644 --- a/lib/esm/sdk/consts.js +++ b/lib/esm/sdk/consts.js @@ -3,4 +3,5 @@ export const MAX_UINT16 = 65535; export const MAX_UINT32 = 4294967295; export const FheOpsAddress = "0x0000000000000000000000000000000000000080"; export const PUBLIC_KEY_LENGTH_MIN = 15000; +export const DEFAULT_COFHE_URL = "http://127.0.0.1:8448"; //# sourceMappingURL=consts.js.map \ No newline at end of file diff --git a/lib/esm/sdk/consts.js.map b/lib/esm/sdk/consts.js.map index 8325815..de39c9b 100644 --- a/lib/esm/sdk/consts.js.map +++ b/lib/esm/sdk/consts.js.map @@ -1 +1 @@ -{"version":3,"file":"consts.js","sourceRoot":"","sources":["../../../src/sdk/consts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC;AAC7B,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC;AAChC,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;AACrC,MAAM,CAAC,MAAM,aAAa,GAAG,4CAA4C,CAAC;AAC1E,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAM,CAAC"} \ No newline at end of file +{"version":3,"file":"consts.js","sourceRoot":"","sources":["../../../src/sdk/consts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC;AAC7B,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC;AAChC,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;AACrC,MAAM,CAAC,MAAM,aAAa,GAAG,4CAA4C,CAAC;AAC1E,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAM,CAAC;AAC5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,uBAAuB,CAAC"} \ No newline at end of file diff --git a/lib/esm/sdk/encrypt.d.ts b/lib/esm/sdk/encrypt.d.ts index 7e42ae8..161954f 100644 --- a/lib/esm/sdk/encrypt.d.ts +++ b/lib/esm/sdk/encrypt.d.ts @@ -1,5 +1,5 @@ import { TfheCompactPublicKey } from "./fhe/fhe.js"; -import { EncryptedNumber, EncryptedUint16, EncryptedUint32, EncryptedUint8, EncryptedBool, EncryptedUint64, EncryptedUint128, EncryptedUint256, EncryptedAddress, EncryptionTypes } from "./types.js"; +import { EncryptedNumber, EncryptedUint16, EncryptedUint32, EncryptedUint8, EncryptedBool, EncryptedUint64, EncryptedUint128, EncryptedUint256, EncryptedAddress, EncryptionTypes } from "../types"; /** * Encrypts a Uint8 value using TFHE (Fast Fully Homomorphic Encryption over the Torus). * @param {boolean} value - The Boolean value to encrypt. diff --git a/lib/esm/sdk/encrypt.d.ts.map b/lib/esm/sdk/encrypt.d.ts.map index 19deeac..21d8111 100644 --- a/lib/esm/sdk/encrypt.d.ts.map +++ b/lib/esm/sdk/encrypt.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"encrypt.d.ts","sourceRoot":"","sources":["../../../src/sdk/encrypt.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EASrB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,eAAe,EACf,eAAe,EACf,eAAe,EACf,cAAc,EACd,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EAChB,MAAM,YAAY,CAAC;AAGpB;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,UAChB,OAAO,aACH,oBAAoB,iBACjB,MAAM,KACnB,aASF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,UACjB,MAAM,aACF,oBAAoB,iBACjB,MAAM,KACnB,cASF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,UAClB,MAAM,aACF,oBAAoB,iBACjB,MAAM,KACnB,eASF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,UAClB,MAAM,aACF,oBAAoB,iBACjB,MAAM,KACnB,eASF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,UAClB,MAAM,GAAG,MAAM,aACX,oBAAoB,iBACjB,MAAM,KACnB,eAeF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,UACnB,MAAM,GAAG,MAAM,aACX,oBAAoB,iBACjB,MAAM,KACnB,gBAeF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,UACnB,MAAM,GAAG,MAAM,aACX,oBAAoB,iBACjB,MAAM,KACnB,gBAeF,CAAC;AACF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,UACnB,MAAM,GAAG,MAAM,aACX,oBAAoB,iBACjB,MAAM,KACnB,gBAeF,CAAC;AACF;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,UACX,MAAM,aACF,oBAAoB,SACzB,eAAe,iBACP,MAAM,KACnB,eAqBF,CAAC"} \ No newline at end of file +{"version":3,"file":"encrypt.d.ts","sourceRoot":"","sources":["../../../src/sdk/encrypt.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EASrB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,eAAe,EACf,eAAe,EACf,eAAe,EACf,cAAc,EACd,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EAChB,MAAM,UAAU,CAAC;AAGlB;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,UAChB,OAAO,aACH,oBAAoB,iBACjB,MAAM,KACnB,aASF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,UACjB,MAAM,aACF,oBAAoB,iBACjB,MAAM,KACnB,cASF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,UAClB,MAAM,aACF,oBAAoB,iBACjB,MAAM,KACnB,eASF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,UAClB,MAAM,aACF,oBAAoB,iBACjB,MAAM,KACnB,eASF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,UAClB,MAAM,GAAG,MAAM,aACX,oBAAoB,iBACjB,MAAM,KACnB,eAeF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,UACnB,MAAM,GAAG,MAAM,aACX,oBAAoB,iBACjB,MAAM,KACnB,gBAeF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,UACnB,MAAM,GAAG,MAAM,aACX,oBAAoB,iBACjB,MAAM,KACnB,gBAeF,CAAC;AACF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,UACnB,MAAM,GAAG,MAAM,aACX,oBAAoB,iBACjB,MAAM,KACnB,gBAeF,CAAC;AACF;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,UACX,MAAM,aACF,oBAAoB,SACzB,eAAe,iBACP,MAAM,KACnB,eAqBF,CAAC"} \ No newline at end of file diff --git a/lib/esm/sdk/encrypt.js b/lib/esm/sdk/encrypt.js index 6b507de..75d3b5e 100644 --- a/lib/esm/sdk/encrypt.js +++ b/lib/esm/sdk/encrypt.js @@ -1,5 +1,5 @@ import { CompactFheBool, CompactFheUint8, CompactFheUint16, CompactFheUint32, CompactFheUint64, CompactFheUint128, CompactFheUint160, CompactFheUint256, } from "./fhe/fhe.js"; -import { EncryptionTypes, } from "./types.js"; +import { EncryptionTypes, } from "../types"; import { fromHexString, toBigInt } from "./utils.js"; /** * Encrypts a Uint8 value using TFHE (Fast Fully Homomorphic Encryption over the Torus). diff --git a/lib/esm/sdk/encrypt.js.map b/lib/esm/sdk/encrypt.js.map index d710e1e..df52d80 100644 --- a/lib/esm/sdk/encrypt.js.map +++ b/lib/esm/sdk/encrypt.js.map @@ -1 +1 @@ -{"version":3,"file":"encrypt.js","sourceRoot":"","sources":["../../../src/sdk/encrypt.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"encrypt.js","sourceRoot":"","sources":["../../../src/sdk/encrypt.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/esm/sdk/fhe/tfhe_bg.d.ts b/lib/esm/sdk/fhe/tfhe_bg.d.ts index fc5d1ad..796f780 100644 --- a/lib/esm/sdk/fhe/tfhe_bg.d.ts +++ b/lib/esm/sdk/fhe/tfhe_bg.d.ts @@ -25,7 +25,7 @@ export function __wbg_fheint160_new(arg0: any): number; export function __wbg_fheint16_new(arg0: any): number; export function __wbg_fheint8_new(arg0: any): number; export function __wbg_fheint128_new(arg0: any): number; -export function __wbindgen_boolean_get(arg0: any): 1 | 0 | 2; +export function __wbindgen_boolean_get(arg0: any): 0 | 2 | 1; export function __wbindgen_bigint_from_str(arg0: any, arg1: any): number; export function __wbindgen_bit_and(arg0: any, arg1: any): number; export function __wbindgen_number_new(arg0: any): number; diff --git a/lib/esm/sdk/index.d.ts b/lib/esm/sdk/index.d.ts index 5b45fe7..dd929dd 100644 --- a/lib/esm/sdk/index.d.ts +++ b/lib/esm/sdk/index.d.ts @@ -1,199 +1,40 @@ -import { TfheCompactPublicKey } from "./fhe/fhe.js"; -import { ContractPermits, EncryptedAddress, EncryptedBool, EncryptedNumber, EncryptedUint128, EncryptedUint16, EncryptedUint256, EncryptedUint32, EncryptedUint64, EncryptedUint8, EncryptionTypes, InstanceParams, InstanceParamsWithFhePublicKeys, SupportedProvider } from "./types.js"; -import { Permission, Permit, PermitSigner } from "../extensions/access_control/index.js"; -declare abstract class FhenixClientBase { - private permits; - abstract fhePublicKeys: Array> | Array; - protected provider: SupportedProvider; - /** - * Creates an instance of FhenixClient. - * Initializes the fhevm library if needed and retrieves the public key for encryption from the provider. - * @param {InstanceParams} params - Parameters to initialize the client. - */ - constructor(params: InstanceParams); - /** - * Encrypts a Uint8 value using the stored public key. - * @param {number} value - The Uint8 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedBool} - The encrypted value serialized as EncryptedUint8. Use the .data property to access the Uint8Array. - */ - abstract encrypt_bool(value: boolean, securityZone?: number): Promise | EncryptedBool; - /** - * Encrypts a Uint8 value using the stored public key. - * @param {number} value - The Uint8 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedUint8} - The encrypted value serialized as EncryptedUint8. Use the .data property to access the Uint8Array. - */ - abstract encrypt_uint8(value: number, securityZone?: number): Promise | EncryptedUint8; - /** - * Encrypts a Uint16 value using the stored public key. - * @param {number} value - The Uint16 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedUint16} - The encrypted value serialized as EncryptedUint16. Use the .data property to access the Uint8Array. - */ - abstract encrypt_uint16(value: number, securityZone?: number): Promise | EncryptedUint16; - /** - * Encrypts a Uint32 value using the stored public key. - * @param {number} value - The Uint32 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedUint32} - The encrypted value serialized as EncryptedUint32. Use the .data property to access the Uint8Array. - */ - abstract encrypt_uint32(value: number, securityZone?: number): Promise | EncryptedUint32; - /** - * Encrypts a Uint64 value using the stored public key. - * @param {bigint | string} value - The Uint32 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedUint64} - The encrypted value serialized as EncryptedUint64. Use the .data property to access the Uint8Array. - */ - abstract encrypt_uint64(value: bigint | string, securityZone?: number): Promise | EncryptedUint64; - /** - * Encrypts a Uint128 value using the stored public key. - * @param {bigint | string} value - The Uint128 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedUint128} - The encrypted value serialized as EncryptedUint128. Use the .data property to access the Uint8Array. - */ - abstract encrypt_uint128(value: bigint | string, securityZone?: number): Promise | EncryptedUint128; - /** - * Encrypts a Uint256 value using the stored public key. - * @param {bigint | string} value - The Uint256 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedUint256} - The encrypted value serialized as EncryptedUint256. Use the .data property to access the Uint8Array. - */ - abstract encrypt_uint256(value: bigint | string, securityZone?: number): Promise | EncryptedUint256; - /** - * Encrypts an Address (Uint160) value using the stored public key. - * @param {bigint | string} value - The Address (Uint160) value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedAddress} - The encrypted value serialized as EncryptedAddress. Use the .data property to access the Uint8Array. - */ - abstract encrypt_address(value: bigint | string, securityZone?: number): Promise | EncryptedAddress; - /** - * Encrypts a numeric value according to the specified encryption type or the most efficient one based on the value. - * @param {number} value - The numeric value to encrypt. - * @param {EncryptionTypes} type - Optional. The encryption type (uint8, uint16, uint32). - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedNumber} - The encrypted value serialized as Uint8Array. Use the .data property to access the Uint8Array. - */ - abstract encrypt(value: number, type?: EncryptionTypes, securityZone?: number): Promise | EncryptedNumber; - /** - * Unseals an encrypted message using the stored permit for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} ciphertext - The encrypted message to unseal. - * @param {string} account - The account attached to existing permits. - * @returns bigint - The unsealed message. - */ - unseal(contractAddress: string, ciphertext: string, account: string): bigint; - /** - * Creates a new permit for a specific contract address. Also saves the permit to localstorage (if available) - * @param {string} contractAddress - The address of the contract. - * @param {SupportedProvider} provider - The provider from which to sign the permit - must container a signer. - * @param signer - the signer to use to sign the permit if provider does not support signing (e.g. hardhat) - * @returns Permit - The permit associated with the contract address. - * - * @throws {Error} - If the provider does not contain a signer, or if a provider is not set - */ - generatePermit(contractAddress: string, provider?: SupportedProvider, signer?: PermitSigner): Promise; - /** - * Reusable permit loading and storing from local storage - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The address of the user account. - * @returns {Permit | undefined} - The permit loaded from local storage - */ - private _loadPermitFromLocalStorage; - /** - * Retrieves the stored permit for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The address of the user account. - * @returns {Permit} - The permit associated with the contract address. - */ - getPermit(contractAddress: string, account: string): Permit | undefined; - /** - * Retrieves all stored permits for a specific account. - * @param {string} account - The address of the user account. - * @returns {Record} - The permits associated with each contract address. - */ - loadAllPermitsFromLocalStorage(account: string): Record; - /** - * Stores a permit for a specific contract address. Will overwrite any existing permit for the same contract address. - * Does not store the permit in localstorage (should it?) - * @param {Permit} permit - The permit to store. - */ - storePermit(permit: Permit, account: string): void; - /** - * Removes a stored permit for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The account address of the permit. - */ - removePermit(contractAddress: string, account: string): void; - /** - * Checks if a permit exists for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The account address attached to the stored permits - * @returns {boolean} - True if a permit exists, false otherwise. - */ - hasPermit(contractAddress: string, account: string): boolean; - /** - * Exports all stored permits. - * @returns {ContractPermits} - All stored permits. - */ - exportPermits(): ContractPermits; - extractPermitPermission(permit: Permit): Permission; - /** - * Retrieves the FHE public key from the provider. - * @param {SupportedProvider} provider - The provider from which to retrieve the key. - * @param securityZone - The security zone for which to retrieve the key (default 0). - * @returns {Promise} - The retrieved public key. - */ - static getFheKeyFromProvider(provider: SupportedProvider, securityZone?: number): Promise; -} +import { PermitV2 } from "./permit"; +import { SdkStore } from "./store.js"; +import { MappedCoFheEncryptedTypes, PermitV2Options, PermitV2Interface, PermissionV2, Result, MappedUnsealedTypes, InitializationParams } from "../types"; /** - * The FhenixClient class provides functionalities to interact with a FHE (Fully Homomorphic Encryption) system. - * It includes methods for encryption, unsealing, and managing permits. + * Encrypts a numeric value according to the specified encryption type or the most efficient one based on the value. + * Useful when not using `Encryptable` utility structures. + * @param {item} value - The numeric value to encrypt. + * @param {EncryptionTypes} type - Optional. The encryption type (uint8, uint16, uint32). + * @param securityZone - The security zone for which to encrypt the value (default 0). + * @returns {EncryptedNumber} - The encrypted value serialized as Uint8Array. Use the .data property to access the Uint8Array. */ -export declare class FhenixClient extends FhenixClientBase { - private defaultSecurityZone; - fhePublicKeys: Array>; - /** - * Creates an instance of FhenixClient. - * Initializes the fhevm library if needed and retrieves the public key for encryption from the provider. - * @param {InstanceParams} params - Parameters to initialize the client. - */ - constructor(params: InstanceParams); - private _getPublicKey; - encrypt_bool(value: boolean, securityZone?: number): Promise; - encrypt_uint8(value: number, securityZone?: number): Promise; - encrypt_uint16(value: number, securityZone?: number): Promise; - encrypt_uint32(value: number, securityZone?: number): Promise; - encrypt_uint64(value: bigint | string, securityZone?: number): Promise; - encrypt_uint128(value: bigint | string, securityZone?: number): Promise; - encrypt_uint256(value: bigint | string, securityZone?: number): Promise; - encrypt_address(value: bigint | string, securityZone?: number): Promise; - encrypt(value: number, type?: EncryptionTypes, securityZone?: number): Promise; -} +declare function encrypt(item: T): Promise>>; +declare function encrypt(item: [...T]): Promise]>>; /** - * The FhenixClientSync class provides functionalities to interact with a FHE (Fully Homomorphic Encryption) system. - * It includes methods for encryption, unsealing, and managing permits. + * Uses the privateKey of `permit.sealingPair` to recursively unseal any contained `SealedItems`. + * If `item` is a single `SealedItem` it will be individually. + * NOTE: Only unseals typed `SealedItem`s returned from `FHE.sealoutputTyped` and the FHE bindings' `e____.sealTyped`. * - * The Sync FhenixClient allows the `client.encrypt_()` functions to be performed synchronously - * - * @Note The Sync FhenixClient must be created using `await FhenixClientSync.create({provider})` instead of `new FhenixClient({provider})` + * @param {any | any[]} item - Array, object, or item. Any nested `SealedItems` will be unsealed. + * @returns - Recursively unsealed data in the target type, SealedBool -> boolean, SealedAddress -> string, etc. */ -export declare class FhenixClientSync extends FhenixClientBase { - fhePublicKeys: Array; - constructor(params: InstanceParamsWithFhePublicKeys); - static create(params: InstanceParams & { - securityZones?: number[]; - }): Promise; - private _getPublicKey; - encrypt_bool(value: boolean, securityZone?: number): EncryptedBool; - encrypt_uint8(value: number, securityZone?: number): EncryptedUint8; - encrypt_uint16(value: number, securityZone?: number): EncryptedUint16; - encrypt_uint32(value: number, securityZone?: number): EncryptedUint32; - encrypt_uint64(value: bigint | string, securityZone?: number): EncryptedUint64; - encrypt_uint128(value: bigint | string, securityZone?: number): EncryptedUint128; - encrypt_uint256(value: bigint | string, securityZone?: number): EncryptedUint256; - encrypt_address(value: bigint | string, securityZone?: number): EncryptedAddress; - encrypt(value: number, type?: EncryptionTypes, securityZone?: number): EncryptedNumber; -} +declare function unseal(item: T, account?: string, hash?: string): Result>; +export declare const fhenixsdk: { + store: import("zustand/vanilla.js").StoreApi; + initialize: (params: InitializationParams & { + ignoreErrors?: boolean; + generatePermit?: boolean; + }) => Promise>; + createPermit: (options?: PermitV2Options) => Promise>; + importPermit: (imported: string | PermitV2Interface) => Promise>; + selectActivePermit: (hash: string) => Result; + getPermit: (hash?: string) => Result; + getPermission: (hash?: string) => Result; + getAllPermits: () => Result>; + encrypt: typeof encrypt; + unsealCiphertext: (ciphertext: string, account?: string, hash?: string) => Result; + unseal: typeof unseal; +}; export {}; //# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/lib/esm/sdk/index.d.ts.map b/lib/esm/sdk/index.d.ts.map index b7104f3..bc8bbf0 100644 --- a/lib/esm/sdk/index.d.ts.map +++ b/lib/esm/sdk/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sdk/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sdk/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAwC,MAAM,UAAU,CAAC;AAE1E,OAAO,EAIL,QAAQ,EACT,MAAM,YAAY,CAAC;AAYpB,OAAO,EAGL,yBAAyB,EAEzB,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,MAAM,EAGN,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,UAAU,CAAC;AA2RlB;;;;;;;GAOG;AACH,iBAAe,OAAO,CAAC,CAAC,EACtB,IAAI,EAAE,CAAC,GACN,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,iBAAe,OAAO,CAAC,CAAC,SAAS,GAAG,EAAE,EACpC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GACX,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAyLtD;;;;;;;GAOG;AACH,iBAAS,MAAM,CAAC,CAAC,EACf,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAwBhC;AAID,eAAO,MAAM,SAAS;;yBAjgBZ,oBAAoB,GAAG;QAC7B,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,KACA,QAAQ,OAAO,QAAQ,GAAG,SAAS,CAAC,CAAC;6BAoF5B,eAAe,KACxB,QAAQ,OAAO,QAAQ,CAAC,CAAC;6BAyChB,MAAM,GAAG,iBAAiB,KACnC,QAAQ,OAAO,QAAQ,CAAC,CAAC;+BAiEM,MAAM,KAAG,OAAO,QAAQ,CAAC;uBAyBjC,MAAM,KAAG,OAAO,QAAQ,CAAC;2BA8BrB,MAAM,KAAG,OAAO,YAAY,CAAC;yBAYjC,OAAO,OAAO,MAAM,EAAE,QAAQ,CAAC,CAAC;;mCA8K5C,MAAM,YACR,MAAM,SACT,MAAM,KACZ,OAAO,MAAM,CAAC;;CAwFhB,CAAC"} \ No newline at end of file diff --git a/lib/esm/sdk/index.js b/lib/esm/sdk/index.js index dee3c30..186112f 100644 --- a/lib/esm/sdk/index.js +++ b/lib/esm/sdk/index.js @@ -1,416 +1,398 @@ -import { TfheCompactPublicKey } from "./fhe/fhe.js"; -import { fromHexString, isAddress, ValidateUintInRange, toABIEncodedUint32, } from "./utils.js"; -import { determineRequestMethod, EncryptionTypes, } from "./types.js"; -import { generatePermit, getAllExistingPermits, getPermitFromLocalstorage, removePermitFromLocalstorage, storePermitInLocalStorage, } from "../extensions/access_control/index.js"; -import { FheOpsAddress, MAX_UINT16, MAX_UINT32, MAX_UINT8, PUBLIC_KEY_LENGTH_MIN, } from "./consts.js"; -import * as tfheEncrypt from "./encrypt.js"; -import { isBigIntOrHexString, isNumber, isPlainObject, isString, } from "./validation.js"; +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { toHexString } from "./utils.js"; +import { chainIsHardhat, hardhatMockEncrypt } from "./utils.hardhat.js"; +import { PermitV2, permitStore, PermitV2ParamsValidator } from "./permit"; +import { isString } from "./validation.js"; +import { _sdkStore, _store_getConnectedChainFheKey, _store_initialize, } from "./store.js"; +import { encrypt_bool as tfhe_encrypt_bool, encrypt_uint8 as tfhe_encrypt_uint8, encrypt_uint16 as tfhe_encrypt_uint16, encrypt_uint32 as tfhe_encrypt_uint32, encrypt_uint64 as tfhe_encrypt_uint64, encrypt_uint128 as tfhe_encrypt_uint128, encrypt_uint256 as tfhe_encrypt_uint256, encrypt_address as tfhe_encrypt_address, } from "./encrypt.js"; import { InitFhevm } from "./init.js"; -class FhenixClientBase { - /** - * Creates an instance of FhenixClient. - * Initializes the fhevm library if needed and retrieves the public key for encryption from the provider. - * @param {InstanceParams} params - Parameters to initialize the client. - */ - constructor(params) { - this.permits = {}; - isPlainObject(params); - const { provider } = params; - this.provider = provider; - if (!this.provider) { - throw new Error("Failed to initialize Fhenix Client - must include a web3 provider"); +import { FheUType, isEncryptableItem, ResultErr, ResultOk, } from "../types"; +/** + * Initializes the `fhenixsdk` to enable encrypting input data, creating permits / permissions, and decrypting sealed outputs. + * Initializes `fhevm` client FHE wasm module and fetches the provided chain's FHE publicKey. + * If a valid signer is provided, a `permit/permission` is generated automatically + */ +const initialize = async (params) => { + // Initialize the fhevm + await InitFhevm().catch((err) => { + if (params.ignoreErrors) { + return undefined; } - } - // Unsealing Method - /** - * Unseals an encrypted message using the stored permit for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} ciphertext - The encrypted message to unseal. - * @param {string} account - The account attached to existing permits. - * @returns bigint - The unsealed message. - */ - unseal(contractAddress, ciphertext, account) { - isAddress(contractAddress); - isString(ciphertext); - const permit = this.getPermit(contractAddress, account); - if (permit == null) { - throw new Error(`Missing keypair for ${contractAddress}`); + else { + return ResultErr(`initialize :: failed to initialize fhenixjs - is the network FHE-enabled? ${err}`); } - return this.permits[contractAddress].sealingKey.unseal(ciphertext); - } - // Permit Management Methods - /** - * Creates a new permit for a specific contract address. Also saves the permit to localstorage (if available) - * @param {string} contractAddress - The address of the contract. - * @param {SupportedProvider} provider - The provider from which to sign the permit - must container a signer. - * @param signer - the signer to use to sign the permit if provider does not support signing (e.g. hardhat) - * @returns Permit - The permit associated with the contract address. - * - * @throws {Error} - If the provider does not contain a signer, or if a provider is not set - */ - async generatePermit(contractAddress, provider, signer) { - if (!provider && this.provider === undefined) { - throw new Error("error getting provider"); + }); + if (params.provider == null) + return ResultErr("initialize :: missing provider - Please provide an AbstractProvider interface"); + if (params.securityZones != null && params.securityZones.length === 0) + return ResultErr("initialize :: a list of securityZones was provided, but it is empty"); + await _store_initialize(params); + // `generatePermit` must set to `false` to early exit here + if (params.generatePermit === false) + return ResultOk(undefined); + // Return the existing active permit + const userActivePermit = getPermit(); + if (userActivePermit.success) + return userActivePermit; + // Create permit and return it + return createPermit(); +}; +/** + * Internal reusable initialization checker + */ +const _checkInitialized = (state, options) => { + if (options?.fheKeys !== false && !state.fheKeysInitialized) { + return ResultErr("fhenixsdk not initialized. Use `fhenixsdk.initialize(...)`."); + } + if (options?.coFheUrl !== false && !state.coFheUrl) + return ResultErr("fhenixsdk not initialized with a coFheUrl. Set `coFheUrl` in `fhenixsdk.initialize`."); + if (options?.provider !== false && !state.providerInitialized) + return ResultErr("fhenixsdk not initialized with valid provider. Use `fhenixsdk.initialize(...)` with a valid provider that satisfies `AbstractProvider`."); + if (options?.signer !== false && !state.signerInitialized) + return ResultErr("fhenixsdk not initialized with a valid signer. Use `fhenixsdk.initialize(...)` with a valid signer that satisfies `AbstractSigner`."); + return ResultOk(null); +}; +// Permit +/** + * Creates a new permit with options, prompts user for signature. + * Handles all `permit.type`s, and prompts for the correct signature type. + * The created PermitV2 will be inserted into the store and marked as the active permit. + * NOTE: This is a wrapper around `PermitV2.create` and `PermitV2.sign` + * + * @param {PermitV2Options} options - Partial PermitV2 fields to create the Permit with, if no options provided will be filled with the defaults: + * { type: "self", issuer: initializedUserAddress, projects: initializedProjects, contracts: initializedContracts } + * @returns {Result} - Newly created PermitV2 as a Result object + */ +const createPermit = async (options) => { + const state = _sdkStore.getState(); + const initialized = _checkInitialized(state); + if (!initialized.success) + return ResultErr(`${createPermit.name} :: ${initialized.error}`); + const optionsWithDefaults = { + type: "self", + issuer: state.account, + contracts: state.accessRequirements.contracts, + projects: state.accessRequirements.projects, + ...options, + }; + let permit; + try { + permit = await PermitV2.createAndSign(optionsWithDefaults, state.chainId, state.signer); + } + catch (e) { + return ResultErr(`${createPermit.name} :: ${e}`); + } + permitStore.setPermit(state.account, permit); + permitStore.setActivePermitHash(state.account, permit.getHash()); + return ResultOk(permit); +}; +/** + * Imports a fully formed existing permit, expected to be valid. + * Does not ask for user signature, expects to already be populated. + * Will throw an error if the imported permit is invalid, see `PermitV2.isValid`. + * The imported PermitV2 will be inserted into the store and marked as the active permit. + * + * @param {string | PermitV2Interface} imported - Permit to import as a text string or PermitV2Interface + */ +const importPermit = async (imported) => { + const state = _sdkStore.getState(); + const initialized = _checkInitialized(state); + if (!initialized.success) + return ResultErr(`${createPermit.name} :: ${initialized.error}`); + // Import validation + if (typeof imported === "string") { + try { + imported = JSON.parse(imported); } - const permit = await generatePermit(contractAddress, provider || this.provider, signer); - // Permit has already been put into local storage, it can be inserted directly into `this.permits` - this.permits[contractAddress] = permit; - return permit; - } - /** - * Reusable permit loading and storing from local storage - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The address of the user account. - * @returns {Permit | undefined} - The permit loaded from local storage - */ - _loadPermitFromLocalStorage(contractAddress, account) { - const fromLs = getPermitFromLocalstorage(contractAddress, account); - if (fromLs == null) - return undefined; - this.permits[contractAddress] = fromLs; - return fromLs; - } - /** - * Retrieves the stored permit for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The address of the user account. - * @returns {Permit} - The permit associated with the contract address. - */ - getPermit(contractAddress, account) { - const permitFromLs = this._loadPermitFromLocalStorage(contractAddress, account); - if (permitFromLs != null) - return permitFromLs; - return this.permits[contractAddress]; - } - /** - * Retrieves all stored permits for a specific account. - * @param {string} account - The address of the user account. - * @returns {Record} - The permits associated with each contract address. - */ - loadAllPermitsFromLocalStorage(account) { - const existingPermits = getAllExistingPermits(account); - Object.keys(existingPermits).forEach((contractAddress) => { - this.permits[contractAddress] = existingPermits[contractAddress]; - }); - return this.permits; - } - /** - * Stores a permit for a specific contract address. Will overwrite any existing permit for the same contract address. - * Does not store the permit in localstorage (should it?) - * @param {Permit} permit - The permit to store. - */ - storePermit(permit, account) { - storePermitInLocalStorage(permit, account); - this.permits[permit.contractAddress] = permit; - } - /** - * Removes a stored permit for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The account address of the permit. - */ - removePermit(contractAddress, account) { - if (this.hasPermit(contractAddress, account)) { - removePermitFromLocalstorage(contractAddress, account); - delete this.permits[contractAddress]; + catch (e) { + return ResultErr(`importPermit :: json parsing failed - ${e}`); } } - /** - * Checks if a permit exists for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The account address attached to the stored permits - * @returns {boolean} - True if a permit exists, false otherwise. - */ - hasPermit(contractAddress, account) { - const permitFromLs = this._loadPermitFromLocalStorage(contractAddress, account); - if (permitFromLs != null) - return true; - return this.permits[contractAddress] != null; + const { success, data: parsedPermit, error: permitParsingError, } = PermitV2ParamsValidator.safeParse(imported); + if (!success) { + const errorString = Object.entries(permitParsingError.flatten().fieldErrors) + .map(([field, err]) => `- ${field}: ${err}`) + .join("\n"); + return ResultErr(`importPermit :: invalid permit data - ${errorString}`); + } + if (parsedPermit.type !== "self") { + if (parsedPermit.issuer === state.account) + parsedPermit.type = "sharing"; + else if (parsedPermit.recipient === state.account) + parsedPermit.type = "recipient"; + else { + return ResultErr(`importPermit :: invalid Permit - connected account <${state.account}> is not issuer or recipient`); + } } - /** - * Exports all stored permits. - * @returns {ContractPermits} - All stored permits. - */ - exportPermits() { - return this.permits; + let permit; + try { + permit = await PermitV2.create(parsedPermit); } - extractPermitPermission(permit) { - return { - signature: permit.signature, - publicKey: permit.publicKey, - }; + catch (e) { + return ResultErr(`importPermit :: ${e}`); } - // Private helper methods - /** - * Retrieves the FHE public key from the provider. - * @param {SupportedProvider} provider - The provider from which to retrieve the key. - * @param securityZone - The security zone for which to retrieve the key (default 0). - * @returns {Promise} - The retrieved public key. - */ - static async getFheKeyFromProvider(provider, securityZone = 0) { - const requestMethod = determineRequestMethod(provider); - const funcSig = "0x1b1b484e"; // cast sig "getNetworkPublicKey(int32)" - const callData = funcSig + toABIEncodedUint32(securityZone); - const callParams = [{ to: FheOpsAddress, data: callData }, "latest"]; - const publicKeyP = requestMethod(provider, "eth_call", callParams).catch((err) => { - throw Error(`Error while requesting network public key from provider for security zone ${securityZone}: ${JSON.stringify(err)}`); - }); - const publicKey = await publicKeyP; - if (typeof publicKey !== "string") { - throw new Error("Error using publicKey from provider: expected string"); - } - if (publicKey.length < PUBLIC_KEY_LENGTH_MIN) { - throw new Error(`Error initializing fhenixjs; got shorter than expected public key: ${publicKey.length}`); - } - // magically know how to decode rlp or w/e returns from the evm json-rpc - const buff = fromHexString(publicKey.slice(130)); - try { - return TfheCompactPublicKey.deserialize(buff); - } - catch (err) { - throw new Error(`Error deserializing public key ${err}`); - } + const { valid, error } = permit.isValid(); + if (!valid) { + return ResultErr(`importPermit :: newly imported permit is invalid - ${error}`); } -} + permitStore.setPermit(state.account, permit); + permitStore.setActivePermitHash(state.account, permit.getHash()); + return ResultOk(permit); +}; /** - * The FhenixClient class provides functionalities to interact with a FHE (Fully Homomorphic Encryption) system. - * It includes methods for encryption, unsealing, and managing permits. + * Selects the active permit using its hash. + * If the hash is not found in the stored permits store, throws an error. + * The matched permit will be marked as the active permit. + * + * @param {string} hash - The `PermitV2.getHash` of the target permit. */ -export class FhenixClient extends FhenixClientBase { - /** - * Creates an instance of FhenixClient. - * Initializes the fhevm library if needed and retrieves the public key for encryption from the provider. - * @param {InstanceParams} params - Parameters to initialize the client. - */ - constructor(params) { - super(params); - this.defaultSecurityZone = 0; - this.fhePublicKeys = []; - InitFhevm().catch((err) => { - if (params.ignoreErrors) { - return undefined; - } - else { - throw new Error(`Failed to initialize fhenixjs - is the network FHE-enabled? ${err}`); +const selectActivePermit = (hash) => { + const state = _sdkStore.getState(); + const initialized = _checkInitialized(state); + if (!initialized.success) + return ResultErr(`${selectActivePermit.name} :: ${initialized.error}`); + const permit = permitStore.getPermit(state.account, hash); + if (permit == null) + return ResultErr(`${selectActivePermit.name} :: Permit with hash <${hash}> not found`); + permitStore.setActivePermitHash(state.account, permit.getHash()); + return ResultOk(permit); +}; +/** + * Retrieves a stored permit based on its hash. + * If no hash is provided, the currently active permit will be retrieved. + * + * @param {string} hash - Optional `PermitV2.getHash` of the permit. + * @returns {Result} - The active permit or permit associated with `hash` as a Result object. + */ +const getPermit = (hash) => { + const state = _sdkStore.getState(); + const initialized = _checkInitialized(state); + if (!initialized.success) + return ResultErr(`${getPermit.name} :: ${initialized.error}`); + if (hash == null) { + const permit = permitStore.getActivePermit(state.account); + if (permit == null) + return ResultErr(`getPermit :: active permit not found`); + return ResultOk(permit); + } + const permit = permitStore.getPermit(state.account, hash); + if (permit == null) + return ResultErr(`getPermit :: permit with hash <${hash}> not found`); + return ResultOk(permit); +}; +/** + * Retrieves a stored permission based on the permit's hash. + * If no hash is provided, the currently active permit will be used. + * The `PermissionV2` is extracted from the permit. + * + * @param {string} hash - Optional hash of the permission to get, defaults to active permit's permission + * @returns {Result} - The active permission or permission associated with `hash`, as a result object. + */ +const getPermission = (hash) => { + const permitResult = getPermit(hash); + if (!permitResult.success) + return ResultErr(`${getPermission.name} :: ${permitResult.error}`); + return ResultOk(permitResult.data.getPermission()); +}; +/** + * Exports all stored permits. + * @returns {Result>} - All stored permits. + */ +const getAllPermits = () => { + const state = _sdkStore.getState(); + const initialized = _checkInitialized(state); + if (!initialized.success) + return ResultErr(`${getAllPermits.name} :: ${initialized.error}`); + return ResultOk(permitStore.getPermits(state.account)); +}; +async function encrypt(item) { + const state = _sdkStore.getState(); + // Only need to check `fheKeysInitialized`, signer and provider not needed for encryption + const initialized = _checkInitialized(state, { + provider: false, + signer: false, + }); + if (!initialized.success) + return ResultErr(`${encrypt.name} :: ${initialized.error}`); + // Permission + if (item === "permission") { + return getPermission(); + } + // EncryptableItem + if (isEncryptableItem(item)) { + // Early exit with mock encrypted value if chain is hardhat + // TODO: Determine how CoFHE encrypted items will be handled in hardhat + if (chainIsHardhat(state.coFheUrl)) + return ResultOk(hardhatMockEncrypt(BigInt(item.data))); + const fhePublicKey = _store_getConnectedChainFheKey(item.securityZone ?? 0); + if (fhePublicKey == null) + return ResultErr("encrypt :: fheKey for current chain not found"); + let preEncryptedItem; + // prettier-ignore + try { + switch (item.utype) { + case FheUType.bool: { + preEncryptedItem = tfhe_encrypt_bool(item.data, fhePublicKey, item.securityZone); + break; + } + case FheUType.uint8: { + preEncryptedItem = tfhe_encrypt_uint8(item.data, fhePublicKey, item.securityZone); + break; + } + case FheUType.uint16: { + preEncryptedItem = tfhe_encrypt_uint16(item.data, fhePublicKey, item.securityZone); + break; + } + case FheUType.uint32: { + preEncryptedItem = tfhe_encrypt_uint32(item.data, fhePublicKey, item.securityZone); + break; + } + case FheUType.uint64: { + preEncryptedItem = tfhe_encrypt_uint64(item.data, fhePublicKey, item.securityZone); + break; + } + case FheUType.uint128: { + preEncryptedItem = tfhe_encrypt_uint128(item.data, fhePublicKey, item.securityZone); + break; + } + case FheUType.uint256: { + preEncryptedItem = tfhe_encrypt_uint256(item.data, fhePublicKey, item.securityZone); + break; + } + case FheUType.address: { + preEncryptedItem = tfhe_encrypt_address(item.data, fhePublicKey, item.securityZone); + break; + } } - }); - // In the future the default array can be updated to include additional security zones - // This is not strictly necessary, as the pubKey for additional zones can also be fetched during an encryption. - // By default, doesn't skip fetching the public key - if (params.skipPubKeyFetch !== true) { - this.fhePublicKeys = [this.defaultSecurityZone].map((securityZone) => FhenixClientBase.getFheKeyFromProvider(params.provider, securityZone)); } - } - async _getPublicKey(securityZone) { - let fhePublicKey = await this.fhePublicKeys[securityZone]; - if (!fhePublicKey) { - this.fhePublicKeys[securityZone] = FhenixClientBase.getFheKeyFromProvider(this.provider, securityZone); - fhePublicKey = await this.fhePublicKeys[securityZone]; - if (!fhePublicKey) { - throw new Error(`Public key for security zone ${securityZone} somehow not initialized`); - } + catch (e) { + return ResultErr(`encrypt :: tfhe_encrypt_xxxx :: ${e}`); } - return fhePublicKey; - } - async encrypt_bool(value, securityZone = 0) { - const fhePublicKey = await this._getPublicKey(securityZone); - return tfheEncrypt.encrypt_bool(value, fhePublicKey, securityZone); - } - async encrypt_uint8(value, securityZone = 0) { - isNumber(value); - const fhePublicKey = await this._getPublicKey(securityZone); - ValidateUintInRange(value, MAX_UINT8, 0); - return tfheEncrypt.encrypt_uint8(value, fhePublicKey, securityZone); - } - async encrypt_uint16(value, securityZone = 0) { - isNumber(value); - const fhePublicKey = await this._getPublicKey(securityZone); - ValidateUintInRange(value, MAX_UINT16, 0); - return tfheEncrypt.encrypt_uint16(value, fhePublicKey, securityZone); - } - async encrypt_uint32(value, securityZone = 0) { - isNumber(value); - const fhePublicKey = await this._getPublicKey(securityZone); - ValidateUintInRange(value, MAX_UINT32, 0); - return tfheEncrypt.encrypt_uint32(value, fhePublicKey, securityZone); - } - async encrypt_uint64(value, securityZone = 0) { - isBigIntOrHexString(value); - const fhePublicKey = await this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return tfheEncrypt.encrypt_uint64(value, fhePublicKey, securityZone); - } - async encrypt_uint128(value, securityZone = 0) { - isBigIntOrHexString(value); - const fhePublicKey = await this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return tfheEncrypt.encrypt_uint128(value, fhePublicKey, securityZone); - } - async encrypt_uint256(value, securityZone = 0) { - isBigIntOrHexString(value); - const fhePublicKey = await this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return tfheEncrypt.encrypt_uint256(value, fhePublicKey, securityZone); - } - async encrypt_address(value, securityZone = 0) { - isBigIntOrHexString(value); - const fhePublicKey = await this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return tfheEncrypt.encrypt_address(value, fhePublicKey, securityZone); + // Send preEncryptedItem to CoFHE route `/UpdateCT`, receive `ctHash` to use as contract input + const res = (await fetch(`${state.coFheUrl}/UpdateCT`, { + method: "POST", + headers: { + "Content-Type": "application/json", // Ensure the server knows you're sending JSON + }, + body: JSON.stringify({ + UType: item.utype, + Value: toHexString(preEncryptedItem.data), + SecurityZone: item.securityZone, + }), + })); + const data = await res.json(); + // Transform data into final CoFHE input variable + return ResultOk({ + securityZone: item.securityZone, + hash: BigInt(`0x${data.ctHash}`), + utype: item.utype, + signature: data.signature, + }); } - async encrypt(value, type, securityZone = 0) { - isNumber(value); - let outputSize = type; - const fhePublicKey = await this._getPublicKey(securityZone); - // choose the most efficient ciphertext size if not selected - if (!outputSize) { - if (value < MAX_UINT8) { - outputSize = EncryptionTypes.uint8; - } - else if (value < MAX_UINT16) { - outputSize = EncryptionTypes.uint16; - } - else if (value < MAX_UINT32) { - outputSize = EncryptionTypes.uint32; - } - else { - throw new Error(`Encryption input must be smaller than ${MAX_UINT32}`); - } + // Object | Array + if (typeof item === "object" && item !== null) { + if (Array.isArray(item)) { + // Array - recurse + const nestedItems = await Promise.all(item.map((nestedItem) => encrypt(nestedItem))); + // Any nested error break out + const nestedItemResultErr = nestedItems.find((nestedItem) => !nestedItem.success); + if (nestedItemResultErr != null) + return nestedItemResultErr; + return ResultOk(nestedItems.map((nestedItem) => nestedItem.data)); } - switch (outputSize) { - case EncryptionTypes.uint8: - ValidateUintInRange(value, MAX_UINT8, 0); - break; - case EncryptionTypes.uint16: - ValidateUintInRange(value, MAX_UINT16, 0); - break; - case EncryptionTypes.uint32: - ValidateUintInRange(value, MAX_UINT32, 0); - break; - default: + else { + // Object - recurse + const nestedKeyedItems = await Promise.all(Object.entries(item).map(async ([key, value]) => ({ + key, + value: await encrypt(value), + }))); + // Any nested error break out + const nestedItemResultErr = nestedKeyedItems.find(({ value }) => !value.success); + if (nestedItemResultErr != null) + return nestedItemResultErr; + const result = {}; + nestedKeyedItems.forEach(({ key, value }) => { + result[key] = value.data; + }); + return ResultOk(result); } - return tfheEncrypt.encrypt(value, fhePublicKey, type, securityZone); } + // Primitive + return ResultOk(item); } +// Unseal /** - * The FhenixClientSync class provides functionalities to interact with a FHE (Fully Homomorphic Encryption) system. - * It includes methods for encryption, unsealing, and managing permits. + * Unseals an encrypted message using the stored permit for a specific contract address. + * NOTE: Wrapper around `PermitV2.unseal` * - * The Sync FhenixClient allows the `client.encrypt_()` functions to be performed synchronously + * @param {string} ciphertext - The encrypted message to unseal. + * @param {string} account - Users address, defaults to store.account + * @param {string} hash - The hash of the permit to use for this operation, defaults to active permitV2 hash + * @returns bigint - The unsealed message. + */ +const unsealCiphertext = (ciphertext, account, hash) => { + const state = _sdkStore.getState(); + const initialized = _checkInitialized(state); + if (!initialized.success) + return ResultErr(`${getAllPermits.name} :: ${initialized.error}`); + isString(ciphertext); + const resolvedAccount = account ?? state.account; + const resolvedHash = hash ?? permitStore.getActivePermitHash(resolvedAccount); + if (resolvedAccount == null || resolvedHash == null) { + return ResultErr(`unsealCiphertext :: PermitV2 hash not provided and active PermitV2 not found`); + } + const permit = permitStore.getPermit(resolvedAccount, resolvedHash); + if (permit == null) { + return ResultErr(`unsealCiphertext :: PermitV2 with account <${account}> and hash <${hash}> not found`); + } + let unsealed; + try { + unsealed = permit.unsealCiphertext(ciphertext); + } + catch (e) { + return ResultErr(`unsealCiphertext :: ${e}`); + } + return ResultOk(unsealed); +}; +/** + * Uses the privateKey of `permit.sealingPair` to recursively unseal any contained `SealedItems`. + * If `item` is a single `SealedItem` it will be individually. + * NOTE: Only unseals typed `SealedItem`s returned from `FHE.sealoutputTyped` and the FHE bindings' `e____.sealTyped`. * - * @Note The Sync FhenixClient must be created using `await FhenixClientSync.create({provider})` instead of `new FhenixClient({provider})` + * @param {any | any[]} item - Array, object, or item. Any nested `SealedItems` will be unsealed. + * @returns - Recursively unsealed data in the target type, SealedBool -> boolean, SealedAddress -> string, etc. */ -export class FhenixClientSync extends FhenixClientBase { - constructor(params) { - super(params); - this.fhePublicKeys = []; - this.fhePublicKeys = params.fhePublicKeys; +function unseal(item, account, hash) { + const resolvedAccount = account ?? _sdkStore.getState().account; + const resolvedHash = hash ?? permitStore.getActivePermitHash(resolvedAccount); + if (resolvedAccount == null || resolvedHash == null) { + return ResultErr(`unseal :: PermitV2 hash not provided and active PermitV2 not found`); } - static async create(params) { - isPlainObject(params); - if (params.skipPubKeyFetch === true) { - console.warn("warning: FhenixClientSync doesn't support skipping public key fetching on creation"); - } - const { provider, ignoreErrors, securityZones = [0] } = params; - if (!provider) { - throw new Error("Failed to initialize Fhenix Client - must include a web3 provider"); - } - await InitFhevm().catch((err) => { - if (ignoreErrors) { - return undefined; - } - else { - throw new Error(`Failed to initialize fhenixjs - is the network FHE-enabled? ${err}`); - } - }); - const fhePublicKeys = await Promise.all(securityZones.map((securityZone) => FhenixClientBase.getFheKeyFromProvider(params.provider, securityZone))); - return new FhenixClientSync({ ...params, fhePublicKeys }); - } - // Encryption Methods - _getPublicKey(securityZone) { - const fhePublicKey = this.fhePublicKeys[securityZone]; - if (!fhePublicKey) { - throw new Error(`Public key for security zone ${securityZone} not initialized`); - } - return fhePublicKey; - } - encrypt_bool(value, securityZone = 0) { - const fhePublicKey = this._getPublicKey(securityZone); - return tfheEncrypt.encrypt_bool(value, fhePublicKey, securityZone); - } - encrypt_uint8(value, securityZone = 0) { - isNumber(value); - const fhePublicKey = this._getPublicKey(securityZone); - ValidateUintInRange(value, MAX_UINT8, 0); - return tfheEncrypt.encrypt_uint8(value, fhePublicKey, securityZone); - } - encrypt_uint16(value, securityZone = 0) { - isNumber(value); - const fhePublicKey = this._getPublicKey(securityZone); - ValidateUintInRange(value, MAX_UINT16, 0); - return tfheEncrypt.encrypt_uint16(value, fhePublicKey, securityZone); - } - encrypt_uint32(value, securityZone = 0) { - isNumber(value); - const fhePublicKey = this._getPublicKey(securityZone); - ValidateUintInRange(value, MAX_UINT32, 0); - return tfheEncrypt.encrypt_uint32(value, fhePublicKey, securityZone); + const permit = permitStore.getPermit(resolvedAccount, resolvedHash); + if (permit == null) { + return ResultErr(`unseal :: PermitV2 with account <${account}> and hash <${hash}> not found`); } - encrypt_uint64(value, securityZone = 0) { - isBigIntOrHexString(value); - const fhePublicKey = this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return tfheEncrypt.encrypt_uint64(value, fhePublicKey, securityZone); + let unsealed; + try { + unsealed = permit.unseal(item); } - encrypt_uint128(value, securityZone = 0) { - isBigIntOrHexString(value); - const fhePublicKey = this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return tfheEncrypt.encrypt_uint128(value, fhePublicKey, securityZone); - } - encrypt_uint256(value, securityZone = 0) { - isBigIntOrHexString(value); - const fhePublicKey = this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return tfheEncrypt.encrypt_uint256(value, fhePublicKey, securityZone); - } - encrypt_address(value, securityZone = 0) { - isBigIntOrHexString(value); - const fhePublicKey = this._getPublicKey(securityZone); - // ValidateUintInRange(value, MAX_UINT64, 0); - return tfheEncrypt.encrypt_address(value, fhePublicKey, securityZone); - } - encrypt(value, type, securityZone = 0) { - isNumber(value); - let outputSize = type; - const fhePublicKey = this._getPublicKey(securityZone); - // choose the most efficient ciphertext size if not selected - if (!outputSize) { - if (value < MAX_UINT8) { - outputSize = EncryptionTypes.uint8; - } - else if (value < MAX_UINT16) { - outputSize = EncryptionTypes.uint16; - } - else if (value < MAX_UINT32) { - outputSize = EncryptionTypes.uint32; - } - else { - throw new Error(`Encryption input must be smaller than ${MAX_UINT32}`); - } - } - switch (outputSize) { - case EncryptionTypes.uint8: - ValidateUintInRange(value, MAX_UINT8, 0); - break; - case EncryptionTypes.uint16: - ValidateUintInRange(value, MAX_UINT16, 0); - break; - case EncryptionTypes.uint32: - ValidateUintInRange(value, MAX_UINT32, 0); - break; - default: - } - return tfheEncrypt.encrypt(value, fhePublicKey, type, securityZone); + catch (e) { + return ResultErr(`unseal :: ${e}`); } + return ResultOk(unsealed); } +// Export +export const fhenixsdk = { + store: _sdkStore, + initialize, + createPermit, + importPermit, + selectActivePermit, + getPermit, + getPermission, + getAllPermits, + encrypt, + unsealCiphertext, + unseal, +}; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/esm/sdk/index.js.map b/lib/esm/sdk/index.js.map index 36c9dc2..405ab33 100644 --- a/lib/esm/sdk/index.js.map +++ b/lib/esm/sdk/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sdk/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sdk/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/esm/sdk/permit/generate.d.ts b/lib/esm/sdk/permit/generate.d.ts new file mode 100644 index 0000000..fd0acd3 --- /dev/null +++ b/lib/esm/sdk/permit/generate.d.ts @@ -0,0 +1,20 @@ +import { PermissionV2 } from "../../types"; +import { EIP712Message, EIP712Types } from "../../types/EIP712"; +export declare const SignatureTypes: { + readonly PermissionedV2IssuerSelf: ("recipient" | "contracts" | "projects" | "issuer" | "expiration" | "validatorId" | "validatorContract" | "sealingKey")[]; + readonly PermissionedV2IssuerShared: ("recipient" | "contracts" | "projects" | "issuer" | "expiration" | "validatorId" | "validatorContract")[]; + readonly PermissionedV2Recipient: ("issuerSignature" | "sealingKey")[]; +}; +export type PermitV2SignaturePrimaryType = keyof typeof SignatureTypes; +export declare const getSignatureTypesAndMessage: (primaryType: PermitV2SignaturePrimaryType, fields: T[] | readonly T[], values: Pick & Partial) => { + types: EIP712Types; + primaryType: string; + message: EIP712Message; +}; +export declare const getSignatureDomain: (chainId: string) => { + name: string; + version: string; + chainId: number; + verifyingContract: string; +}; +//# sourceMappingURL=generate.d.ts.map \ No newline at end of file diff --git a/lib/esm/sdk/permit/generate.d.ts.map b/lib/esm/sdk/permit/generate.d.ts.map new file mode 100644 index 0000000..2c56428 --- /dev/null +++ b/lib/esm/sdk/permit/generate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../../src/sdk/permit/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAiBhE,eAAO,MAAM,cAAc;;;;CAwBjB,CAAC;AACX,MAAM,MAAM,4BAA4B,GAAG,MAAM,OAAO,cAAc,CAAC;AAEvE,eAAO,MAAM,2BAA2B,qKAGzB,4BAA4B,UACjC,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,UAClB,KAAK,YAAY,EAAE,CAAC,CAAC,GAAG,QAAQ,YAAY,CAAC,KACpD;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAgBnE,CAAC;AAEF,eAAO,MAAM,kBAAkB,YAAa,MAAM;;;;;CAKhD,CAAC"} \ No newline at end of file diff --git a/lib/esm/sdk/permit/generate.js b/lib/esm/sdk/permit/generate.js new file mode 100644 index 0000000..f9dd498 --- /dev/null +++ b/lib/esm/sdk/permit/generate.js @@ -0,0 +1,56 @@ +import { ZeroAddress } from "ethers"; +const PermitV2SignatureAllFields = [ + { name: "issuer", type: "address" }, + { name: "expiration", type: "uint64" }, + { name: "contracts", type: "address[]" }, + { name: "projects", type: "string[]" }, + { name: "recipient", type: "address" }, + { name: "validatorId", type: "uint256" }, + { name: "validatorContract", type: "address" }, + { name: "sealingKey", type: "bytes32" }, + { name: "issuerSignature", type: "bytes" }, +]; +export const SignatureTypes = { + PermissionedV2IssuerSelf: [ + "issuer", + "expiration", + "contracts", + "projects", + "recipient", + "validatorId", + "validatorContract", + "sealingKey", + ], + PermissionedV2IssuerShared: [ + "issuer", + "expiration", + "contracts", + "projects", + "recipient", + "validatorId", + "validatorContract", + ], + PermissionedV2Recipient: [ + "sealingKey", + "issuerSignature", + ], +}; +export const getSignatureTypesAndMessage = (primaryType, fields, values) => { + const types = { + [primaryType]: PermitV2SignatureAllFields.filter((fieldType) => fields.includes(fieldType.name)), + }; + const message = {}; + fields.forEach((field) => { + if (field in values) { + message[field] = values[field]; + } + }); + return { types, primaryType, message: message }; +}; +export const getSignatureDomain = (chainId) => ({ + name: "Fhenix Permission v2.0.0", + version: "v2.0.0", + chainId: parseInt(chainId), + verifyingContract: ZeroAddress, +}); +//# sourceMappingURL=generate.js.map \ No newline at end of file diff --git a/lib/esm/sdk/permit/generate.js.map b/lib/esm/sdk/permit/generate.js.map new file mode 100644 index 0000000..d202622 --- /dev/null +++ b/lib/esm/sdk/permit/generate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../../src/sdk/permit/generate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,MAAM,0BAA0B,GAAG;IACjC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;IACnC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE;IACtC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE;IACxC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE;IACtC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;IACtC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE;IACxC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE;IAC9C,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE;IACvC,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE;CAClC,CAAC;AAIX,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,wBAAwB,EAAE;QACxB,QAAQ;QACR,YAAY;QACZ,WAAW;QACX,UAAU;QACV,WAAW;QACX,aAAa;QACb,mBAAmB;QACnB,YAAY;KAC4B;IAC1C,0BAA0B,EAAE;QAC1B,QAAQ;QACR,YAAY;QACZ,WAAW;QACX,UAAU;QACV,WAAW;QACX,aAAa;QACb,mBAAmB;KACqB;IAC1C,uBAAuB,EAAE;QACvB,YAAY;QACZ,iBAAiB;KACuB;CAClC,CAAC;AAGX,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAGzC,WAAyC,EACzC,MAA0B,EAC1B,MAAqD,EACgB,EAAE;IACvE,MAAM,KAAK,GAAG;QACZ,CAAC,WAAW,CAAC,EAAE,0BAA0B,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAC7D,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAS,CAAC,CACrC;KACF,CAAC;IAEF,MAAM,OAAO,GACX,EAAsD,CAAC;IACzD,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,OAAwB,EAAE,CAAC;AACnE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,CAAC;IACtD,IAAI,EAAE,0BAA0B;IAChC,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;IAC1B,iBAAiB,EAAE,WAAW;CAC/B,CAAC,CAAC"} \ No newline at end of file diff --git a/lib/esm/sdk/permit/index.d.ts b/lib/esm/sdk/permit/index.d.ts new file mode 100644 index 0000000..5cdabbe --- /dev/null +++ b/lib/esm/sdk/permit/index.d.ts @@ -0,0 +1,5 @@ +export { permitStore } from "./store"; +export { PermitV2 } from "./permit"; +export { PermitV2ParamsValidator, FullyFormedPermitV2Validator, } from "./permit.z"; +export { SignatureTypes, getSignatureTypesAndMessage, getSignatureDomain, } from "./generate"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/lib/esm/sdk/permit/index.d.ts.map b/lib/esm/sdk/permit/index.d.ts.map new file mode 100644 index 0000000..a0aefac --- /dev/null +++ b/lib/esm/sdk/permit/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/sdk/permit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EACL,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,cAAc,EACd,2BAA2B,EAC3B,kBAAkB,GACnB,MAAM,YAAY,CAAC"} \ No newline at end of file diff --git a/lib/esm/sdk/permit/index.js b/lib/esm/sdk/permit/index.js new file mode 100644 index 0000000..ffdfbd8 --- /dev/null +++ b/lib/esm/sdk/permit/index.js @@ -0,0 +1,5 @@ +export { permitStore } from "./store"; +export { PermitV2 } from "./permit"; +export { PermitV2ParamsValidator, FullyFormedPermitV2Validator, } from "./permit.z"; +export { SignatureTypes, getSignatureTypesAndMessage, getSignatureDomain, } from "./generate"; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/esm/sdk/permit/index.js.map b/lib/esm/sdk/permit/index.js.map new file mode 100644 index 0000000..0bd1309 --- /dev/null +++ b/lib/esm/sdk/permit/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/sdk/permit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EACL,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,cAAc,EACd,2BAA2B,EAC3B,kBAAkB,GACnB,MAAM,YAAY,CAAC"} \ No newline at end of file diff --git a/lib/esm/sdk/permit/permit.d.ts b/lib/esm/sdk/permit/permit.d.ts new file mode 100644 index 0000000..cf3f1c0 --- /dev/null +++ b/lib/esm/sdk/permit/permit.d.ts @@ -0,0 +1,233 @@ +import { PermitV2SignaturePrimaryType } from "./generate"; +import { SealingKey } from "../sealing"; +import { PermissionV2, PermitV2Interface, PermitV2Metadata, PermitV2Options, SerializedPermitV2, MappedUnsealedTypes, AbstractSigner } from "../../types"; +export declare class PermitV2 implements PermitV2Interface, PermitV2Metadata { + /** + * Name for this permit, for organization and UI usage, not included in signature. + */ + name: string; + /** + * The type of the PermitV2 (self / sharing) + * (self) Permit that will be signed and used by the issuer + * (sharing) Permit that is signed by the issuer, but intended to be shared with recipient + * (recipient) Permit that has been received, and signed by the recipient + */ + type: "self" | "sharing" | "recipient"; + /** + * (base) User that initially created the permission, target of data fetching + */ + issuer: string; + /** + * (base) Expiration timestamp + */ + expiration: number; + /** + * (base) List of contract addresses that can be accessed with this permission + */ + contracts: string[]; + /** + * (base) List of project identifiers (strings) that can be accessed + */ + projects: string[]; + /** + * (sharing) The user that this permission will be shared with + * ** optional, use `address(0)` to disable ** + */ + recipient: string; + /** + * (issuer defined validation) An id used to query a contract to check this permissions validity + * ** optional, use `0` to disable ** + */ + validatorId: number; + /** + * (issuer defined validation) The contract to query to determine permission validity + * ** optional, user `address(0)` to disable ** + */ + validatorContract: string; + /** + * (base) The publicKey of a sealingPair used to re-encrypt `issuer`s confidential data + * (non-sharing) Populated by `issuer` + * (sharing) Populated by `recipient` + */ + sealingPair: SealingKey; + /** + * (base) `signTypedData` signature created by `issuer`. + * (base) Shared- and Self- permissions differ in signature format: (`sealingKey` absent in shared signature) + * (non-sharing) < issuer, expiration, contracts, projects, recipient, validatorId, validatorContract, sealingKey > + * (sharing) < issuer, expiration, contracts, projects, recipient, validatorId, validatorContract > + */ + issuerSignature: string; + /** + * (sharing) `signTypedData` signature created by `recipient` with format: + * (sharing) < sealingKey, issuerSignature> + * ** required for shared permits ** + */ + recipientSignature: string; + /** + * Chain that this permit was signed on. In part used for mock encrypt/unseal on hardhat network. + * Should not be set manually, included in metadata as part of serialization flows. + */ + _signedChainId: string | undefined; + constructor(options: PermitV2Interface, metadata?: Partial); + static create(options: PermitV2Options): Promise; + static createAndSign(options: PermitV2Options, chainId: string | undefined, signer: AbstractSigner | undefined): Promise; + updateName: (name: string) => void; + /** + * Creates a `PermitV2` from a serialized permit, hydrating methods and classes + * NOTE: Does not return a stringified permit + * + * @param {SerializedPermitV2} - Permit structure excluding classes + * @returns {PermitV2} - New instance of PermitV2 class + */ + static deserialize: ({ _signedChainId, sealingPair, ...permit }: SerializedPermitV2) => PermitV2; + static validate: (permit: PermitV2) => import("zod").SafeParseReturnType<{ + type: "self" | "sharing" | "recipient"; + issuer: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + recipient?: string | undefined; + contracts?: string[] | undefined; + projects?: string[] | undefined; + name?: string | undefined; + expiration?: number | undefined; + validatorId?: number | undefined; + validatorContract?: string | undefined; + issuerSignature?: string | undefined; + recipientSignature?: string | undefined; + }, { + recipient: string; + contracts: string[]; + projects: string[]; + name: string; + type: "self" | "sharing" | "recipient"; + issuer: string; + expiration: number; + validatorId: number; + validatorContract: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + issuerSignature: string; + recipientSignature: string; + }>; + /** + * Utility to extract the public data from a permit. + * Used in `serialize`, `getPermission`, `getHash` etc + */ + getInterface: () => PermitV2Interface; + /** + * Export the necessary permit data to share a permit with another user + */ + export: () => string; + /** + * Returns a serializable permit instance, removing classes and methods. + * NOTE: Does not return a stringified permit + */ + serialize: () => SerializedPermitV2; + /** + * Extracts a contract input ready permission from this permit. + * The permission inherits most fields from the permit, however + * `permit.sealingPair` is removed and replaced by `permit.sealingPair.publicKey` in the `sealingKey` field. + * + * @permit {boolean} skipValidation - Flag to prevent running validation on the permit before returning the extracted permission. Used internally. + * @returns {PermissionV2} + */ + getPermission: (skipValidation?: boolean) => PermissionV2; + /** + * Returns a stable hash depending on the core data of the permit. + * Is used in the store as each permit's key in the permit map. + */ + getHash: () => string; + /** + * Returns the domain, types, primaryType, and message fields required to request the user's signature + * Primary type is returned to allow viem clients to more easily connect + */ + getSignatureParams: (chainId: string, primaryType: PermitV2SignaturePrimaryType) => { + types: import("../../types/EIP712").EIP712Types; + primaryType: string; + message: import("../../types/EIP712").EIP712Message; + domain: { + name: string; + version: string; + chainId: number; + verifyingContract: string; + }; + }; + /** + * Determines the required signature type. + * Creates the EIP712 types and message. + * Prompts the user for their signature. + * Inserts the signature into `issuerSignature` or `recipientSignature` as necessary. + * + * @param {string} chainId - Used as part of the EIP712 domain, throws if undefined + * @param {AbstractSigner} signer - Signer responsible for signing the EIP712 permit signature, throws if undefined + */ + sign: (chainId: string | undefined, signer: AbstractSigner | undefined) => Promise; + /** + * Use the privateKey of `permit.sealingPair` to unseal `ciphertext` returned from the Fhenix chain. + * Useful when not using `SealedItem` structs and need to unseal an individual ciphertext. + */ + unsealCiphertext: (ciphertext: string) => bigint; + /** + * Uses the privateKey of `permit.sealingPair` to recursively unseal any contained `SealedItems`. + * If `item` is a single `SealedItem` it will be individually. + * NOTE: Only unseals typed `SealedItem`s returned from `FHE.sealoutputTyped` and the FHE bindings' `e____.sealTyped`. + * + * @param {any | any[]} item - Array, object, or item. Any nested `SealedItems` will be unsealed. + * @returns - Recursively unsealed data in the target type, SealedBool -> boolean, SealedAddress -> string, etc. + */ + unseal(item: T): MappedUnsealedTypes; + unseal(item: [...T]): [...MappedUnsealedTypes]; + /** + * Check if permit satisfies the requirements param. + * Permit must satisfy either the contracts list or the projects list + * + * @param {{contracts?: string[], projects?: string[]}} requirements - Lists of contract and project requirements. + * @returns {satisfies: boolean, unsatisfiedContracts, unsatisfiedProjects} - satisfied if either req list is fulfilled. + */ + getSatisfies: (requirements: { + contracts?: string[]; + projects?: string[]; + }) => { + satisfies: true; + unsatisfiedContracts: null; + unsatisfiedProjects: null; + } | { + satisfies: false; + unsatisfiedContracts: string[]; + unsatisfiedProjects: string[]; + }; + /** + * Returns whether the active party has created their signature. + * If `permit.type` is self or sharing, the active party is `issuer`. + * If `permit.type` is recipient, the active party is `recipient` + * + * @returns {boolean} + */ + isSigned: () => boolean; + /** + * Returns whether this permit has expired due to `permit.expiration` + * + * @returns {boolean} + */ + isExpired: () => boolean; + /** + * Overall validity checker of a permit, checks the signatures and expirations + * + * @returns {{valid: boolean, error: string}} - If `valid`, `error` is null, else `error` indicates which validity check failed + */ + isValid: () => { + readonly valid: false; + readonly error: "expired"; + } | { + readonly valid: false; + readonly error: "not-signed"; + } | { + readonly valid: true; + readonly error: null; + }; +} +//# sourceMappingURL=permit.d.ts.map \ No newline at end of file diff --git a/lib/esm/sdk/permit/permit.d.ts.map b/lib/esm/sdk/permit/permit.d.ts.map new file mode 100644 index 0000000..fb03794 --- /dev/null +++ b/lib/esm/sdk/permit/permit.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"permit.d.ts","sourceRoot":"","sources":["../../../../src/sdk/permit/permit.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/esm/sdk/permit/permit.js b/lib/esm/sdk/permit/permit.js new file mode 100644 index 0000000..05234f9 --- /dev/null +++ b/lib/esm/sdk/permit/permit.js @@ -0,0 +1,327 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { getAddress, id, keccak256, ZeroAddress } from "ethers"; +import { getSignatureDomain, getSignatureTypesAndMessage, SignatureTypes, } from "./generate"; +import { FullyFormedPermitV2Validator, PermitV2ParamsValidator, } from "./permit.z"; +import { GenerateSealingKey, SealingKey } from "../sealing"; +import { chainIsHardhat, hardhatMockUnseal } from "../utils.hardhat"; +import { getAsSealedItem, isSealedBool, isSealedAddress, isSealedUint, } from "../../types"; +export class PermitV2 { + constructor(options, metadata) { + /** + * Chain that this permit was signed on. In part used for mock encrypt/unseal on hardhat network. + * Should not be set manually, included in metadata as part of serialization flows. + */ + this._signedChainId = undefined; + this.updateName = (name) => { + this.name = name; + }; + /** + * Utility to extract the public data from a permit. + * Used in `serialize`, `getPermission`, `getHash` etc + */ + this.getInterface = () => { + return { + name: this.name, + type: this.type, + issuer: this.issuer, + expiration: this.expiration, + contracts: this.contracts, + projects: this.projects, + recipient: this.recipient, + validatorId: this.validatorId, + validatorContract: this.validatorContract, + sealingPair: this.sealingPair, + issuerSignature: this.issuerSignature, + recipientSignature: this.recipientSignature, + }; + }; + /** + * Export the necessary permit data to share a permit with another user + */ + this.export = () => { + const cleanedPermit = { + name: this.name, + type: this.type, + issuer: this.issuer, + expiration: this.expiration, + }; + if (this.contracts.length > 0) + cleanedPermit.contracts = this.contracts; + if (this.projects.length > 0) + cleanedPermit.projects = this.projects; + if (this.recipient !== ZeroAddress) + cleanedPermit.recipient = this.recipient; + if (this.validatorId !== 0) + cleanedPermit.validatorId = this.validatorId; + if (this.validatorContract !== ZeroAddress) + cleanedPermit.validatorContract = this.validatorContract; + if (this.type === "sharing" && this.issuerSignature !== "0x") + cleanedPermit.issuerSignature = this.issuerSignature; + return JSON.stringify(cleanedPermit, undefined, 2); + }; + /** + * Returns a serializable permit instance, removing classes and methods. + * NOTE: Does not return a stringified permit + */ + this.serialize = () => { + const { sealingPair, ...permit } = this.getInterface(); + return { + ...permit, + _signedChainId: this._signedChainId, + sealingPair: { + publicKey: sealingPair.publicKey, + privateKey: sealingPair.privateKey, + }, + }; + }; + /** + * Extracts a contract input ready permission from this permit. + * The permission inherits most fields from the permit, however + * `permit.sealingPair` is removed and replaced by `permit.sealingPair.publicKey` in the `sealingKey` field. + * + * @permit {boolean} skipValidation - Flag to prevent running validation on the permit before returning the extracted permission. Used internally. + * @returns {PermissionV2} + */ + this.getPermission = (skipValidation = false) => { + const permitData = this.getInterface(); + if (!skipValidation) { + const validationResult = FullyFormedPermitV2Validator.safeParse(permitData); + if (!validationResult.success) { + throw new Error(`PermitV2 :: getPermission :: permit validation failed - ${JSON.stringify(validationResult.error, null, 2)} ${JSON.stringify(permitData, null, 2)}`); + } + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { name, type, sealingPair, ...permit } = permitData; + return { + ...permit, + sealingKey: `0x${sealingPair.publicKey}`, + }; + }; + /** + * Returns a stable hash depending on the core data of the permit. + * Is used in the store as each permit's key in the permit map. + */ + this.getHash = () => keccak256(id(JSON.stringify({ + type: this.type, + issuer: this.issuer, + expiration: this.expiration, + contracts: this.contracts, + projects: this.projects, + recipient: this.recipient, + validatorId: this.validatorId, + validatorContract: this.validatorContract, + }))); + /** + * Returns the domain, types, primaryType, and message fields required to request the user's signature + * Primary type is returned to allow viem clients to more easily connect + */ + this.getSignatureParams = (chainId, primaryType) => { + return { + domain: getSignatureDomain(chainId), + ...getSignatureTypesAndMessage(primaryType, SignatureTypes[primaryType], this.getPermission(true)), + }; + }; + /** + * Determines the required signature type. + * Creates the EIP712 types and message. + * Prompts the user for their signature. + * Inserts the signature into `issuerSignature` or `recipientSignature` as necessary. + * + * @param {string} chainId - Used as part of the EIP712 domain, throws if undefined + * @param {AbstractSigner} signer - Signer responsible for signing the EIP712 permit signature, throws if undefined + */ + this.sign = async (chainId, signer) => { + if (chainId == null) + throw new Error("PermitV2 :: sign - chainId undefined, cannot sign a permit with an unknown chainId"); + if (signer == null) + throw new Error("PermitV2 :: sign - signer undefined, you must pass in a `signer` for the connected user to create a permitV2 signature"); + let primaryType = "PermissionedV2IssuerSelf"; + if (this.type === "self") + primaryType = "PermissionedV2IssuerSelf"; + if (this.type === "sharing") + primaryType = "PermissionedV2IssuerShared"; + if (this.type === "recipient") + primaryType = "PermissionedV2Recipient"; + const { domain, types, message } = this.getSignatureParams(chainId, primaryType); + const signature = await signer.signTypedData(domain, types, message); + if (this.type === "self" || this.type === "sharing") { + this.issuerSignature = signature; + } + if (this.type === "recipient") { + this.recipientSignature = signature; + } + this._signedChainId = chainId; + }; + /** + * Use the privateKey of `permit.sealingPair` to unseal `ciphertext` returned from the Fhenix chain. + * Useful when not using `SealedItem` structs and need to unseal an individual ciphertext. + */ + this.unsealCiphertext = (ciphertext) => { + // Early exit with mock unseal if interacting with hardhat network + if (chainIsHardhat(this._signedChainId)) + return hardhatMockUnseal(ciphertext); + return this.sealingPair.unseal(ciphertext); + }; + /** + * Check if permit satisfies the requirements param. + * Permit must satisfy either the contracts list or the projects list + * + * @param {{contracts?: string[], projects?: string[]}} requirements - Lists of contract and project requirements. + * @returns {satisfies: boolean, unsatisfiedContracts, unsatisfiedProjects} - satisfied if either req list is fulfilled. + */ + this.getSatisfies = (requirements) => { + let contractsSatisfied = true; + const unsatisfiedContracts = []; + for (const contract in requirements.contracts) { + if (!this.contracts.includes(contract)) { + contractsSatisfied = false; + unsatisfiedContracts.push(contract); + } + } + let projectsSatisfied = true; + const unsatisfiedProjects = []; + for (const project in requirements.projects) { + if (!this.projects.includes(project)) { + projectsSatisfied = false; + unsatisfiedProjects.push(project); + } + } + if (contractsSatisfied || projectsSatisfied) + return { + satisfies: true, + unsatisfiedContracts: null, + unsatisfiedProjects: null, + }; + return { + satisfies: false, + unsatisfiedContracts, + unsatisfiedProjects, + }; + }; + /** + * Returns whether the active party has created their signature. + * If `permit.type` is self or sharing, the active party is `issuer`. + * If `permit.type` is recipient, the active party is `recipient` + * + * @returns {boolean} + */ + this.isSigned = () => { + if (this.type === "self" || this.type === "sharing") { + return this.issuerSignature !== "0x"; + } + if (this.type === "recipient") { + return this.recipientSignature != "0x"; + } + return false; + }; + /** + * Returns whether this permit has expired due to `permit.expiration` + * + * @returns {boolean} + */ + this.isExpired = () => { + return this.expiration < Math.floor(Date.now() / 1000); + }; + /** + * Overall validity checker of a permit, checks the signatures and expirations + * + * @returns {{valid: boolean, error: string}} - If `valid`, `error` is null, else `error` indicates which validity check failed + */ + this.isValid = () => { + if (this.isExpired()) + return { valid: false, error: "expired" }; + if (!this.isSigned()) + return { valid: false, error: "not-signed" }; + return { valid: true, error: null }; + }; + this.name = options.name; + this.type = options.type; + this.issuer = options.issuer; + this.expiration = options.expiration; + this.contracts = options.contracts; + this.projects = options.projects; + this.recipient = options.recipient; + this.validatorId = options.validatorId; + this.validatorContract = options.validatorContract; + this.sealingPair = options.sealingPair; + this.issuerSignature = options.issuerSignature; + this.recipientSignature = options.recipientSignature; + this._signedChainId = metadata?._signedChainId; + } + static async create(options) { + const { success, data: parsed, error, } = PermitV2ParamsValidator.safeParse(options); + if (!success) { + throw new Error("PermitV2 :: create :: Parsing PermitV2Options failed " + + JSON.stringify(error, null, 2)); + } + const sealingPair = parsed.sealingPair != null + ? new SealingKey(parsed.sealingPair.privateKey, parsed.sealingPair.publicKey) + : await GenerateSealingKey(); + return new PermitV2({ + ...parsed, + sealingPair, + }); + } + static async createAndSign(options, chainId, signer) { + const permit = await PermitV2.create(options); + await permit.sign(chainId, signer); + return permit; + } + unseal(item) { + // SealedItem + const sealedItem = getAsSealedItem(item); + if (sealedItem != null) { + const bn = chainIsHardhat(this._signedChainId) + ? hardhatMockUnseal(sealedItem.data) + : this.sealingPair.unseal(sealedItem.data); + if (isSealedBool(sealedItem)) { + // Return a boolean for SealedBool + return Boolean(bn).valueOf(); + } + if (isSealedAddress(sealedItem)) { + // Return a string for SealedAddress + return getAddress(`0x${bn.toString(16).slice(-40)}`); + } + if (isSealedUint(sealedItem)) { + // Return a bigint for SealedUint + return bn; + } + } + // Object | Array + if (typeof item === "object" && item !== null) { + if (Array.isArray(item)) { + // Array - recurse + return item.map((nestedItem) => this.unseal(nestedItem)); + } + else { + // Object - recurse + const result = {}; + for (const key in item) { + result[key] = this.unseal(item[key]); + } + return result; + } + } + // Primitive + return item; + } +} +/** + * Creates a `PermitV2` from a serialized permit, hydrating methods and classes + * NOTE: Does not return a stringified permit + * + * @param {SerializedPermitV2} - Permit structure excluding classes + * @returns {PermitV2} - New instance of PermitV2 class + */ +PermitV2.deserialize = ({ _signedChainId, sealingPair, ...permit }) => { + return new PermitV2({ + ...permit, + sealingPair: new SealingKey(sealingPair.privateKey, sealingPair.publicKey), + }, { + _signedChainId, + }); +}; +PermitV2.validate = (permit) => { + return FullyFormedPermitV2Validator.safeParse(permit); +}; +//# sourceMappingURL=permit.js.map \ No newline at end of file diff --git a/lib/esm/sdk/permit/permit.js.map b/lib/esm/sdk/permit/permit.js.map new file mode 100644 index 0000000..0f2af22 --- /dev/null +++ b/lib/esm/sdk/permit/permit.js.map @@ -0,0 +1 @@ +{"version":3,"file":"permit.js","sourceRoot":"","sources":["../../../../src/sdk/permit/permit.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/esm/sdk/permit/permit.z.d.ts b/lib/esm/sdk/permit/permit.z.d.ts new file mode 100644 index 0000000..ff37d75 --- /dev/null +++ b/lib/esm/sdk/permit/permit.z.d.ts @@ -0,0 +1,315 @@ +import { z } from "zod"; +/** + * Validator for the params used when creating a fresh PermitV2 + * Has defaults added that will be populated in the options object + * Signatures superRefinement checks only the recipient, sealingPair and signatures are not necessary in the Permit params + */ +export declare const PermitV2ParamsValidator: z.ZodEffects>; + type: z.ZodEnum<["self", "sharing", "recipient"]>; + issuer: z.ZodEffects, string, string>; + expiration: z.ZodDefault>; + contracts: z.ZodDefault>>; + projects: z.ZodDefault>>; + recipient: z.ZodEffects>, string, string | undefined>; + validatorId: z.ZodDefault>; + validatorContract: z.ZodEffects>, string, string | undefined>; + sealingPair: z.ZodOptional>; + issuerSignature: z.ZodDefault>; + recipientSignature: z.ZodDefault>; +}, "strip", z.ZodTypeAny, { + recipient: string; + contracts: string[]; + projects: string[]; + name: string; + type: "self" | "sharing" | "recipient"; + issuer: string; + expiration: number; + validatorId: number; + validatorContract: string; + issuerSignature: string; + recipientSignature: string; + sealingPair?: { + publicKey: string; + privateKey: string; + } | undefined; +}, { + type: "self" | "sharing" | "recipient"; + issuer: string; + recipient?: string | undefined; + contracts?: string[] | undefined; + projects?: string[] | undefined; + name?: string | undefined; + expiration?: number | undefined; + validatorId?: number | undefined; + validatorContract?: string | undefined; + sealingPair?: { + publicKey: string; + privateKey: string; + } | undefined; + issuerSignature?: string | undefined; + recipientSignature?: string | undefined; +}>, { + recipient: string; + contracts: string[]; + projects: string[]; + name: string; + type: "self" | "sharing" | "recipient"; + issuer: string; + expiration: number; + validatorId: number; + validatorContract: string; + issuerSignature: string; + recipientSignature: string; + sealingPair?: { + publicKey: string; + privateKey: string; + } | undefined; +}, { + type: "self" | "sharing" | "recipient"; + issuer: string; + recipient?: string | undefined; + contracts?: string[] | undefined; + projects?: string[] | undefined; + name?: string | undefined; + expiration?: number | undefined; + validatorId?: number | undefined; + validatorContract?: string | undefined; + sealingPair?: { + publicKey: string; + privateKey: string; + } | undefined; + issuerSignature?: string | undefined; + recipientSignature?: string | undefined; +}>, { + recipient: string; + contracts: string[]; + projects: string[]; + name: string; + type: "self" | "sharing" | "recipient"; + issuer: string; + expiration: number; + validatorId: number; + validatorContract: string; + issuerSignature: string; + recipientSignature: string; + sealingPair?: { + publicKey: string; + privateKey: string; + } | undefined; +}, { + type: "self" | "sharing" | "recipient"; + issuer: string; + recipient?: string | undefined; + contracts?: string[] | undefined; + projects?: string[] | undefined; + name?: string | undefined; + expiration?: number | undefined; + validatorId?: number | undefined; + validatorContract?: string | undefined; + sealingPair?: { + publicKey: string; + privateKey: string; + } | undefined; + issuerSignature?: string | undefined; + recipientSignature?: string | undefined; +}>, { + recipient: string; + contracts: string[]; + projects: string[]; + name: string; + type: "self" | "sharing" | "recipient"; + issuer: string; + expiration: number; + validatorId: number; + validatorContract: string; + issuerSignature: string; + recipientSignature: string; + sealingPair?: { + publicKey: string; + privateKey: string; + } | undefined; +}, { + type: "self" | "sharing" | "recipient"; + issuer: string; + recipient?: string | undefined; + contracts?: string[] | undefined; + projects?: string[] | undefined; + name?: string | undefined; + expiration?: number | undefined; + validatorId?: number | undefined; + validatorContract?: string | undefined; + sealingPair?: { + publicKey: string; + privateKey: string; + } | undefined; + issuerSignature?: string | undefined; + recipientSignature?: string | undefined; +}>; +/** + * Validator for a PermitV2 that is expected to be fully formed + * Does not allow optional values or offer defaults + * Validates that the correct signatures are populated + * Validates sealingPair is populated + */ +export declare const FullyFormedPermitV2Validator: z.ZodEffects>; + type: z.ZodEnum<["self", "sharing", "recipient"]>; + issuer: z.ZodEffects, string, string>; + expiration: z.ZodDefault>; + contracts: z.ZodDefault>>; + projects: z.ZodDefault>>; + recipient: z.ZodEffects>, string, string | undefined>; + validatorId: z.ZodDefault>; + validatorContract: z.ZodEffects>, string, string | undefined>; + sealingPair: z.ZodObject<{ + privateKey: z.ZodString; + publicKey: z.ZodString; + }, "strip", z.ZodTypeAny, { + publicKey: string; + privateKey: string; + }, { + publicKey: string; + privateKey: string; + }>; + issuerSignature: z.ZodDefault>; + recipientSignature: z.ZodDefault>; +}, "strip", z.ZodTypeAny, { + recipient: string; + contracts: string[]; + projects: string[]; + name: string; + type: "self" | "sharing" | "recipient"; + issuer: string; + expiration: number; + validatorId: number; + validatorContract: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + issuerSignature: string; + recipientSignature: string; +}, { + type: "self" | "sharing" | "recipient"; + issuer: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + recipient?: string | undefined; + contracts?: string[] | undefined; + projects?: string[] | undefined; + name?: string | undefined; + expiration?: number | undefined; + validatorId?: number | undefined; + validatorContract?: string | undefined; + issuerSignature?: string | undefined; + recipientSignature?: string | undefined; +}>, { + recipient: string; + contracts: string[]; + projects: string[]; + name: string; + type: "self" | "sharing" | "recipient"; + issuer: string; + expiration: number; + validatorId: number; + validatorContract: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + issuerSignature: string; + recipientSignature: string; +}, { + type: "self" | "sharing" | "recipient"; + issuer: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + recipient?: string | undefined; + contracts?: string[] | undefined; + projects?: string[] | undefined; + name?: string | undefined; + expiration?: number | undefined; + validatorId?: number | undefined; + validatorContract?: string | undefined; + issuerSignature?: string | undefined; + recipientSignature?: string | undefined; +}>, { + recipient: string; + contracts: string[]; + projects: string[]; + name: string; + type: "self" | "sharing" | "recipient"; + issuer: string; + expiration: number; + validatorId: number; + validatorContract: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + issuerSignature: string; + recipientSignature: string; +}, { + type: "self" | "sharing" | "recipient"; + issuer: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + recipient?: string | undefined; + contracts?: string[] | undefined; + projects?: string[] | undefined; + name?: string | undefined; + expiration?: number | undefined; + validatorId?: number | undefined; + validatorContract?: string | undefined; + issuerSignature?: string | undefined; + recipientSignature?: string | undefined; +}>, { + recipient: string; + contracts: string[]; + projects: string[]; + name: string; + type: "self" | "sharing" | "recipient"; + issuer: string; + expiration: number; + validatorId: number; + validatorContract: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + issuerSignature: string; + recipientSignature: string; +}, { + type: "self" | "sharing" | "recipient"; + issuer: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + recipient?: string | undefined; + contracts?: string[] | undefined; + projects?: string[] | undefined; + name?: string | undefined; + expiration?: number | undefined; + validatorId?: number | undefined; + validatorContract?: string | undefined; + issuerSignature?: string | undefined; + recipientSignature?: string | undefined; +}>; +//# sourceMappingURL=permit.z.d.ts.map \ No newline at end of file diff --git a/lib/esm/sdk/permit/permit.z.d.ts.map b/lib/esm/sdk/permit/permit.z.d.ts.map new file mode 100644 index 0000000..6345ffb --- /dev/null +++ b/lib/esm/sdk/permit/permit.z.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"permit.z.d.ts","sourceRoot":"","sources":["../../../../src/sdk/permit/permit.z.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoKxB;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASjC,CAAC;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUtC,CAAC"} \ No newline at end of file diff --git a/lib/esm/sdk/permit/permit.z.js b/lib/esm/sdk/permit/permit.z.js new file mode 100644 index 0000000..7f16994 --- /dev/null +++ b/lib/esm/sdk/permit/permit.z.js @@ -0,0 +1,169 @@ +import { isAddress, ZeroAddress } from "ethers"; +import { z } from "zod"; +const SerializedSealingPair = z.object({ + privateKey: z.string(), + publicKey: z.string(), +}); +const zPermitV2WithDefaults = z.object({ + name: z.string().optional().default("Unnamed Permit"), + type: z.enum(["self", "sharing", "recipient"]), + issuer: z + .string() + .refine((val) => isAddress(val), { + message: "PermitV2 issuer :: invalid address", + }) + .refine((val) => val !== ZeroAddress, { + message: "PermitV2 issuer :: must not be zeroAddress", + }), + expiration: z.number().optional().default(1000000000000), + contracts: z.array(z.string()).optional().default([]), + projects: z.array(z.string()).optional().default([]), + recipient: z + .string() + .optional() + .default(ZeroAddress) + .refine((val) => isAddress(val), { + message: "PermitV2 recipient :: invalid address", + }), + validatorId: z.number().optional().default(0), + validatorContract: z + .string() + .optional() + .default(ZeroAddress) + .refine((val) => isAddress(val), { + message: "PermitV2 validatorContract :: invalid address", + }), + sealingPair: SerializedSealingPair.optional(), + issuerSignature: z.string().optional().default("0x"), + recipientSignature: z.string().optional().default("0x"), +}); +/** + * Ensures that this Permit will provide access to a non-zero amount of contracts + * by ensuring that `contracts` and `projects` aren't both empty arrays. + */ +const PermitV2RefineAccess = [ + (data) => { + return data.contracts.length + data.projects.length > 0; + }, + { + message: "PermitV2 access :: at least one contract or project must be accessible.", + path: ["contracts", "projects"], + }, +]; +/** + * Permits allow a hook into an optional external validator contract, + * this check ensures that IF an external validator is applied, that both `validatorId` and `validatorContract` are populated, + * ELSE ensures that both `validatorId` and `validatorContract` are empty + */ +const PermitV2RefineValidator = [ + (data) => (data.validatorId !== 0 && data.validatorContract !== ZeroAddress) || + (data.validatorId === 0 && data.validatorContract === ZeroAddress), + { + message: "PermitV2 external validator :: validatorId and validatorContract must either both be set or both be unset.", + path: ["validatorId", "validatorContract"], + }, +]; +/** + * SuperRefinement that checks a PermitV2s signatures + * checkRecipient - whether to validate that `recipient` is empty for permit with type , and populated for + * checkSealingPair - only the fully formed permit requires the sealing pair, it can be optional for permitV2 create params + * checkExistingSignatures - not optional - checks that the permit's type matches the populated signature fields + * checkSigned - checks that the active user's signature has been signed and added. -> issuerSignature, -> recipientSignature + */ +const PermitV2SignaturesSuperRefinement = (options) => { + return (data, ctx) => { + // Check Recipient + // If type , `PermitV2.recipient` must be zeroAddress + // If type , `PermitV2.recipient` must not be zeroAddress + if (options.checkRecipient) { + if (data.type === "self" && data.recipient !== ZeroAddress) + ctx.addIssue({ + code: z.ZodIssueCode.custom, + path: ["recipient"], + message: `PermitV2 (type '${data.type}') recipient :: must be empty (zeroAddress)`, + }); + if ((data.type === "recipient" || data.type === "sharing") && + data.recipient === ZeroAddress) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + path: ["recipient"], + message: `PermitV2 (type '${data.type}') recipient :: must not be empty`, + }); + } + } + // Check Sealing Pair + if (options.checkSealingPair && data.sealingPair == null) + ctx.addIssue({ + code: z.ZodIssueCode.custom, + path: ["sealingPair"], + message: `PermitV2 sealingPair :: must not be empty`, + }); + // Check existing signatures match type (not checking this user's signature, but the other signature) + // If type , `PermitV2.recipientSignature` must be empty + // If type , `PermitV2.issuerSignature` must not be empty + if ((data.type === "self" || data.type === "sharing") && + data.recipientSignature !== "0x") { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + path: ["recipientSignature"], + message: `PermitV2 (type '${data.type}') recipientSignature :: should not be populated by the issuer`, + }); + } + if (data.type === "recipient" && data.issuerSignature === "0x") { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + path: ["issuerSignature"], + message: `PermitV2 (type 'recipient') issuerSignature :: \`issuer\` must sign the PermitV2 before sharing it with \`recipient\``, + }); + } + // Check Signed + // If type , `PermitV2.issuerSignature` must not be empty + // If type , `PermitV2.recipientSignature` must not be empty + if (options.checkSigned) { + if ((data.type === "self" || data.type === "sharing") && + data.issuerSignature === "0x") + ctx.addIssue({ + code: z.ZodIssueCode.custom, + path: ["issuerSignature"], + message: `PermitV2 (type '${data.type}') issuerSignature :: must be populated with issuer's signature. Use \`PermitV2.sign\` or create permit with \`PermitV2.createAndSign\``, + }); + if (data.type === "recipient" && data.recipientSignature === "0x") { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + path: ["recipientSignature"], + message: `PermitV2 (type 'recipient') recipientSignature :: must be populated with recipient's signature. Use \`PermitV2.sign\` or create permit with \`PermitV2.createAndSign\``, + }); + } + } + return; + }; +}; +/** + * Validator for the params used when creating a fresh PermitV2 + * Has defaults added that will be populated in the options object + * Signatures superRefinement checks only the recipient, sealingPair and signatures are not necessary in the Permit params + */ +export const PermitV2ParamsValidator = zPermitV2WithDefaults + .refine(...PermitV2RefineAccess) + .refine(...PermitV2RefineValidator) + .superRefine(PermitV2SignaturesSuperRefinement({ + checkRecipient: true, + checkSealingPair: false, // SealingPair not required when creating a fresh permit + checkSigned: false, // Signature not required when creating a fresh permit +})); +/** + * Validator for a PermitV2 that is expected to be fully formed + * Does not allow optional values or offer defaults + * Validates that the correct signatures are populated + * Validates sealingPair is populated + */ +export const FullyFormedPermitV2Validator = zPermitV2WithDefaults + .required() + .refine(...PermitV2RefineAccess) + .refine(...PermitV2RefineValidator) + .superRefine(PermitV2SignaturesSuperRefinement({ + checkRecipient: true, + checkSealingPair: true, + checkSigned: true, +})); +//# sourceMappingURL=permit.z.js.map \ No newline at end of file diff --git a/lib/esm/sdk/permit/permit.z.js.map b/lib/esm/sdk/permit/permit.z.js.map new file mode 100644 index 0000000..875f4c9 --- /dev/null +++ b/lib/esm/sdk/permit/permit.z.js.map @@ -0,0 +1 @@ +{"version":3,"file":"permit.z.js","sourceRoot":"","sources":["../../../../src/sdk/permit/permit.z.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/esm/sdk/permit/store.d.ts b/lib/esm/sdk/permit/store.d.ts new file mode 100644 index 0000000..422843a --- /dev/null +++ b/lib/esm/sdk/permit/store.d.ts @@ -0,0 +1,62 @@ +import { SerializedPermitV2 } from "../../types"; +import { PermitV2 } from "./permit"; +type AccountRecord = Record; +type HashRecord = Record; +type PermitsStore = { + permits: AccountRecord>; + activePermitHash: AccountRecord; +}; +export declare const _permitStore: Omit, "persist"> & { + persist: { + setOptions: (options: Partial>) => void; + clearStorage: () => void; + rehydrate: () => void | Promise; + hasHydrated: () => boolean; + onHydrate: (fn: (state: PermitsStore) => void) => () => void; + onFinishHydration: (fn: (state: PermitsStore) => void) => () => void; + getOptions: () => Partial>; + }; +}; +export declare const getPermit: (account: string | undefined, hash: string | undefined) => PermitV2 | undefined; +export declare const getActivePermit: (account: string | undefined) => PermitV2 | undefined; +export declare const getPermits: (account: string | undefined) => Record; +export declare const setPermit: (account: string, permitV2: PermitV2) => void; +export declare const removePermit: (account: string, hash: string) => void; +export declare const getActivePermitHash: (account: string | undefined) => string | undefined; +export declare const setActivePermitHash: (account: string, hash: string) => void; +export declare const removeActivePermitHash: (account: string) => void; +export declare const permitStore: { + store: Omit, "persist"> & { + persist: { + setOptions: (options: Partial>) => void; + clearStorage: () => void; + rehydrate: () => void | Promise; + hasHydrated: () => boolean; + onHydrate: (fn: (state: PermitsStore) => void) => () => void; + onFinishHydration: (fn: (state: PermitsStore) => void) => () => void; + getOptions: () => Partial>; + }; + }; + getPermit: (account: string | undefined, hash: string | undefined) => PermitV2 | undefined; + getActivePermit: (account: string | undefined) => PermitV2 | undefined; + getPermits: (account: string | undefined) => Record; + setPermit: (account: string, permitV2: PermitV2) => void; + removePermit: (account: string, hash: string) => void; + getActivePermitHash: (account: string | undefined) => string | undefined; + setActivePermitHash: (account: string, hash: string) => void; + removeActivePermitHash: (account: string) => void; +}; +export {}; +//# sourceMappingURL=store.d.ts.map \ No newline at end of file diff --git a/lib/esm/sdk/permit/store.d.ts.map b/lib/esm/sdk/permit/store.d.ts.map new file mode 100644 index 0000000..c9938ae --- /dev/null +++ b/lib/esm/sdk/permit/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/sdk/permit/store.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,KAAK,aAAa,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC1C,KAAK,UAAU,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAEvC,KAAK,YAAY,GAAG;IAClB,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC,CAAC;IACnE,gBAAgB,EAAE,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACrD,CAAC;AAIF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;CAQxB,CAAC;AAIF,eAAO,MAAM,SAAS,YACX,MAAM,GAAG,SAAS,QACrB,MAAM,GAAG,SAAS,KACvB,QAAQ,GAAG,SAOb,CAAC;AAEF,eAAO,MAAM,eAAe,YACjB,MAAM,GAAG,SAAS,KAC1B,QAAQ,GAAG,SAKb,CAAC;AAEF,eAAO,MAAM,UAAU,YACZ,MAAM,GAAG,SAAS,KAC1B,OAAO,MAAM,EAAE,QAAQ,CAUzB,CAAC;AAEF,eAAO,MAAM,SAAS,YAAa,MAAM,YAAY,QAAQ,SAO5D,CAAC;AAEF,eAAO,MAAM,YAAY,YAAa,MAAM,QAAQ,MAAM,SAMzD,CAAC;AAIF,eAAO,MAAM,mBAAmB,YACrB,MAAM,GAAG,SAAS,KAC1B,MAAM,GAAG,SAGX,CAAC;AAEF,eAAO,MAAM,mBAAmB,YAAa,MAAM,QAAQ,MAAM,SAMhE,CAAC;AAEF,eAAO,MAAM,sBAAsB,YAAa,MAAM,SAMrD,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;yBA5Eb,MAAM,GAAG,SAAS,QACrB,MAAM,GAAG,SAAS,KACvB,QAAQ,GAAG,SAAS;+BAUZ,MAAM,GAAG,SAAS,KAC1B,QAAQ,GAAG,SAAS;0BAQZ,MAAM,GAAG,SAAS,KAC1B,OAAO,MAAM,EAAE,QAAQ,CAAC;yBAYQ,MAAM,YAAY,QAAQ;4BASvB,MAAM,QAAQ,MAAM;mCAW/C,MAAM,GAAG,SAAS,KAC1B,MAAM,GAAG,SAAS;mCAKwB,MAAM,QAAQ,MAAM;sCAQjB,MAAM;CAoBrD,CAAC"} \ No newline at end of file diff --git a/lib/esm/sdk/permit/store.js b/lib/esm/sdk/permit/store.js new file mode 100644 index 0000000..31790c1 --- /dev/null +++ b/lib/esm/sdk/permit/store.js @@ -0,0 +1,74 @@ +import { createStore } from "zustand/vanilla"; +import { persist } from "zustand/middleware"; +import { produce } from "immer"; +import { PermitV2 } from "./permit"; +// Stores generated permits for each user, a hash indicating the active permit for each user, and a list of fheKeys as a cache +// Can be used to create reactive hooks +export const _permitStore = createStore()(persist(() => ({ + permits: {}, + activePermitHash: {}, +}), { name: "fhenixjs-permits" })); +// Permit V2 +export const getPermit = (account, hash) => { + if (account == null || hash == null) + return; + const savedPermit = _permitStore.getState().permits[account]?.[hash]; + if (savedPermit == null) + return; + return PermitV2.deserialize(savedPermit); +}; +export const getActivePermit = (account) => { + if (account == null) + return; + const activePermitHash = _permitStore.getState().activePermitHash[account]; + return getPermit(account, activePermitHash); +}; +export const getPermits = (account) => { + if (account == null) + return {}; + return Object.entries(_permitStore.getState().permits[account] ?? {}).reduce((acc, [hash, permit]) => { + if (permit == undefined) + return acc; + return { ...acc, [hash]: PermitV2.deserialize(permit) }; + }, {}); +}; +export const setPermit = (account, permitV2) => { + _permitStore.setState(produce((state) => { + if (state.permits[account] == null) + state.permits[account] = {}; + state.permits[account][permitV2.getHash()] = permitV2.serialize(); + })); +}; +export const removePermit = (account, hash) => { + _permitStore.setState(produce((state) => { + state.permits[account][hash] = undefined; + })); +}; +// Active Permit Hash +export const getActivePermitHash = (account) => { + if (account == null) + return undefined; + return _permitStore.getState().activePermitHash[account]; +}; +export const setActivePermitHash = (account, hash) => { + _permitStore.setState(produce((state) => { + state.activePermitHash[account] = hash; + })); +}; +export const removeActivePermitHash = (account) => { + _permitStore.setState(produce((state) => { + state.activePermitHash[account] = undefined; + })); +}; +export const permitStore = { + store: _permitStore, + getPermit, + getActivePermit, + getPermits, + setPermit, + removePermit, + getActivePermitHash, + setActivePermitHash, + removeActivePermitHash, +}; +//# sourceMappingURL=store.js.map \ No newline at end of file diff --git a/lib/esm/sdk/permit/store.js.map b/lib/esm/sdk/permit/store.js.map new file mode 100644 index 0000000..8eecc78 --- /dev/null +++ b/lib/esm/sdk/permit/store.js.map @@ -0,0 +1 @@ +{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../src/sdk/permit/store.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/esm/sdk/store.d.ts b/lib/esm/sdk/store.d.ts new file mode 100644 index 0000000..17ff538 --- /dev/null +++ b/lib/esm/sdk/store.d.ts @@ -0,0 +1,45 @@ +import { TfheCompactPublicKey } from "./fhe/fhe"; +import { AbstractProvider, AbstractSigner, InitializationParams, PermitV2AccessRequirements } from "../types"; +type ChainRecord = Record; +type SecurityZoneRecord = Record; +type SdkStoreProviderInitialization = { + providerInitialized: false; + signer: never; + account: never; +} | { + providerInitialized: true; + provider: AbstractProvider; + chainId: string; +}; +type SdkStoreSignerInitialization = { + signerInitialized: false; + signer: never; + account: never; +} | { + signerInitialized: true; + signer: AbstractSigner; + account: string; +}; +export type SdkStore = SdkStoreProviderInitialization & SdkStoreSignerInitialization & { + provider: AbstractProvider; + chainId: string; + fheKeysInitialized: boolean; + securityZones: number[]; + fheKeys: ChainRecord>; + accessRequirements: PermitV2AccessRequirements; + coFheUrl: string | undefined; +}; +export declare const _sdkStore: import("zustand/vanilla").StoreApi; +export declare const _store_getConnectedChainFheKey: (securityZone?: number) => TfheCompactPublicKey | undefined; +export declare const _store_setFheKey: (chainId: string | undefined, securityZone: number | undefined, fheKey: TfheCompactPublicKey | undefined) => void; +export declare const _store_initialize: (params: InitializationParams) => Promise; +/** + * Retrieves the FHE public key from the provider. + * If the key already exists in the store it is returned, else it is fetched, stored, and returned + * @param {string} chainId - The chain to fetch the FHE key for, if no chainId provided, undefined is returned + * @param securityZone - The security zone for which to retrieve the key (default 0). + * @returns {Promise} - The retrieved public key. + */ +export declare const _store_fetchFheKey: (chainId: string, securityZone?: number, forceFetch?: boolean) => Promise; +export {}; +//# sourceMappingURL=store.d.ts.map \ No newline at end of file diff --git a/lib/esm/sdk/store.d.ts.map b/lib/esm/sdk/store.d.ts.map new file mode 100644 index 0000000..9bf72a2 --- /dev/null +++ b/lib/esm/sdk/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/sdk/store.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAIjD,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,0BAA0B,EAC3B,MAAM,UAAU,CAAC;AAElB,KAAK,WAAW,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACxC,KAAK,kBAAkB,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAE/C,KAAK,8BAA8B,GAC/B;IACE,mBAAmB,EAAE,KAAK,CAAC;IAC3B,MAAM,EAAE,KAAK,CAAC;IACd,OAAO,EAAE,KAAK,CAAC;CAChB,GACD;IACE,mBAAmB,EAAE,IAAI,CAAC;IAC1B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEN,KAAK,4BAA4B,GAC7B;IACE,iBAAiB,EAAE,KAAK,CAAC;IACzB,MAAM,EAAE,KAAK,CAAC;IACd,OAAO,EAAE,KAAK,CAAC;CAChB,GACD;IACE,iBAAiB,EAAE,IAAI,CAAC;IACxB,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEN,MAAM,MAAM,QAAQ,GAAG,8BAA8B,GACnD,4BAA4B,GAAG;IAC7B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAEhB,kBAAkB,EAAE,OAAO,CAAC;IAE5B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,WAAW,CAAC,kBAAkB,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC;IACjE,kBAAkB,EAAE,0BAA0B,CAAC;IAE/C,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B,CAAC;AAEJ,eAAO,MAAM,SAAS,8CAsBrB,CAAC;AAgBF,eAAO,MAAM,8BAA8B,6BAExC,oBAAoB,GAAG,SAUzB,CAAC;AAEF,eAAO,MAAM,gBAAgB,YAClB,MAAM,GAAG,SAAS,gBACb,MAAM,GAAG,SAAS,UACxB,oBAAoB,GAAG,SAAS,SAUzC,CAAC;AAsBF,eAAO,MAAM,iBAAiB,WAAkB,oBAAoB,kBAkEnE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,YACpB,MAAM,iBACD,MAAM,2BAEnB,QAAQ,oBAAoB,CA2D9B,CAAC"} \ No newline at end of file diff --git a/lib/esm/sdk/store.js b/lib/esm/sdk/store.js new file mode 100644 index 0000000..84fb4b6 --- /dev/null +++ b/lib/esm/sdk/store.js @@ -0,0 +1,164 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { createStore } from "zustand/vanilla"; +import { produce } from "immer"; +import { TfheCompactPublicKey } from "./fhe/fhe"; +import { fromHexString } from "./utils"; +import { chainIsHardhat } from "./utils.hardhat"; +import { PUBLIC_KEY_LENGTH_MIN } from "./consts"; +export const _sdkStore = createStore(() => ({ + fheKeysInitialized: false, + securityZones: [0], + fheKeys: {}, + accessRequirements: { + contracts: [], + projects: [], + }, + coFheUrl: undefined, + providerInitialized: false, + provider: undefined, + chainId: undefined, + signerInitialized: false, + signer: undefined, + account: undefined, +})); +// Store getters / setters +const _store_getFheKey = (chainId, securityZone = 0) => { + if (chainId == null || securityZone == null) + return undefined; + const serialized = _sdkStore.getState().fheKeys[chainId]?.[securityZone]; + if (serialized == null) + return undefined; + return TfheCompactPublicKey.deserialize(serialized); +}; +export const _store_getConnectedChainFheKey = (securityZone = 0) => { + const state = _sdkStore.getState(); + if (securityZone == null) + return undefined; + if (state.chainId == null) + return undefined; + const serialized = state.fheKeys[state.chainId]?.[securityZone]; + if (serialized == null) + return undefined; + return TfheCompactPublicKey.deserialize(serialized); +}; +export const _store_setFheKey = (chainId, securityZone, fheKey) => { + if (chainId == null || securityZone == null) + return; + _sdkStore.setState(produce((state) => { + if (state.fheKeys[chainId] == null) + state.fheKeys[chainId] = {}; + state.fheKeys[chainId][securityZone] = fheKey?.serialize(); + })); +}; +const getChainIdFromProvider = async (provider) => { + var chainId = null; + try { + chainId = await provider.getChainId(); + } + catch (err) { + const network = await provider.getNetwork(); + chainId = network.chainId; + } + if (chainId == null) + throw new Error("sdk :: getChainIdFromProvider :: provider.getChainId returned a null result, ensure that your provider is connected to a network"); + return chainId; +}; +// External functionality +export const _store_initialize = async (params) => { + const { provider, signer, securityZones = [0], contracts: contractRequirements = [], projects: projectRequirements = [], coFheUrl = undefined, } = params; + _sdkStore.setState({ + providerInitialized: false, + signerInitialized: false, + accessRequirements: { + contracts: contractRequirements, + projects: projectRequirements, + }, + coFheUrl, + }); + // PROVIDER + // Fetch chain Id from provider + const chainId = await getChainIdFromProvider(provider); + const chainIdChanged = chainId != null && chainId !== _sdkStore.getState().chainId; + if (chainId != null && provider != null) { + _sdkStore.setState({ providerInitialized: true, provider, chainId }); + } + // SIGNER + // Account is fetched and stored here, the `account` field in the store is used to index which permits belong to which users + // In sdk functions, `state.account != null` is validated, this is a check to ensure that a valid signer has been provided + // which is necessary to interact with permits + const account = await signer?.getAddress(); + if (account != null && signer != null) { + _sdkStore.setState({ signerInitialized: true, account, signer }); + } + else { + _sdkStore.setState({ + signerInitialized: false, + account: undefined, + signer: undefined, + }); + } + // If chainId, securityZones, or CoFhe enabled changes, update the store and update fheKeys for re-initialization + const securityZonesChanged = securityZones !== _sdkStore.getState().securityZones; + if (chainIdChanged || securityZonesChanged) { + _sdkStore.setState({ + securityZones, + fheKeysInitialized: false, + }); + } + // Fetch FHE keys (skipped if hardhat) + if (!chainIsHardhat(chainId) && !_sdkStore.getState().fheKeysInitialized) { + await Promise.all(securityZones.map((securityZone) => _store_fetchFheKey(chainId, securityZone, true))); + } + _sdkStore.setState({ fheKeysInitialized: true }); +}; +/** + * Retrieves the FHE public key from the provider. + * If the key already exists in the store it is returned, else it is fetched, stored, and returned + * @param {string} chainId - The chain to fetch the FHE key for, if no chainId provided, undefined is returned + * @param securityZone - The security zone for which to retrieve the key (default 0). + * @returns {Promise} - The retrieved public key. + */ +export const _store_fetchFheKey = async (chainId, securityZone = 0, forceFetch = false) => { + const storedKey = _store_getFheKey(chainId, securityZone); + if (storedKey != null && !forceFetch) + return storedKey; + const coFheUrl = _sdkStore.getState().coFheUrl; + if (coFheUrl == null || typeof coFheUrl !== "string") { + throw new Error("Error initializing fhenixjs; coFheUrl invalid, ensure it is set in `fhenixsdk.initialize`"); + } + let publicKey = undefined; + // Fetch publicKey from CoFhe + try { + // TODO: misspelling? + const res = await fetch(`${coFheUrl}/GetNetworkPublickKey`, { + method: "POST", + body: JSON.stringify({ + SecurityZone: securityZone, + }), + }); + const data = await res.json(); + publicKey = `0x${data.securityZone}`; + } + catch (err) { + throw new Error(`Error initializing fhenixjs; fetching FHE publicKey from CoFHE failed with error ${err}`); + } + if (publicKey == null || typeof publicKey !== "string") { + throw new Error(`Error initializing fhenixjs; FHE publicKey fetched from CoFHE invalid: not a string`); + } + if (publicKey === "0x") { + throw new Error("Error initializing fhenixjs; provided chain is not FHE enabled, no FHE publicKey found"); + } + if (publicKey.length < PUBLIC_KEY_LENGTH_MIN) { + throw new Error(`Error initializing fhenixjs; got shorter than expected FHE publicKey: ${publicKey.length}. Expected length >= ${PUBLIC_KEY_LENGTH_MIN}`); + } + const buff = fromHexString(publicKey); + try { + const key = TfheCompactPublicKey.deserialize(buff); + _store_setFheKey(chainId, securityZone, key); + return key; + } + catch (err) { + throw new Error(`Error deserializing public key ${err}`); + } +}; +//# sourceMappingURL=store.js.map \ No newline at end of file diff --git a/lib/esm/sdk/store.js.map b/lib/esm/sdk/store.js.map new file mode 100644 index 0000000..04670a3 --- /dev/null +++ b/lib/esm/sdk/store.js.map @@ -0,0 +1 @@ +{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/sdk/store.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/esm/sdk/types.d.ts b/lib/esm/sdk/types.d.ts index 6cd2e52..6710430 100644 --- a/lib/esm/sdk/types.d.ts +++ b/lib/esm/sdk/types.d.ts @@ -36,6 +36,8 @@ export type InstanceParams = { provider: SupportedProvider; ignoreErrors?: boolean; skipPubKeyFetch?: boolean; + cofhe?: boolean; + cofheURL?: string; }; /** * Type of the constructor of the sync fhenix client diff --git a/lib/esm/sdk/types.d.ts.map b/lib/esm/sdk/types.d.ts.map index ebe7b4d..8cc9368 100644 --- a/lib/esm/sdk/types.d.ts.map +++ b/lib/esm/sdk/types.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/sdk/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAErE;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAErD;;;GAGG;AACH,oBAAY,eAAe;IACzB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,+BAA+B,GAAG,cAAc,GAAG;IAC7D,aAAa,EAAE,KAAK,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAAC;CACxD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,UAAU,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAGF,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,SAAS,CAAC,IAAI,OAAO,CAAC;IACtB,SAAS,CAAC,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAChE;AAED;;;;;;GAMG;AAEH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,QAAQ,CAuB5E;AAED;;;;;;GAMG;AAEH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,QAAQ,CAM5E;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,aAAc,SAAQ,eAAe;CAAG;AACzD,MAAM,WAAW,cAAe,SAAQ,eAAe;CAAG;AAC1D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAC5D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAC5D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG"} \ No newline at end of file +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/sdk/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAErE;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAErD;;;GAGG;AACH,oBAAY,eAAe;IACzB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,+BAA+B,GAAG,cAAc,GAAG;IAC7D,aAAa,EAAE,KAAK,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAAC;CACxD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,UAAU,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAGF,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,SAAS,CAAC,IAAI,OAAO,CAAC;IACtB,SAAS,CAAC,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAChE;AAED;;;;;;GAMG;AAEH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,QAAQ,CAuB5E;AAED;;;;;;GAMG;AAEH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,QAAQ,CAM5E;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,aAAc,SAAQ,eAAe;CAAG;AACzD,MAAM,WAAW,cAAe,SAAQ,eAAe;CAAG;AAC1D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAC5D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAC5D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG"} \ No newline at end of file diff --git a/lib/esm/sdk/types.js.map b/lib/esm/sdk/types.js.map index 170f57f..0213d33 100644 --- a/lib/esm/sdk/types.js.map +++ b/lib/esm/sdk/types.js.map @@ -1 +1 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/sdk/types.ts"],"names":[],"mappings":"AAWA;;;GAGG;AACH,MAAM,CAAN,IAAY,eASX;AATD,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,kCAAe,CAAA;IACf,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;IACjB,sCAAmB,CAAA;IACnB,sCAAmB,CAAA;IACnB,sCAAmB,CAAA;AACrB,CAAC,EATW,eAAe,KAAf,eAAe,QAS1B;AA8CD;;;;;;GAMG;AACH,yDAAyD;AACzD,MAAM,UAAU,sBAAsB,CAAC,QAA2B;IAChE,IAAI,SAAS,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QACpE,OAAO,CAAC,CAAoB,EAAE,MAAc,EAAE,MAAkB,EAAE,EAAE,CAEhE,CAAC,CAAC,OAOH,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1B,CAAC;SAAM,IAAI,MAAM,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACrE,OAAO,CAAC,CAAoB,EAAE,MAAc,EAAE,MAAkB,EAAE,EAAE,CACjE,CAAC,CAAC,IAAiE,CAClE,MAAM,EACN,MAAM,CACP,CAAC;IACN,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,yDAAyD;AACzD,MAAM,UAAU,sBAAsB,CAAC,QAA2B;IAChE,IAAI,WAAW,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;QACxE,OAAO,CAAC,CAAoB,EAAE,EAAE,CAAE,CAAC,CAAC,SAA2B,EAAE,CAAC;IACpE,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC"} \ No newline at end of file +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/sdk/types.ts"],"names":[],"mappings":"AAWA;;;GAGG;AACH,MAAM,CAAN,IAAY,eASX;AATD,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,kCAAe,CAAA;IACf,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;IACjB,sCAAmB,CAAA;IACnB,sCAAmB,CAAA;IACnB,sCAAmB,CAAA;AACrB,CAAC,EATW,eAAe,KAAf,eAAe,QAS1B;AAgDD;;;;;;GAMG;AACH,yDAAyD;AACzD,MAAM,UAAU,sBAAsB,CAAC,QAA2B;IAChE,IAAI,SAAS,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QACpE,OAAO,CAAC,CAAoB,EAAE,MAAc,EAAE,MAAkB,EAAE,EAAE,CAEhE,CAAC,CAAC,OAOH,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1B,CAAC;SAAM,IAAI,MAAM,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACrE,OAAO,CAAC,CAAoB,EAAE,MAAc,EAAE,MAAkB,EAAE,EAAE,CACjE,CAAC,CAAC,IAAiE,CAClE,MAAM,EACN,MAAM,CACP,CAAC;IACN,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,yDAAyD;AACzD,MAAM,UAAU,sBAAsB,CAAC,QAA2B;IAChE,IAAI,WAAW,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;QACxE,OAAO,CAAC,CAAoB,EAAE,EAAE,CAAE,CAAC,CAAC,SAA2B,EAAE,CAAC;IACpE,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC"} \ No newline at end of file diff --git a/lib/esm/sdk/utils.d.ts b/lib/esm/sdk/utils.d.ts index 629a420..6af02c9 100644 --- a/lib/esm/sdk/utils.d.ts +++ b/lib/esm/sdk/utils.d.ts @@ -1,4 +1,3 @@ -import { EncryptedNumber } from "./types.js"; export declare const ValidateUintInRange: (value: number, max: number, min: number) => void; export declare const fromHexString: (hexString: string) => Uint8Array; export declare const toHexString: (bytes: Uint8Array) => string; @@ -8,7 +7,5 @@ export declare function isAddress(address: string): void; export declare function toABIEncodedUint32(value: number): string; export declare const stringToUint8Array: (value: string) => Uint8Array; export declare const uint8ArrayToString: (value: Uint8Array) => string; -export declare const chainIsHardhat: (chainId?: string) => boolean; -export declare const hardhatMockUnseal: (value: string) => bigint; -export declare const hardhatMockEncrypt: (value: bigint, securityZone?: number) => EncryptedNumber; +export declare const bigintToUint8Array: (bigNum: bigint) => Uint8Array; //# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/lib/esm/sdk/utils.d.ts.map b/lib/esm/sdk/utils.d.ts.map index 6634e46..b52d6d2 100644 --- a/lib/esm/sdk/utils.d.ts.map +++ b/lib/esm/sdk/utils.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/sdk/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,eAAO,MAAM,mBAAmB,UACvB,MAAM,OACR,MAAM,OACN,MAAM,KACV,IAQF,CAAC;AAEF,eAAO,MAAM,aAAa,cAAe,MAAM,KAAG,UAKjD,CAAC;AAEF,eAAO,MAAM,WAAW,UAAW,UAAU,WAC8B,CAAC;AAE5E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAElD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAE5D;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,QAIxC;AA0GD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,UAQ/C;AAID,eAAO,MAAM,kBAAkB,UAAW,MAAM,KAAG,UAElD,CAAC;AACF,eAAO,MAAM,kBAAkB,UAAW,UAAU,KAAG,MAItD,CAAC;AAuBF,eAAO,MAAM,cAAc,aAAc,MAAM,KAAG,OAGjD,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAAW,MAAM,KAAG,MAMjD,CAAC;AAEF,eAAO,MAAM,kBAAkB,UACtB,MAAM,4BAEZ,eAGD,CAAC"} \ No newline at end of file +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/sdk/utils.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,UACvB,MAAM,OACR,MAAM,OACN,MAAM,KACV,IAQF,CAAC;AAEF,eAAO,MAAM,aAAa,cAAe,MAAM,KAAG,UAKjD,CAAC;AAEF,eAAO,MAAM,WAAW,UAAW,UAAU,WAC8B,CAAC;AAE5E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAElD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAE5D;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,QAIxC;AA0GD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,UAQ/C;AAID,eAAO,MAAM,kBAAkB,UAAW,MAAM,KAAG,UAElD,CAAC;AACF,eAAO,MAAM,kBAAkB,UAAW,UAAU,KAAG,MAItD,CAAC;AACF,eAAO,MAAM,kBAAkB,WAAY,MAAM,KAAG,UAgBnD,CAAC"} \ No newline at end of file diff --git a/lib/esm/sdk/utils.hardhat.d.ts b/lib/esm/sdk/utils.hardhat.d.ts new file mode 100644 index 0000000..53ae8cb --- /dev/null +++ b/lib/esm/sdk/utils.hardhat.d.ts @@ -0,0 +1,5 @@ +import { EncryptedNumber } from "../types"; +export declare const chainIsHardhat: (chainId?: string) => boolean; +export declare const hardhatMockUnseal: (value: string) => bigint; +export declare const hardhatMockEncrypt: (value: bigint, securityZone?: number) => EncryptedNumber; +//# sourceMappingURL=utils.hardhat.d.ts.map \ No newline at end of file diff --git a/lib/esm/sdk/utils.hardhat.d.ts.map b/lib/esm/sdk/utils.hardhat.d.ts.map new file mode 100644 index 0000000..bb6f941 --- /dev/null +++ b/lib/esm/sdk/utils.hardhat.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.hardhat.d.ts","sourceRoot":"","sources":["../../../src/sdk/utils.hardhat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAO3C,eAAO,MAAM,cAAc,aAAc,MAAM,KAAG,OAGjD,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAAW,MAAM,KAAG,MAMjD,CAAC;AAEF,eAAO,MAAM,kBAAkB,UACtB,MAAM,4BAEZ,eAGD,CAAC"} \ No newline at end of file diff --git a/lib/esm/sdk/utils.hardhat.js b/lib/esm/sdk/utils.hardhat.js new file mode 100644 index 0000000..db1296f --- /dev/null +++ b/lib/esm/sdk/utils.hardhat.js @@ -0,0 +1,21 @@ +import { bigintToUint8Array, stringToUint8Array } from "./utils"; +// HARDHAT MOCKS +// Mock FHE operations are automatically injected on the hardhat network +// The utility functions allow the client / sdk to interact with the mocked FHE ops +export const chainIsHardhat = (chainId) => { + if (chainId == null) + return false; + return parseInt(chainId) === 31337; +}; +export const hardhatMockUnseal = (value) => { + let result = BigInt(0); + for (const byteArrayItem of stringToUint8Array(value)) { + result = (result << BigInt(8)) + BigInt(byteArrayItem); + } + return result; +}; +export const hardhatMockEncrypt = (value, securityZone = 0) => ({ + data: bigintToUint8Array(BigInt(value)), + securityZone: securityZone || 0, +}); +//# sourceMappingURL=utils.hardhat.js.map \ No newline at end of file diff --git a/lib/esm/sdk/utils.hardhat.js.map b/lib/esm/sdk/utils.hardhat.js.map new file mode 100644 index 0000000..0b4c67b --- /dev/null +++ b/lib/esm/sdk/utils.hardhat.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.hardhat.js","sourceRoot":"","sources":["../../../src/sdk/utils.hardhat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAEjE,gBAAgB;AAChB,wEAAwE;AACxE,mFAAmF;AAEnF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAW,EAAE;IAC1D,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IAClC,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAU,EAAE;IACzD,IAAI,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,KAAK,MAAM,aAAa,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,MAAM,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,KAAa,EACb,YAAY,GAAG,CAAC,EACC,EAAE,CAAC,CAAC;IACrB,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvC,YAAY,EAAE,YAAY,IAAI,CAAC;CAChC,CAAC,CAAC"} \ No newline at end of file diff --git a/lib/esm/sdk/utils.js b/lib/esm/sdk/utils.js index 1f57d04..9380113 100644 --- a/lib/esm/sdk/utils.js +++ b/lib/esm/sdk/utils.js @@ -133,7 +133,7 @@ export const uint8ArrayToString = (value) => { .map((byte) => String.fromCharCode(byte)) .join(""); }; -function bigintToUint8Array(bigNum) { +export const bigintToUint8Array = (bigNum) => { const byteLength = 32; const byteArray = new Uint8Array(byteLength); // Create a BigInt mask for each byte @@ -146,24 +146,5 @@ function bigintToUint8Array(bigNum) { bigNum >>= BigInt(8); } return byteArray; -} -// HARDHAT MOCKS -// Mock FHE operations are automatically injected on the hardhat network -// The utility functions allow the client / sdk to interact with the mocked FHE ops -export const chainIsHardhat = (chainId) => { - if (chainId == null) - return false; - return parseInt(chainId) === 31337; -}; -export const hardhatMockUnseal = (value) => { - let result = BigInt(0); - for (const byteArrayItem of stringToUint8Array(value)) { - result = (result << BigInt(8)) + BigInt(byteArrayItem); - } - return result; }; -export const hardhatMockEncrypt = (value, securityZone = 0) => ({ - data: bigintToUint8Array(BigInt(value)), - securityZone: securityZone || 0, -}); //# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/lib/esm/sdk/utils.js.map b/lib/esm/sdk/utils.js.map index a89cd06..08e9942 100644 --- a/lib/esm/sdk/utils.js.map +++ b/lib/esm/sdk/utils.js.map @@ -1 +1 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/sdk/utils.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/sdk/utils.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/esm/types/EIP712.d.ts b/lib/esm/types/EIP712.d.ts new file mode 100644 index 0000000..5c53072 --- /dev/null +++ b/lib/esm/types/EIP712.d.ts @@ -0,0 +1,19 @@ +export type EIP712Type = { + name: string; + type: string; +}; +export type EIP712Types = Record; +export type EIP712Message = Record; +export type EIP712Domain = { + chainId: number; + name: string; + verifyingContract: string; + version: string; +}; +export type EIP712 = { + domain: EIP712Domain; + message: EIP712Message; + primaryType: string; + types: EIP712Types; +}; +//# sourceMappingURL=EIP712.d.ts.map \ No newline at end of file diff --git a/lib/esm/types/EIP712.d.ts.map b/lib/esm/types/EIP712.d.ts.map new file mode 100644 index 0000000..cc88f84 --- /dev/null +++ b/lib/esm/types/EIP712.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"EIP712.d.ts","sourceRoot":"","sources":["../../../src/types/EIP712.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AACxD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;AACvD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACnD,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,WAAW,CAAC;CACpB,CAAC"} \ No newline at end of file diff --git a/lib/esm/types/EIP712.js b/lib/esm/types/EIP712.js new file mode 100644 index 0000000..b5b9d6b --- /dev/null +++ b/lib/esm/types/EIP712.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=EIP712.js.map \ No newline at end of file diff --git a/lib/esm/types/EIP712.js.map b/lib/esm/types/EIP712.js.map new file mode 100644 index 0000000..2d8ac8f --- /dev/null +++ b/lib/esm/types/EIP712.js.map @@ -0,0 +1 @@ +{"version":3,"file":"EIP712.js","sourceRoot":"","sources":["../../../src/types/EIP712.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/lib/esm/types/base.d.ts b/lib/esm/types/base.d.ts new file mode 100644 index 0000000..91cf6a0 --- /dev/null +++ b/lib/esm/types/base.d.ts @@ -0,0 +1,36 @@ +/** + * An enumeration of supported encryption types. + * uint8, uint16, and uint32 represent the different sizes of integers that can be encrypted. + */ +export declare enum EncryptionTypes { + bool = "bool", + uint8 = "uint8", + uint16 = "uint16", + uint32 = "uint32", + uint64 = "uint64", + uint128 = "uint128", + uint256 = "uint256", + address = "address" +} +/** + * Mapping of encryption types to their utype integer + */ +export declare enum FheUType { + bool = 13, + uint8 = 0, + uint16 = 1, + uint32 = 2, + uint64 = 3, + uint128 = 4, + uint256 = 5, + address = 12 +} +/** + * List of All FHE uint types (excludes bool and address) + */ +export declare const FheUintUTypes: readonly [FheUType.uint8, FheUType.uint16, FheUType.uint32, FheUType.uint64, FheUType.uint128, FheUType.uint256]; +/** + * List of All FHE types (uints, bool, and address) + */ +export declare const FheAllUTypes: readonly [FheUType.bool, FheUType.uint8, FheUType.uint16, FheUType.uint32, FheUType.uint64, FheUType.uint128, FheUType.uint256, FheUType.address]; +//# sourceMappingURL=base.d.ts.map \ No newline at end of file diff --git a/lib/esm/types/base.d.ts.map b/lib/esm/types/base.d.ts.map new file mode 100644 index 0000000..8476a65 --- /dev/null +++ b/lib/esm/types/base.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/types/base.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,eAAe;IACzB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,oBAAY,QAAQ;IAClB,IAAI,KAAK;IACT,KAAK,IAAI;IACT,MAAM,IAAI;IACV,MAAM,IAAI;IACV,MAAM,IAAI;IACV,OAAO,IAAI;IACX,OAAO,IAAI;IACX,OAAO,KAAK;CACb;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,kHAOhB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,YAAY,mJASf,CAAC"} \ No newline at end of file diff --git a/lib/esm/types/base.js b/lib/esm/types/base.js new file mode 100644 index 0000000..229e919 --- /dev/null +++ b/lib/esm/types/base.js @@ -0,0 +1,54 @@ +/** + * An enumeration of supported encryption types. + * uint8, uint16, and uint32 represent the different sizes of integers that can be encrypted. + */ +export var EncryptionTypes; +(function (EncryptionTypes) { + EncryptionTypes["bool"] = "bool"; + EncryptionTypes["uint8"] = "uint8"; + EncryptionTypes["uint16"] = "uint16"; + EncryptionTypes["uint32"] = "uint32"; + EncryptionTypes["uint64"] = "uint64"; + EncryptionTypes["uint128"] = "uint128"; + EncryptionTypes["uint256"] = "uint256"; + EncryptionTypes["address"] = "address"; +})(EncryptionTypes || (EncryptionTypes = {})); +/** + * Mapping of encryption types to their utype integer + */ +export var FheUType; +(function (FheUType) { + FheUType[FheUType["bool"] = 13] = "bool"; + FheUType[FheUType["uint8"] = 0] = "uint8"; + FheUType[FheUType["uint16"] = 1] = "uint16"; + FheUType[FheUType["uint32"] = 2] = "uint32"; + FheUType[FheUType["uint64"] = 3] = "uint64"; + FheUType[FheUType["uint128"] = 4] = "uint128"; + FheUType[FheUType["uint256"] = 5] = "uint256"; + FheUType[FheUType["address"] = 12] = "address"; +})(FheUType || (FheUType = {})); +/** + * List of All FHE uint types (excludes bool and address) + */ +export const FheUintUTypes = [ + FheUType.uint8, + FheUType.uint16, + FheUType.uint32, + FheUType.uint64, + FheUType.uint128, + FheUType.uint256, +]; +/** + * List of All FHE types (uints, bool, and address) + */ +export const FheAllUTypes = [ + FheUType.bool, + FheUType.uint8, + FheUType.uint16, + FheUType.uint32, + FheUType.uint64, + FheUType.uint128, + FheUType.uint256, + FheUType.address, +]; +//# sourceMappingURL=base.js.map \ No newline at end of file diff --git a/lib/esm/types/base.js.map b/lib/esm/types/base.js.map new file mode 100644 index 0000000..73eb8f1 --- /dev/null +++ b/lib/esm/types/base.js.map @@ -0,0 +1 @@ +{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/types/base.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAN,IAAY,eASX;AATD,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,kCAAe,CAAA;IACf,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;IACjB,sCAAmB,CAAA;IACnB,sCAAmB,CAAA;IACnB,sCAAmB,CAAA;AACrB,CAAC,EATW,eAAe,KAAf,eAAe,QAS1B;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,QASX;AATD,WAAY,QAAQ;IAClB,wCAAS,CAAA;IACT,yCAAS,CAAA;IACT,2CAAU,CAAA;IACV,2CAAU,CAAA;IACV,2CAAU,CAAA;IACV,6CAAW,CAAA;IACX,6CAAW,CAAA;IACX,8CAAY,CAAA;AACd,CAAC,EATW,QAAQ,KAAR,QAAQ,QASnB;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,QAAQ,CAAC,KAAK;IACd,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,OAAO;IAChB,QAAQ,CAAC,OAAO;CACR,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ,CAAC,IAAI;IACb,QAAQ,CAAC,KAAK;IACd,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,OAAO;IAChB,QAAQ,CAAC,OAAO;IAChB,QAAQ,CAAC,OAAO;CACR,CAAC"} \ No newline at end of file diff --git a/lib/esm/types/encryptable.d.ts b/lib/esm/types/encryptable.d.ts new file mode 100644 index 0000000..54fd5eb --- /dev/null +++ b/lib/esm/types/encryptable.d.ts @@ -0,0 +1,61 @@ +import { Primitive, LiteralToPrimitive } from "type-fest"; +import { FheUType } from "./base"; +import { PermissionV2 } from "./permit"; +import { CoFheEncryptedBool, CoFheEncryptedUint8, CoFheEncryptedUint16, CoFheEncryptedUint32, CoFheEncryptedUint64, CoFheEncryptedUint128, CoFheEncryptedUint256, CoFheEncryptedAddress } from "./encrypted"; +export type EncryptableBool = { + data: boolean; + securityZone?: number; + utype: FheUType.bool; +}; +export type EncryptableUint8 = { + data: number; + securityZone?: number; + utype: FheUType.uint8; +}; +export type EncryptableUint16 = { + data: number; + securityZone?: number; + utype: FheUType.uint16; +}; +export type EncryptableUint32 = { + data: number; + securityZone?: number; + utype: FheUType.uint32; +}; +export type EncryptableUint64 = { + data: string | bigint; + securityZone?: number; + utype: FheUType.uint64; +}; +export type EncryptableUint128 = { + data: string | bigint; + securityZone?: number; + utype: FheUType.uint128; +}; +export type EncryptableUint256 = { + data: string | bigint; + securityZone?: number; + utype: FheUType.uint256; +}; +export type EncryptableAddress = { + data: string; + securityZone?: number; + utype: FheUType.address; +}; +export declare const Encryptable: { + readonly bool: (data: EncryptableBool["data"], securityZone?: number) => EncryptableBool; + readonly uint8: (data: EncryptableUint8["data"], securityZone?: number) => EncryptableUint8; + readonly uint16: (data: EncryptableUint16["data"], securityZone?: number) => EncryptableUint16; + readonly uint32: (data: EncryptableUint32["data"], securityZone?: number) => EncryptableUint32; + readonly uint64: (data: EncryptableUint64["data"], securityZone?: number) => EncryptableUint64; + readonly uint128: (data: EncryptableUint128["data"], securityZone?: number) => EncryptableUint128; + readonly uint256: (data: EncryptableUint256["data"], securityZone?: number) => EncryptableUint256; + readonly address: (data: EncryptableAddress["data"], securityZone?: number) => EncryptableAddress; +}; +export type EncryptableItem = EncryptableBool | EncryptableUint8 | EncryptableUint16 | EncryptableUint32 | EncryptableUint64 | EncryptableUint128 | EncryptableUint256 | EncryptableAddress; +export type CoFheEncryptedItemMap = E extends EncryptableBool ? CoFheEncryptedBool : E extends EncryptableUint8 ? CoFheEncryptedUint8 : E extends EncryptableUint16 ? CoFheEncryptedUint16 : E extends EncryptableUint32 ? CoFheEncryptedUint32 : E extends EncryptableUint64 ? CoFheEncryptedUint64 : E extends EncryptableUint128 ? CoFheEncryptedUint128 : E extends EncryptableUint256 ? CoFheEncryptedUint256 : E extends EncryptableAddress ? CoFheEncryptedAddress : never; +export type MappedCoFheEncryptedTypes = T extends "permission" ? PermissionV2 : T extends Primitive ? LiteralToPrimitive : T extends EncryptableItem ? CoFheEncryptedItemMap : { + [K in keyof T]: MappedCoFheEncryptedTypes; +}; +export declare function isEncryptableItem(value: any): value is EncryptableItem; +//# sourceMappingURL=encryptable.d.ts.map \ No newline at end of file diff --git a/lib/esm/types/encryptable.d.ts.map b/lib/esm/types/encryptable.d.ts.map new file mode 100644 index 0000000..c062b31 --- /dev/null +++ b/lib/esm/types/encryptable.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"encryptable.d.ts","sourceRoot":"","sources":["../../../src/types/encryptable.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/esm/types/encryptable.js b/lib/esm/types/encryptable.js new file mode 100644 index 0000000..e933e99 --- /dev/null +++ b/lib/esm/types/encryptable.js @@ -0,0 +1,20 @@ +import { FheAllUTypes, FheUType } from "./base"; +export const Encryptable = { + bool: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.bool }), + uint8: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint8 }), + uint16: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint16 }), + uint32: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint32 }), + uint64: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint64 }), + uint128: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint128 }), + uint256: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.uint256 }), + address: (data, securityZone = 0) => ({ data, securityZone, utype: FheUType.address }), +}; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export function isEncryptableItem(value) { + return (typeof value === "object" && + value !== null && + ["string", "number", "bigint", "boolean"].includes(typeof value.data) && + typeof value.securityZone === "number" && + FheAllUTypes.includes(value.utype)); +} +//# sourceMappingURL=encryptable.js.map \ No newline at end of file diff --git a/lib/esm/types/encryptable.js.map b/lib/esm/types/encryptable.js.map new file mode 100644 index 0000000..e1033af --- /dev/null +++ b/lib/esm/types/encryptable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"encryptable.js","sourceRoot":"","sources":["../../../src/types/encryptable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAsDhD,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,CAAC,IAA6B,EAAE,YAAY,GAAG,CAAC,EAAE,EAAE,CACxD,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAoB;IACnE,KAAK,EAAE,CAAC,IAA8B,EAAE,YAAY,GAAG,CAAC,EAAE,EAAE,CAC1D,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAqB;IACrE,MAAM,EAAE,CAAC,IAA+B,EAAE,YAAY,GAAG,CAAC,EAAE,EAAE,CAC5D,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAsB;IACvE,MAAM,EAAE,CAAC,IAA+B,EAAE,YAAY,GAAG,CAAC,EAAE,EAAE,CAC5D,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAsB;IACvE,MAAM,EAAE,CAAC,IAA+B,EAAE,YAAY,GAAG,CAAC,EAAE,EAAE,CAC5D,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAsB;IACvE,OAAO,EAAE,CAAC,IAAgC,EAAE,YAAY,GAAG,CAAC,EAAE,EAAE,CAC9D,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAuB;IACzE,OAAO,EAAE,CAAC,IAAgC,EAAE,YAAY,GAAG,CAAC,EAAE,EAAE,CAC9D,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAuB;IACzE,OAAO,EAAE,CAAC,IAAgC,EAAE,YAAY,GAAG,CAAC,EAAE,EAAE,CAC9D,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAuB;CACjE,CAAC;AA0CX,8DAA8D;AAC9D,MAAM,UAAU,iBAAiB,CAAC,KAAU;IAC1C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC;QACrE,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;QACtC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CACnC,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/lib/esm/types/encrypted.d.ts b/lib/esm/types/encrypted.d.ts new file mode 100644 index 0000000..2e172ad --- /dev/null +++ b/lib/esm/types/encrypted.d.ts @@ -0,0 +1,52 @@ +import { FheUType } from "./base"; +export type EncryptedNumber = { + data: Uint8Array; + securityZone: number; +}; +export interface EncryptedBool extends EncryptedNumber { +} +export interface EncryptedUint8 extends EncryptedNumber { +} +export interface EncryptedUint16 extends EncryptedNumber { +} +export interface EncryptedUint32 extends EncryptedNumber { +} +export interface EncryptedUint64 extends EncryptedNumber { +} +export interface EncryptedUint128 extends EncryptedNumber { +} +export interface EncryptedUint256 extends EncryptedNumber { +} +export interface EncryptedAddress extends EncryptedNumber { +} +export type CoFheEncryptedNumber = { + securityZone: number; + hash: bigint; + signature: string; + utype: FheUType; +}; +export type CoFheEncryptedBool = CoFheEncryptedNumber & { + utype: FheUType.bool; +}; +export type CoFheEncryptedUint8 = CoFheEncryptedNumber & { + utype: FheUType.uint8; +}; +export type CoFheEncryptedUint16 = CoFheEncryptedNumber & { + utype: FheUType.uint16; +}; +export type CoFheEncryptedUint32 = CoFheEncryptedNumber & { + utype: FheUType.uint32; +}; +export type CoFheEncryptedUint64 = CoFheEncryptedNumber & { + utype: FheUType.uint64; +}; +export type CoFheEncryptedUint128 = CoFheEncryptedNumber & { + utype: FheUType.uint128; +}; +export type CoFheEncryptedUint256 = CoFheEncryptedNumber & { + utype: FheUType.uint256; +}; +export type CoFheEncryptedAddress = CoFheEncryptedNumber & { + utype: FheUType.address; +}; +//# sourceMappingURL=encrypted.d.ts.map \ No newline at end of file diff --git a/lib/esm/types/encrypted.d.ts.map b/lib/esm/types/encrypted.d.ts.map new file mode 100644 index 0000000..311438e --- /dev/null +++ b/lib/esm/types/encrypted.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"encrypted.d.ts","sourceRoot":"","sources":["../../../src/types/encrypted.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,aAAc,SAAQ,eAAe;CAAG;AACzD,MAAM,WAAW,cAAe,SAAQ,eAAe;CAAG;AAC1D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAC5D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAC5D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAE5D,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;CACjB,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,GAAG;IACtD,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,GAAG;IACvD,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;CACvB,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,GAAG;IACxD,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,GAAG;IACxD,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,GAAG;IACxD,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GAAG;IACzD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GAAG;IACzD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GAAG;IACzD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;CACzB,CAAC"} \ No newline at end of file diff --git a/lib/esm/types/encrypted.js b/lib/esm/types/encrypted.js new file mode 100644 index 0000000..7c203cd --- /dev/null +++ b/lib/esm/types/encrypted.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=encrypted.js.map \ No newline at end of file diff --git a/lib/esm/types/encrypted.js.map b/lib/esm/types/encrypted.js.map new file mode 100644 index 0000000..d752f98 --- /dev/null +++ b/lib/esm/types/encrypted.js.map @@ -0,0 +1 @@ +{"version":3,"file":"encrypted.js","sourceRoot":"","sources":["../../../src/types/encrypted.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/lib/esm/types/index.d.ts b/lib/esm/types/index.d.ts new file mode 100644 index 0000000..27bb824 --- /dev/null +++ b/lib/esm/types/index.d.ts @@ -0,0 +1,8 @@ +export * from "./encryptable"; +export * from "./encrypted"; +export * from "./permit"; +export * from "./result"; +export * from "./sealed"; +export * from "./base"; +export * from "./sdk"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/lib/esm/types/index.d.ts.map b/lib/esm/types/index.d.ts.map new file mode 100644 index 0000000..832e292 --- /dev/null +++ b/lib/esm/types/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC"} \ No newline at end of file diff --git a/lib/esm/types/index.js b/lib/esm/types/index.js new file mode 100644 index 0000000..6b29232 --- /dev/null +++ b/lib/esm/types/index.js @@ -0,0 +1,8 @@ +export * from "./encryptable"; +export * from "./encrypted"; +export * from "./permit"; +export * from "./result"; +export * from "./sealed"; +export * from "./base"; +export * from "./sdk"; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/esm/types/index.js.map b/lib/esm/types/index.js.map new file mode 100644 index 0000000..5ae1f6e --- /dev/null +++ b/lib/esm/types/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC"} \ No newline at end of file diff --git a/lib/esm/types/permit.d.ts b/lib/esm/types/permit.d.ts new file mode 100644 index 0000000..67198d4 --- /dev/null +++ b/lib/esm/types/permit.d.ts @@ -0,0 +1,111 @@ +import { SealingKey } from "../sdk/sealing"; +/** + * Type representing the full PermitV2 + */ +export type PermitV2Interface = { + /** + * Name for this permit, for organization and UI usage, not included in signature. + */ + name: string; + /** + * The type of the PermitV2 (self / sharing) + * (self) Permit that will be signed and used by the issuer + * (sharing) Permit that is signed by the issuer, but intended to be shared with recipient + * (recipient) Permit that has been received, and signed by the recipient + */ + type: "self" | "sharing" | "recipient"; + /** + * (base) User that initially created the permission, target of data fetching + */ + issuer: string; + /** + * (base) Expiration timestamp + */ + expiration: number; + /** + * (base) List of contract addresses that can be accessed with this permission + */ + contracts: string[]; + /** + * (base) List of project identifiers (strings) that can be accessed + */ + projects: string[]; + /** + * (sharing) The user that this permission will be shared with + * ** optional, use `address(0)` to disable ** + */ + recipient: string; + /** + * (issuer defined validation) An id used to query a contract to check this permissions validity + * ** optional, use `0` to disable ** + */ + validatorId: number; + /** + * (issuer defined validation) The contract to query to determine permission validity + * ** optional, user `address(0)` to disable ** + */ + validatorContract: string; + /** + * (base) The publicKey of a sealingPair used to re-encrypt `issuer`s confidential data + * (non-sharing) Populated by `issuer` + * (sharing) Populated by `recipient` + */ + sealingPair: SealingKey; + /** + * (base) `signTypedData` signature created by `issuer`. + * (base) Shared- and Self- permissions differ in signature format: (`sealingKey` absent in shared signature) + * (non-sharing) < issuer, expiration, contracts, projects, recipient, validatorId, validatorContract, sealingKey > + * (sharing) < issuer, expiration, contracts, projects, recipient, validatorId, validatorContract > + */ + issuerSignature: string; + /** + * (sharing) `signTypedData` signature created by `recipient` with format: + * (sharing) < sealingKey, issuerSignature> + * ** required for shared permits ** + */ + recipientSignature: string; +}; +/** + * Optional additional metadata of a PermitV2 + * Can be passed into the constructor, but not necessary + * Useful for deserialization + */ +export type PermitV2Metadata = { + /** + * Chain that this permit was signed on. In part used for mock encrypt/unseal on hardhat network. + * Should not be set manually, included in metadata as part of serialization flows. + */ + _signedChainId: string | undefined; +}; +export type PickPartial = Expand & Partial>>; +export type PermitV2Satisfiers = Expand>; +export type PermitV2Core = Expand & Partial>>; +export type PermitV2Options = Expand> & { + type: "self"; + issuer: string; +}> | Expand> & { + type: "sharing"; + issuer: string; + recipient: string; +}> | Expand & { + type: "recipient"; + issuer: string; + recipient: string; + issuerSignature: string; +}>; +export type SerializedPermitV2 = Omit & PermitV2Metadata & { + sealingPair: { + privateKey: string; + publicKey: string; + }; +}; +/** + * A type representing the PermissionV2 struct that is passed to PermissionedV2.sol to grant encrypted data access. + */ +export type PermissionV2 = Expand & { + sealingKey: string; +}>; +export type Expand = T extends infer O ? { + [K in keyof O]: O[K]; +} : never; +//# sourceMappingURL=permit.d.ts.map \ No newline at end of file diff --git a/lib/esm/types/permit.d.ts.map b/lib/esm/types/permit.d.ts.map new file mode 100644 index 0000000..60f6112 --- /dev/null +++ b/lib/esm/types/permit.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"permit.d.ts","sourceRoot":"","sources":["../../../src/types/permit.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/esm/types/permit.js b/lib/esm/types/permit.js new file mode 100644 index 0000000..288057e --- /dev/null +++ b/lib/esm/types/permit.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=permit.js.map \ No newline at end of file diff --git a/lib/esm/types/permit.js.map b/lib/esm/types/permit.js.map new file mode 100644 index 0000000..496764c --- /dev/null +++ b/lib/esm/types/permit.js.map @@ -0,0 +1 @@ +{"version":3,"file":"permit.js","sourceRoot":"","sources":["../../../src/types/permit.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/lib/esm/types/result.d.ts b/lib/esm/types/result.d.ts new file mode 100644 index 0000000..6b65e9c --- /dev/null +++ b/lib/esm/types/result.d.ts @@ -0,0 +1,12 @@ +export type Result = { + success: true; + data: T; + error: null; +} | { + success: false; + data: null; + error: E; +}; +export declare const ResultErr: (error: E) => Result; +export declare const ResultOk: (data: T) => Result; +//# sourceMappingURL=result.d.ts.map \ No newline at end of file diff --git a/lib/esm/types/result.d.ts.map b/lib/esm/types/result.d.ts.map new file mode 100644 index 0000000..dfb4b55 --- /dev/null +++ b/lib/esm/types/result.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../../src/types/result.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,IAC5B;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAE,GACvC;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC;AAE7C,eAAO,MAAM,SAAS,gBAAiB,CAAC,KAAG,OAAO,CAAC,EAAE,CAAC,CAIpD,CAAC;AAEH,eAAO,MAAM,QAAQ,eAAgB,CAAC,KAAG,OAAO,CAAC,EAAE,CAAC,CAIlD,CAAC"} \ No newline at end of file diff --git a/lib/esm/types/result.js b/lib/esm/types/result.js new file mode 100644 index 0000000..cff929b --- /dev/null +++ b/lib/esm/types/result.js @@ -0,0 +1,11 @@ +export const ResultErr = (error) => ({ + success: false, + data: null, + error, +}); +export const ResultOk = (data) => ({ + success: true, + data, + error: null, +}); +//# sourceMappingURL=result.js.map \ No newline at end of file diff --git a/lib/esm/types/result.js.map b/lib/esm/types/result.js.map new file mode 100644 index 0000000..a71f6a6 --- /dev/null +++ b/lib/esm/types/result.js.map @@ -0,0 +1 @@ +{"version":3,"file":"result.js","sourceRoot":"","sources":["../../../src/types/result.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,SAAS,GAAG,CAAO,KAAQ,EAAgB,EAAE,CAAC,CAAC;IAC1D,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,IAAI;IACV,KAAK;CACN,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAO,IAAO,EAAgB,EAAE,CAAC,CAAC;IACxD,OAAO,EAAE,IAAI;IACb,IAAI;IACJ,KAAK,EAAE,IAAI;CACZ,CAAC,CAAC"} \ No newline at end of file diff --git a/lib/esm/types/sdk.d.ts b/lib/esm/types/sdk.d.ts new file mode 100644 index 0000000..3d1cc45 --- /dev/null +++ b/lib/esm/types/sdk.d.ts @@ -0,0 +1,33 @@ +export interface AbstractProvider { + getChainId(): Promise; + getNetwork(): Promise<{ + chainId: string; + }>; + call(tx: { + to: string; + data: string; + }): Promise; +} +export interface AbstractSigner { + getAddress(): Promise; + signTypedData(domain: object, types: Record>, value: object): Promise; +} +export type PermitV2AccessRequirements = { + contracts: string[]; + projects: string[]; +}; +type PermitV2AccessRequirementsParams = { + contracts?: never[]; + projects: string[]; +} | { + contracts: string[]; + projects?: never[]; +}; +export type InitializationParams = { + provider: AbstractProvider; + signer?: AbstractSigner; + securityZones?: number[]; + coFheUrl?: string; +} & PermitV2AccessRequirementsParams; +export {}; +//# sourceMappingURL=sdk.d.ts.map \ No newline at end of file diff --git a/lib/esm/types/sdk.d.ts.map b/lib/esm/types/sdk.d.ts.map new file mode 100644 index 0000000..3c42ab1 --- /dev/null +++ b/lib/esm/types/sdk.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../../src/types/sdk.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,UAAU,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3C,IAAI,CAAC,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,aAAa,CACX,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EACpC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAAC;CACpB;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,KAAK,gCAAgC,GACjC;IACE,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,GACD;IACE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;CACpB,CAAC;AAEN,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,gCAAgC,CAAC"} \ No newline at end of file diff --git a/lib/esm/types/sdk.js b/lib/esm/types/sdk.js new file mode 100644 index 0000000..4b3b278 --- /dev/null +++ b/lib/esm/types/sdk.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=sdk.js.map \ No newline at end of file diff --git a/lib/esm/types/sdk.js.map b/lib/esm/types/sdk.js.map new file mode 100644 index 0000000..5a4b954 --- /dev/null +++ b/lib/esm/types/sdk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../../src/types/sdk.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/lib/esm/types/sealed.d.ts b/lib/esm/types/sealed.d.ts new file mode 100644 index 0000000..69a59c9 --- /dev/null +++ b/lib/esm/types/sealed.d.ts @@ -0,0 +1,24 @@ +import { LiteralToPrimitive, Primitive } from "type-fest"; +import { FheUintUTypes, FheUType } from "./base"; +export type SealedBool = { + data: string; + utype: FheUType.bool; +}; +export type SealedUint = { + data: string; + utype: (typeof FheUintUTypes)[number]; +}; +export type SealedAddress = { + data: string; + utype: FheUType.address; +}; +export type SealedItem = SealedBool | SealedUint | SealedAddress; +export type UnsealedItemMap = S extends SealedBool ? boolean : S extends SealedUint ? bigint : S extends SealedAddress ? string : never; +export type MappedUnsealedTypes = T extends Primitive ? LiteralToPrimitive : T extends SealedItem ? UnsealedItemMap : { + [K in keyof T]: MappedUnsealedTypes; +}; +export declare function getAsSealedItem(value: any): SealedItem | undefined; +export declare function isSealedBool(value: SealedItem): boolean; +export declare function isSealedUint(value: SealedItem): boolean; +export declare function isSealedAddress(value: SealedItem): boolean; +//# sourceMappingURL=sealed.d.ts.map \ No newline at end of file diff --git a/lib/esm/types/sealed.d.ts.map b/lib/esm/types/sealed.d.ts.map new file mode 100644 index 0000000..a089a12 --- /dev/null +++ b/lib/esm/types/sealed.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"sealed.d.ts","sourceRoot":"","sources":["../../../src/types/sealed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAgB,aAAa,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAE/D,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;CACvC,CAAC;AACF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,aAAa,CAAC;AAEjE,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,UAAU,IAAI,CAAC,SAAS,UAAU,GACpE,OAAO,GACP,CAAC,SAAS,UAAU,GAClB,MAAM,GACN,CAAC,SAAS,aAAa,GACrB,MAAM,GACN,KAAK,CAAC;AAEd,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GACpD,kBAAkB,CAAC,CAAC,CAAC,GACrB,CAAC,SAAS,UAAU,GAClB,eAAe,CAAC,CAAC,CAAC,GAClB;KACG,CAAC,IAAI,MAAM,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC1C,CAAC;AAIR,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,GAAG,UAAU,GAAG,SAAS,CAqBlE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAEvD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAEvD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAE1D"} \ No newline at end of file diff --git a/lib/esm/types/sealed.js b/lib/esm/types/sealed.js new file mode 100644 index 0000000..3f6fcbe --- /dev/null +++ b/lib/esm/types/sealed.js @@ -0,0 +1,29 @@ +import { FheAllUTypes, FheUintUTypes, FheUType } from "./base"; +// Determine if `value` is an instance of a `sealedItem` { data: string, utype: 0-5 | 12 | 13 } +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export function getAsSealedItem(value) { + if (Array.isArray(value) && + value.length === 2 && + typeof value[0] === "string" && + FheAllUTypes.includes(parseInt(`${value[1]}`))) + return { + data: value[0], + utype: value[1], + }; + if (typeof value === "object" && + value !== null && + typeof value.data === "string" && + FheAllUTypes.includes(value.utype)) + return value; + return undefined; +} +export function isSealedBool(value) { + return parseInt(`${value.utype}`) === FheUType.bool; +} +export function isSealedUint(value) { + return FheUintUTypes.includes(parseInt(`${value.utype}`)); +} +export function isSealedAddress(value) { + return parseInt(`${value.utype}`) === FheUType.address; +} +//# sourceMappingURL=sealed.js.map \ No newline at end of file diff --git a/lib/esm/types/sealed.js.map b/lib/esm/types/sealed.js.map new file mode 100644 index 0000000..c43365c --- /dev/null +++ b/lib/esm/types/sealed.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sealed.js","sourceRoot":"","sources":["../../../src/types/sealed.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAgC/D,+FAA+F;AAC/F,8DAA8D;AAC9D,MAAM,UAAU,eAAe,CAAC,KAAU;IACxC,IACE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACpB,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ;QAC5B,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAE9C,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YACd,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;SAChB,CAAC;IAEJ,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;QAElC,OAAO,KAAmB,CAAC;IAE7B,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAiB;IAC5C,OAAO,QAAQ,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAiB;IAC5C,OAAO,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAiB;IAC/C,OAAO,QAAQ,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,QAAQ,CAAC,OAAO,CAAC;AACzD,CAAC"} \ No newline at end of file diff --git a/lib/esm/types/types.d.ts b/lib/esm/types/types.d.ts new file mode 100644 index 0000000..0136410 --- /dev/null +++ b/lib/esm/types/types.d.ts @@ -0,0 +1,86 @@ +/** + * An enumeration of supported encryption types. + * uint8, uint16, and uint32 represent the different sizes of integers that can be encrypted. + */ +export declare enum EncryptionTypes { + bool = "bool", + uint8 = "uint8", + uint16 = "uint16", + uint32 = "uint32", + uint64 = "uint64", + uint128 = "uint128", + uint256 = "uint256", + address = "address" +} +/** + * Mapping of encryption types to their utype integer + */ +export declare enum FheUType { + bool = 13, + uint8 = 0, + uint16 = 1, + uint32 = 2, + uint64 = 3, + uint128 = 4, + uint256 = 5, + address = 12 +} +/** + * List of All FHE uint types (excludes bool and address) + */ +export declare const FheUintUTypes: readonly [FheUType.uint8, FheUType.uint16, FheUType.uint32, FheUType.uint64, FheUType.uint128, FheUType.uint256]; +/** + * List of All FHE types (uints, bool, and address) + */ +export declare const FheAllUTypes: readonly [FheUType.bool, FheUType.uint8, FheUType.uint16, FheUType.uint32, FheUType.uint64, FheUType.uint128, FheUType.uint256, FheUType.address]; +export type EncryptedNumber = { + data: Uint8Array; + securityZone: number; +}; +export interface EncryptedBool extends EncryptedNumber { +} +export interface EncryptedUint8 extends EncryptedNumber { +} +export interface EncryptedUint16 extends EncryptedNumber { +} +export interface EncryptedUint32 extends EncryptedNumber { +} +export interface EncryptedUint64 extends EncryptedNumber { +} +export interface EncryptedUint128 extends EncryptedNumber { +} +export interface EncryptedUint256 extends EncryptedNumber { +} +export interface EncryptedAddress extends EncryptedNumber { +} +export type CoFheEncryptedNumber = { + securityZone: number; + hash: bigint; + signature: string; + utype: FheUType; +}; +export type CoFheEncryptedBool = CoFheEncryptedNumber & { + utype: FheUType.bool; +}; +export type CoFheEncryptedUint8 = CoFheEncryptedNumber & { + utype: FheUType.uint8; +}; +export type CoFheEncryptedUint16 = CoFheEncryptedNumber & { + utype: FheUType.uint16; +}; +export type CoFheEncryptedUint32 = CoFheEncryptedNumber & { + utype: FheUType.uint32; +}; +export type CoFheEncryptedUint64 = CoFheEncryptedNumber & { + utype: FheUType.uint64; +}; +export type CoFheEncryptedUint128 = CoFheEncryptedNumber & { + utype: FheUType.uint128; +}; +export type CoFheEncryptedUint256 = CoFheEncryptedNumber & { + utype: FheUType.uint256; +}; +export type CoFheEncryptedAddress = CoFheEncryptedNumber & { + utype: FheUType.address; +}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/lib/esm/types/types.d.ts.map b/lib/esm/types/types.d.ts.map new file mode 100644 index 0000000..85efcd6 --- /dev/null +++ b/lib/esm/types/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,eAAe;IACzB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,oBAAY,QAAQ;IAClB,IAAI,KAAK;IACT,KAAK,IAAI;IACT,MAAM,IAAI;IACV,MAAM,IAAI;IACV,MAAM,IAAI;IACV,OAAO,IAAI;IACX,OAAO,IAAI;IACX,OAAO,KAAK;CACb;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,kHAOhB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,YAAY,mJASf,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,aAAc,SAAQ,eAAe;CAAG;AACzD,MAAM,WAAW,cAAe,SAAQ,eAAe;CAAG;AAC1D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAC5D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAC5D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAE5D,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;CACjB,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,GAAG;IACtD,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,GAAG;IACvD,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;CACvB,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,GAAG;IACxD,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,GAAG;IACxD,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,GAAG;IACxD,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GAAG;IACzD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GAAG;IACzD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GAAG;IACzD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;CACzB,CAAC"} \ No newline at end of file diff --git a/lib/esm/types/types.js b/lib/esm/types/types.js new file mode 100644 index 0000000..047e018 --- /dev/null +++ b/lib/esm/types/types.js @@ -0,0 +1,54 @@ +/** + * An enumeration of supported encryption types. + * uint8, uint16, and uint32 represent the different sizes of integers that can be encrypted. + */ +export var EncryptionTypes; +(function (EncryptionTypes) { + EncryptionTypes["bool"] = "bool"; + EncryptionTypes["uint8"] = "uint8"; + EncryptionTypes["uint16"] = "uint16"; + EncryptionTypes["uint32"] = "uint32"; + EncryptionTypes["uint64"] = "uint64"; + EncryptionTypes["uint128"] = "uint128"; + EncryptionTypes["uint256"] = "uint256"; + EncryptionTypes["address"] = "address"; +})(EncryptionTypes || (EncryptionTypes = {})); +/** + * Mapping of encryption types to their utype integer + */ +export var FheUType; +(function (FheUType) { + FheUType[FheUType["bool"] = 13] = "bool"; + FheUType[FheUType["uint8"] = 0] = "uint8"; + FheUType[FheUType["uint16"] = 1] = "uint16"; + FheUType[FheUType["uint32"] = 2] = "uint32"; + FheUType[FheUType["uint64"] = 3] = "uint64"; + FheUType[FheUType["uint128"] = 4] = "uint128"; + FheUType[FheUType["uint256"] = 5] = "uint256"; + FheUType[FheUType["address"] = 12] = "address"; +})(FheUType || (FheUType = {})); +/** + * List of All FHE uint types (excludes bool and address) + */ +export const FheUintUTypes = [ + FheUType.uint8, + FheUType.uint16, + FheUType.uint32, + FheUType.uint64, + FheUType.uint128, + FheUType.uint256, +]; +/** + * List of All FHE types (uints, bool, and address) + */ +export const FheAllUTypes = [ + FheUType.bool, + FheUType.uint8, + FheUType.uint16, + FheUType.uint32, + FheUType.uint64, + FheUType.uint128, + FheUType.uint256, + FheUType.address, +]; +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/lib/esm/types/types.js.map b/lib/esm/types/types.js.map new file mode 100644 index 0000000..eb80f53 --- /dev/null +++ b/lib/esm/types/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/types/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAN,IAAY,eASX;AATD,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,kCAAe,CAAA;IACf,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;IACjB,sCAAmB,CAAA;IACnB,sCAAmB,CAAA;IACnB,sCAAmB,CAAA;AACrB,CAAC,EATW,eAAe,KAAf,eAAe,QAS1B;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,QASX;AATD,WAAY,QAAQ;IAClB,wCAAS,CAAA;IACT,yCAAS,CAAA;IACT,2CAAU,CAAA;IACV,2CAAU,CAAA;IACV,2CAAU,CAAA;IACV,6CAAW,CAAA;IACX,6CAAW,CAAA;IACX,8CAAY,CAAA;AACd,CAAC,EATW,QAAQ,KAAR,QAAQ,QASnB;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,QAAQ,CAAC,KAAK;IACd,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,OAAO;IAChB,QAAQ,CAAC,OAAO;CACR,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ,CAAC,IAAI;IACb,QAAQ,CAAC,KAAK;IACd,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,OAAO;IAChB,QAAQ,CAAC,OAAO;IAChB,QAAQ,CAAC,OAAO;CACR,CAAC"} \ No newline at end of file diff --git a/lib/types/extensions/access_control/permit/index.d.ts b/lib/types/extensions/access_control/permit/index.d.ts index 4f46b20..86e6f77 100644 --- a/lib/types/extensions/access_control/permit/index.d.ts +++ b/lib/types/extensions/access_control/permit/index.d.ts @@ -25,6 +25,7 @@ export type Permit = { */ publicKey: string; }; +export declare const parsePermit: (savedPermit: string) => Permit; export declare const getPermit: (contract: string, provider: SupportedProvider, autoGenerate?: boolean) => Promise; export declare const getAllExistingPermits: (account: string) => Record; export declare const getAllPermits: () => Map; diff --git a/lib/types/extensions/access_control/permit/index.d.ts.map b/lib/types/extensions/access_control/permit/index.d.ts.map index 53634b5..51a5dca 100644 --- a/lib/types/extensions/access_control/permit/index.d.ts.map +++ b/lib/types/extensions/access_control/permit/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/access_control/permit/index.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAsB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAIzE,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IAEvB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AA2BF,eAAO,MAAM,SAAS,aACV,MAAM,YACN,iBAAiB,iBACb,OAAO,KACpB,QAAQ,MAAM,GAAG,IAAI,CAiBvB,CAAC;AAEF,eAAO,MAAM,qBAAqB,YACvB,MAAM,KACd,OAAO,MAAM,EAAE,MAAM,CAuBvB,CAAC;AAEF,eAAO,MAAM,aAAa,QAAO,IAAI,MAAM,EAAE,MAAM,CA2BlD,CAAC;AAEF,UAAU,2BAA2B;IACnC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7E,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/B;AACD,UAAU,4BAA4B;IACpC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9E,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,MAAM,YAAY,GACpB,4BAA4B,GAC5B,2BAA2B,CAAC;AAsBhC,eAAO,MAAM,cAAc,aACf,MAAM,YACN,iBAAiB,iBACZ,YAAY,KAC1B,QAAQ,MAAM,CAoEhB,CAAC;AAEF,eAAO,MAAM,YAAY,aAAc,MAAM,WAAW,MAAM,KAAG,IAOhE,CAAC;AAEF,eAAO,MAAM,yBAAyB,aAC1B,MAAM,WACP,MAAM,KACd,MAAM,GAAG,SAqBX,CAAC;AAEF,eAAO,MAAM,yBAAyB,WAAY,MAAM,WAAW,MAAM,SAiBxE,CAAC;AAEF,eAAO,MAAM,4BAA4B,aAC7B,MAAM,WACP,MAAM,SAKhB,CAAC"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/access_control/permit/index.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAsB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAIzE,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IAEvB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAWF,eAAO,MAAM,WAAW,gBAAiB,MAAM,KAAG,MAcjD,CAAC;AAEF,eAAO,MAAM,SAAS,aACV,MAAM,YACN,iBAAiB,iBACb,OAAO,KACpB,QAAQ,MAAM,GAAG,IAAI,CAiBvB,CAAC;AAEF,eAAO,MAAM,qBAAqB,YACvB,MAAM,KACd,OAAO,MAAM,EAAE,MAAM,CAuBvB,CAAC;AAEF,eAAO,MAAM,aAAa,QAAO,IAAI,MAAM,EAAE,MAAM,CA2BlD,CAAC;AAEF,UAAU,2BAA2B;IACnC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7E,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/B;AACD,UAAU,4BAA4B;IACpC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9E,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,MAAM,YAAY,GACpB,4BAA4B,GAC5B,2BAA2B,CAAC;AAsBhC,eAAO,MAAM,cAAc,aACf,MAAM,YACN,iBAAiB,iBACZ,YAAY,KAC1B,QAAQ,MAAM,CAoEhB,CAAC;AAEF,eAAO,MAAM,YAAY,aAAc,MAAM,WAAW,MAAM,KAAG,IAOhE,CAAC;AAEF,eAAO,MAAM,yBAAyB,aAC1B,MAAM,WACP,MAAM,KACd,MAAM,GAAG,SAqBX,CAAC;AAEF,eAAO,MAAM,yBAAyB,WAAY,MAAM,WAAW,MAAM,SAiBxE,CAAC;AAEF,eAAO,MAAM,4BAA4B,aAC7B,MAAM,WACP,MAAM,SAKhB,CAAC"} \ No newline at end of file diff --git a/lib/types/fhenix.d.ts b/lib/types/fhenix.d.ts index 5c9fe8f..af06b16 100644 --- a/lib/types/fhenix.d.ts +++ b/lib/types/fhenix.d.ts @@ -1,7 +1,5 @@ -export { FhenixClient, FhenixClientSync } from "./sdk/index.js"; -export { ContractPermits, InstanceParams, SupportedProvider, EncryptionTypes, EncryptedUint64, EncryptedUint128, EncryptedUint256, EncryptedUint32, EncryptedUint16, EncryptedUint8, EncryptedBool, EncryptedNumber, EncryptedAddress, } from "./sdk/types.js"; -export * from "./extensions/access_control/index.js"; export { SealingKey, GenerateSealingKey } from "./sdk/sealing.js"; export { createTfheKeypair, createTfhePublicKey } from "./sdk/keygen.js"; -export * from "./sdk/v2"; +export * from "./types"; +export * from "./sdk"; //# sourceMappingURL=fhenix.d.ts.map \ No newline at end of file diff --git a/lib/types/fhenix.d.ts.map b/lib/types/fhenix.d.ts.map index 58d322e..5d854e7 100644 --- a/lib/types/fhenix.d.ts.map +++ b/lib/types/fhenix.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"fhenix.d.ts","sourceRoot":"","sources":["../../src/fhenix.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,EACL,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,cAAc,EACd,aAAa,EACb,eAAe,EACf,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAExB,cAAc,sCAAsC,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,cAAc,UAAU,CAAC"} \ No newline at end of file +{"version":3,"file":"fhenix.d.ts","sourceRoot":"","sources":["../../src/fhenix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC"} \ No newline at end of file diff --git a/lib/types/index.d.ts b/lib/types/index.d.ts index 2888f0a..cf96ef8 100644 --- a/lib/types/index.d.ts +++ b/lib/types/index.d.ts @@ -1,4 +1,6 @@ -import * as fhenixjs from "./fhenix.js"; -export { fhenixjs }; -export * from "./fhenix.js"; +export { SealingKey, GenerateSealingKey } from "./sdk/sealing.js"; +export { createTfheKeypair, createTfhePublicKey } from "./sdk/keygen.js"; +export * from "./types"; +export * from "./sdk/permit"; +export * from "./sdk"; //# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/lib/types/index.d.ts.map b/lib/types/index.d.ts.map index 4827dd9..a6db280 100644 --- a/lib/types/index.d.ts.map +++ b/lib/types/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB,cAAc,aAAa,CAAC"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,OAAO,CAAC"} \ No newline at end of file diff --git a/lib/types/sdk/consts.d.ts b/lib/types/sdk/consts.d.ts index 4523c6d..b1db3cc 100644 --- a/lib/types/sdk/consts.d.ts +++ b/lib/types/sdk/consts.d.ts @@ -3,4 +3,5 @@ export declare const MAX_UINT16 = 65535; export declare const MAX_UINT32 = 4294967295; export declare const FheOpsAddress = "0x0000000000000000000000000000000000000080"; export declare const PUBLIC_KEY_LENGTH_MIN = 15000; +export declare const DEFAULT_COFHE_URL = "http://127.0.0.1:8448"; //# sourceMappingURL=consts.d.ts.map \ No newline at end of file diff --git a/lib/types/sdk/consts.d.ts.map b/lib/types/sdk/consts.d.ts.map index dadf4a2..2f85f20 100644 --- a/lib/types/sdk/consts.d.ts.map +++ b/lib/types/sdk/consts.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../../src/sdk/consts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,MAAM,CAAC;AAC7B,eAAO,MAAM,UAAU,QAAQ,CAAC;AAChC,eAAO,MAAM,UAAU,aAAa,CAAC;AACrC,eAAO,MAAM,aAAa,+CAA+C,CAAC;AAC1E,eAAO,MAAM,qBAAqB,QAAS,CAAC"} \ No newline at end of file +{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../../src/sdk/consts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,MAAM,CAAC;AAC7B,eAAO,MAAM,UAAU,QAAQ,CAAC;AAChC,eAAO,MAAM,UAAU,aAAa,CAAC;AACrC,eAAO,MAAM,aAAa,+CAA+C,CAAC;AAC1E,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAC5C,eAAO,MAAM,iBAAiB,0BAA0B,CAAC"} \ No newline at end of file diff --git a/lib/types/sdk/encrypt.d.ts b/lib/types/sdk/encrypt.d.ts index 7e42ae8..161954f 100644 --- a/lib/types/sdk/encrypt.d.ts +++ b/lib/types/sdk/encrypt.d.ts @@ -1,5 +1,5 @@ import { TfheCompactPublicKey } from "./fhe/fhe.js"; -import { EncryptedNumber, EncryptedUint16, EncryptedUint32, EncryptedUint8, EncryptedBool, EncryptedUint64, EncryptedUint128, EncryptedUint256, EncryptedAddress, EncryptionTypes } from "./types.js"; +import { EncryptedNumber, EncryptedUint16, EncryptedUint32, EncryptedUint8, EncryptedBool, EncryptedUint64, EncryptedUint128, EncryptedUint256, EncryptedAddress, EncryptionTypes } from "../types"; /** * Encrypts a Uint8 value using TFHE (Fast Fully Homomorphic Encryption over the Torus). * @param {boolean} value - The Boolean value to encrypt. diff --git a/lib/types/sdk/encrypt.d.ts.map b/lib/types/sdk/encrypt.d.ts.map index 19deeac..21d8111 100644 --- a/lib/types/sdk/encrypt.d.ts.map +++ b/lib/types/sdk/encrypt.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"encrypt.d.ts","sourceRoot":"","sources":["../../../src/sdk/encrypt.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EASrB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,eAAe,EACf,eAAe,EACf,eAAe,EACf,cAAc,EACd,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EAChB,MAAM,YAAY,CAAC;AAGpB;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,UAChB,OAAO,aACH,oBAAoB,iBACjB,MAAM,KACnB,aASF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,UACjB,MAAM,aACF,oBAAoB,iBACjB,MAAM,KACnB,cASF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,UAClB,MAAM,aACF,oBAAoB,iBACjB,MAAM,KACnB,eASF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,UAClB,MAAM,aACF,oBAAoB,iBACjB,MAAM,KACnB,eASF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,UAClB,MAAM,GAAG,MAAM,aACX,oBAAoB,iBACjB,MAAM,KACnB,eAeF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,UACnB,MAAM,GAAG,MAAM,aACX,oBAAoB,iBACjB,MAAM,KACnB,gBAeF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,UACnB,MAAM,GAAG,MAAM,aACX,oBAAoB,iBACjB,MAAM,KACnB,gBAeF,CAAC;AACF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,UACnB,MAAM,GAAG,MAAM,aACX,oBAAoB,iBACjB,MAAM,KACnB,gBAeF,CAAC;AACF;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,UACX,MAAM,aACF,oBAAoB,SACzB,eAAe,iBACP,MAAM,KACnB,eAqBF,CAAC"} \ No newline at end of file +{"version":3,"file":"encrypt.d.ts","sourceRoot":"","sources":["../../../src/sdk/encrypt.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EASrB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,eAAe,EACf,eAAe,EACf,eAAe,EACf,cAAc,EACd,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EAChB,MAAM,UAAU,CAAC;AAGlB;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,UAChB,OAAO,aACH,oBAAoB,iBACjB,MAAM,KACnB,aASF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,UACjB,MAAM,aACF,oBAAoB,iBACjB,MAAM,KACnB,cASF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,UAClB,MAAM,aACF,oBAAoB,iBACjB,MAAM,KACnB,eASF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,UAClB,MAAM,aACF,oBAAoB,iBACjB,MAAM,KACnB,eASF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,UAClB,MAAM,GAAG,MAAM,aACX,oBAAoB,iBACjB,MAAM,KACnB,eAeF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,UACnB,MAAM,GAAG,MAAM,aACX,oBAAoB,iBACjB,MAAM,KACnB,gBAeF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,UACnB,MAAM,GAAG,MAAM,aACX,oBAAoB,iBACjB,MAAM,KACnB,gBAeF,CAAC;AACF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,UACnB,MAAM,GAAG,MAAM,aACX,oBAAoB,iBACjB,MAAM,KACnB,gBAeF,CAAC;AACF;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,UACX,MAAM,aACF,oBAAoB,SACzB,eAAe,iBACP,MAAM,KACnB,eAqBF,CAAC"} \ No newline at end of file diff --git a/lib/types/sdk/fhe/tfhe_bg.d.ts b/lib/types/sdk/fhe/tfhe_bg.d.ts index fc5d1ad..796f780 100644 --- a/lib/types/sdk/fhe/tfhe_bg.d.ts +++ b/lib/types/sdk/fhe/tfhe_bg.d.ts @@ -25,7 +25,7 @@ export function __wbg_fheint160_new(arg0: any): number; export function __wbg_fheint16_new(arg0: any): number; export function __wbg_fheint8_new(arg0: any): number; export function __wbg_fheint128_new(arg0: any): number; -export function __wbindgen_boolean_get(arg0: any): 1 | 0 | 2; +export function __wbindgen_boolean_get(arg0: any): 0 | 2 | 1; export function __wbindgen_bigint_from_str(arg0: any, arg1: any): number; export function __wbindgen_bit_and(arg0: any, arg1: any): number; export function __wbindgen_number_new(arg0: any): number; diff --git a/lib/types/sdk/index.d.ts b/lib/types/sdk/index.d.ts index 5b45fe7..dd929dd 100644 --- a/lib/types/sdk/index.d.ts +++ b/lib/types/sdk/index.d.ts @@ -1,199 +1,40 @@ -import { TfheCompactPublicKey } from "./fhe/fhe.js"; -import { ContractPermits, EncryptedAddress, EncryptedBool, EncryptedNumber, EncryptedUint128, EncryptedUint16, EncryptedUint256, EncryptedUint32, EncryptedUint64, EncryptedUint8, EncryptionTypes, InstanceParams, InstanceParamsWithFhePublicKeys, SupportedProvider } from "./types.js"; -import { Permission, Permit, PermitSigner } from "../extensions/access_control/index.js"; -declare abstract class FhenixClientBase { - private permits; - abstract fhePublicKeys: Array> | Array; - protected provider: SupportedProvider; - /** - * Creates an instance of FhenixClient. - * Initializes the fhevm library if needed and retrieves the public key for encryption from the provider. - * @param {InstanceParams} params - Parameters to initialize the client. - */ - constructor(params: InstanceParams); - /** - * Encrypts a Uint8 value using the stored public key. - * @param {number} value - The Uint8 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedBool} - The encrypted value serialized as EncryptedUint8. Use the .data property to access the Uint8Array. - */ - abstract encrypt_bool(value: boolean, securityZone?: number): Promise | EncryptedBool; - /** - * Encrypts a Uint8 value using the stored public key. - * @param {number} value - The Uint8 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedUint8} - The encrypted value serialized as EncryptedUint8. Use the .data property to access the Uint8Array. - */ - abstract encrypt_uint8(value: number, securityZone?: number): Promise | EncryptedUint8; - /** - * Encrypts a Uint16 value using the stored public key. - * @param {number} value - The Uint16 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedUint16} - The encrypted value serialized as EncryptedUint16. Use the .data property to access the Uint8Array. - */ - abstract encrypt_uint16(value: number, securityZone?: number): Promise | EncryptedUint16; - /** - * Encrypts a Uint32 value using the stored public key. - * @param {number} value - The Uint32 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedUint32} - The encrypted value serialized as EncryptedUint32. Use the .data property to access the Uint8Array. - */ - abstract encrypt_uint32(value: number, securityZone?: number): Promise | EncryptedUint32; - /** - * Encrypts a Uint64 value using the stored public key. - * @param {bigint | string} value - The Uint32 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedUint64} - The encrypted value serialized as EncryptedUint64. Use the .data property to access the Uint8Array. - */ - abstract encrypt_uint64(value: bigint | string, securityZone?: number): Promise | EncryptedUint64; - /** - * Encrypts a Uint128 value using the stored public key. - * @param {bigint | string} value - The Uint128 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedUint128} - The encrypted value serialized as EncryptedUint128. Use the .data property to access the Uint8Array. - */ - abstract encrypt_uint128(value: bigint | string, securityZone?: number): Promise | EncryptedUint128; - /** - * Encrypts a Uint256 value using the stored public key. - * @param {bigint | string} value - The Uint256 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedUint256} - The encrypted value serialized as EncryptedUint256. Use the .data property to access the Uint8Array. - */ - abstract encrypt_uint256(value: bigint | string, securityZone?: number): Promise | EncryptedUint256; - /** - * Encrypts an Address (Uint160) value using the stored public key. - * @param {bigint | string} value - The Address (Uint160) value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedAddress} - The encrypted value serialized as EncryptedAddress. Use the .data property to access the Uint8Array. - */ - abstract encrypt_address(value: bigint | string, securityZone?: number): Promise | EncryptedAddress; - /** - * Encrypts a numeric value according to the specified encryption type or the most efficient one based on the value. - * @param {number} value - The numeric value to encrypt. - * @param {EncryptionTypes} type - Optional. The encryption type (uint8, uint16, uint32). - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedNumber} - The encrypted value serialized as Uint8Array. Use the .data property to access the Uint8Array. - */ - abstract encrypt(value: number, type?: EncryptionTypes, securityZone?: number): Promise | EncryptedNumber; - /** - * Unseals an encrypted message using the stored permit for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} ciphertext - The encrypted message to unseal. - * @param {string} account - The account attached to existing permits. - * @returns bigint - The unsealed message. - */ - unseal(contractAddress: string, ciphertext: string, account: string): bigint; - /** - * Creates a new permit for a specific contract address. Also saves the permit to localstorage (if available) - * @param {string} contractAddress - The address of the contract. - * @param {SupportedProvider} provider - The provider from which to sign the permit - must container a signer. - * @param signer - the signer to use to sign the permit if provider does not support signing (e.g. hardhat) - * @returns Permit - The permit associated with the contract address. - * - * @throws {Error} - If the provider does not contain a signer, or if a provider is not set - */ - generatePermit(contractAddress: string, provider?: SupportedProvider, signer?: PermitSigner): Promise; - /** - * Reusable permit loading and storing from local storage - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The address of the user account. - * @returns {Permit | undefined} - The permit loaded from local storage - */ - private _loadPermitFromLocalStorage; - /** - * Retrieves the stored permit for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The address of the user account. - * @returns {Permit} - The permit associated with the contract address. - */ - getPermit(contractAddress: string, account: string): Permit | undefined; - /** - * Retrieves all stored permits for a specific account. - * @param {string} account - The address of the user account. - * @returns {Record} - The permits associated with each contract address. - */ - loadAllPermitsFromLocalStorage(account: string): Record; - /** - * Stores a permit for a specific contract address. Will overwrite any existing permit for the same contract address. - * Does not store the permit in localstorage (should it?) - * @param {Permit} permit - The permit to store. - */ - storePermit(permit: Permit, account: string): void; - /** - * Removes a stored permit for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The account address of the permit. - */ - removePermit(contractAddress: string, account: string): void; - /** - * Checks if a permit exists for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The account address attached to the stored permits - * @returns {boolean} - True if a permit exists, false otherwise. - */ - hasPermit(contractAddress: string, account: string): boolean; - /** - * Exports all stored permits. - * @returns {ContractPermits} - All stored permits. - */ - exportPermits(): ContractPermits; - extractPermitPermission(permit: Permit): Permission; - /** - * Retrieves the FHE public key from the provider. - * @param {SupportedProvider} provider - The provider from which to retrieve the key. - * @param securityZone - The security zone for which to retrieve the key (default 0). - * @returns {Promise} - The retrieved public key. - */ - static getFheKeyFromProvider(provider: SupportedProvider, securityZone?: number): Promise; -} +import { PermitV2 } from "./permit"; +import { SdkStore } from "./store.js"; +import { MappedCoFheEncryptedTypes, PermitV2Options, PermitV2Interface, PermissionV2, Result, MappedUnsealedTypes, InitializationParams } from "../types"; /** - * The FhenixClient class provides functionalities to interact with a FHE (Fully Homomorphic Encryption) system. - * It includes methods for encryption, unsealing, and managing permits. + * Encrypts a numeric value according to the specified encryption type or the most efficient one based on the value. + * Useful when not using `Encryptable` utility structures. + * @param {item} value - The numeric value to encrypt. + * @param {EncryptionTypes} type - Optional. The encryption type (uint8, uint16, uint32). + * @param securityZone - The security zone for which to encrypt the value (default 0). + * @returns {EncryptedNumber} - The encrypted value serialized as Uint8Array. Use the .data property to access the Uint8Array. */ -export declare class FhenixClient extends FhenixClientBase { - private defaultSecurityZone; - fhePublicKeys: Array>; - /** - * Creates an instance of FhenixClient. - * Initializes the fhevm library if needed and retrieves the public key for encryption from the provider. - * @param {InstanceParams} params - Parameters to initialize the client. - */ - constructor(params: InstanceParams); - private _getPublicKey; - encrypt_bool(value: boolean, securityZone?: number): Promise; - encrypt_uint8(value: number, securityZone?: number): Promise; - encrypt_uint16(value: number, securityZone?: number): Promise; - encrypt_uint32(value: number, securityZone?: number): Promise; - encrypt_uint64(value: bigint | string, securityZone?: number): Promise; - encrypt_uint128(value: bigint | string, securityZone?: number): Promise; - encrypt_uint256(value: bigint | string, securityZone?: number): Promise; - encrypt_address(value: bigint | string, securityZone?: number): Promise; - encrypt(value: number, type?: EncryptionTypes, securityZone?: number): Promise; -} +declare function encrypt(item: T): Promise>>; +declare function encrypt(item: [...T]): Promise]>>; /** - * The FhenixClientSync class provides functionalities to interact with a FHE (Fully Homomorphic Encryption) system. - * It includes methods for encryption, unsealing, and managing permits. + * Uses the privateKey of `permit.sealingPair` to recursively unseal any contained `SealedItems`. + * If `item` is a single `SealedItem` it will be individually. + * NOTE: Only unseals typed `SealedItem`s returned from `FHE.sealoutputTyped` and the FHE bindings' `e____.sealTyped`. * - * The Sync FhenixClient allows the `client.encrypt_()` functions to be performed synchronously - * - * @Note The Sync FhenixClient must be created using `await FhenixClientSync.create({provider})` instead of `new FhenixClient({provider})` + * @param {any | any[]} item - Array, object, or item. Any nested `SealedItems` will be unsealed. + * @returns - Recursively unsealed data in the target type, SealedBool -> boolean, SealedAddress -> string, etc. */ -export declare class FhenixClientSync extends FhenixClientBase { - fhePublicKeys: Array; - constructor(params: InstanceParamsWithFhePublicKeys); - static create(params: InstanceParams & { - securityZones?: number[]; - }): Promise; - private _getPublicKey; - encrypt_bool(value: boolean, securityZone?: number): EncryptedBool; - encrypt_uint8(value: number, securityZone?: number): EncryptedUint8; - encrypt_uint16(value: number, securityZone?: number): EncryptedUint16; - encrypt_uint32(value: number, securityZone?: number): EncryptedUint32; - encrypt_uint64(value: bigint | string, securityZone?: number): EncryptedUint64; - encrypt_uint128(value: bigint | string, securityZone?: number): EncryptedUint128; - encrypt_uint256(value: bigint | string, securityZone?: number): EncryptedUint256; - encrypt_address(value: bigint | string, securityZone?: number): EncryptedAddress; - encrypt(value: number, type?: EncryptionTypes, securityZone?: number): EncryptedNumber; -} +declare function unseal(item: T, account?: string, hash?: string): Result>; +export declare const fhenixsdk: { + store: import("zustand/vanilla.js").StoreApi; + initialize: (params: InitializationParams & { + ignoreErrors?: boolean; + generatePermit?: boolean; + }) => Promise>; + createPermit: (options?: PermitV2Options) => Promise>; + importPermit: (imported: string | PermitV2Interface) => Promise>; + selectActivePermit: (hash: string) => Result; + getPermit: (hash?: string) => Result; + getPermission: (hash?: string) => Result; + getAllPermits: () => Result>; + encrypt: typeof encrypt; + unsealCiphertext: (ciphertext: string, account?: string, hash?: string) => Result; + unseal: typeof unseal; +}; export {}; //# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/lib/types/sdk/index.d.ts.map b/lib/types/sdk/index.d.ts.map index b7104f3..bc8bbf0 100644 --- a/lib/types/sdk/index.d.ts.map +++ b/lib/types/sdk/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sdk/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sdk/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAwC,MAAM,UAAU,CAAC;AAE1E,OAAO,EAIL,QAAQ,EACT,MAAM,YAAY,CAAC;AAYpB,OAAO,EAGL,yBAAyB,EAEzB,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,MAAM,EAGN,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,UAAU,CAAC;AA2RlB;;;;;;;GAOG;AACH,iBAAe,OAAO,CAAC,CAAC,EACtB,IAAI,EAAE,CAAC,GACN,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,iBAAe,OAAO,CAAC,CAAC,SAAS,GAAG,EAAE,EACpC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GACX,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAyLtD;;;;;;;GAOG;AACH,iBAAS,MAAM,CAAC,CAAC,EACf,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAwBhC;AAID,eAAO,MAAM,SAAS;;yBAjgBZ,oBAAoB,GAAG;QAC7B,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,KACA,QAAQ,OAAO,QAAQ,GAAG,SAAS,CAAC,CAAC;6BAoF5B,eAAe,KACxB,QAAQ,OAAO,QAAQ,CAAC,CAAC;6BAyChB,MAAM,GAAG,iBAAiB,KACnC,QAAQ,OAAO,QAAQ,CAAC,CAAC;+BAiEM,MAAM,KAAG,OAAO,QAAQ,CAAC;uBAyBjC,MAAM,KAAG,OAAO,QAAQ,CAAC;2BA8BrB,MAAM,KAAG,OAAO,YAAY,CAAC;yBAYjC,OAAO,OAAO,MAAM,EAAE,QAAQ,CAAC,CAAC;;mCA8K5C,MAAM,YACR,MAAM,SACT,MAAM,KACZ,OAAO,MAAM,CAAC;;CAwFhB,CAAC"} \ No newline at end of file diff --git a/lib/types/sdk/permit/generate.d.ts b/lib/types/sdk/permit/generate.d.ts new file mode 100644 index 0000000..fd0acd3 --- /dev/null +++ b/lib/types/sdk/permit/generate.d.ts @@ -0,0 +1,20 @@ +import { PermissionV2 } from "../../types"; +import { EIP712Message, EIP712Types } from "../../types/EIP712"; +export declare const SignatureTypes: { + readonly PermissionedV2IssuerSelf: ("recipient" | "contracts" | "projects" | "issuer" | "expiration" | "validatorId" | "validatorContract" | "sealingKey")[]; + readonly PermissionedV2IssuerShared: ("recipient" | "contracts" | "projects" | "issuer" | "expiration" | "validatorId" | "validatorContract")[]; + readonly PermissionedV2Recipient: ("issuerSignature" | "sealingKey")[]; +}; +export type PermitV2SignaturePrimaryType = keyof typeof SignatureTypes; +export declare const getSignatureTypesAndMessage: (primaryType: PermitV2SignaturePrimaryType, fields: T[] | readonly T[], values: Pick & Partial) => { + types: EIP712Types; + primaryType: string; + message: EIP712Message; +}; +export declare const getSignatureDomain: (chainId: string) => { + name: string; + version: string; + chainId: number; + verifyingContract: string; +}; +//# sourceMappingURL=generate.d.ts.map \ No newline at end of file diff --git a/lib/types/sdk/permit/generate.d.ts.map b/lib/types/sdk/permit/generate.d.ts.map new file mode 100644 index 0000000..2c56428 --- /dev/null +++ b/lib/types/sdk/permit/generate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../../src/sdk/permit/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAiBhE,eAAO,MAAM,cAAc;;;;CAwBjB,CAAC;AACX,MAAM,MAAM,4BAA4B,GAAG,MAAM,OAAO,cAAc,CAAC;AAEvE,eAAO,MAAM,2BAA2B,qKAGzB,4BAA4B,UACjC,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,UAClB,KAAK,YAAY,EAAE,CAAC,CAAC,GAAG,QAAQ,YAAY,CAAC,KACpD;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAgBnE,CAAC;AAEF,eAAO,MAAM,kBAAkB,YAAa,MAAM;;;;;CAKhD,CAAC"} \ No newline at end of file diff --git a/lib/types/sdk/permit/index.d.ts b/lib/types/sdk/permit/index.d.ts new file mode 100644 index 0000000..5cdabbe --- /dev/null +++ b/lib/types/sdk/permit/index.d.ts @@ -0,0 +1,5 @@ +export { permitStore } from "./store"; +export { PermitV2 } from "./permit"; +export { PermitV2ParamsValidator, FullyFormedPermitV2Validator, } from "./permit.z"; +export { SignatureTypes, getSignatureTypesAndMessage, getSignatureDomain, } from "./generate"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/lib/types/sdk/permit/index.d.ts.map b/lib/types/sdk/permit/index.d.ts.map new file mode 100644 index 0000000..a0aefac --- /dev/null +++ b/lib/types/sdk/permit/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/sdk/permit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EACL,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,cAAc,EACd,2BAA2B,EAC3B,kBAAkB,GACnB,MAAM,YAAY,CAAC"} \ No newline at end of file diff --git a/lib/types/sdk/permit/permit.d.ts b/lib/types/sdk/permit/permit.d.ts new file mode 100644 index 0000000..cf3f1c0 --- /dev/null +++ b/lib/types/sdk/permit/permit.d.ts @@ -0,0 +1,233 @@ +import { PermitV2SignaturePrimaryType } from "./generate"; +import { SealingKey } from "../sealing"; +import { PermissionV2, PermitV2Interface, PermitV2Metadata, PermitV2Options, SerializedPermitV2, MappedUnsealedTypes, AbstractSigner } from "../../types"; +export declare class PermitV2 implements PermitV2Interface, PermitV2Metadata { + /** + * Name for this permit, for organization and UI usage, not included in signature. + */ + name: string; + /** + * The type of the PermitV2 (self / sharing) + * (self) Permit that will be signed and used by the issuer + * (sharing) Permit that is signed by the issuer, but intended to be shared with recipient + * (recipient) Permit that has been received, and signed by the recipient + */ + type: "self" | "sharing" | "recipient"; + /** + * (base) User that initially created the permission, target of data fetching + */ + issuer: string; + /** + * (base) Expiration timestamp + */ + expiration: number; + /** + * (base) List of contract addresses that can be accessed with this permission + */ + contracts: string[]; + /** + * (base) List of project identifiers (strings) that can be accessed + */ + projects: string[]; + /** + * (sharing) The user that this permission will be shared with + * ** optional, use `address(0)` to disable ** + */ + recipient: string; + /** + * (issuer defined validation) An id used to query a contract to check this permissions validity + * ** optional, use `0` to disable ** + */ + validatorId: number; + /** + * (issuer defined validation) The contract to query to determine permission validity + * ** optional, user `address(0)` to disable ** + */ + validatorContract: string; + /** + * (base) The publicKey of a sealingPair used to re-encrypt `issuer`s confidential data + * (non-sharing) Populated by `issuer` + * (sharing) Populated by `recipient` + */ + sealingPair: SealingKey; + /** + * (base) `signTypedData` signature created by `issuer`. + * (base) Shared- and Self- permissions differ in signature format: (`sealingKey` absent in shared signature) + * (non-sharing) < issuer, expiration, contracts, projects, recipient, validatorId, validatorContract, sealingKey > + * (sharing) < issuer, expiration, contracts, projects, recipient, validatorId, validatorContract > + */ + issuerSignature: string; + /** + * (sharing) `signTypedData` signature created by `recipient` with format: + * (sharing) < sealingKey, issuerSignature> + * ** required for shared permits ** + */ + recipientSignature: string; + /** + * Chain that this permit was signed on. In part used for mock encrypt/unseal on hardhat network. + * Should not be set manually, included in metadata as part of serialization flows. + */ + _signedChainId: string | undefined; + constructor(options: PermitV2Interface, metadata?: Partial); + static create(options: PermitV2Options): Promise; + static createAndSign(options: PermitV2Options, chainId: string | undefined, signer: AbstractSigner | undefined): Promise; + updateName: (name: string) => void; + /** + * Creates a `PermitV2` from a serialized permit, hydrating methods and classes + * NOTE: Does not return a stringified permit + * + * @param {SerializedPermitV2} - Permit structure excluding classes + * @returns {PermitV2} - New instance of PermitV2 class + */ + static deserialize: ({ _signedChainId, sealingPair, ...permit }: SerializedPermitV2) => PermitV2; + static validate: (permit: PermitV2) => import("zod").SafeParseReturnType<{ + type: "self" | "sharing" | "recipient"; + issuer: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + recipient?: string | undefined; + contracts?: string[] | undefined; + projects?: string[] | undefined; + name?: string | undefined; + expiration?: number | undefined; + validatorId?: number | undefined; + validatorContract?: string | undefined; + issuerSignature?: string | undefined; + recipientSignature?: string | undefined; + }, { + recipient: string; + contracts: string[]; + projects: string[]; + name: string; + type: "self" | "sharing" | "recipient"; + issuer: string; + expiration: number; + validatorId: number; + validatorContract: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + issuerSignature: string; + recipientSignature: string; + }>; + /** + * Utility to extract the public data from a permit. + * Used in `serialize`, `getPermission`, `getHash` etc + */ + getInterface: () => PermitV2Interface; + /** + * Export the necessary permit data to share a permit with another user + */ + export: () => string; + /** + * Returns a serializable permit instance, removing classes and methods. + * NOTE: Does not return a stringified permit + */ + serialize: () => SerializedPermitV2; + /** + * Extracts a contract input ready permission from this permit. + * The permission inherits most fields from the permit, however + * `permit.sealingPair` is removed and replaced by `permit.sealingPair.publicKey` in the `sealingKey` field. + * + * @permit {boolean} skipValidation - Flag to prevent running validation on the permit before returning the extracted permission. Used internally. + * @returns {PermissionV2} + */ + getPermission: (skipValidation?: boolean) => PermissionV2; + /** + * Returns a stable hash depending on the core data of the permit. + * Is used in the store as each permit's key in the permit map. + */ + getHash: () => string; + /** + * Returns the domain, types, primaryType, and message fields required to request the user's signature + * Primary type is returned to allow viem clients to more easily connect + */ + getSignatureParams: (chainId: string, primaryType: PermitV2SignaturePrimaryType) => { + types: import("../../types/EIP712").EIP712Types; + primaryType: string; + message: import("../../types/EIP712").EIP712Message; + domain: { + name: string; + version: string; + chainId: number; + verifyingContract: string; + }; + }; + /** + * Determines the required signature type. + * Creates the EIP712 types and message. + * Prompts the user for their signature. + * Inserts the signature into `issuerSignature` or `recipientSignature` as necessary. + * + * @param {string} chainId - Used as part of the EIP712 domain, throws if undefined + * @param {AbstractSigner} signer - Signer responsible for signing the EIP712 permit signature, throws if undefined + */ + sign: (chainId: string | undefined, signer: AbstractSigner | undefined) => Promise; + /** + * Use the privateKey of `permit.sealingPair` to unseal `ciphertext` returned from the Fhenix chain. + * Useful when not using `SealedItem` structs and need to unseal an individual ciphertext. + */ + unsealCiphertext: (ciphertext: string) => bigint; + /** + * Uses the privateKey of `permit.sealingPair` to recursively unseal any contained `SealedItems`. + * If `item` is a single `SealedItem` it will be individually. + * NOTE: Only unseals typed `SealedItem`s returned from `FHE.sealoutputTyped` and the FHE bindings' `e____.sealTyped`. + * + * @param {any | any[]} item - Array, object, or item. Any nested `SealedItems` will be unsealed. + * @returns - Recursively unsealed data in the target type, SealedBool -> boolean, SealedAddress -> string, etc. + */ + unseal(item: T): MappedUnsealedTypes; + unseal(item: [...T]): [...MappedUnsealedTypes]; + /** + * Check if permit satisfies the requirements param. + * Permit must satisfy either the contracts list or the projects list + * + * @param {{contracts?: string[], projects?: string[]}} requirements - Lists of contract and project requirements. + * @returns {satisfies: boolean, unsatisfiedContracts, unsatisfiedProjects} - satisfied if either req list is fulfilled. + */ + getSatisfies: (requirements: { + contracts?: string[]; + projects?: string[]; + }) => { + satisfies: true; + unsatisfiedContracts: null; + unsatisfiedProjects: null; + } | { + satisfies: false; + unsatisfiedContracts: string[]; + unsatisfiedProjects: string[]; + }; + /** + * Returns whether the active party has created their signature. + * If `permit.type` is self or sharing, the active party is `issuer`. + * If `permit.type` is recipient, the active party is `recipient` + * + * @returns {boolean} + */ + isSigned: () => boolean; + /** + * Returns whether this permit has expired due to `permit.expiration` + * + * @returns {boolean} + */ + isExpired: () => boolean; + /** + * Overall validity checker of a permit, checks the signatures and expirations + * + * @returns {{valid: boolean, error: string}} - If `valid`, `error` is null, else `error` indicates which validity check failed + */ + isValid: () => { + readonly valid: false; + readonly error: "expired"; + } | { + readonly valid: false; + readonly error: "not-signed"; + } | { + readonly valid: true; + readonly error: null; + }; +} +//# sourceMappingURL=permit.d.ts.map \ No newline at end of file diff --git a/lib/types/sdk/permit/permit.d.ts.map b/lib/types/sdk/permit/permit.d.ts.map new file mode 100644 index 0000000..fb03794 --- /dev/null +++ b/lib/types/sdk/permit/permit.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"permit.d.ts","sourceRoot":"","sources":["../../../../src/sdk/permit/permit.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/types/sdk/permit/permit.z.d.ts b/lib/types/sdk/permit/permit.z.d.ts new file mode 100644 index 0000000..ff37d75 --- /dev/null +++ b/lib/types/sdk/permit/permit.z.d.ts @@ -0,0 +1,315 @@ +import { z } from "zod"; +/** + * Validator for the params used when creating a fresh PermitV2 + * Has defaults added that will be populated in the options object + * Signatures superRefinement checks only the recipient, sealingPair and signatures are not necessary in the Permit params + */ +export declare const PermitV2ParamsValidator: z.ZodEffects>; + type: z.ZodEnum<["self", "sharing", "recipient"]>; + issuer: z.ZodEffects, string, string>; + expiration: z.ZodDefault>; + contracts: z.ZodDefault>>; + projects: z.ZodDefault>>; + recipient: z.ZodEffects>, string, string | undefined>; + validatorId: z.ZodDefault>; + validatorContract: z.ZodEffects>, string, string | undefined>; + sealingPair: z.ZodOptional>; + issuerSignature: z.ZodDefault>; + recipientSignature: z.ZodDefault>; +}, "strip", z.ZodTypeAny, { + recipient: string; + contracts: string[]; + projects: string[]; + name: string; + type: "self" | "sharing" | "recipient"; + issuer: string; + expiration: number; + validatorId: number; + validatorContract: string; + issuerSignature: string; + recipientSignature: string; + sealingPair?: { + publicKey: string; + privateKey: string; + } | undefined; +}, { + type: "self" | "sharing" | "recipient"; + issuer: string; + recipient?: string | undefined; + contracts?: string[] | undefined; + projects?: string[] | undefined; + name?: string | undefined; + expiration?: number | undefined; + validatorId?: number | undefined; + validatorContract?: string | undefined; + sealingPair?: { + publicKey: string; + privateKey: string; + } | undefined; + issuerSignature?: string | undefined; + recipientSignature?: string | undefined; +}>, { + recipient: string; + contracts: string[]; + projects: string[]; + name: string; + type: "self" | "sharing" | "recipient"; + issuer: string; + expiration: number; + validatorId: number; + validatorContract: string; + issuerSignature: string; + recipientSignature: string; + sealingPair?: { + publicKey: string; + privateKey: string; + } | undefined; +}, { + type: "self" | "sharing" | "recipient"; + issuer: string; + recipient?: string | undefined; + contracts?: string[] | undefined; + projects?: string[] | undefined; + name?: string | undefined; + expiration?: number | undefined; + validatorId?: number | undefined; + validatorContract?: string | undefined; + sealingPair?: { + publicKey: string; + privateKey: string; + } | undefined; + issuerSignature?: string | undefined; + recipientSignature?: string | undefined; +}>, { + recipient: string; + contracts: string[]; + projects: string[]; + name: string; + type: "self" | "sharing" | "recipient"; + issuer: string; + expiration: number; + validatorId: number; + validatorContract: string; + issuerSignature: string; + recipientSignature: string; + sealingPair?: { + publicKey: string; + privateKey: string; + } | undefined; +}, { + type: "self" | "sharing" | "recipient"; + issuer: string; + recipient?: string | undefined; + contracts?: string[] | undefined; + projects?: string[] | undefined; + name?: string | undefined; + expiration?: number | undefined; + validatorId?: number | undefined; + validatorContract?: string | undefined; + sealingPair?: { + publicKey: string; + privateKey: string; + } | undefined; + issuerSignature?: string | undefined; + recipientSignature?: string | undefined; +}>, { + recipient: string; + contracts: string[]; + projects: string[]; + name: string; + type: "self" | "sharing" | "recipient"; + issuer: string; + expiration: number; + validatorId: number; + validatorContract: string; + issuerSignature: string; + recipientSignature: string; + sealingPair?: { + publicKey: string; + privateKey: string; + } | undefined; +}, { + type: "self" | "sharing" | "recipient"; + issuer: string; + recipient?: string | undefined; + contracts?: string[] | undefined; + projects?: string[] | undefined; + name?: string | undefined; + expiration?: number | undefined; + validatorId?: number | undefined; + validatorContract?: string | undefined; + sealingPair?: { + publicKey: string; + privateKey: string; + } | undefined; + issuerSignature?: string | undefined; + recipientSignature?: string | undefined; +}>; +/** + * Validator for a PermitV2 that is expected to be fully formed + * Does not allow optional values or offer defaults + * Validates that the correct signatures are populated + * Validates sealingPair is populated + */ +export declare const FullyFormedPermitV2Validator: z.ZodEffects>; + type: z.ZodEnum<["self", "sharing", "recipient"]>; + issuer: z.ZodEffects, string, string>; + expiration: z.ZodDefault>; + contracts: z.ZodDefault>>; + projects: z.ZodDefault>>; + recipient: z.ZodEffects>, string, string | undefined>; + validatorId: z.ZodDefault>; + validatorContract: z.ZodEffects>, string, string | undefined>; + sealingPair: z.ZodObject<{ + privateKey: z.ZodString; + publicKey: z.ZodString; + }, "strip", z.ZodTypeAny, { + publicKey: string; + privateKey: string; + }, { + publicKey: string; + privateKey: string; + }>; + issuerSignature: z.ZodDefault>; + recipientSignature: z.ZodDefault>; +}, "strip", z.ZodTypeAny, { + recipient: string; + contracts: string[]; + projects: string[]; + name: string; + type: "self" | "sharing" | "recipient"; + issuer: string; + expiration: number; + validatorId: number; + validatorContract: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + issuerSignature: string; + recipientSignature: string; +}, { + type: "self" | "sharing" | "recipient"; + issuer: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + recipient?: string | undefined; + contracts?: string[] | undefined; + projects?: string[] | undefined; + name?: string | undefined; + expiration?: number | undefined; + validatorId?: number | undefined; + validatorContract?: string | undefined; + issuerSignature?: string | undefined; + recipientSignature?: string | undefined; +}>, { + recipient: string; + contracts: string[]; + projects: string[]; + name: string; + type: "self" | "sharing" | "recipient"; + issuer: string; + expiration: number; + validatorId: number; + validatorContract: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + issuerSignature: string; + recipientSignature: string; +}, { + type: "self" | "sharing" | "recipient"; + issuer: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + recipient?: string | undefined; + contracts?: string[] | undefined; + projects?: string[] | undefined; + name?: string | undefined; + expiration?: number | undefined; + validatorId?: number | undefined; + validatorContract?: string | undefined; + issuerSignature?: string | undefined; + recipientSignature?: string | undefined; +}>, { + recipient: string; + contracts: string[]; + projects: string[]; + name: string; + type: "self" | "sharing" | "recipient"; + issuer: string; + expiration: number; + validatorId: number; + validatorContract: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + issuerSignature: string; + recipientSignature: string; +}, { + type: "self" | "sharing" | "recipient"; + issuer: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + recipient?: string | undefined; + contracts?: string[] | undefined; + projects?: string[] | undefined; + name?: string | undefined; + expiration?: number | undefined; + validatorId?: number | undefined; + validatorContract?: string | undefined; + issuerSignature?: string | undefined; + recipientSignature?: string | undefined; +}>, { + recipient: string; + contracts: string[]; + projects: string[]; + name: string; + type: "self" | "sharing" | "recipient"; + issuer: string; + expiration: number; + validatorId: number; + validatorContract: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + issuerSignature: string; + recipientSignature: string; +}, { + type: "self" | "sharing" | "recipient"; + issuer: string; + sealingPair: { + publicKey: string; + privateKey: string; + }; + recipient?: string | undefined; + contracts?: string[] | undefined; + projects?: string[] | undefined; + name?: string | undefined; + expiration?: number | undefined; + validatorId?: number | undefined; + validatorContract?: string | undefined; + issuerSignature?: string | undefined; + recipientSignature?: string | undefined; +}>; +//# sourceMappingURL=permit.z.d.ts.map \ No newline at end of file diff --git a/lib/types/sdk/permit/permit.z.d.ts.map b/lib/types/sdk/permit/permit.z.d.ts.map new file mode 100644 index 0000000..6345ffb --- /dev/null +++ b/lib/types/sdk/permit/permit.z.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"permit.z.d.ts","sourceRoot":"","sources":["../../../../src/sdk/permit/permit.z.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoKxB;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASjC,CAAC;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUtC,CAAC"} \ No newline at end of file diff --git a/lib/types/sdk/permit/store.d.ts b/lib/types/sdk/permit/store.d.ts new file mode 100644 index 0000000..422843a --- /dev/null +++ b/lib/types/sdk/permit/store.d.ts @@ -0,0 +1,62 @@ +import { SerializedPermitV2 } from "../../types"; +import { PermitV2 } from "./permit"; +type AccountRecord = Record; +type HashRecord = Record; +type PermitsStore = { + permits: AccountRecord>; + activePermitHash: AccountRecord; +}; +export declare const _permitStore: Omit, "persist"> & { + persist: { + setOptions: (options: Partial>) => void; + clearStorage: () => void; + rehydrate: () => void | Promise; + hasHydrated: () => boolean; + onHydrate: (fn: (state: PermitsStore) => void) => () => void; + onFinishHydration: (fn: (state: PermitsStore) => void) => () => void; + getOptions: () => Partial>; + }; +}; +export declare const getPermit: (account: string | undefined, hash: string | undefined) => PermitV2 | undefined; +export declare const getActivePermit: (account: string | undefined) => PermitV2 | undefined; +export declare const getPermits: (account: string | undefined) => Record; +export declare const setPermit: (account: string, permitV2: PermitV2) => void; +export declare const removePermit: (account: string, hash: string) => void; +export declare const getActivePermitHash: (account: string | undefined) => string | undefined; +export declare const setActivePermitHash: (account: string, hash: string) => void; +export declare const removeActivePermitHash: (account: string) => void; +export declare const permitStore: { + store: Omit, "persist"> & { + persist: { + setOptions: (options: Partial>) => void; + clearStorage: () => void; + rehydrate: () => void | Promise; + hasHydrated: () => boolean; + onHydrate: (fn: (state: PermitsStore) => void) => () => void; + onFinishHydration: (fn: (state: PermitsStore) => void) => () => void; + getOptions: () => Partial>; + }; + }; + getPermit: (account: string | undefined, hash: string | undefined) => PermitV2 | undefined; + getActivePermit: (account: string | undefined) => PermitV2 | undefined; + getPermits: (account: string | undefined) => Record; + setPermit: (account: string, permitV2: PermitV2) => void; + removePermit: (account: string, hash: string) => void; + getActivePermitHash: (account: string | undefined) => string | undefined; + setActivePermitHash: (account: string, hash: string) => void; + removeActivePermitHash: (account: string) => void; +}; +export {}; +//# sourceMappingURL=store.d.ts.map \ No newline at end of file diff --git a/lib/types/sdk/permit/store.d.ts.map b/lib/types/sdk/permit/store.d.ts.map new file mode 100644 index 0000000..c9938ae --- /dev/null +++ b/lib/types/sdk/permit/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/sdk/permit/store.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,KAAK,aAAa,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC1C,KAAK,UAAU,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAEvC,KAAK,YAAY,GAAG;IAClB,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC,CAAC;IACnE,gBAAgB,EAAE,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACrD,CAAC;AAIF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;CAQxB,CAAC;AAIF,eAAO,MAAM,SAAS,YACX,MAAM,GAAG,SAAS,QACrB,MAAM,GAAG,SAAS,KACvB,QAAQ,GAAG,SAOb,CAAC;AAEF,eAAO,MAAM,eAAe,YACjB,MAAM,GAAG,SAAS,KAC1B,QAAQ,GAAG,SAKb,CAAC;AAEF,eAAO,MAAM,UAAU,YACZ,MAAM,GAAG,SAAS,KAC1B,OAAO,MAAM,EAAE,QAAQ,CAUzB,CAAC;AAEF,eAAO,MAAM,SAAS,YAAa,MAAM,YAAY,QAAQ,SAO5D,CAAC;AAEF,eAAO,MAAM,YAAY,YAAa,MAAM,QAAQ,MAAM,SAMzD,CAAC;AAIF,eAAO,MAAM,mBAAmB,YACrB,MAAM,GAAG,SAAS,KAC1B,MAAM,GAAG,SAGX,CAAC;AAEF,eAAO,MAAM,mBAAmB,YAAa,MAAM,QAAQ,MAAM,SAMhE,CAAC;AAEF,eAAO,MAAM,sBAAsB,YAAa,MAAM,SAMrD,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;yBA5Eb,MAAM,GAAG,SAAS,QACrB,MAAM,GAAG,SAAS,KACvB,QAAQ,GAAG,SAAS;+BAUZ,MAAM,GAAG,SAAS,KAC1B,QAAQ,GAAG,SAAS;0BAQZ,MAAM,GAAG,SAAS,KAC1B,OAAO,MAAM,EAAE,QAAQ,CAAC;yBAYQ,MAAM,YAAY,QAAQ;4BASvB,MAAM,QAAQ,MAAM;mCAW/C,MAAM,GAAG,SAAS,KAC1B,MAAM,GAAG,SAAS;mCAKwB,MAAM,QAAQ,MAAM;sCAQjB,MAAM;CAoBrD,CAAC"} \ No newline at end of file diff --git a/lib/types/sdk/store.d.ts b/lib/types/sdk/store.d.ts new file mode 100644 index 0000000..17ff538 --- /dev/null +++ b/lib/types/sdk/store.d.ts @@ -0,0 +1,45 @@ +import { TfheCompactPublicKey } from "./fhe/fhe"; +import { AbstractProvider, AbstractSigner, InitializationParams, PermitV2AccessRequirements } from "../types"; +type ChainRecord = Record; +type SecurityZoneRecord = Record; +type SdkStoreProviderInitialization = { + providerInitialized: false; + signer: never; + account: never; +} | { + providerInitialized: true; + provider: AbstractProvider; + chainId: string; +}; +type SdkStoreSignerInitialization = { + signerInitialized: false; + signer: never; + account: never; +} | { + signerInitialized: true; + signer: AbstractSigner; + account: string; +}; +export type SdkStore = SdkStoreProviderInitialization & SdkStoreSignerInitialization & { + provider: AbstractProvider; + chainId: string; + fheKeysInitialized: boolean; + securityZones: number[]; + fheKeys: ChainRecord>; + accessRequirements: PermitV2AccessRequirements; + coFheUrl: string | undefined; +}; +export declare const _sdkStore: import("zustand/vanilla").StoreApi; +export declare const _store_getConnectedChainFheKey: (securityZone?: number) => TfheCompactPublicKey | undefined; +export declare const _store_setFheKey: (chainId: string | undefined, securityZone: number | undefined, fheKey: TfheCompactPublicKey | undefined) => void; +export declare const _store_initialize: (params: InitializationParams) => Promise; +/** + * Retrieves the FHE public key from the provider. + * If the key already exists in the store it is returned, else it is fetched, stored, and returned + * @param {string} chainId - The chain to fetch the FHE key for, if no chainId provided, undefined is returned + * @param securityZone - The security zone for which to retrieve the key (default 0). + * @returns {Promise} - The retrieved public key. + */ +export declare const _store_fetchFheKey: (chainId: string, securityZone?: number, forceFetch?: boolean) => Promise; +export {}; +//# sourceMappingURL=store.d.ts.map \ No newline at end of file diff --git a/lib/types/sdk/store.d.ts.map b/lib/types/sdk/store.d.ts.map new file mode 100644 index 0000000..9bf72a2 --- /dev/null +++ b/lib/types/sdk/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/sdk/store.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAIjD,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,0BAA0B,EAC3B,MAAM,UAAU,CAAC;AAElB,KAAK,WAAW,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACxC,KAAK,kBAAkB,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAE/C,KAAK,8BAA8B,GAC/B;IACE,mBAAmB,EAAE,KAAK,CAAC;IAC3B,MAAM,EAAE,KAAK,CAAC;IACd,OAAO,EAAE,KAAK,CAAC;CAChB,GACD;IACE,mBAAmB,EAAE,IAAI,CAAC;IAC1B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEN,KAAK,4BAA4B,GAC7B;IACE,iBAAiB,EAAE,KAAK,CAAC;IACzB,MAAM,EAAE,KAAK,CAAC;IACd,OAAO,EAAE,KAAK,CAAC;CAChB,GACD;IACE,iBAAiB,EAAE,IAAI,CAAC;IACxB,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEN,MAAM,MAAM,QAAQ,GAAG,8BAA8B,GACnD,4BAA4B,GAAG;IAC7B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAEhB,kBAAkB,EAAE,OAAO,CAAC;IAE5B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,WAAW,CAAC,kBAAkB,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC;IACjE,kBAAkB,EAAE,0BAA0B,CAAC;IAE/C,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B,CAAC;AAEJ,eAAO,MAAM,SAAS,8CAsBrB,CAAC;AAgBF,eAAO,MAAM,8BAA8B,6BAExC,oBAAoB,GAAG,SAUzB,CAAC;AAEF,eAAO,MAAM,gBAAgB,YAClB,MAAM,GAAG,SAAS,gBACb,MAAM,GAAG,SAAS,UACxB,oBAAoB,GAAG,SAAS,SAUzC,CAAC;AAsBF,eAAO,MAAM,iBAAiB,WAAkB,oBAAoB,kBAkEnE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,YACpB,MAAM,iBACD,MAAM,2BAEnB,QAAQ,oBAAoB,CA2D9B,CAAC"} \ No newline at end of file diff --git a/lib/types/sdk/types.d.ts b/lib/types/sdk/types.d.ts index 6cd2e52..6710430 100644 --- a/lib/types/sdk/types.d.ts +++ b/lib/types/sdk/types.d.ts @@ -36,6 +36,8 @@ export type InstanceParams = { provider: SupportedProvider; ignoreErrors?: boolean; skipPubKeyFetch?: boolean; + cofhe?: boolean; + cofheURL?: string; }; /** * Type of the constructor of the sync fhenix client diff --git a/lib/types/sdk/types.d.ts.map b/lib/types/sdk/types.d.ts.map index ebe7b4d..8cc9368 100644 --- a/lib/types/sdk/types.d.ts.map +++ b/lib/types/sdk/types.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/sdk/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAErE;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAErD;;;GAGG;AACH,oBAAY,eAAe;IACzB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,+BAA+B,GAAG,cAAc,GAAG;IAC7D,aAAa,EAAE,KAAK,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAAC;CACxD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,UAAU,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAGF,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,SAAS,CAAC,IAAI,OAAO,CAAC;IACtB,SAAS,CAAC,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAChE;AAED;;;;;;GAMG;AAEH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,QAAQ,CAuB5E;AAED;;;;;;GAMG;AAEH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,QAAQ,CAM5E;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,aAAc,SAAQ,eAAe;CAAG;AACzD,MAAM,WAAW,cAAe,SAAQ,eAAe;CAAG;AAC1D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAC5D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAC5D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG"} \ No newline at end of file +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/sdk/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAErE;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAErD;;;GAGG;AACH,oBAAY,eAAe;IACzB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,+BAA+B,GAAG,cAAc,GAAG;IAC7D,aAAa,EAAE,KAAK,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAAC;CACxD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,UAAU,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAGF,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,SAAS,CAAC,IAAI,OAAO,CAAC;IACtB,SAAS,CAAC,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAChE;AAED;;;;;;GAMG;AAEH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,QAAQ,CAuB5E;AAED;;;;;;GAMG;AAEH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,QAAQ,CAM5E;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,aAAc,SAAQ,eAAe;CAAG;AACzD,MAAM,WAAW,cAAe,SAAQ,eAAe;CAAG;AAC1D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAC5D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAC5D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG"} \ No newline at end of file diff --git a/lib/types/sdk/utils.d.ts b/lib/types/sdk/utils.d.ts index 629a420..6af02c9 100644 --- a/lib/types/sdk/utils.d.ts +++ b/lib/types/sdk/utils.d.ts @@ -1,4 +1,3 @@ -import { EncryptedNumber } from "./types.js"; export declare const ValidateUintInRange: (value: number, max: number, min: number) => void; export declare const fromHexString: (hexString: string) => Uint8Array; export declare const toHexString: (bytes: Uint8Array) => string; @@ -8,7 +7,5 @@ export declare function isAddress(address: string): void; export declare function toABIEncodedUint32(value: number): string; export declare const stringToUint8Array: (value: string) => Uint8Array; export declare const uint8ArrayToString: (value: Uint8Array) => string; -export declare const chainIsHardhat: (chainId?: string) => boolean; -export declare const hardhatMockUnseal: (value: string) => bigint; -export declare const hardhatMockEncrypt: (value: bigint, securityZone?: number) => EncryptedNumber; +export declare const bigintToUint8Array: (bigNum: bigint) => Uint8Array; //# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/lib/types/sdk/utils.d.ts.map b/lib/types/sdk/utils.d.ts.map index 6634e46..b52d6d2 100644 --- a/lib/types/sdk/utils.d.ts.map +++ b/lib/types/sdk/utils.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/sdk/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,eAAO,MAAM,mBAAmB,UACvB,MAAM,OACR,MAAM,OACN,MAAM,KACV,IAQF,CAAC;AAEF,eAAO,MAAM,aAAa,cAAe,MAAM,KAAG,UAKjD,CAAC;AAEF,eAAO,MAAM,WAAW,UAAW,UAAU,WAC8B,CAAC;AAE5E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAElD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAE5D;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,QAIxC;AA0GD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,UAQ/C;AAID,eAAO,MAAM,kBAAkB,UAAW,MAAM,KAAG,UAElD,CAAC;AACF,eAAO,MAAM,kBAAkB,UAAW,UAAU,KAAG,MAItD,CAAC;AAuBF,eAAO,MAAM,cAAc,aAAc,MAAM,KAAG,OAGjD,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAAW,MAAM,KAAG,MAMjD,CAAC;AAEF,eAAO,MAAM,kBAAkB,UACtB,MAAM,4BAEZ,eAGD,CAAC"} \ No newline at end of file +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/sdk/utils.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,UACvB,MAAM,OACR,MAAM,OACN,MAAM,KACV,IAQF,CAAC;AAEF,eAAO,MAAM,aAAa,cAAe,MAAM,KAAG,UAKjD,CAAC;AAEF,eAAO,MAAM,WAAW,UAAW,UAAU,WAC8B,CAAC;AAE5E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAElD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAE5D;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,QAIxC;AA0GD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,UAQ/C;AAID,eAAO,MAAM,kBAAkB,UAAW,MAAM,KAAG,UAElD,CAAC;AACF,eAAO,MAAM,kBAAkB,UAAW,UAAU,KAAG,MAItD,CAAC;AACF,eAAO,MAAM,kBAAkB,WAAY,MAAM,KAAG,UAgBnD,CAAC"} \ No newline at end of file diff --git a/lib/types/sdk/utils.hardhat.d.ts b/lib/types/sdk/utils.hardhat.d.ts new file mode 100644 index 0000000..53ae8cb --- /dev/null +++ b/lib/types/sdk/utils.hardhat.d.ts @@ -0,0 +1,5 @@ +import { EncryptedNumber } from "../types"; +export declare const chainIsHardhat: (chainId?: string) => boolean; +export declare const hardhatMockUnseal: (value: string) => bigint; +export declare const hardhatMockEncrypt: (value: bigint, securityZone?: number) => EncryptedNumber; +//# sourceMappingURL=utils.hardhat.d.ts.map \ No newline at end of file diff --git a/lib/types/sdk/utils.hardhat.d.ts.map b/lib/types/sdk/utils.hardhat.d.ts.map new file mode 100644 index 0000000..bb6f941 --- /dev/null +++ b/lib/types/sdk/utils.hardhat.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.hardhat.d.ts","sourceRoot":"","sources":["../../../src/sdk/utils.hardhat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAO3C,eAAO,MAAM,cAAc,aAAc,MAAM,KAAG,OAGjD,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAAW,MAAM,KAAG,MAMjD,CAAC;AAEF,eAAO,MAAM,kBAAkB,UACtB,MAAM,4BAEZ,eAGD,CAAC"} \ No newline at end of file diff --git a/lib/types/types/EIP712.d.ts b/lib/types/types/EIP712.d.ts new file mode 100644 index 0000000..5c53072 --- /dev/null +++ b/lib/types/types/EIP712.d.ts @@ -0,0 +1,19 @@ +export type EIP712Type = { + name: string; + type: string; +}; +export type EIP712Types = Record; +export type EIP712Message = Record; +export type EIP712Domain = { + chainId: number; + name: string; + verifyingContract: string; + version: string; +}; +export type EIP712 = { + domain: EIP712Domain; + message: EIP712Message; + primaryType: string; + types: EIP712Types; +}; +//# sourceMappingURL=EIP712.d.ts.map \ No newline at end of file diff --git a/lib/types/types/EIP712.d.ts.map b/lib/types/types/EIP712.d.ts.map new file mode 100644 index 0000000..cc88f84 --- /dev/null +++ b/lib/types/types/EIP712.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"EIP712.d.ts","sourceRoot":"","sources":["../../../src/types/EIP712.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AACxD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;AACvD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACnD,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,WAAW,CAAC;CACpB,CAAC"} \ No newline at end of file diff --git a/lib/types/types/base.d.ts b/lib/types/types/base.d.ts new file mode 100644 index 0000000..91cf6a0 --- /dev/null +++ b/lib/types/types/base.d.ts @@ -0,0 +1,36 @@ +/** + * An enumeration of supported encryption types. + * uint8, uint16, and uint32 represent the different sizes of integers that can be encrypted. + */ +export declare enum EncryptionTypes { + bool = "bool", + uint8 = "uint8", + uint16 = "uint16", + uint32 = "uint32", + uint64 = "uint64", + uint128 = "uint128", + uint256 = "uint256", + address = "address" +} +/** + * Mapping of encryption types to their utype integer + */ +export declare enum FheUType { + bool = 13, + uint8 = 0, + uint16 = 1, + uint32 = 2, + uint64 = 3, + uint128 = 4, + uint256 = 5, + address = 12 +} +/** + * List of All FHE uint types (excludes bool and address) + */ +export declare const FheUintUTypes: readonly [FheUType.uint8, FheUType.uint16, FheUType.uint32, FheUType.uint64, FheUType.uint128, FheUType.uint256]; +/** + * List of All FHE types (uints, bool, and address) + */ +export declare const FheAllUTypes: readonly [FheUType.bool, FheUType.uint8, FheUType.uint16, FheUType.uint32, FheUType.uint64, FheUType.uint128, FheUType.uint256, FheUType.address]; +//# sourceMappingURL=base.d.ts.map \ No newline at end of file diff --git a/lib/types/types/base.d.ts.map b/lib/types/types/base.d.ts.map new file mode 100644 index 0000000..8476a65 --- /dev/null +++ b/lib/types/types/base.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/types/base.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,eAAe;IACzB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,oBAAY,QAAQ;IAClB,IAAI,KAAK;IACT,KAAK,IAAI;IACT,MAAM,IAAI;IACV,MAAM,IAAI;IACV,MAAM,IAAI;IACV,OAAO,IAAI;IACX,OAAO,IAAI;IACX,OAAO,KAAK;CACb;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,kHAOhB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,YAAY,mJASf,CAAC"} \ No newline at end of file diff --git a/lib/types/types/encryptable.d.ts b/lib/types/types/encryptable.d.ts new file mode 100644 index 0000000..54fd5eb --- /dev/null +++ b/lib/types/types/encryptable.d.ts @@ -0,0 +1,61 @@ +import { Primitive, LiteralToPrimitive } from "type-fest"; +import { FheUType } from "./base"; +import { PermissionV2 } from "./permit"; +import { CoFheEncryptedBool, CoFheEncryptedUint8, CoFheEncryptedUint16, CoFheEncryptedUint32, CoFheEncryptedUint64, CoFheEncryptedUint128, CoFheEncryptedUint256, CoFheEncryptedAddress } from "./encrypted"; +export type EncryptableBool = { + data: boolean; + securityZone?: number; + utype: FheUType.bool; +}; +export type EncryptableUint8 = { + data: number; + securityZone?: number; + utype: FheUType.uint8; +}; +export type EncryptableUint16 = { + data: number; + securityZone?: number; + utype: FheUType.uint16; +}; +export type EncryptableUint32 = { + data: number; + securityZone?: number; + utype: FheUType.uint32; +}; +export type EncryptableUint64 = { + data: string | bigint; + securityZone?: number; + utype: FheUType.uint64; +}; +export type EncryptableUint128 = { + data: string | bigint; + securityZone?: number; + utype: FheUType.uint128; +}; +export type EncryptableUint256 = { + data: string | bigint; + securityZone?: number; + utype: FheUType.uint256; +}; +export type EncryptableAddress = { + data: string; + securityZone?: number; + utype: FheUType.address; +}; +export declare const Encryptable: { + readonly bool: (data: EncryptableBool["data"], securityZone?: number) => EncryptableBool; + readonly uint8: (data: EncryptableUint8["data"], securityZone?: number) => EncryptableUint8; + readonly uint16: (data: EncryptableUint16["data"], securityZone?: number) => EncryptableUint16; + readonly uint32: (data: EncryptableUint32["data"], securityZone?: number) => EncryptableUint32; + readonly uint64: (data: EncryptableUint64["data"], securityZone?: number) => EncryptableUint64; + readonly uint128: (data: EncryptableUint128["data"], securityZone?: number) => EncryptableUint128; + readonly uint256: (data: EncryptableUint256["data"], securityZone?: number) => EncryptableUint256; + readonly address: (data: EncryptableAddress["data"], securityZone?: number) => EncryptableAddress; +}; +export type EncryptableItem = EncryptableBool | EncryptableUint8 | EncryptableUint16 | EncryptableUint32 | EncryptableUint64 | EncryptableUint128 | EncryptableUint256 | EncryptableAddress; +export type CoFheEncryptedItemMap = E extends EncryptableBool ? CoFheEncryptedBool : E extends EncryptableUint8 ? CoFheEncryptedUint8 : E extends EncryptableUint16 ? CoFheEncryptedUint16 : E extends EncryptableUint32 ? CoFheEncryptedUint32 : E extends EncryptableUint64 ? CoFheEncryptedUint64 : E extends EncryptableUint128 ? CoFheEncryptedUint128 : E extends EncryptableUint256 ? CoFheEncryptedUint256 : E extends EncryptableAddress ? CoFheEncryptedAddress : never; +export type MappedCoFheEncryptedTypes = T extends "permission" ? PermissionV2 : T extends Primitive ? LiteralToPrimitive : T extends EncryptableItem ? CoFheEncryptedItemMap : { + [K in keyof T]: MappedCoFheEncryptedTypes; +}; +export declare function isEncryptableItem(value: any): value is EncryptableItem; +//# sourceMappingURL=encryptable.d.ts.map \ No newline at end of file diff --git a/lib/types/types/encryptable.d.ts.map b/lib/types/types/encryptable.d.ts.map new file mode 100644 index 0000000..c062b31 --- /dev/null +++ b/lib/types/types/encryptable.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"encryptable.d.ts","sourceRoot":"","sources":["../../../src/types/encryptable.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/types/types/encrypted.d.ts b/lib/types/types/encrypted.d.ts new file mode 100644 index 0000000..2e172ad --- /dev/null +++ b/lib/types/types/encrypted.d.ts @@ -0,0 +1,52 @@ +import { FheUType } from "./base"; +export type EncryptedNumber = { + data: Uint8Array; + securityZone: number; +}; +export interface EncryptedBool extends EncryptedNumber { +} +export interface EncryptedUint8 extends EncryptedNumber { +} +export interface EncryptedUint16 extends EncryptedNumber { +} +export interface EncryptedUint32 extends EncryptedNumber { +} +export interface EncryptedUint64 extends EncryptedNumber { +} +export interface EncryptedUint128 extends EncryptedNumber { +} +export interface EncryptedUint256 extends EncryptedNumber { +} +export interface EncryptedAddress extends EncryptedNumber { +} +export type CoFheEncryptedNumber = { + securityZone: number; + hash: bigint; + signature: string; + utype: FheUType; +}; +export type CoFheEncryptedBool = CoFheEncryptedNumber & { + utype: FheUType.bool; +}; +export type CoFheEncryptedUint8 = CoFheEncryptedNumber & { + utype: FheUType.uint8; +}; +export type CoFheEncryptedUint16 = CoFheEncryptedNumber & { + utype: FheUType.uint16; +}; +export type CoFheEncryptedUint32 = CoFheEncryptedNumber & { + utype: FheUType.uint32; +}; +export type CoFheEncryptedUint64 = CoFheEncryptedNumber & { + utype: FheUType.uint64; +}; +export type CoFheEncryptedUint128 = CoFheEncryptedNumber & { + utype: FheUType.uint128; +}; +export type CoFheEncryptedUint256 = CoFheEncryptedNumber & { + utype: FheUType.uint256; +}; +export type CoFheEncryptedAddress = CoFheEncryptedNumber & { + utype: FheUType.address; +}; +//# sourceMappingURL=encrypted.d.ts.map \ No newline at end of file diff --git a/lib/types/types/encrypted.d.ts.map b/lib/types/types/encrypted.d.ts.map new file mode 100644 index 0000000..311438e --- /dev/null +++ b/lib/types/types/encrypted.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"encrypted.d.ts","sourceRoot":"","sources":["../../../src/types/encrypted.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,aAAc,SAAQ,eAAe;CAAG;AACzD,MAAM,WAAW,cAAe,SAAQ,eAAe;CAAG;AAC1D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAC5D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAC5D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAE5D,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;CACjB,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,GAAG;IACtD,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,GAAG;IACvD,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;CACvB,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,GAAG;IACxD,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,GAAG;IACxD,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,GAAG;IACxD,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GAAG;IACzD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GAAG;IACzD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GAAG;IACzD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;CACzB,CAAC"} \ No newline at end of file diff --git a/lib/types/types/index.d.ts b/lib/types/types/index.d.ts new file mode 100644 index 0000000..27bb824 --- /dev/null +++ b/lib/types/types/index.d.ts @@ -0,0 +1,8 @@ +export * from "./encryptable"; +export * from "./encrypted"; +export * from "./permit"; +export * from "./result"; +export * from "./sealed"; +export * from "./base"; +export * from "./sdk"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/lib/types/types/index.d.ts.map b/lib/types/types/index.d.ts.map new file mode 100644 index 0000000..832e292 --- /dev/null +++ b/lib/types/types/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC"} \ No newline at end of file diff --git a/lib/types/types/permit.d.ts b/lib/types/types/permit.d.ts new file mode 100644 index 0000000..67198d4 --- /dev/null +++ b/lib/types/types/permit.d.ts @@ -0,0 +1,111 @@ +import { SealingKey } from "../sdk/sealing"; +/** + * Type representing the full PermitV2 + */ +export type PermitV2Interface = { + /** + * Name for this permit, for organization and UI usage, not included in signature. + */ + name: string; + /** + * The type of the PermitV2 (self / sharing) + * (self) Permit that will be signed and used by the issuer + * (sharing) Permit that is signed by the issuer, but intended to be shared with recipient + * (recipient) Permit that has been received, and signed by the recipient + */ + type: "self" | "sharing" | "recipient"; + /** + * (base) User that initially created the permission, target of data fetching + */ + issuer: string; + /** + * (base) Expiration timestamp + */ + expiration: number; + /** + * (base) List of contract addresses that can be accessed with this permission + */ + contracts: string[]; + /** + * (base) List of project identifiers (strings) that can be accessed + */ + projects: string[]; + /** + * (sharing) The user that this permission will be shared with + * ** optional, use `address(0)` to disable ** + */ + recipient: string; + /** + * (issuer defined validation) An id used to query a contract to check this permissions validity + * ** optional, use `0` to disable ** + */ + validatorId: number; + /** + * (issuer defined validation) The contract to query to determine permission validity + * ** optional, user `address(0)` to disable ** + */ + validatorContract: string; + /** + * (base) The publicKey of a sealingPair used to re-encrypt `issuer`s confidential data + * (non-sharing) Populated by `issuer` + * (sharing) Populated by `recipient` + */ + sealingPair: SealingKey; + /** + * (base) `signTypedData` signature created by `issuer`. + * (base) Shared- and Self- permissions differ in signature format: (`sealingKey` absent in shared signature) + * (non-sharing) < issuer, expiration, contracts, projects, recipient, validatorId, validatorContract, sealingKey > + * (sharing) < issuer, expiration, contracts, projects, recipient, validatorId, validatorContract > + */ + issuerSignature: string; + /** + * (sharing) `signTypedData` signature created by `recipient` with format: + * (sharing) < sealingKey, issuerSignature> + * ** required for shared permits ** + */ + recipientSignature: string; +}; +/** + * Optional additional metadata of a PermitV2 + * Can be passed into the constructor, but not necessary + * Useful for deserialization + */ +export type PermitV2Metadata = { + /** + * Chain that this permit was signed on. In part used for mock encrypt/unseal on hardhat network. + * Should not be set manually, included in metadata as part of serialization flows. + */ + _signedChainId: string | undefined; +}; +export type PickPartial = Expand & Partial>>; +export type PermitV2Satisfiers = Expand>; +export type PermitV2Core = Expand & Partial>>; +export type PermitV2Options = Expand> & { + type: "self"; + issuer: string; +}> | Expand> & { + type: "sharing"; + issuer: string; + recipient: string; +}> | Expand & { + type: "recipient"; + issuer: string; + recipient: string; + issuerSignature: string; +}>; +export type SerializedPermitV2 = Omit & PermitV2Metadata & { + sealingPair: { + privateKey: string; + publicKey: string; + }; +}; +/** + * A type representing the PermissionV2 struct that is passed to PermissionedV2.sol to grant encrypted data access. + */ +export type PermissionV2 = Expand & { + sealingKey: string; +}>; +export type Expand = T extends infer O ? { + [K in keyof O]: O[K]; +} : never; +//# sourceMappingURL=permit.d.ts.map \ No newline at end of file diff --git a/lib/types/types/permit.d.ts.map b/lib/types/types/permit.d.ts.map new file mode 100644 index 0000000..60f6112 --- /dev/null +++ b/lib/types/types/permit.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"permit.d.ts","sourceRoot":"","sources":["../../../src/types/permit.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/types/types/result.d.ts b/lib/types/types/result.d.ts new file mode 100644 index 0000000..6b65e9c --- /dev/null +++ b/lib/types/types/result.d.ts @@ -0,0 +1,12 @@ +export type Result = { + success: true; + data: T; + error: null; +} | { + success: false; + data: null; + error: E; +}; +export declare const ResultErr: (error: E) => Result; +export declare const ResultOk: (data: T) => Result; +//# sourceMappingURL=result.d.ts.map \ No newline at end of file diff --git a/lib/types/types/result.d.ts.map b/lib/types/types/result.d.ts.map new file mode 100644 index 0000000..dfb4b55 --- /dev/null +++ b/lib/types/types/result.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../../src/types/result.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,IAC5B;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAE,GACvC;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC;AAE7C,eAAO,MAAM,SAAS,gBAAiB,CAAC,KAAG,OAAO,CAAC,EAAE,CAAC,CAIpD,CAAC;AAEH,eAAO,MAAM,QAAQ,eAAgB,CAAC,KAAG,OAAO,CAAC,EAAE,CAAC,CAIlD,CAAC"} \ No newline at end of file diff --git a/lib/types/types/sdk.d.ts b/lib/types/types/sdk.d.ts new file mode 100644 index 0000000..3d1cc45 --- /dev/null +++ b/lib/types/types/sdk.d.ts @@ -0,0 +1,33 @@ +export interface AbstractProvider { + getChainId(): Promise; + getNetwork(): Promise<{ + chainId: string; + }>; + call(tx: { + to: string; + data: string; + }): Promise; +} +export interface AbstractSigner { + getAddress(): Promise; + signTypedData(domain: object, types: Record>, value: object): Promise; +} +export type PermitV2AccessRequirements = { + contracts: string[]; + projects: string[]; +}; +type PermitV2AccessRequirementsParams = { + contracts?: never[]; + projects: string[]; +} | { + contracts: string[]; + projects?: never[]; +}; +export type InitializationParams = { + provider: AbstractProvider; + signer?: AbstractSigner; + securityZones?: number[]; + coFheUrl?: string; +} & PermitV2AccessRequirementsParams; +export {}; +//# sourceMappingURL=sdk.d.ts.map \ No newline at end of file diff --git a/lib/types/types/sdk.d.ts.map b/lib/types/types/sdk.d.ts.map new file mode 100644 index 0000000..3c42ab1 --- /dev/null +++ b/lib/types/types/sdk.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../../src/types/sdk.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,UAAU,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3C,IAAI,CAAC,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,aAAa,CACX,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EACpC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAAC;CACpB;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,KAAK,gCAAgC,GACjC;IACE,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,GACD;IACE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;CACpB,CAAC;AAEN,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,gCAAgC,CAAC"} \ No newline at end of file diff --git a/lib/types/types/sealed.d.ts b/lib/types/types/sealed.d.ts new file mode 100644 index 0000000..69a59c9 --- /dev/null +++ b/lib/types/types/sealed.d.ts @@ -0,0 +1,24 @@ +import { LiteralToPrimitive, Primitive } from "type-fest"; +import { FheUintUTypes, FheUType } from "./base"; +export type SealedBool = { + data: string; + utype: FheUType.bool; +}; +export type SealedUint = { + data: string; + utype: (typeof FheUintUTypes)[number]; +}; +export type SealedAddress = { + data: string; + utype: FheUType.address; +}; +export type SealedItem = SealedBool | SealedUint | SealedAddress; +export type UnsealedItemMap = S extends SealedBool ? boolean : S extends SealedUint ? bigint : S extends SealedAddress ? string : never; +export type MappedUnsealedTypes = T extends Primitive ? LiteralToPrimitive : T extends SealedItem ? UnsealedItemMap : { + [K in keyof T]: MappedUnsealedTypes; +}; +export declare function getAsSealedItem(value: any): SealedItem | undefined; +export declare function isSealedBool(value: SealedItem): boolean; +export declare function isSealedUint(value: SealedItem): boolean; +export declare function isSealedAddress(value: SealedItem): boolean; +//# sourceMappingURL=sealed.d.ts.map \ No newline at end of file diff --git a/lib/types/types/sealed.d.ts.map b/lib/types/types/sealed.d.ts.map new file mode 100644 index 0000000..a089a12 --- /dev/null +++ b/lib/types/types/sealed.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"sealed.d.ts","sourceRoot":"","sources":["../../../src/types/sealed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAgB,aAAa,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAE/D,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;CACvC,CAAC;AACF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,aAAa,CAAC;AAEjE,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,UAAU,IAAI,CAAC,SAAS,UAAU,GACpE,OAAO,GACP,CAAC,SAAS,UAAU,GAClB,MAAM,GACN,CAAC,SAAS,aAAa,GACrB,MAAM,GACN,KAAK,CAAC;AAEd,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GACpD,kBAAkB,CAAC,CAAC,CAAC,GACrB,CAAC,SAAS,UAAU,GAClB,eAAe,CAAC,CAAC,CAAC,GAClB;KACG,CAAC,IAAI,MAAM,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC1C,CAAC;AAIR,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,GAAG,UAAU,GAAG,SAAS,CAqBlE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAEvD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAEvD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAE1D"} \ No newline at end of file diff --git a/lib/types/types/types.d.ts b/lib/types/types/types.d.ts new file mode 100644 index 0000000..0136410 --- /dev/null +++ b/lib/types/types/types.d.ts @@ -0,0 +1,86 @@ +/** + * An enumeration of supported encryption types. + * uint8, uint16, and uint32 represent the different sizes of integers that can be encrypted. + */ +export declare enum EncryptionTypes { + bool = "bool", + uint8 = "uint8", + uint16 = "uint16", + uint32 = "uint32", + uint64 = "uint64", + uint128 = "uint128", + uint256 = "uint256", + address = "address" +} +/** + * Mapping of encryption types to their utype integer + */ +export declare enum FheUType { + bool = 13, + uint8 = 0, + uint16 = 1, + uint32 = 2, + uint64 = 3, + uint128 = 4, + uint256 = 5, + address = 12 +} +/** + * List of All FHE uint types (excludes bool and address) + */ +export declare const FheUintUTypes: readonly [FheUType.uint8, FheUType.uint16, FheUType.uint32, FheUType.uint64, FheUType.uint128, FheUType.uint256]; +/** + * List of All FHE types (uints, bool, and address) + */ +export declare const FheAllUTypes: readonly [FheUType.bool, FheUType.uint8, FheUType.uint16, FheUType.uint32, FheUType.uint64, FheUType.uint128, FheUType.uint256, FheUType.address]; +export type EncryptedNumber = { + data: Uint8Array; + securityZone: number; +}; +export interface EncryptedBool extends EncryptedNumber { +} +export interface EncryptedUint8 extends EncryptedNumber { +} +export interface EncryptedUint16 extends EncryptedNumber { +} +export interface EncryptedUint32 extends EncryptedNumber { +} +export interface EncryptedUint64 extends EncryptedNumber { +} +export interface EncryptedUint128 extends EncryptedNumber { +} +export interface EncryptedUint256 extends EncryptedNumber { +} +export interface EncryptedAddress extends EncryptedNumber { +} +export type CoFheEncryptedNumber = { + securityZone: number; + hash: bigint; + signature: string; + utype: FheUType; +}; +export type CoFheEncryptedBool = CoFheEncryptedNumber & { + utype: FheUType.bool; +}; +export type CoFheEncryptedUint8 = CoFheEncryptedNumber & { + utype: FheUType.uint8; +}; +export type CoFheEncryptedUint16 = CoFheEncryptedNumber & { + utype: FheUType.uint16; +}; +export type CoFheEncryptedUint32 = CoFheEncryptedNumber & { + utype: FheUType.uint32; +}; +export type CoFheEncryptedUint64 = CoFheEncryptedNumber & { + utype: FheUType.uint64; +}; +export type CoFheEncryptedUint128 = CoFheEncryptedNumber & { + utype: FheUType.uint128; +}; +export type CoFheEncryptedUint256 = CoFheEncryptedNumber & { + utype: FheUType.uint256; +}; +export type CoFheEncryptedAddress = CoFheEncryptedNumber & { + utype: FheUType.address; +}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/lib/types/types/types.d.ts.map b/lib/types/types/types.d.ts.map new file mode 100644 index 0000000..85efcd6 --- /dev/null +++ b/lib/types/types/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,eAAe;IACzB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,oBAAY,QAAQ;IAClB,IAAI,KAAK;IACT,KAAK,IAAI;IACT,MAAM,IAAI;IACV,MAAM,IAAI;IACV,MAAM,IAAI;IACV,OAAO,IAAI;IACX,OAAO,IAAI;IACX,OAAO,KAAK;CACb;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,kHAOhB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,YAAY,mJASf,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,aAAc,SAAQ,eAAe;CAAG;AACzD,MAAM,WAAW,cAAe,SAAQ,eAAe;CAAG;AAC1D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAG;AAC3D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAC5D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAC5D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAE5D,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;CACjB,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,GAAG;IACtD,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,GAAG;IACvD,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;CACvB,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,GAAG;IACxD,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,GAAG;IACxD,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,GAAG;IACxD,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GAAG;IACzD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GAAG;IACzD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GAAG;IACzD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;CACzB,CAAC"} \ No newline at end of file diff --git a/package.json b/package.json index 903ebb1..c37fc1f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { - "name": "fhenixjs", - "version": "0.4.2-alpha.2", - "description": "The JavaScript SDK for Fhenix", + "name": "cofhejs", + "version": "0.0.1-alpha.0", + "description": "The JavaScript SDK for Fhenix's CoFHE Service", "main": "./lib/commonjs/index.js", "module": "./lib/esm/index.js", "types": "./lib/types/index.d.ts", @@ -30,25 +30,26 @@ "lint": "eslint src/", "_pure-compile": "tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && tsc -p tsconfig.types.json", "compile": "pnpm _hack-backup-cjs && pnpm _pure-compile && pnpm _hack-restore-cjs", - "build": "pnpm _hack-backup-cjs && pnpm _pure-compile && pnpm build-rollup && uglifyjs ./dist/fhenix.esm.js -o ./dist/fhenix.esm.min.js && uglifyjs ./dist/fhenix.umd.js -o ./dist/fhenix.umd.min.js && pnpm _hack-restore-cjs", + "build": "pnpm _hack-backup-cjs && pnpm _pure-compile && pnpm build-rollup && uglifyjs ./dist/cofhe.esm.js -o ./dist/cofhe.esm.min.js && uglifyjs ./dist/cofhe.umd.js -o ./dist/cofhe.umd.min.js && pnpm _hack-restore-cjs", "test": "pnpm compile && VITE_CJS_IGNORE_WARNING=true vitest ", "coverage": "pnpm compile && VITE_CJS_IGNORE_WARNING=true vitest run --coverage", - "_hack-backup-cjs": "cp ./lib/commonjs/sdk/fhe/tfhe.js . && cp ./lib/commonjs/sdk/fhe/tfhe-browser.js .", - "_hack-restore-cjs": "mv tfhe.js ./lib/commonjs/sdk/fhe/ && mv tfhe-browser.js ./lib/commonjs/sdk/fhe/", + "_hack-backup-cjs": "shx cp ./lib/commonjs/sdk/fhe/tfhe.js . && shx cp ./lib/commonjs/sdk/fhe/tfhe-browser.js .", + "_hack-restore-cjs": "shx mv tfhe.js ./lib/commonjs/sdk/fhe/ && shx mv tfhe-browser.js ./lib/commonjs/sdk/fhe/", "test-no-localfhenix": "SKIP_LOCAL_ENV=true VITE_CJS_IGNORE_WARNING=true vitest ", "prettier": "prettier --write \"**/*.{js,json,md,sol,ts,yml}\"", "prettier-ci": "prettier --check \"**/*.{js,json,md,sol,ts,yml}\"" + }, "repository": { "type": "git", - "url": "git+https://github.com/FhenixProtocol/fhenix.js.git" + "url": "git+https://github.com/FhenixProtocol/cofhe.js.git" }, "author": "FhenixProtocol", "license": "MIT", "bugs": { - "url": "https://github.com/FhenixProtocol/fhenix.js/issues" + "url": "https://github.com/FhenixProtocol/cofhe.js/issues" }, - "homepage": "https://github.com/FhenixProtocol/fhenix.js#readme", + "homepage": "https://github.com/FhenixProtocol/cofhe.js#readme", "dependencies": { "@types/node": "^20.0.0", "immer": "^10.1.1", @@ -59,7 +60,6 @@ "zustand": "^5.0.1" }, "devDependencies": { - "happy-dom": "^15.11.6", "@rollup/plugin-commonjs": "25.0.8", "@rollup/plugin-node-resolve": "15.2.3", "@rollup/plugin-wasm": "6.2.2", @@ -67,9 +67,11 @@ "@vitest/coverage-v8": "1.1.0", "eslint": "8.57.0", "ethers": "^6.9.1", + "happy-dom": "^15.11.6", "jsdom": "^25.0.0", "prettier": "3.2.5", "rollup": "4.18.0", + "shx": "^0.3.4", "ts-node": "10.9.2", "typedoc": "0.25.13", "typedoc-plugin-extras": "3.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index df9d333..eb518f7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -63,6 +63,9 @@ importers: rollup: specifier: 4.18.0 version: 4.18.0 + shx: + specifier: ^0.3.4 + version: 0.3.4 ts-node: specifier: 10.9.2 version: 10.9.2(@swc/core@1.6.6)(@types/node@20.14.14)(typescript@5.4.5) @@ -1052,6 +1055,10 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + interpret@1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} + is-builtin-module@3.2.1: resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} engines: {node: '>=6'} @@ -1219,6 +1226,9 @@ packages: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + mlly@1.7.1: resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} @@ -1342,6 +1352,10 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + rechoir@0.6.2: + resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} + engines: {node: '>= 0.10'} + requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} @@ -1396,9 +1410,19 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + shelljs@0.8.5: + resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} + engines: {node: '>=4'} + hasBin: true + shiki@0.14.7: resolution: {integrity: sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==} + shx@0.3.4: + resolution: {integrity: sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==} + engines: {node: '>=6'} + hasBin: true + siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -2676,6 +2700,8 @@ snapshots: inherits@2.0.4: {} + interpret@1.4.0: {} + is-builtin-module@3.2.1: dependencies: builtin-modules: 3.3.0 @@ -2850,6 +2876,8 @@ snapshots: dependencies: brace-expansion: 2.0.1 + minimist@1.2.8: {} + mlly@1.7.1: dependencies: acorn: 8.11.3 @@ -2958,6 +2986,10 @@ snapshots: react-is@18.3.1: {} + rechoir@0.6.2: + dependencies: + resolve: 1.22.8 + requires-port@1.0.0: {} resolve-from@4.0.0: {} @@ -3020,6 +3052,12 @@ snapshots: shebang-regex@3.0.0: {} + shelljs@0.8.5: + dependencies: + glob: 7.2.3 + interpret: 1.4.0 + rechoir: 0.6.2 + shiki@0.14.7: dependencies: ansi-sequence-parser: 1.1.1 @@ -3027,6 +3065,11 @@ snapshots: vscode-oniguruma: 1.7.0 vscode-textmate: 8.0.0 + shx@0.3.4: + dependencies: + minimist: 1.2.8 + shelljs: 0.8.5 + siginfo@2.0.0: {} signal-exit@4.1.0: {} diff --git a/rollup.config.mjs b/rollup.config.mjs index a52d315..cc4ef96 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -8,8 +8,8 @@ export default [ input: "./lib/esm/index.js", output: { banner: "const __$G = (typeof globalThis !== 'undefined' ? globalThis: typeof window !== 'undefined' ? window: typeof global !== 'undefined' ? global: typeof self !== 'undefined' ? self: {});", - name: 'fhenixjs', - file: 'dist/fhenix.umd.js', + name: 'cofhejs', + file: 'dist/cofhe.umd.js', format: 'umd', sourcemap: true }, @@ -41,7 +41,7 @@ export default [ }) ], output: [ - { file: 'dist/fhenix.esm.js', format: 'esm', sourcemap: true }, + { file: 'dist/cofhe.esm.js', format: 'esm', sourcemap: true }, ] } ]; diff --git a/src/extensions/access_control/index.ts b/src/extensions/access_control/index.ts deleted file mode 100644 index b9ac59e..0000000 --- a/src/extensions/access_control/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./permit/index.js"; -export * from "./EIP712.js"; diff --git a/src/extensions/access_control/permit/index.ts b/src/extensions/access_control/permit/index.ts deleted file mode 100644 index 8653bdd..0000000 --- a/src/extensions/access_control/permit/index.ts +++ /dev/null @@ -1,314 +0,0 @@ -import { isAddress } from "../../../sdk/utils.js"; -import { - determineRequestMethod, - determineRequestSigner, - SupportedProvider, -} from "../../../sdk/types.js"; -import { EIP712, EIP712Domain, EIP712Message, EIP712Types } from "../EIP712.js"; -import { GenerateSealingKey, SealingKey } from "../../../sdk/sealing.js"; - -const PERMIT_PREFIX = "Fhenix_saved_permit_"; - -export type Permission = { - signature: string; - publicKey: string; -}; - -/** - * Represents a permit with cryptographic properties. - */ -export type Permit = { - /** - * The Ethereum contract address associated with the permit. - */ - contractAddress: string; - - /** - * The sealing key information required to seal or unseal data related to the permit. - */ - sealingKey: SealingKey; - - /** - * A cryptographic signature proving the authenticity and integrity of the permit. - */ - signature: string; - - /** - * The public key corresponding to the private key used to generate the signature. - */ - publicKey: string; -}; - -type SerializedPermit = { - contractAddress: string; - sealingKey: { - privateKey: string; - publicKey: string; - }; - signature: string; -}; - -const parsePermit = (savedPermit: string): Permit => { - const o = JSON.parse(savedPermit) as SerializedPermit; - if (o) { - return { - contractAddress: o.contractAddress, - sealingKey: new SealingKey( - o.sealingKey.privateKey, - o.sealingKey.publicKey, - ), - signature: o.signature, - publicKey: `0x${o.sealingKey.publicKey}`, - }; - } - throw new Error(`Cannot parse permit`); -}; - -export const getPermit = async ( - contract: string, - provider: SupportedProvider, - autoGenerate: boolean = true, -): Promise => { - isAddress(contract); - if (!provider) { - throw new Error(`Missing provider`); - } - - const getSigner = determineRequestSigner(provider); - const signer = await getSigner(provider); - - const savedPermit = getPermitFromLocalstorage( - contract, - await signer.getAddress(), - ); - - if (savedPermit != null) return savedPermit; - - return autoGenerate ? generatePermit(contract, provider) : null; -}; - -export const getAllExistingPermits = ( - account: string, -): Record => { - const permits: Record = {}; - - const search = new RegExp(`${PERMIT_PREFIX}(.*?)_${account}`); - - Object.keys(window.localStorage).forEach((key) => { - const matchArray = key.match(search); - if (matchArray == null) return; - - const contract = matchArray[1]; - const permitRaw = window.localStorage.getItem(key); - - if (permitRaw == null) return; - - try { - const permit = parsePermit(permitRaw); - permits[contract] = permit; - } catch (err) { - console.warn(err); - } - }); - - return permits; -}; - -export const getAllPermits = (): Map => { - const permits: Map = new Map(); - - for (let i = 0; i < window.localStorage.length; i++) { - const key = window.localStorage.key(i); - if (key && key.includes(PERMIT_PREFIX)) { - const contract = key.replace(PERMIT_PREFIX, ""); - - // Not sure if needed, code placeholder: - // const noPrefixPermit = key.replace(PERMIT_PREFIX, ""); - // let contract = ""; - // if (noPrefixPermit.includes("_")) { - // const tmp = noPrefixPermit.split("_"); - // contract = tmp[0]; - // } else { - // contract = noPrefixPermit; - // } - - try { - const permit = parsePermit(window.localStorage.getItem(key)!); - permits.set(contract, permit); - } catch (err) { - console.warn(err); - } - } - } - return permits; -}; - -interface SignerPublicSignedTypedData { - signTypedData(domain: object, types: object, value: object): Promise; - getAddress(): Promise; -} -interface SignerPrivateSignedTypedData { - _signTypedData(domain: object, types: object, value: object): Promise; - getAddress(): Promise; -} - -export type PermitSigner = - | SignerPrivateSignedTypedData - | SignerPublicSignedTypedData; - -const sign = async ( - signer: PermitSigner, - domain: EIP712Domain, - types: EIP712Types, - value: EIP712Message, -): Promise => { - if ( - "_signTypedData" in signer && - typeof signer._signTypedData == "function" - ) { - return await signer._signTypedData(domain, types, value); - } else if ( - "signTypedData" in signer && - typeof signer.signTypedData == "function" - ) { - return await signer.signTypedData(domain, types, value); - } - throw new Error("Unsupported signer"); -}; - -export const generatePermit = async ( - contract: string, - provider: SupportedProvider, - customSigner?: PermitSigner, -): Promise => { - if (!provider) { - throw new Error("Provider is undefined"); - } - - const requestMethod = determineRequestMethod(provider); - - let signer: PermitSigner; - if (!customSigner) { - const getSigner = determineRequestSigner(provider); - signer = await getSigner(provider); - } else { - signer = customSigner; - } - - const chainId = await requestMethod(provider, "eth_chainId", []); - - const keypair = await GenerateSealingKey(); - const msgParams: EIP712 = { - types: { - // This refers to the domain the contract is hosted on. - EIP712Domain: [ - { name: "name", type: "string" }, - { name: "version", type: "string" }, - { name: "chainId", type: "uint256" }, - { name: "verifyingContract", type: "address" }, - ], - // Refer to primaryType. - Permissioned: [{ name: "publicKey", type: "bytes32" }], - }, - // This defines the message you're proposing the user to sign, is dapp-specific, and contains - // anything you want. There are no required fields. Be as explicit as possible when building out - // the message schema. - // This refers to the keys of the following types object. - primaryType: "Permissioned", - domain: { - // Give a user-friendly name to the specific contract you're signing for. - name: "Fhenix Permission", // params.name - // This identifies the latest version. - version: "1.0", //params.version || - // This defines the network, in this case, Mainnet. - chainId: chainId, - // // Add a verifying contract to make sure you're establishing contracts with the proper entity. - verifyingContract: contract, //params.verifyingContract, - }, - message: { - publicKey: `0x${keypair.publicKey}`, - }, - }; - - const msgSig = await sign( - signer, - msgParams.domain, - { Permissioned: msgParams.types.Permissioned }, - msgParams.message, - ); - - const permit: Permit = { - contractAddress: contract, - sealingKey: keypair, - signature: msgSig, - publicKey: `0x${keypair.publicKey}`, - //permit: msgParams, - //msgSig - }; - - storePermitInLocalStorage(permit, await signer.getAddress()); - return permit; -}; - -export const removePermit = (contract: string, account: string): void => { - if (!account) { - // Backward compatibility - window.localStorage.removeItem(`${PERMIT_PREFIX}${contract}`); - } else { - window.localStorage.removeItem(`${PERMIT_PREFIX}${contract}_${account}`); - } -}; - -export const getPermitFromLocalstorage = ( - contract: string, - account: string, -): Permit | undefined => { - let savedPermit: string | null = null; - if (typeof window !== "undefined" && window.localStorage) { - savedPermit = window.localStorage.getItem( - `${PERMIT_PREFIX}${contract}_${account}`, - ); - if (!account) { - // Backward compatibility - savedPermit = window.localStorage.getItem(`${PERMIT_PREFIX}${contract}`); - } else { - savedPermit = window.localStorage.getItem( - `${PERMIT_PREFIX}${contract}_${account}`, - ); - } - } - - if (!savedPermit) { - return undefined; - } - - return parsePermit(savedPermit); -}; - -export const storePermitInLocalStorage = (permit: Permit, account: string) => { - if (typeof window !== "undefined" && window.localStorage) { - // Sealing key is a class, and will include methods in the JSON - const serialized: SerializedPermit = { - contractAddress: permit.contractAddress, - sealingKey: { - publicKey: permit.sealingKey.publicKey, - privateKey: permit.sealingKey.privateKey, - }, - signature: permit.signature, - }; - - window.localStorage.setItem( - `${PERMIT_PREFIX}${permit.contractAddress}_${account}`, - JSON.stringify(serialized), - ); - } -}; - -export const removePermitFromLocalstorage = ( - contract: string, - account: string, -) => { - if (typeof window !== "undefined" && window.localStorage) { - window.localStorage.removeItem(`${PERMIT_PREFIX}${contract}_${account}`); - } -}; diff --git a/src/fhenix.ts b/src/fhenix.ts deleted file mode 100644 index 8b7ccd3..0000000 --- a/src/fhenix.ts +++ /dev/null @@ -1,29 +0,0 @@ -// for mobile -// if (typeof BigInt === "undefined") { -// global.BigInt = require("big-integer"); -// } - -export { FhenixClient, FhenixClientSync } from "./sdk/index.js"; - -export { - ContractPermits, - InstanceParams, - SupportedProvider, - EncryptionTypes, - EncryptedUint64, - EncryptedUint128, - EncryptedUint256, - EncryptedUint32, - EncryptedUint16, - EncryptedUint8, - EncryptedBool, - EncryptedNumber, - EncryptedAddress, -} from "./sdk/types.js"; - -export * from "./extensions/access_control/index.js"; - -export { SealingKey, GenerateSealingKey } from "./sdk/sealing.js"; -export { createTfheKeypair, createTfhePublicKey } from "./sdk/keygen.js"; - -export * from "./sdk/v2"; diff --git a/src/index.ts b/src/index.ts index 7bc3461..98cff74 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,6 @@ -import * as fhenixjs from "./fhenix.js"; +export { SealingKey, GenerateSealingKey } from "./sdk/sealing.js"; +export { createTfheKeypair, createTfhePublicKey } from "./sdk/keygen.js"; -export { fhenixjs }; - -export * from "./fhenix.js"; +export * from "./types"; +export * from "./sdk/permit"; +export * from "./sdk"; diff --git a/src/sdk/consts.ts b/src/sdk/consts.ts index 93a9fc6..2db2975 100644 --- a/src/sdk/consts.ts +++ b/src/sdk/consts.ts @@ -3,3 +3,4 @@ export const MAX_UINT16 = 65535; export const MAX_UINT32 = 4294967295; export const FheOpsAddress = "0x0000000000000000000000000000000000000080"; export const PUBLIC_KEY_LENGTH_MIN = 15_000; +export const DEFAULT_COFHE_URL = "http://127.0.0.1:8448"; diff --git a/src/sdk/encrypt.ts b/src/sdk/encrypt.ts index 414f541..6edae8b 100644 --- a/src/sdk/encrypt.ts +++ b/src/sdk/encrypt.ts @@ -20,8 +20,8 @@ import { EncryptedUint256, EncryptedAddress, EncryptionTypes, -} from "./types.js"; -import { fromHexString, toBigInt } from "./utils.js"; +} from "../types"; +import { fromHexString, toBigInt, toNumber } from "./utils.js"; /** * Encrypts a Uint8 value using TFHE (Fast Fully Homomorphic Encryption over the Torus). @@ -47,16 +47,18 @@ export const encrypt_bool = ( /** * Encrypts a Uint8 value using TFHE (Fast Fully Homomorphic Encryption over the Torus). - * @param {number} value - The Uint8 value to encrypt. + * @param {number | string | bigint} value - The Uint8 value to encrypt. * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. * @param securityZone - The security zone to encrypt the value on. * @returns {EncryptedUint8} - The encrypted value serialized as Uint8Array. */ export const encrypt_uint8 = ( - value: number, + value: number | string | bigint, publicKey: TfheCompactPublicKey, securityZone: number = 0, ): EncryptedUint8 => { + + value = toNumber(value); const encrypted = CompactFheUint8.encrypt_with_compact_public_key( value, publicKey, @@ -69,16 +71,18 @@ export const encrypt_uint8 = ( /** * Encrypts a Uint16 value using TFHE. - * @param {number} value - The Uint16 value to encrypt. + * @param {number | string | bigint} value - The Uint16 value to encrypt. * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. * @param securityZone - The security zone to encrypt the value on. * @returns {EncryptedUint16} - The encrypted value serialized as Uint8Array. */ export const encrypt_uint16 = ( - value: number, + value: number | string | bigint, publicKey: TfheCompactPublicKey, securityZone: number = 0, ): EncryptedUint16 => { + + value = toNumber(value); const encrypted = CompactFheUint16.encrypt_with_compact_public_key( value, publicKey, @@ -91,16 +95,18 @@ export const encrypt_uint16 = ( /** * Encrypts a Uint32 value using TFHE. - * @param {number} value - The Uint32 value to encrypt. + * @param {number | string | bigint} value - The Uint32 value to encrypt. * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. * @param securityZone - The security zone to encrypt the value on. * @returns {EncryptedUint32} - The encrypted value serialized as Uint8Array. */ export const encrypt_uint32 = ( - value: number, + value: number | string | bigint, publicKey: TfheCompactPublicKey, securityZone: number = 0, ): EncryptedUint32 => { + + value = toNumber(value); const encrypted = CompactFheUint32.encrypt_with_compact_public_key( value, publicKey, @@ -113,21 +119,18 @@ export const encrypt_uint32 = ( /** * Encrypts a Uint64 value using TFHE. - * @param {number} value - The Uint64 value to encrypt. + * @param {number | string | bigint} value - The Uint64 value to encrypt. * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. * @param securityZone - The security zone to encrypt the value on. * @returns {EncryptedUint64} - The encrypted value serialized as Uint8Array. */ export const encrypt_uint64 = ( - value: bigint | string, + value: number | string | bigint, publicKey: TfheCompactPublicKey, securityZone: number = 0, ): EncryptedUint64 => { - if (typeof value === "string") { - value = toBigInt(fromHexString(value)); - } else { - value = value as bigint; - } + + value = toBigInt(value); const encrypted = CompactFheUint64.encrypt_with_compact_public_key( value, @@ -141,21 +144,18 @@ export const encrypt_uint64 = ( /** * Encrypts a Uint128 value using TFHE. - * @param {bigint} value - The Uint128 value to encrypt. + * @param {number | string | bigint} value - The Uint128 value to encrypt. * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. * @param securityZone - The security zone to encrypt the value on. * @returns {EncryptedUint128} - The encrypted value serialized as Uint8Array. */ export const encrypt_uint128 = ( - value: bigint | string, + value: number | string | bigint, publicKey: TfheCompactPublicKey, securityZone: number = 0, ): EncryptedUint128 => { - if (typeof value === "string") { - value = toBigInt(fromHexString(value)); - } else { - value = value as bigint; - } + + value = toBigInt(value); const encrypted = CompactFheUint128.encrypt_with_compact_public_key( value, @@ -169,21 +169,18 @@ export const encrypt_uint128 = ( /** * Encrypts a Uint256 value using TFHE. - * @param {bigint} value - The Uint256 value to encrypt. + * @param {number | string | bigint} value - The Uint256 value to encrypt. * @param {TfheCompactPublicKey} publicKey - The public key used for encryption. * @param securityZone - The security zone to encrypt the value on. * @returns {EncryptedUint256} - The encrypted value serialized as Uint8Array. */ export const encrypt_uint256 = ( - value: bigint | string, + value: number | string | bigint, publicKey: TfheCompactPublicKey, securityZone: number = 0, ): EncryptedUint256 => { - if (typeof value === "string") { - value = toBigInt(fromHexString(value)); - } else { - value = value as bigint; - } + + value = toBigInt(value); const encrypted = CompactFheUint256.encrypt_with_compact_public_key( value, diff --git a/src/sdk/index.ts b/src/sdk/index.ts index a2e5321..73ac090 100644 --- a/src/sdk/index.ts +++ b/src/sdk/index.ts @@ -1,760 +1,572 @@ -import { TfheCompactPublicKey } from "./fhe/fhe.js"; +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { toHexString } from "./utils.js"; +import { chainIsHardhat, hardhatMockEncrypt } from "./utils.hardhat.js"; +import { PermitV2, permitStore, PermitV2ParamsValidator } from "./permit"; +import { isString } from "./validation.js"; import { - fromHexString, - isAddress, - ValidateUintInRange, - toABIEncodedUint32, -} from "./utils.js"; + _sdkStore, + _store_getConnectedChainFheKey, + _store_initialize, + SdkStore, +} from "./store.js"; import { - ContractPermits, - determineRequestMethod, - EncryptedAddress, - EncryptedBool, - EncryptedNumber, - EncryptedUint128, - EncryptedUint16, - EncryptedUint256, - EncryptedUint32, - EncryptedUint64, - EncryptedUint8, - EncryptionTypes, - InstanceParams, - InstanceParamsWithFhePublicKeys, - SupportedProvider, -} from "./types.js"; - -import { - generatePermit, - getAllExistingPermits, - getPermitFromLocalstorage, - Permission, - Permit, - PermitSigner, - removePermitFromLocalstorage, - storePermitInLocalStorage, -} from "../extensions/access_control/index.js"; - -import { - FheOpsAddress, - MAX_UINT16, - MAX_UINT32, - MAX_UINT8, - PUBLIC_KEY_LENGTH_MIN, -} from "./consts.js"; -import * as tfheEncrypt from "./encrypt.js"; -import { - isBigIntOrHexString, - isNumber, - isPlainObject, - isString, -} from "./validation.js"; + encrypt_bool as tfhe_encrypt_bool, + encrypt_uint8 as tfhe_encrypt_uint8, + encrypt_uint16 as tfhe_encrypt_uint16, + encrypt_uint32 as tfhe_encrypt_uint32, + encrypt_uint64 as tfhe_encrypt_uint64, + encrypt_uint128 as tfhe_encrypt_uint128, + encrypt_uint256 as tfhe_encrypt_uint256, + encrypt_address as tfhe_encrypt_address, +} from "./encrypt.js"; import { InitFhevm } from "./init.js"; +import { + CoFheEncryptedNumber, + FheUType, + MappedCoFheEncryptedTypes, + isEncryptableItem, + PermitV2Options, + PermitV2Interface, + PermissionV2, + Result, + ResultErr, + ResultOk, + MappedUnsealedTypes, + InitializationParams, +} from "../types"; -abstract class FhenixClientBase { - private permits: ContractPermits = {}; - abstract fhePublicKeys: - | Array> - | Array; - protected provider: SupportedProvider; - - /** - * Creates an instance of FhenixClient. - * Initializes the fhevm library if needed and retrieves the public key for encryption from the provider. - * @param {InstanceParams} params - Parameters to initialize the client. - */ - public constructor(params: InstanceParams) { - isPlainObject(params); - - const { provider } = params; - - this.provider = provider; - - if (!this.provider) { - throw new Error( - "Failed to initialize Fhenix Client - must include a web3 provider", +/** + * Initializes the `fhenixsdk` to enable encrypting input data, creating permits / permissions, and decrypting sealed outputs. + * Initializes `fhevm` client FHE wasm module and fetches the provided chain's FHE publicKey. + * If a valid signer is provided, a `permit/permission` is generated automatically + */ +const initialize = async ( + params: InitializationParams & { + ignoreErrors?: boolean; + generatePermit?: boolean; + }, +): Promise> => { + // Initialize the fhevm + await InitFhevm().catch((err: unknown) => { + if (params.ignoreErrors) { + return undefined; + } else { + return ResultErr( + `initialize :: failed to initialize fhenixjs - is the network FHE-enabled? ${err}`, ); } - } - - // Encryption Methods - - /** - * Encrypts a Uint8 value using the stored public key. - * @param {number} value - The Uint8 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedBool} - The encrypted value serialized as EncryptedUint8. Use the .data property to access the Uint8Array. - */ - abstract encrypt_bool( - value: boolean, - securityZone?: number, - ): Promise | EncryptedBool; - - /** - * Encrypts a Uint8 value using the stored public key. - * @param {number} value - The Uint8 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedUint8} - The encrypted value serialized as EncryptedUint8. Use the .data property to access the Uint8Array. - */ - abstract encrypt_uint8( - value: number, - securityZone?: number, - ): Promise | EncryptedUint8; - - /** - * Encrypts a Uint16 value using the stored public key. - * @param {number} value - The Uint16 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedUint16} - The encrypted value serialized as EncryptedUint16. Use the .data property to access the Uint8Array. - */ - abstract encrypt_uint16( - value: number, - securityZone?: number, - ): Promise | EncryptedUint16; - - /** - * Encrypts a Uint32 value using the stored public key. - * @param {number} value - The Uint32 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedUint32} - The encrypted value serialized as EncryptedUint32. Use the .data property to access the Uint8Array. - */ - abstract encrypt_uint32( - value: number, - securityZone?: number, - ): Promise | EncryptedUint32; - - /** - * Encrypts a Uint64 value using the stored public key. - * @param {bigint | string} value - The Uint32 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedUint64} - The encrypted value serialized as EncryptedUint64. Use the .data property to access the Uint8Array. - */ - abstract encrypt_uint64( - value: bigint | string, - securityZone?: number, - ): Promise | EncryptedUint64; - - /** - * Encrypts a Uint128 value using the stored public key. - * @param {bigint | string} value - The Uint128 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedUint128} - The encrypted value serialized as EncryptedUint128. Use the .data property to access the Uint8Array. - */ - abstract encrypt_uint128( - value: bigint | string, - securityZone?: number, - ): Promise | EncryptedUint128; - - /** - * Encrypts a Uint256 value using the stored public key. - * @param {bigint | string} value - The Uint256 value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedUint256} - The encrypted value serialized as EncryptedUint256. Use the .data property to access the Uint8Array. - */ - abstract encrypt_uint256( - value: bigint | string, - securityZone?: number, - ): Promise | EncryptedUint256; - - /** - * Encrypts an Address (Uint160) value using the stored public key. - * @param {bigint | string} value - The Address (Uint160) value to encrypt. - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedAddress} - The encrypted value serialized as EncryptedAddress. Use the .data property to access the Uint8Array. - */ - abstract encrypt_address( - value: bigint | string, - securityZone?: number, - ): Promise | EncryptedAddress; - - /** - * Encrypts a numeric value according to the specified encryption type or the most efficient one based on the value. - * @param {number} value - The numeric value to encrypt. - * @param {EncryptionTypes} type - Optional. The encryption type (uint8, uint16, uint32). - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedNumber} - The encrypted value serialized as Uint8Array. Use the .data property to access the Uint8Array. - */ - abstract encrypt( - value: number, - type?: EncryptionTypes, - securityZone?: number, - ): Promise | EncryptedNumber; - - // Unsealing Method - - /** - * Unseals an encrypted message using the stored permit for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} ciphertext - The encrypted message to unseal. - * @param {string} account - The account attached to existing permits. - * @returns bigint - The unsealed message. - */ - unseal(contractAddress: string, ciphertext: string, account: string): bigint { - isAddress(contractAddress); - isString(ciphertext); - - const permit = this.getPermit(contractAddress, account); - - if (permit == null) { - throw new Error(`Missing keypair for ${contractAddress}`); - } - - return this.permits[contractAddress].sealingKey.unseal(ciphertext); - } + }); - // Permit Management Methods - /** - * Creates a new permit for a specific contract address. Also saves the permit to localstorage (if available) - * @param {string} contractAddress - The address of the contract. - * @param {SupportedProvider} provider - The provider from which to sign the permit - must container a signer. - * @param signer - the signer to use to sign the permit if provider does not support signing (e.g. hardhat) - * @returns Permit - The permit associated with the contract address. - * - * @throws {Error} - If the provider does not contain a signer, or if a provider is not set - */ - async generatePermit( - contractAddress: string, - provider?: SupportedProvider, - signer?: PermitSigner, - ) { - if (!provider && this.provider === undefined) { - throw new Error("error getting provider"); - } - - const permit = await generatePermit( - contractAddress, - provider || this.provider!, - signer, + if (params.provider == null) + return ResultErr( + "initialize :: missing provider - Please provide an AbstractProvider interface", ); - // Permit has already been put into local storage, it can be inserted directly into `this.permits` - this.permits[contractAddress] = permit; - - return permit; - } - - /** - * Reusable permit loading and storing from local storage - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The address of the user account. - * @returns {Permit | undefined} - The permit loaded from local storage - */ - private _loadPermitFromLocalStorage( - contractAddress: string, - account: string, - ): Permit | undefined { - const fromLs = getPermitFromLocalstorage(contractAddress, account); - if (fromLs == null) return undefined; - - this.permits[contractAddress] = fromLs; - return fromLs; - } - - /** - * Retrieves the stored permit for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The address of the user account. - * @returns {Permit} - The permit associated with the contract address. - */ - getPermit(contractAddress: string, account: string): Permit | undefined { - const permitFromLs = this._loadPermitFromLocalStorage( - contractAddress, - account, + if (params.securityZones != null && params.securityZones.length === 0) + return ResultErr( + "initialize :: a list of securityZones was provided, but it is empty", ); - if (permitFromLs != null) return permitFromLs; - return this.permits[contractAddress]; - } + await _store_initialize(params); - /** - * Retrieves all stored permits for a specific account. - * @param {string} account - The address of the user account. - * @returns {Record} - The permits associated with each contract address. - */ - loadAllPermitsFromLocalStorage(account: string): Record { - const existingPermits = getAllExistingPermits(account); + // `generatePermit` must set to `false` to early exit here + if (params.generatePermit === false) return ResultOk(undefined); - Object.keys(existingPermits).forEach((contractAddress) => { - this.permits[contractAddress] = existingPermits[contractAddress]; - }); + // Return the existing active permit + const userActivePermit = getPermit(); + if (userActivePermit.success) return userActivePermit; - return this.permits; - } + // Create permit and return it + return createPermit(); +}; - /** - * Stores a permit for a specific contract address. Will overwrite any existing permit for the same contract address. - * Does not store the permit in localstorage (should it?) - * @param {Permit} permit - The permit to store. - */ - storePermit(permit: Permit, account: string) { - storePermitInLocalStorage(permit, account); - this.permits[permit.contractAddress] = permit; +/** + * Internal reusable initialization checker + */ +const _checkInitialized = ( + state: SdkStore, + options?: { + fheKeys?: boolean; + provider?: boolean; + signer?: boolean; + coFheUrl?: boolean; + }, +) => { + if (options?.fheKeys !== false && !state.fheKeysInitialized) { + return ResultErr( + "fhenixsdk not initialized. Use `fhenixsdk.initialize(...)`.", + ); } - /** - * Removes a stored permit for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The account address of the permit. - */ - removePermit(contractAddress: string, account: string) { - if (this.hasPermit(contractAddress, account)) { - removePermitFromLocalstorage(contractAddress, account); - delete this.permits[contractAddress]; - } - } + if (options?.coFheUrl !== false && !state.coFheUrl) + return ResultErr( + "fhenixsdk not initialized with a coFheUrl. Set `coFheUrl` in `fhenixsdk.initialize`.", + ); - /** - * Checks if a permit exists for a specific contract address. - * @param {string} contractAddress - The address of the contract. - * @param {string} account - The account address attached to the stored permits - * @returns {boolean} - True if a permit exists, false otherwise. - */ - hasPermit(contractAddress: string, account: string): boolean { - const permitFromLs = this._loadPermitFromLocalStorage( - contractAddress, - account, + if (options?.provider !== false && !state.providerInitialized) + return ResultErr( + "fhenixsdk not initialized with valid provider. Use `fhenixsdk.initialize(...)` with a valid provider that satisfies `AbstractProvider`.", ); - if (permitFromLs != null) return true; - return this.permits[contractAddress] != null; - } + if (options?.signer !== false && !state.signerInitialized) + return ResultErr( + "fhenixsdk not initialized with a valid signer. Use `fhenixsdk.initialize(...)` with a valid signer that satisfies `AbstractSigner`.", + ); - /** - * Exports all stored permits. - * @returns {ContractPermits} - All stored permits. - */ - exportPermits() { - return this.permits; - } + return ResultOk(null); +}; - extractPermitPermission(permit: Permit): Permission { - return { - signature: permit.signature, - publicKey: permit.publicKey, - }; - } +// Permit - // Private helper methods - - /** - * Retrieves the FHE public key from the provider. - * @param {SupportedProvider} provider - The provider from which to retrieve the key. - * @param securityZone - The security zone for which to retrieve the key (default 0). - * @returns {Promise} - The retrieved public key. - */ - static async getFheKeyFromProvider( - provider: SupportedProvider, - securityZone: number = 0, - ): Promise { - const requestMethod = determineRequestMethod(provider); - - const funcSig = "0x1b1b484e"; // cast sig "getNetworkPublicKey(int32)" - const callData = funcSig + toABIEncodedUint32(securityZone); - - const callParams = [{ to: FheOpsAddress, data: callData }, "latest"]; - - const publicKeyP = requestMethod(provider, "eth_call", callParams).catch( - (err: Error) => { - throw Error( - `Error while requesting network public key from provider for security zone ${securityZone}: ${JSON.stringify( - err, - )}`, - ); - }, +/** + * Creates a new permit with options, prompts user for signature. + * Handles all `permit.type`s, and prompts for the correct signature type. + * The created PermitV2 will be inserted into the store and marked as the active permit. + * NOTE: This is a wrapper around `PermitV2.create` and `PermitV2.sign` + * + * @param {PermitV2Options} options - Partial PermitV2 fields to create the Permit with, if no options provided will be filled with the defaults: + * { type: "self", issuer: initializedUserAddress, projects: initializedProjects, contracts: initializedContracts } + * @returns {Result} - Newly created PermitV2 as a Result object + */ +const createPermit = async ( + options?: PermitV2Options, +): Promise> => { + const state = _sdkStore.getState(); + + const initialized = _checkInitialized(state); + if (!initialized.success) + return ResultErr(`${createPermit.name} :: ${initialized.error}`); + + const optionsWithDefaults: PermitV2Options = { + type: "self", + issuer: state.account, + contracts: state.accessRequirements.contracts, + projects: state.accessRequirements.projects, + ...options, + }; + + let permit: PermitV2; + try { + permit = await PermitV2.createAndSign( + optionsWithDefaults, + state.chainId, + state.signer, ); + } catch (e) { + return ResultErr(`${createPermit.name} :: ${e}`); + } - const publicKey = await publicKeyP; + permitStore.setPermit(state.account!, permit); + permitStore.setActivePermitHash(state.account!, permit.getHash()); - if (typeof publicKey !== "string") { - throw new Error("Error using publicKey from provider: expected string"); - } + return ResultOk(permit); +}; - if (publicKey.length < PUBLIC_KEY_LENGTH_MIN) { - throw new Error( - `Error initializing fhenixjs; got shorter than expected public key: ${publicKey.length}`, - ); - } +/** + * Imports a fully formed existing permit, expected to be valid. + * Does not ask for user signature, expects to already be populated. + * Will throw an error if the imported permit is invalid, see `PermitV2.isValid`. + * The imported PermitV2 will be inserted into the store and marked as the active permit. + * + * @param {string | PermitV2Interface} imported - Permit to import as a text string or PermitV2Interface + */ +const importPermit = async ( + imported: string | PermitV2Interface, +): Promise> => { + const state = _sdkStore.getState(); - // magically know how to decode rlp or w/e returns from the evm json-rpc - const buff = fromHexString(publicKey.slice(130)); + const initialized = _checkInitialized(state); + if (!initialized.success) + return ResultErr(`${createPermit.name} :: ${initialized.error}`); + // Import validation + if (typeof imported === "string") { try { - return TfheCompactPublicKey.deserialize(buff); - } catch (err) { - throw new Error(`Error deserializing public key ${err}`); + imported = JSON.parse(imported); + } catch (e) { + return ResultErr(`importPermit :: json parsing failed - ${e}`); } } -} -/** - * The FhenixClient class provides functionalities to interact with a FHE (Fully Homomorphic Encryption) system. - * It includes methods for encryption, unsealing, and managing permits. - */ -export class FhenixClient extends FhenixClientBase { - private defaultSecurityZone = 0; - public fhePublicKeys: Array> = []; - - /** - * Creates an instance of FhenixClient. - * Initializes the fhevm library if needed and retrieves the public key for encryption from the provider. - * @param {InstanceParams} params - Parameters to initialize the client. - */ - public constructor(params: InstanceParams) { - super(params); - - InitFhevm().catch((err: unknown) => { - if (params.ignoreErrors) { - return undefined; - } else { - throw new Error( - `Failed to initialize fhenixjs - is the network FHE-enabled? ${err}`, - ); - } - }); - - // In the future the default array can be updated to include additional security zones - // This is not strictly necessary, as the pubKey for additional zones can also be fetched during an encryption. - // By default, doesn't skip fetching the public key - if (params.skipPubKeyFetch !== true) { - this.fhePublicKeys = [this.defaultSecurityZone].map((securityZone) => - FhenixClientBase.getFheKeyFromProvider(params.provider, securityZone), - ); - } - } - - private async _getPublicKey( - securityZone: number, - ): Promise { - let fhePublicKey = await this.fhePublicKeys[securityZone]; - if (!fhePublicKey) { - this.fhePublicKeys[securityZone] = FhenixClientBase.getFheKeyFromProvider( - this.provider, - securityZone, + const { + success, + data: parsedPermit, + error: permitParsingError, + } = PermitV2ParamsValidator.safeParse(imported as PermitV2Interface); + if (!success) { + const errorString = Object.entries(permitParsingError.flatten().fieldErrors) + .map(([field, err]) => `- ${field}: ${err}`) + .join("\n"); + return ResultErr(`importPermit :: invalid permit data - ${errorString}`); + } + if (parsedPermit.type !== "self") { + if (parsedPermit.issuer === state.account) parsedPermit.type = "sharing"; + else if (parsedPermit.recipient === state.account) + parsedPermit.type = "recipient"; + else { + return ResultErr( + `importPermit :: invalid Permit - connected account <${state.account}> is not issuer or recipient`, ); - fhePublicKey = await this.fhePublicKeys[securityZone]; - if (!fhePublicKey) { - throw new Error( - `Public key for security zone ${securityZone} somehow not initialized`, - ); - } } - return fhePublicKey; - } - - async encrypt_bool( - value: boolean, - securityZone: number = 0, - ): Promise { - const fhePublicKey = await this._getPublicKey(securityZone); - return tfheEncrypt.encrypt_bool(value, fhePublicKey, securityZone); } - async encrypt_uint8( - value: number, - securityZone: number = 0, - ): Promise { - isNumber(value); - - const fhePublicKey = await this._getPublicKey(securityZone); - ValidateUintInRange(value, MAX_UINT8, 0); - - return tfheEncrypt.encrypt_uint8(value, fhePublicKey, securityZone); - } - - async encrypt_uint16( - value: number, - securityZone: number = 0, - ): Promise { - isNumber(value); - - const fhePublicKey = await this._getPublicKey(securityZone); - ValidateUintInRange(value, MAX_UINT16, 0); - return tfheEncrypt.encrypt_uint16(value, fhePublicKey, securityZone); + let permit: PermitV2; + try { + permit = await PermitV2.create(parsedPermit as PermitV2Interface); + } catch (e) { + return ResultErr(`importPermit :: ${e}`); } - async encrypt_uint32( - value: number, - securityZone: number = 0, - ): Promise { - isNumber(value); - - const fhePublicKey = await this._getPublicKey(securityZone); - - ValidateUintInRange(value, MAX_UINT32, 0); - return tfheEncrypt.encrypt_uint32(value, fhePublicKey, securityZone); + const { valid, error } = permit.isValid(); + if (!valid) { + return ResultErr( + `importPermit :: newly imported permit is invalid - ${error}`, + ); } - async encrypt_uint64( - value: bigint | string, - securityZone: number = 0, - ): Promise { - isBigIntOrHexString(value); + permitStore.setPermit(state.account!, permit); + permitStore.setActivePermitHash(state.account!, permit.getHash()); - const fhePublicKey = await this._getPublicKey(securityZone); + return ResultOk(permit); +}; - // ValidateUintInRange(value, MAX_UINT64, 0); - return tfheEncrypt.encrypt_uint64(value, fhePublicKey, securityZone); - } - - async encrypt_uint128( - value: bigint | string, - securityZone: number = 0, - ): Promise { - isBigIntOrHexString(value); +/** + * Selects the active permit using its hash. + * If the hash is not found in the stored permits store, throws an error. + * The matched permit will be marked as the active permit. + * + * @param {string} hash - The `PermitV2.getHash` of the target permit. + */ +const selectActivePermit = (hash: string): Result => { + const state = _sdkStore.getState(); - const fhePublicKey = await this._getPublicKey(securityZone); + const initialized = _checkInitialized(state); + if (!initialized.success) + return ResultErr(`${selectActivePermit.name} :: ${initialized.error}`); - // ValidateUintInRange(value, MAX_UINT64, 0); - return tfheEncrypt.encrypt_uint128(value, fhePublicKey, securityZone); - } + const permit = permitStore.getPermit(state.account, hash); + if (permit == null) + return ResultErr( + `${selectActivePermit.name} :: Permit with hash <${hash}> not found`, + ); - async encrypt_uint256( - value: bigint | string, - securityZone: number = 0, - ): Promise { - isBigIntOrHexString(value); + permitStore.setActivePermitHash(state.account!, permit.getHash()); - const fhePublicKey = await this._getPublicKey(securityZone); + return ResultOk(permit); +}; - // ValidateUintInRange(value, MAX_UINT64, 0); - return tfheEncrypt.encrypt_uint256(value, fhePublicKey, securityZone); - } +/** + * Retrieves a stored permit based on its hash. + * If no hash is provided, the currently active permit will be retrieved. + * + * @param {string} hash - Optional `PermitV2.getHash` of the permit. + * @returns {Result} - The active permit or permit associated with `hash` as a Result object. + */ +const getPermit = (hash?: string): Result => { + const state = _sdkStore.getState(); - async encrypt_address( - value: bigint | string, - securityZone: number = 0, - ): Promise { - isBigIntOrHexString(value); + const initialized = _checkInitialized(state); + if (!initialized.success) + return ResultErr(`${getPermit.name} :: ${initialized.error}`); - const fhePublicKey = await this._getPublicKey(securityZone); + if (hash == null) { + const permit = permitStore.getActivePermit(state.account); + if (permit == null) + return ResultErr(`getPermit :: active permit not found`); - // ValidateUintInRange(value, MAX_UINT64, 0); - return tfheEncrypt.encrypt_address(value, fhePublicKey, securityZone); + return ResultOk(permit); } - async encrypt( - value: number, - type?: EncryptionTypes, - securityZone: number = 0, - ): Promise { - isNumber(value); - - let outputSize = type; - - const fhePublicKey = await this._getPublicKey(securityZone); - - // choose the most efficient ciphertext size if not selected - if (!outputSize) { - if (value < MAX_UINT8) { - outputSize = EncryptionTypes.uint8; - } else if (value < MAX_UINT16) { - outputSize = EncryptionTypes.uint16; - } else if (value < MAX_UINT32) { - outputSize = EncryptionTypes.uint32; - } else { - throw new Error(`Encryption input must be smaller than ${MAX_UINT32}`); - } - } - - switch (outputSize) { - case EncryptionTypes.uint8: - ValidateUintInRange(value, MAX_UINT8, 0); - break; - case EncryptionTypes.uint16: - ValidateUintInRange(value, MAX_UINT16, 0); - break; - case EncryptionTypes.uint32: - ValidateUintInRange(value, MAX_UINT32, 0); - break; - default: - } + const permit = permitStore.getPermit(state.account, hash); + if (permit == null) + return ResultErr(`getPermit :: permit with hash <${hash}> not found`); - return tfheEncrypt.encrypt(value, fhePublicKey, type, securityZone); - } -} + return ResultOk(permit); +}; /** - * The FhenixClientSync class provides functionalities to interact with a FHE (Fully Homomorphic Encryption) system. - * It includes methods for encryption, unsealing, and managing permits. + * Retrieves a stored permission based on the permit's hash. + * If no hash is provided, the currently active permit will be used. + * The `PermissionV2` is extracted from the permit. * - * The Sync FhenixClient allows the `client.encrypt_()` functions to be performed synchronously - * - * @Note The Sync FhenixClient must be created using `await FhenixClientSync.create({provider})` instead of `new FhenixClient({provider})` + * @param {string} hash - Optional hash of the permission to get, defaults to active permit's permission + * @returns {Result} - The active permission or permission associated with `hash`, as a result object. */ -export class FhenixClientSync extends FhenixClientBase { - public fhePublicKeys: Array = []; +const getPermission = (hash?: string): Result => { + const permitResult = getPermit(hash); + if (!permitResult.success) + return ResultErr(`${getPermission.name} :: ${permitResult.error}`); - public constructor(params: InstanceParamsWithFhePublicKeys) { - super(params); + return ResultOk(permitResult.data.getPermission()); +}; - this.fhePublicKeys = params.fhePublicKeys; - } +/** + * Exports all stored permits. + * @returns {Result>} - All stored permits. + */ +const getAllPermits = (): Result> => { + const state = _sdkStore.getState(); - public static async create( - params: InstanceParams & { securityZones?: number[] }, - ): Promise { - isPlainObject(params); + const initialized = _checkInitialized(state); + if (!initialized.success) + return ResultErr(`${getAllPermits.name} :: ${initialized.error}`); - if (params.skipPubKeyFetch === true) { - console.warn( - "warning: FhenixClientSync doesn't support skipping public key fetching on creation", - ); - } + return ResultOk(permitStore.getPermits(state.account)); +}; - const { provider, ignoreErrors, securityZones = [0] } = params; +// Encrypt - if (!provider) { - throw new Error( - "Failed to initialize Fhenix Client - must include a web3 provider", - ); +/** + * Encrypts a numeric value according to the specified encryption type or the most efficient one based on the value. + * Useful when not using `Encryptable` utility structures. + * @param {item} value - The numeric value to encrypt. + * @param {EncryptionTypes} type - Optional. The encryption type (uint8, uint16, uint32). + * @param securityZone - The security zone for which to encrypt the value (default 0). + * @returns {EncryptedNumber} - The encrypted value serialized as Uint8Array. Use the .data property to access the Uint8Array. + */ +async function encrypt( + item: T, +): Promise>>; +async function encrypt( + item: [...T], +): Promise]>>; +async function encrypt(item: T) { + const state = _sdkStore.getState(); + + // Only need to check `fheKeysInitialized`, signer and provider not needed for encryption + const initialized = _checkInitialized(state, { + provider: false, + signer: false, + }); + if (!initialized.success) + return ResultErr(`${encrypt.name} :: ${initialized.error}`); + + // Permission + if (item === "permission") { + return getPermission(); + } + + // EncryptableItem + if (isEncryptableItem(item)) { + // Early exit with mock encrypted value if chain is hardhat + // TODO: Determine how CoFHE encrypted items will be handled in hardhat + if (chainIsHardhat(state.coFheUrl)) + return ResultOk(hardhatMockEncrypt(BigInt(item.data))); + + const fhePublicKey = _store_getConnectedChainFheKey(item.securityZone ?? 0); + if (fhePublicKey == null) + return ResultErr("encrypt :: fheKey for current chain not found"); + + let preEncryptedItem; + + // prettier-ignore + try { + switch (item.utype) { + case FheUType.bool: { + preEncryptedItem = tfhe_encrypt_bool(item.data, fhePublicKey, item.securityZone); + break; + } + case FheUType.uint8: { + preEncryptedItem = tfhe_encrypt_uint8(item.data, fhePublicKey, item.securityZone); + break; + } + case FheUType.uint16: { + preEncryptedItem = tfhe_encrypt_uint16(item.data, fhePublicKey, item.securityZone); + break; + } + case FheUType.uint32: { + preEncryptedItem = tfhe_encrypt_uint32(item.data, fhePublicKey, item.securityZone); + break; + } + case FheUType.uint64: { + preEncryptedItem = tfhe_encrypt_uint64(item.data, fhePublicKey, item.securityZone); + break; + } + case FheUType.uint128: { + preEncryptedItem = tfhe_encrypt_uint128(item.data, fhePublicKey, item.securityZone); + break; + } + case FheUType.uint256: { + preEncryptedItem = tfhe_encrypt_uint256(item.data, fhePublicKey, item.securityZone); + break; + } + case FheUType.address: { + preEncryptedItem = tfhe_encrypt_address(item.data, fhePublicKey, item.securityZone); + break; + } + } + } catch (e) { + return ResultErr(`encrypt :: tfhe_encrypt_xxxx :: ${e}`) } - await InitFhevm().catch((err: unknown) => { - if (ignoreErrors) { - return undefined; - } else { - throw new Error( - `Failed to initialize fhenixjs - is the network FHE-enabled? ${err}`, - ); - } - }); + // Send preEncryptedItem to CoFHE route `/UpdateCT`, receive `ctHash` to use as contract input + const res = (await fetch(`${state.coFheUrl}/UpdateCT`, { + method: "POST", + headers: { + "Content-Type": "application/json", // Ensure the server knows you're sending JSON + }, + body: JSON.stringify({ + UType: item.utype, + Value: toHexString(preEncryptedItem.data), + SecurityZone: item.securityZone, + }), + })) as any; + + const data = await res.json(); + + // Transform data into final CoFHE input variable + return ResultOk({ + securityZone: item.securityZone, + hash: BigInt(`0x${data.ctHash}`), + utype: item.utype, + signature: data.signature, + } as CoFheEncryptedNumber); + } + + // Object | Array + if (typeof item === "object" && item !== null) { + if (Array.isArray(item)) { + // Array - recurse + const nestedItems = await Promise.all( + item.map((nestedItem) => encrypt(nestedItem)), + ); - const fhePublicKeys = await Promise.all( - securityZones.map((securityZone) => - FhenixClientBase.getFheKeyFromProvider(params.provider, securityZone), - ), - ); + // Any nested error break out + const nestedItemResultErr = nestedItems.find( + (nestedItem) => !nestedItem.success, + ); + if (nestedItemResultErr != null) return nestedItemResultErr; + + return ResultOk(nestedItems.map((nestedItem) => nestedItem.data)); + } else { + // Object - recurse + const nestedKeyedItems = await Promise.all( + Object.entries(item).map(async ([key, value]) => ({ + key, + value: await encrypt(value), + })), + ); - return new FhenixClientSync({ ...params, fhePublicKeys }); - } + // Any nested error break out + const nestedItemResultErr = nestedKeyedItems.find( + ({ value }) => !value.success, + ); + if (nestedItemResultErr != null) return nestedItemResultErr; - // Encryption Methods + const result: Record = {}; + nestedKeyedItems.forEach(({ key, value }) => { + result[key] = value.data; + }); - private _getPublicKey(securityZone: number) { - const fhePublicKey = this.fhePublicKeys[securityZone]; - if (!fhePublicKey) { - throw new Error( - `Public key for security zone ${securityZone} not initialized`, - ); + return ResultOk(result); } - return fhePublicKey; } - encrypt_bool(value: boolean, securityZone: number = 0): EncryptedBool { - const fhePublicKey = this._getPublicKey(securityZone); - return tfheEncrypt.encrypt_bool(value, fhePublicKey, securityZone); - } - - encrypt_uint8(value: number, securityZone: number = 0): EncryptedUint8 { - isNumber(value); + // Primitive + return ResultOk(item); +} - const fhePublicKey = this._getPublicKey(securityZone); - ValidateUintInRange(value, MAX_UINT8, 0); +// Unseal - return tfheEncrypt.encrypt_uint8(value, fhePublicKey, securityZone); +/** + * Unseals an encrypted message using the stored permit for a specific contract address. + * NOTE: Wrapper around `PermitV2.unseal` + * + * @param {string} ciphertext - The encrypted message to unseal. + * @param {string} account - Users address, defaults to store.account + * @param {string} hash - The hash of the permit to use for this operation, defaults to active permitV2 hash + * @returns bigint - The unsealed message. + */ +const unsealCiphertext = ( + ciphertext: string, + account?: string, + hash?: string, +): Result => { + const state = _sdkStore.getState(); + + const initialized = _checkInitialized(state); + if (!initialized.success) + return ResultErr(`${getAllPermits.name} :: ${initialized.error}`); + + isString(ciphertext); + const resolvedAccount = account ?? state.account; + const resolvedHash = hash ?? permitStore.getActivePermitHash(resolvedAccount); + if (resolvedAccount == null || resolvedHash == null) { + return ResultErr( + `unsealCiphertext :: PermitV2 hash not provided and active PermitV2 not found`, + ); } - encrypt_uint16(value: number, securityZone: number = 0): EncryptedUint16 { - isNumber(value); - - const fhePublicKey = this._getPublicKey(securityZone); - ValidateUintInRange(value, MAX_UINT16, 0); - return tfheEncrypt.encrypt_uint16(value, fhePublicKey, securityZone); + const permit = permitStore.getPermit(resolvedAccount, resolvedHash); + if (permit == null) { + return ResultErr( + `unsealCiphertext :: PermitV2 with account <${account}> and hash <${hash}> not found`, + ); } - encrypt_uint32(value: number, securityZone: number = 0): EncryptedUint32 { - isNumber(value); - - const fhePublicKey = this._getPublicKey(securityZone); - - ValidateUintInRange(value, MAX_UINT32, 0); - return tfheEncrypt.encrypt_uint32(value, fhePublicKey, securityZone); + let unsealed: bigint; + try { + unsealed = permit.unsealCiphertext(ciphertext); + } catch (e) { + return ResultErr(`unsealCiphertext :: ${e}`); } - encrypt_uint64( - value: bigint | string, - securityZone: number = 0, - ): EncryptedUint64 { - isBigIntOrHexString(value); - - const fhePublicKey = this._getPublicKey(securityZone); + return ResultOk(unsealed); +}; - // ValidateUintInRange(value, MAX_UINT64, 0); - return tfheEncrypt.encrypt_uint64(value, fhePublicKey, securityZone); +/** + * Uses the privateKey of `permit.sealingPair` to recursively unseal any contained `SealedItems`. + * If `item` is a single `SealedItem` it will be individually. + * NOTE: Only unseals typed `SealedItem`s returned from `FHE.sealoutputTyped` and the FHE bindings' `e____.sealTyped`. + * + * @param {any | any[]} item - Array, object, or item. Any nested `SealedItems` will be unsealed. + * @returns - Recursively unsealed data in the target type, SealedBool -> boolean, SealedAddress -> string, etc. + */ +function unseal( + item: T, + account?: string, + hash?: string, +): Result> { + const resolvedAccount = account ?? _sdkStore.getState().account; + const resolvedHash = hash ?? permitStore.getActivePermitHash(resolvedAccount); + if (resolvedAccount == null || resolvedHash == null) { + return ResultErr( + `unseal :: PermitV2 hash not provided and active PermitV2 not found`, + ); } - encrypt_uint128( - value: bigint | string, - securityZone: number = 0, - ): EncryptedUint128 { - isBigIntOrHexString(value); - - const fhePublicKey = this._getPublicKey(securityZone); - - // ValidateUintInRange(value, MAX_UINT64, 0); - return tfheEncrypt.encrypt_uint128(value, fhePublicKey, securityZone); + const permit = permitStore.getPermit(resolvedAccount, resolvedHash); + if (permit == null) { + return ResultErr( + `unseal :: PermitV2 with account <${account}> and hash <${hash}> not found`, + ); } - encrypt_uint256( - value: bigint | string, - securityZone: number = 0, - ): EncryptedUint256 { - isBigIntOrHexString(value); - - const fhePublicKey = this._getPublicKey(securityZone); - - // ValidateUintInRange(value, MAX_UINT64, 0); - return tfheEncrypt.encrypt_uint256(value, fhePublicKey, securityZone); + let unsealed: MappedUnsealedTypes; + try { + unsealed = permit.unseal(item); + } catch (e) { + return ResultErr(`unseal :: ${e}`); } - encrypt_address( - value: bigint | string, - securityZone: number = 0, - ): EncryptedAddress { - isBigIntOrHexString(value); + return ResultOk(unsealed); +} - const fhePublicKey = this._getPublicKey(securityZone); +// Export - // ValidateUintInRange(value, MAX_UINT64, 0); - return tfheEncrypt.encrypt_address(value, fhePublicKey, securityZone); - } +export const fhenixsdk = { + store: _sdkStore, + initialize, - encrypt( - value: number, - type?: EncryptionTypes, - securityZone: number = 0, - ): EncryptedNumber { - isNumber(value); - - let outputSize = type; - - const fhePublicKey = this._getPublicKey(securityZone); - - // choose the most efficient ciphertext size if not selected - if (!outputSize) { - if (value < MAX_UINT8) { - outputSize = EncryptionTypes.uint8; - } else if (value < MAX_UINT16) { - outputSize = EncryptionTypes.uint16; - } else if (value < MAX_UINT32) { - outputSize = EncryptionTypes.uint32; - } else { - throw new Error(`Encryption input must be smaller than ${MAX_UINT32}`); - } - } + createPermit, + importPermit, + selectActivePermit, + getPermit, + getPermission, + getAllPermits, - switch (outputSize) { - case EncryptionTypes.uint8: - ValidateUintInRange(value, MAX_UINT8, 0); - break; - case EncryptionTypes.uint16: - ValidateUintInRange(value, MAX_UINT16, 0); - break; - case EncryptionTypes.uint32: - ValidateUintInRange(value, MAX_UINT32, 0); - break; - default: - } + encrypt, - return tfheEncrypt.encrypt(value, fhePublicKey, type, securityZone); - } -} + unsealCiphertext, + unseal, +}; diff --git a/src/sdk/v2/permit.generate.ts b/src/sdk/permit/generate.ts similarity index 94% rename from src/sdk/v2/permit.generate.ts rename to src/sdk/permit/generate.ts index 190d6a4..a5ab2fa 100644 --- a/src/sdk/v2/permit.generate.ts +++ b/src/sdk/permit/generate.ts @@ -1,8 +1,5 @@ -import { - EIP712Message, - EIP712Types, -} from "../../extensions/access_control/EIP712"; -import { PermissionV2 } from "./types"; +import { PermissionV2 } from "../../types"; +import { EIP712Message, EIP712Types } from "../../types/EIP712"; import { ZeroAddress } from "ethers"; const PermitV2SignatureAllFields = [ diff --git a/src/sdk/permit/index.ts b/src/sdk/permit/index.ts new file mode 100644 index 0000000..a31f315 --- /dev/null +++ b/src/sdk/permit/index.ts @@ -0,0 +1,11 @@ +export { permitStore } from "./store"; +export { PermitV2 } from "./permit"; +export { + PermitV2ParamsValidator, + FullyFormedPermitV2Validator, +} from "./permit.z"; +export { + SignatureTypes, + getSignatureTypesAndMessage, + getSignatureDomain, +} from "./generate"; diff --git a/src/sdk/v2/permit.ts b/src/sdk/permit/permit.ts similarity index 99% rename from src/sdk/v2/permit.ts rename to src/sdk/permit/permit.ts index 052709e..cdb4502 100644 --- a/src/sdk/v2/permit.ts +++ b/src/sdk/permit/permit.ts @@ -1,30 +1,30 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { getAddress, id, keccak256, ZeroAddress } from "ethers"; -import { - AbstractSigner, - isSealedAddress, - isSealedBool, - getAsSealedItem, - isSealedUint, - MappedUnsealedTypes, - PermissionV2, - PermitV2Interface, - PermitV2Metadata, - PermitV2Options, - SerializedPermitV2, -} from "./types"; import { getSignatureDomain, getSignatureTypesAndMessage, PermitV2SignaturePrimaryType, SignatureTypes, -} from "./permit.generate"; +} from "./generate"; import { FullyFormedPermitV2Validator, PermitV2ParamsValidator, } from "./permit.z"; import { GenerateSealingKey, SealingKey } from "../sealing"; -import { chainIsHardhat, hardhatMockUnseal } from "../utils"; +import { chainIsHardhat, hardhatMockUnseal } from "../utils.hardhat"; +import { + PermissionV2, + PermitV2Interface, + PermitV2Metadata, + PermitV2Options, + SerializedPermitV2, + MappedUnsealedTypes, + getAsSealedItem, + isSealedBool, + isSealedAddress, + isSealedUint, + AbstractSigner, +} from "../../types"; export class PermitV2 implements PermitV2Interface, PermitV2Metadata { /** diff --git a/src/sdk/v2/permit.z.ts b/src/sdk/permit/permit.z.ts similarity index 100% rename from src/sdk/v2/permit.z.ts rename to src/sdk/permit/permit.z.ts diff --git a/src/sdk/v2/permit.store.ts b/src/sdk/permit/store.ts similarity index 98% rename from src/sdk/v2/permit.store.ts rename to src/sdk/permit/store.ts index f4224db..5cf6a6a 100644 --- a/src/sdk/v2/permit.store.ts +++ b/src/sdk/permit/store.ts @@ -1,7 +1,7 @@ import { createStore } from "zustand/vanilla"; import { persist } from "zustand/middleware"; import { produce } from "immer"; -import { SerializedPermitV2 } from "./types"; +import { SerializedPermitV2 } from "../../types"; import { PermitV2 } from "./permit"; type AccountRecord = Record; diff --git a/src/sdk/v2/sdk.store.ts b/src/sdk/store.ts similarity index 76% rename from src/sdk/v2/sdk.store.ts rename to src/sdk/store.ts index 1409105..3dd44a8 100644 --- a/src/sdk/v2/sdk.store.ts +++ b/src/sdk/store.ts @@ -1,29 +1,20 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { createStore } from "zustand/vanilla"; import { produce } from "immer"; -import { TfheCompactPublicKey } from "../fhe/fhe"; -import { chainIsHardhat, fromHexString, toABIEncodedUint32 } from "../utils"; -import { FheOpsAddress, PUBLIC_KEY_LENGTH_MIN } from "../consts"; -import { AbstractProvider, AbstractSigner } from "./types"; +import { TfheCompactPublicKey } from "./fhe/fhe"; +import { fromHexString } from "./utils"; +import { chainIsHardhat } from "./utils.hardhat"; +import { PUBLIC_KEY_LENGTH_MIN } from "./consts"; +import { + AbstractProvider, + AbstractSigner, + InitializationParams, + PermitV2AccessRequirements, +} from "../types"; type ChainRecord = Record; type SecurityZoneRecord = Record; -type PermitV2AccessRequirements = { - contracts: string[]; - projects: string[]; -}; - -type PermitV2AccessRequirementsParams = - | { - contracts?: never[]; - projects: string[]; - } - | { - contracts: string[]; - projects?: never[]; - }; - type SdkStoreProviderInitialization = | { providerInitialized: false; @@ -58,6 +49,8 @@ export type SdkStore = SdkStoreProviderInitialization & securityZones: number[]; fheKeys: ChainRecord>; accessRequirements: PermitV2AccessRequirements; + + coFheUrl: string | undefined; }; export const _sdkStore = createStore( @@ -72,6 +65,8 @@ export const _sdkStore = createStore( projects: [], }, + coFheUrl: undefined, + providerInitialized: false, provider: undefined as never, chainId: undefined as never, @@ -84,10 +79,7 @@ export const _sdkStore = createStore( // Store getters / setters -export const _store_chainId = (): string | undefined => - _sdkStore.getState().chainId; - -export const _store_getFheKey = ( +const _store_getFheKey = ( chainId: string | undefined, securityZone = 0, ): TfheCompactPublicKey | undefined => { @@ -131,7 +123,14 @@ export const _store_setFheKey = ( const getChainIdFromProvider = async ( provider: AbstractProvider, ): Promise => { - const chainId = await provider.getChainId(); + var chainId: string | null = null; + try { + chainId = await provider.getChainId(); + } catch (err) { + const network = await provider.getNetwork(); + chainId = network.chainId; + } + if (chainId == null) throw new Error( "sdk :: getChainIdFromProvider :: provider.getChainId returned a null result, ensure that your provider is connected to a network", @@ -141,19 +140,14 @@ const getChainIdFromProvider = async ( // External functionality -export type InitParams = { - provider: AbstractProvider; - signer?: AbstractSigner; - securityZones?: number[]; -} & PermitV2AccessRequirementsParams; - -export const _store_initialize = async (params: InitParams) => { +export const _store_initialize = async (params: InitializationParams) => { const { provider, signer, securityZones = [0], contracts: contractRequirements = [], projects: projectRequirements = [], + coFheUrl = undefined, } = params; _sdkStore.setState({ @@ -163,6 +157,7 @@ export const _store_initialize = async (params: InitParams) => { contracts: contractRequirements, projects: projectRequirements, }, + coFheUrl, }); // PROVIDER @@ -191,7 +186,7 @@ export const _store_initialize = async (params: InitParams) => { }); } - // If chainId or securityZones changes, update the store and update fheKeys for re-initialization + // If chainId, securityZones, or CoFhe enabled changes, update the store and update fheKeys for re-initialization const securityZonesChanged = securityZones !== _sdkStore.getState().securityZones; if (chainIdChanged || securityZonesChanged) { @@ -205,7 +200,7 @@ export const _store_initialize = async (params: InitParams) => { if (!chainIsHardhat(chainId) && !_sdkStore.getState().fheKeysInitialized) { await Promise.all( securityZones.map((securityZone) => - _store_fetchFheKey(chainId, provider, securityZone), + _store_fetchFheKey(chainId, securityZone, true), ), ); } @@ -217,26 +212,48 @@ export const _store_initialize = async (params: InitParams) => { * Retrieves the FHE public key from the provider. * If the key already exists in the store it is returned, else it is fetched, stored, and returned * @param {string} chainId - The chain to fetch the FHE key for, if no chainId provided, undefined is returned - * @param {Provider} provider - EthersV6 Provider that performs the key fetch. * @param securityZone - The security zone for which to retrieve the key (default 0). * @returns {Promise} - The retrieved public key. */ export const _store_fetchFheKey = async ( chainId: string, - provider: AbstractProvider, securityZone: number = 0, + forceFetch = false, ): Promise => { const storedKey = _store_getFheKey(chainId, securityZone); - if (storedKey != null) return storedKey; + if (storedKey != null && !forceFetch) return storedKey; - const funcSig = "0x1b1b484e"; // cast sig "getNetworkPublicKey(int32)" - const callData = funcSig + toABIEncodedUint32(securityZone); + const coFheUrl = _sdkStore.getState().coFheUrl; + if (coFheUrl == null || typeof coFheUrl !== "string") { + throw new Error( + "Error initializing fhenixjs; coFheUrl invalid, ensure it is set in `fhenixsdk.initialize`", + ); + } - const publicKey = await provider.call({ to: FheOpsAddress, data: callData }); + let publicKey: string | undefined = undefined; + + // Fetch publicKey from CoFhe + try { + // TODO: misspelling? + const res = await fetch(`${coFheUrl}/GetNetworkPublickKey`, { + method: "POST", + body: JSON.stringify({ + SecurityZone: securityZone, + }), + }); + + const data = await res.json(); + + publicKey = `0x${data.securityZone}`; + } catch (err) { + throw new Error( + `Error initializing fhenixjs; fetching FHE publicKey from CoFHE failed with error ${err}`, + ); + } - if (typeof publicKey !== "string") { + if (publicKey == null || typeof publicKey !== "string") { throw new Error( - "Error initializing fhenixjs; FHE publicKey fetched from provider invalid: not a string", + `Error initializing fhenixjs; FHE publicKey fetched from CoFHE invalid: not a string`, ); } @@ -252,9 +269,7 @@ export const _store_fetchFheKey = async ( ); } - // todo (eshel) verify this - // magically know how to decode rlp or w/e returns from the evm json-rpc - const buff = fromHexString(publicKey.slice(130)); + const buff = fromHexString(publicKey); try { const key = TfheCompactPublicKey.deserialize(buff); diff --git a/src/sdk/types.ts b/src/sdk/types.ts deleted file mode 100644 index ed75c5f..0000000 --- a/src/sdk/types.ts +++ /dev/null @@ -1,132 +0,0 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -import { TfheCompactPublicKey } from "./fhe/fhe.js"; -import { Permit } from "../extensions/access_control/index.js"; -export { PermitSigner } from "../extensions/access_control/index.js"; - -/** - * A type representing a mapping of contract addresses to their corresponding permits. - * Each key is a string representing the contract's address, and each value is a Permit object. - */ -export type ContractPermits = Record; - -/** - * An enumeration of supported encryption types. - * uint8, uint16, and uint32 represent the different sizes of integers that can be encrypted. - */ -export enum EncryptionTypes { - bool = "bool", - uint8 = "uint8", - uint16 = "uint16", - uint32 = "uint32", - uint64 = "uint64", - uint128 = "uint128", - uint256 = "uint256", - address = "address", -} - -/** - * A type representing the signature for a permit. - * Contains a public key and a signature string. - */ -export type PermitSignature = { - publicKey: Uint8Array; - signature: string; -}; - -/** - * A type representing the parameters to initialize an instance. - * provider is an optional SupportedProvider for blockchain interactions. - */ -export type InstanceParams = { - provider: SupportedProvider; - ignoreErrors?: boolean; - skipPubKeyFetch?: boolean; -}; - -/** - * Type of the constructor of the sync fhenix client - * fhePublicKeys are generated in the static `create` method of the sync fhenix client - */ -export type InstanceParamsWithFhePublicKeys = InstanceParams & { - fhePublicKeys: Array; -}; - -/** - * A type representing a pair of public and private keys used for a contract, along with an optional signature. - */ -export type ContractKeypair = { - publicKey: Uint8Array; - privateKey: Uint8Array; - signature?: string | null; -}; - -// Define the SupportedProvider interface -export interface SupportedProvider { - request?(args: { method: string; params?: unknown[] }): Promise; - send?(method: string, params?: unknown[]): Promise; - getSigner?(): unknown; - getSigner?(addressOrIndex?: string | number): Promise; -} - -/** - * Determines the request method for a given provider. - * Checks if the provider has a 'request' method typical for Eip1193Providers, or a 'send' method for others. - * Throws an error if neither method is found. - * @param {SupportedProvider} provider - The provider to determine the request method for. - * @returns {Function} - The determined request function. - */ -// eslint-disable-next-line @typescript-eslint/ban-types -export function determineRequestMethod(provider: SupportedProvider): Function { - if ("request" in provider && typeof provider.request === "function") { - return (p: SupportedProvider, method: string, params?: unknown[]) => - ( - p.request as ({ - method, - params, - }: { - method: string; - params?: unknown[]; - }) => Promise - )({ method, params }); - } else if ("send" in provider && typeof provider.send === "function") { - return (p: SupportedProvider, method: string, params?: unknown[]) => - (p.send as (method: string, params?: unknown[]) => Promise)( - method, - params, - ); - } else { - throw new Error( - "Received unsupported provider. 'send' or 'request' method not found", - ); - } -} - -/** - * Determines the request signer function for a given provider. - * Checks if the provider has a 'getSigner' method and returns it if available. - * Throws an error if no 'getSigner' method is found. - * @param {SupportedProvider} provider - The provider to determine the request signer for. - * @returns {Function} - The determined request signer function. - */ -// eslint-disable-next-line @typescript-eslint/ban-types -export function determineRequestSigner(provider: SupportedProvider): Function { - if ("getSigner" in provider && typeof provider.getSigner === "function") { - return (p: SupportedProvider) => (p.getSigner as () => unknown)(); - } else { - throw new Error("The supplied provider cannot get a signer"); - } -} - -export type EncryptedNumber = { - data: Uint8Array; - securityZone: number; -}; - -export interface EncryptedBool extends EncryptedNumber {} -export interface EncryptedUint8 extends EncryptedNumber {} -export interface EncryptedUint16 extends EncryptedNumber {} -export interface EncryptedUint32 extends EncryptedNumber {} -export interface EncryptedUint64 extends EncryptedNumber {} -export interface EncryptedUint128 extends EncryptedNumber {} -export interface EncryptedUint256 extends EncryptedNumber {} -export interface EncryptedAddress extends EncryptedNumber {} diff --git a/src/sdk/utils.hardhat.ts b/src/sdk/utils.hardhat.ts new file mode 100644 index 0000000..5ebc0c4 --- /dev/null +++ b/src/sdk/utils.hardhat.ts @@ -0,0 +1,27 @@ +import { EncryptedNumber } from "../types"; +import { bigintToUint8Array, stringToUint8Array } from "./utils"; + +// HARDHAT MOCKS +// Mock FHE operations are automatically injected on the hardhat network +// The utility functions allow the client / sdk to interact with the mocked FHE ops + +export const chainIsHardhat = (chainId?: string): boolean => { + if (chainId == null) return false; + return parseInt(chainId) === 31337; +}; + +export const hardhatMockUnseal = (value: string): bigint => { + let result = BigInt(0); + for (const byteArrayItem of stringToUint8Array(value)) { + result = (result << BigInt(8)) + BigInt(byteArrayItem); + } + return result; +}; + +export const hardhatMockEncrypt = ( + value: bigint, + securityZone = 0, +): EncryptedNumber => ({ + data: bigintToUint8Array(BigInt(value)), + securityZone: securityZone || 0, +}); diff --git a/src/sdk/utils.ts b/src/sdk/utils.ts index 844fea0..6ab7c73 100644 --- a/src/sdk/utils.ts +++ b/src/sdk/utils.ts @@ -1,4 +1,3 @@ -import { EncryptedNumber } from "./types.js"; import { isNumber } from "./validation.js"; export const ValidateUintInRange = ( @@ -25,8 +24,16 @@ export const fromHexString = (hexString: string): Uint8Array => { export const toHexString = (bytes: Uint8Array) => bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, "0"), ""); -export function toBigInt(value: Uint8Array): bigint { - return ethersToBigInt(value); +export function toBigInt(value: number | string | bigint | Uint8Array): bigint { + if (typeof value === "string") { + return ethersToBigInt(fromHexString(value)); + } else if (typeof value === "number") { + return BigInt(value); + } else if (typeof value === "object") { // Uint8Array + return ethersToBigInt(value); + } else { + return value as bigint; + } } export function toBeArray(value: bigint | number): Uint8Array { @@ -39,6 +46,20 @@ export function isAddress(address: string) { } } +export function toNumber(value: number | string | bigint): number { + try { + switch (typeof value) { + case "string": + return parseInt(value); + case "bigint": + return Number(value); + } + return value; + } catch (error) { + throw new Error(`Cannot convert ${value} to number`); + } +} + function _isAddress(value: string): value is string { try { if (!value.startsWith("0x")) { @@ -163,7 +184,7 @@ export const uint8ArrayToString = (value: Uint8Array): string => { .map((byte) => String.fromCharCode(byte)) .join(""); }; -function bigintToUint8Array(bigNum: bigint): Uint8Array { +export const bigintToUint8Array = (bigNum: bigint): Uint8Array => { const byteLength = 32; const byteArray = new Uint8Array(byteLength); @@ -179,29 +200,4 @@ function bigintToUint8Array(bigNum: bigint): Uint8Array { } return byteArray; -} - -// HARDHAT MOCKS -// Mock FHE operations are automatically injected on the hardhat network -// The utility functions allow the client / sdk to interact with the mocked FHE ops - -export const chainIsHardhat = (chainId?: string): boolean => { - if (chainId == null) return false; - return parseInt(chainId) === 31337; }; - -export const hardhatMockUnseal = (value: string): bigint => { - let result = BigInt(0); - for (const byteArrayItem of stringToUint8Array(value)) { - result = (result << BigInt(8)) + BigInt(byteArrayItem); - } - return result; -}; - -export const hardhatMockEncrypt = ( - value: bigint, - securityZone = 0, -): EncryptedNumber => ({ - data: bigintToUint8Array(BigInt(value)), - securityZone: securityZone || 0, -}); diff --git a/src/sdk/v2/index.ts b/src/sdk/v2/index.ts deleted file mode 100644 index 3718df9..0000000 --- a/src/sdk/v2/index.ts +++ /dev/null @@ -1,27 +0,0 @@ -export { PermitV2 } from "./permit"; -export { permitStore } from "./permit.store"; -export { fhenixsdk } from "./sdk"; - -export { - AbstractProvider, - AbstractSigner, - EncryptableBool, - EncryptableUint8, - EncryptableUint16, - EncryptableUint32, - EncryptableUint64, - EncryptableUint128, - EncryptableUint256, - EncryptableAddress, - Encryptable, - EncryptableItem, - SealedBool, - SealedUint, - SealedAddress, - SealedItem, - PermitV2Interface, - PermitV2Core, - PermitV2Options, - SerializedPermitV2, - PermissionV2, -} from "./types.js"; diff --git a/src/sdk/v2/sdk.ts b/src/sdk/v2/sdk.ts deleted file mode 100644 index 14a4ad5..0000000 --- a/src/sdk/v2/sdk.ts +++ /dev/null @@ -1,572 +0,0 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -import { MAX_UINT16, MAX_UINT32, MAX_UINT8 } from "../consts.js"; -import { - chainIsHardhat, - hardhatMockEncrypt, - ValidateUintInRange, -} from "../utils.js"; -import { PermitV2 } from "./permit.js"; -import { - FheUType, - isEncryptableItem, - MappedEncryptedTypes, - Result, - ResultErr, - ResultOk, - PermissionV2, - PermitV2Interface, - PermitV2Options, - MappedUnsealedTypes, -} from "./types.js"; -import { permitStore } from "./permit.store.js"; -import { isString } from "../validation.js"; -import { - _sdkStore, - _store_chainId, - _store_getConnectedChainFheKey, - _store_getFheKey, - _store_initialize, - InitParams, - SdkStore, -} from "./sdk.store.js"; -import { - encrypt as tfhe_encrypt, - encrypt_bool as tfhe_encrypt_bool, - encrypt_uint8 as tfhe_encrypt_uint8, - encrypt_uint16 as tfhe_encrypt_uint16, - encrypt_uint32 as tfhe_encrypt_uint32, - encrypt_uint64 as tfhe_encrypt_uint64, - encrypt_uint128 as tfhe_encrypt_uint128, - encrypt_uint256 as tfhe_encrypt_uint256, - encrypt_address as tfhe_encrypt_address, -} from "../encrypt.js"; -import { InitFhevm } from "../init.js"; -import { PermitV2ParamsValidator } from "./permit.z.js"; -import { EncryptedNumber, EncryptionTypes } from "../types.js"; - -/** - * Initializes the `fhenixsdk` to enable encrypting input data, creating permits / permissions, and decrypting sealed outputs. - * Initializes `fhevm` client FHE wasm module and fetches the provided chain's FHE publicKey. - * If a valid signer is provided, a `permit/permission` is generated automatically - */ -const initialize = async ( - params: InitParams & { ignoreErrors?: boolean; generatePermit?: boolean }, -): Promise> => { - // Initialize the fhevm - await InitFhevm().catch((err: unknown) => { - if (params.ignoreErrors) { - return undefined; - } else { - return ResultErr( - `initialize :: failed to initialize fhenixjs - is the network FHE-enabled? ${err}`, - ); - } - }); - - if (params.provider == null) - return ResultErr( - "initialize :: missing provider - Please provide an AbstractProvider interface", - ); - - if (params.securityZones != null && params.securityZones.length === 0) - return ResultErr( - "initialize :: a list of securityZones was provided, but it is empty", - ); - - await _store_initialize(params); - - // `generatePermit` must set to `false` to early exit here - if (params.generatePermit === false) return ResultOk(undefined); - - // Return the existing active permit - const userActivePermit = getPermit(); - if (userActivePermit.success) return userActivePermit; - - // Create permit and return it - return createPermit(); -}; - -/** - * Internal reusable initialization checker - */ -const _checkInitialized = ( - state: SdkStore, - options?: { fheKeys?: boolean; provider?: boolean; signer?: boolean }, -) => { - if (options?.fheKeys !== false && !state.fheKeysInitialized) { - return ResultErr( - "fhenixsdk not initialized. Use `fhenixsdk.initialize(...)`.", - ); - } - - if (options?.provider !== false && !state.providerInitialized) - return ResultErr( - "fhenixsdk not initialized with valid provider. Use `fhenixsdk.initialize(...)` with a valid provider that satisfies `AbstractProvider`.", - ); - - if (options?.signer !== false && !state.signerInitialized) - return ResultErr( - "fhenixsdk not initialized with a valid signer. Use `fhenixsdk.initialize(...)` with a valid signer that satisfies `AbstractSigner`.", - ); - - return ResultOk(null); -}; - -// Permit - -/** - * Creates a new permit with options, prompts user for signature. - * Handles all `permit.type`s, and prompts for the correct signature type. - * The created PermitV2 will be inserted into the store and marked as the active permit. - * NOTE: This is a wrapper around `PermitV2.create` and `PermitV2.sign` - * - * @param {PermitV2Options} options - Partial PermitV2 fields to create the Permit with, if no options provided will be filled with the defaults: - * { type: "self", issuer: initializedUserAddress, projects: initializedProjects, contracts: initializedContracts } - * @returns {Result} - Newly created PermitV2 as a Result object - */ -const createPermit = async ( - options?: PermitV2Options, -): Promise> => { - const state = _sdkStore.getState(); - - const initialized = _checkInitialized(state); - if (!initialized.success) - return ResultErr(`${createPermit.name} :: ${initialized.error}`); - - const optionsWithDefaults: PermitV2Options = { - type: "self", - issuer: state.account, - contracts: state.accessRequirements.contracts, - projects: state.accessRequirements.projects, - ...options, - }; - - let permit: PermitV2; - try { - permit = await PermitV2.createAndSign( - optionsWithDefaults, - state.chainId, - state.signer, - ); - } catch (e) { - return ResultErr(`${createPermit.name} :: ${e}`); - } - - permitStore.setPermit(state.account!, permit); - permitStore.setActivePermitHash(state.account!, permit.getHash()); - - return ResultOk(permit); -}; - -/** - * Imports a fully formed existing permit, expected to be valid. - * Does not ask for user signature, expects to already be populated. - * Will throw an error if the imported permit is invalid, see `PermitV2.isValid`. - * The imported PermitV2 will be inserted into the store and marked as the active permit. - * - * @param {string | PermitV2Interface} imported - Permit to import as a text string or PermitV2Interface - */ -const importPermit = async ( - imported: string | PermitV2Interface, -): Promise> => { - const state = _sdkStore.getState(); - - const initialized = _checkInitialized(state); - if (!initialized.success) - return ResultErr(`${createPermit.name} :: ${initialized.error}`); - - // Import validation - if (typeof imported === "string") { - try { - imported = JSON.parse(imported); - } catch (e) { - return ResultErr(`importPermit :: json parsing failed - ${e}`); - } - } - - const { - success, - data: parsedPermit, - error: permitParsingError, - } = PermitV2ParamsValidator.safeParse(imported as PermitV2Interface); - if (!success) { - const errorString = Object.entries(permitParsingError.flatten().fieldErrors) - .map(([field, err]) => `- ${field}: ${err}`) - .join("\n"); - return ResultErr(`importPermit :: invalid permit data - ${errorString}`); - } - if (parsedPermit.type !== "self") { - if (parsedPermit.issuer === state.account) parsedPermit.type = "sharing"; - else if (parsedPermit.recipient === state.account) - parsedPermit.type = "recipient"; - else { - return ResultErr( - `importPermit :: invalid Permit - connected account <${state.account}> is not issuer or recipient`, - ); - } - } - - let permit: PermitV2; - try { - permit = await PermitV2.create(parsedPermit as PermitV2Interface); - } catch (e) { - return ResultErr(`importPermit :: ${e}`); - } - - const { valid, error } = permit.isValid(); - if (!valid) { - return ResultErr( - `importPermit :: newly imported permit is invalid - ${error}`, - ); - } - - permitStore.setPermit(state.account!, permit); - permitStore.setActivePermitHash(state.account!, permit.getHash()); - - return ResultOk(permit); -}; - -/** - * Selects the active permit using its hash. - * If the hash is not found in the stored permits store, throws an error. - * The matched permit will be marked as the active permit. - * - * @param {string} hash - The `PermitV2.getHash` of the target permit. - */ -const selectActivePermit = (hash: string): Result => { - const state = _sdkStore.getState(); - - const initialized = _checkInitialized(state); - if (!initialized.success) - return ResultErr(`${selectActivePermit.name} :: ${initialized.error}`); - - const permit = permitStore.getPermit(state.account, hash); - if (permit == null) - return ResultErr( - `${selectActivePermit.name} :: Permit with hash <${hash}> not found`, - ); - - permitStore.setActivePermitHash(state.account!, permit.getHash()); - - return ResultOk(permit); -}; - -/** - * Retrieves a stored permit based on its hash. - * If no hash is provided, the currently active permit will be retrieved. - * - * @param {string} hash - Optional `PermitV2.getHash` of the permit. - * @returns {Result} - The active permit or permit associated with `hash` as a Result object. - */ -const getPermit = (hash?: string): Result => { - const state = _sdkStore.getState(); - - const initialized = _checkInitialized(state); - if (!initialized.success) - return ResultErr(`${getPermit.name} :: ${initialized.error}`); - - if (hash == null) { - const permit = permitStore.getActivePermit(state.account); - if (permit == null) - return ResultErr(`getPermit :: active permit not found`); - - return ResultOk(permit); - } - - const permit = permitStore.getPermit(state.account, hash); - if (permit == null) - return ResultErr(`getPermit :: permit with hash <${hash}> not found`); - - return ResultOk(permit); -}; - -/** - * Retrieves a stored permission based on the permit's hash. - * If no hash is provided, the currently active permit will be used. - * The `PermissionV2` is extracted from the permit. - * - * @param {string} hash - Optional hash of the permission to get, defaults to active permit's permission - * @returns {Result} - The active permission or permission associated with `hash`, as a result object. - */ -const getPermission = (hash?: string): Result => { - const permitResult = getPermit(hash); - if (!permitResult.success) - return ResultErr(`${getPermission.name} :: ${permitResult.error}`); - - return ResultOk(permitResult.data.getPermission()); -}; - -/** - * Exports all stored permits. - * @returns {Result>} - All stored permits. - */ -const getAllPermits = (): Result> => { - const state = _sdkStore.getState(); - - const initialized = _checkInitialized(state); - if (!initialized.success) - return ResultErr(`${getAllPermits.name} :: ${initialized.error}`); - - return ResultOk(permitStore.getPermits(state.account)); -}; - -// Encrypt - -/** - * Encrypts a numeric value according to the specified encryption type or the most efficient one based on the value. - * Useful when not using `Encryptable` utility structures. - * @param {number} value - The numeric value to encrypt. - * @param {EncryptionTypes} type - Optional. The encryption type (uint8, uint16, uint32). - * @param securityZone - The security zone for which to encrypt the value (default 0). - * @returns {EncryptedNumber} - The encrypted value serialized as Uint8Array. Use the .data property to access the Uint8Array. - */ -const encryptValue = ( - value: number, - type?: EncryptionTypes, - securityZone: number = 0, -): Result => { - const state = _sdkStore.getState(); - - // Only need to check `fheKeysInitialized`, signer and provider not needed for encryption - const initialized = _checkInitialized(state, { - provider: false, - signer: false, - }); - if (!initialized.success) - return ResultErr(`${encryptValue.name} :: ${initialized.error}`); - - // Early exit with mock encrypted value if chain is hardhat - if (chainIsHardhat(state.chainId)) - return ResultOk(hardhatMockEncrypt(BigInt(value))); - - const fhePublicKey = _store_getFheKey(state.chainId, securityZone); - if (fhePublicKey == null) - return ResultErr( - `encryptValue :: FHE publicKey not found for chain <${state.chainId}> and securityZone <${securityZone}>`, - ); - - let outputSize = type; - - // choose the most efficient ciphertext size if not selected - if (!outputSize) { - if (value < MAX_UINT8) { - outputSize = EncryptionTypes.uint8; - } else if (value < MAX_UINT16) { - outputSize = EncryptionTypes.uint16; - } else if (value < MAX_UINT32) { - outputSize = EncryptionTypes.uint32; - } else { - return ResultErr( - `encryptValue :: Encryption input must be smaller than ${MAX_UINT32}`, - ); - } - } - - try { - switch (outputSize) { - case EncryptionTypes.uint8: - ValidateUintInRange(value, MAX_UINT8, 0); - break; - case EncryptionTypes.uint16: - ValidateUintInRange(value, MAX_UINT16, 0); - break; - case EncryptionTypes.uint32: - ValidateUintInRange(value, MAX_UINT32, 0); - break; - default: - } - } catch (e) { - return ResultErr(`encryptValue :: outputSize :: ${e}`); - } - - let encrypted: EncryptedNumber; - try { - encrypted = tfhe_encrypt(value, fhePublicKey, type, securityZone); - } catch (e) { - return ResultErr(`encryptValue :: tfhe_encrypt :: ${e}`); - } - - return ResultOk(encrypted); -}; - -function encrypt(item: T): Result>; -function encrypt( - item: [...T], -): Result<[...MappedEncryptedTypes]>; -function encrypt(item: T) { - const state = _sdkStore.getState(); - - // Only need to check `fheKeysInitialized`, signer and provider not needed for encryption - const initialized = _checkInitialized(state, { - provider: false, - signer: false, - }); - if (!initialized.success) - return ResultErr(`${encrypt.name} :: ${initialized.error}`); - - // Permission - if (item === "permission") { - return getPermission(); - } - - // EncryptableItem - if (isEncryptableItem(item)) { - // Early exit with mock encrypted value if chain is hardhat - if (chainIsHardhat(_store_chainId())) - return ResultOk(hardhatMockEncrypt(BigInt(item.data))); - - const fhePublicKey = _store_getConnectedChainFheKey(item.securityZone ?? 0); - if (fhePublicKey == null) - return ResultErr("encrypt :: fheKey for current chain not found"); - - // prettier-ignore - try { - switch (item.utype) { - case FheUType.bool: return ResultOk(tfhe_encrypt_bool(item.data, fhePublicKey, item.securityZone)); - case FheUType.uint8: return ResultOk(tfhe_encrypt_uint8(item.data, fhePublicKey, item.securityZone)); - case FheUType.uint16: return ResultOk(tfhe_encrypt_uint16(item.data, fhePublicKey, item.securityZone)); - case FheUType.uint32: return ResultOk(tfhe_encrypt_uint32(item.data, fhePublicKey, item.securityZone)); - case FheUType.uint64: return ResultOk(tfhe_encrypt_uint64(item.data, fhePublicKey, item.securityZone)); - case FheUType.uint128: return ResultOk(tfhe_encrypt_uint128(item.data, fhePublicKey, item.securityZone)); - case FheUType.uint256: return ResultOk(tfhe_encrypt_uint256(item.data, fhePublicKey, item.securityZone)); - case FheUType.address: return ResultOk(tfhe_encrypt_address(item.data, fhePublicKey, item.securityZone)); - } - } catch (e) { - return ResultErr(`encrypt :: tfhe_encrypt_xxxx :: ${e}`) - } - } - - // Object | Array - if (typeof item === "object" && item !== null) { - if (Array.isArray(item)) { - // Array - recurse - const nestedItems = item.map((nestedItem) => encrypt(nestedItem)); - - // Any nested error break out - const nestedItemResultErr = nestedItems.find( - (nestedItem) => !nestedItem.success, - ); - if (nestedItemResultErr) return nestedItemResultErr; - - return ResultOk(nestedItems.map((nestedItem) => nestedItem.data)); - } else { - // Object - recurse - const result: Record = {}; - for (const key in item) { - const encryptedResult = encrypt(item[key]); - if (!encryptedResult.success) return encryptedResult; - result[key] = encryptedResult.data; - } - return ResultOk(result); - } - } - - // Primitive - return ResultOk(item); -} - -// Unseal - -/** - * Unseals an encrypted message using the stored permit for a specific contract address. - * NOTE: Wrapper around `PermitV2.unseal` - * - * @param {string} ciphertext - The encrypted message to unseal. - * @param {string} account - Users address, defaults to store.account - * @param {string} hash - The hash of the permit to use for this operation, defaults to active permitV2 hash - * @returns bigint - The unsealed message. - */ -const unsealCiphertext = ( - ciphertext: string, - account?: string, - hash?: string, -): Result => { - const state = _sdkStore.getState(); - - const initialized = _checkInitialized(state); - if (!initialized.success) - return ResultErr(`${getAllPermits.name} :: ${initialized.error}`); - - isString(ciphertext); - const resolvedAccount = account ?? state.account; - const resolvedHash = hash ?? permitStore.getActivePermitHash(resolvedAccount); - if (resolvedAccount == null || resolvedHash == null) { - return ResultErr( - `unsealCiphertext :: PermitV2 hash not provided and active PermitV2 not found`, - ); - } - - const permit = permitStore.getPermit(resolvedAccount, resolvedHash); - if (permit == null) { - return ResultErr( - `unsealCiphertext :: PermitV2 with account <${account}> and hash <${hash}> not found`, - ); - } - - let unsealed: bigint; - try { - unsealed = permit.unsealCiphertext(ciphertext); - } catch (e) { - return ResultErr(`unsealCiphertext :: ${e}`); - } - - return ResultOk(unsealed); -}; - -/** - * Uses the privateKey of `permit.sealingPair` to recursively unseal any contained `SealedItems`. - * If `item` is a single `SealedItem` it will be individually. - * NOTE: Only unseals typed `SealedItem`s returned from `FHE.sealoutputTyped` and the FHE bindings' `e____.sealTyped`. - * - * @param {any | any[]} item - Array, object, or item. Any nested `SealedItems` will be unsealed. - * @returns - Recursively unsealed data in the target type, SealedBool -> boolean, SealedAddress -> string, etc. - */ -function unseal( - item: T, - account?: string, - hash?: string, -): Result> { - const resolvedAccount = account ?? _sdkStore.getState().account; - const resolvedHash = hash ?? permitStore.getActivePermitHash(resolvedAccount); - if (resolvedAccount == null || resolvedHash == null) { - return ResultErr( - `unseal :: PermitV2 hash not provided and active PermitV2 not found`, - ); - } - - const permit = permitStore.getPermit(resolvedAccount, resolvedHash); - if (permit == null) { - return ResultErr( - `unseal :: PermitV2 with account <${account}> and hash <${hash}> not found`, - ); - } - - let unsealed: MappedUnsealedTypes; - try { - unsealed = permit.unseal(item); - } catch (e) { - return ResultErr(`unseal :: ${e}`); - } - - return ResultOk(unsealed); -} - -// Export - -export const fhenixsdk = { - store: _sdkStore, - initialize, - - createPermit, - importPermit, - selectActivePermit, - getPermit, - getPermission, - getAllPermits, - - encryptValue, - encrypt, - - unsealCiphertext, - unseal, -}; diff --git a/src/sdk/v2/types.ts b/src/sdk/v2/types.ts deleted file mode 100644 index 0d0b781..0000000 --- a/src/sdk/v2/types.ts +++ /dev/null @@ -1,401 +0,0 @@ -import { Primitive, LiteralToPrimitive } from "type-fest"; -import { SealingKey } from "../sealing"; -import { - EncryptedBool, - EncryptedUint8, - EncryptedUint16, - EncryptedUint32, - EncryptedUint64, - EncryptedUint128, - EncryptedUint256, - EncryptedAddress, -} from "../types"; - -export enum FheUType { - bool = 13, - uint8 = 0, - uint16 = 1, - uint32 = 2, - uint64 = 3, - uint128 = 4, - uint256 = 5, - address = 12, -} -export const FheUintUTypes = [ - FheUType.uint8, - FheUType.uint16, - FheUType.uint32, - FheUType.uint64, - FheUType.uint128, - FheUType.uint256, -] as const; -export const FheAllUTypes = [ - FheUType.bool, - FheUType.uint8, - FheUType.uint16, - FheUType.uint32, - FheUType.uint64, - FheUType.uint128, - FheUType.uint256, - FheUType.address, -] as const; - -export type EncryptableBool = { - data: boolean; - securityZone?: number; - utype: FheUType.bool; -}; -export type EncryptableUint8 = { - data: number; - securityZone?: number; - utype: FheUType.uint8; -}; -export type EncryptableUint16 = { - data: number; - securityZone?: number; - utype: FheUType.uint16; -}; -export type EncryptableUint32 = { - data: number; - securityZone?: number; - utype: FheUType.uint32; -}; -export type EncryptableUint64 = { - data: string | bigint; - securityZone?: number; - utype: FheUType.uint64; -}; -export type EncryptableUint128 = { - data: string | bigint; - securityZone?: number; - utype: FheUType.uint128; -}; -export type EncryptableUint256 = { - data: string | bigint; - securityZone?: number; - utype: FheUType.uint256; -}; -export type EncryptableAddress = { - data: string; - securityZone?: number; - utype: FheUType.address; -}; - -export const Encryptable = { - bool: (data: EncryptableBool["data"], securityZone = 0) => - ({ data, securityZone, utype: FheUType.bool }) as EncryptableBool, - uint8: (data: EncryptableUint8["data"], securityZone = 0) => - ({ data, securityZone, utype: FheUType.uint8 }) as EncryptableUint8, - uint16: (data: EncryptableUint16["data"], securityZone = 0) => - ({ data, securityZone, utype: FheUType.uint16 }) as EncryptableUint16, - uint32: (data: EncryptableUint32["data"], securityZone = 0) => - ({ data, securityZone, utype: FheUType.uint32 }) as EncryptableUint32, - uint64: (data: EncryptableUint64["data"], securityZone = 0) => - ({ data, securityZone, utype: FheUType.uint64 }) as EncryptableUint64, - uint128: (data: EncryptableUint128["data"], securityZone = 0) => - ({ data, securityZone, utype: FheUType.uint128 }) as EncryptableUint128, - uint256: (data: EncryptableUint256["data"], securityZone = 0) => - ({ data, securityZone, utype: FheUType.uint256 }) as EncryptableUint256, - address: (data: EncryptableAddress["data"], securityZone = 0) => - ({ data, securityZone, utype: FheUType.address }) as EncryptableAddress, -} as const; - -export type EncryptableItem = - | EncryptableBool - | EncryptableUint8 - | EncryptableUint16 - | EncryptableUint32 - | EncryptableUint64 - | EncryptableUint128 - | EncryptableUint256 - | EncryptableAddress; - -export type EncryptedItemMap = - E extends EncryptableBool - ? EncryptedBool - : E extends EncryptableUint8 - ? EncryptedUint8 - : E extends EncryptableUint16 - ? EncryptedUint16 - : E extends EncryptableUint32 - ? EncryptedUint32 - : E extends EncryptableUint64 - ? EncryptedUint64 - : E extends EncryptableUint128 - ? EncryptedUint128 - : E extends EncryptableUint256 - ? EncryptedUint256 - : E extends EncryptableAddress - ? EncryptedAddress - : never; - -export type MappedEncryptedTypes = T extends "permission" - ? PermissionV2 - : T extends Primitive - ? LiteralToPrimitive - : T extends EncryptableItem - ? EncryptedItemMap - : { - [K in keyof T]: MappedEncryptedTypes; - }; - -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export function isEncryptableItem(value: any): value is EncryptableItem { - return ( - typeof value === "object" && - value !== null && - ["string", "number", "bigint", "boolean"].includes(typeof value.data) && - typeof value.securityZone === "number" && - FheAllUTypes.includes(value.utype) - ); -} - -export type SealedBool = { - data: string; - utype: FheUType.bool; -}; -export type SealedUint = { - data: string; - utype: (typeof FheUintUTypes)[number]; -}; -export type SealedAddress = { - data: string; - utype: FheUType.address; -}; -export type SealedItem = SealedBool | SealedUint | SealedAddress; - -export type UnsealedItemMap = S extends SealedBool - ? boolean - : S extends SealedUint - ? bigint - : S extends SealedAddress - ? string - : never; - -export type MappedUnsealedTypes = T extends Primitive - ? LiteralToPrimitive - : T extends SealedItem - ? UnsealedItemMap - : { - [K in keyof T]: MappedUnsealedTypes; - }; - -// Determine if `value` is an instance of a `sealedItem` { data: string, utype: 0-5 | 12 | 13 } -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export function getAsSealedItem(value: any): SealedItem | undefined { - if ( - Array.isArray(value) && - value.length === 2 && - typeof value[0] === "string" && - FheAllUTypes.includes(parseInt(`${value[1]}`)) - ) - return { - data: value[0], - utype: value[1], - }; - - if ( - typeof value === "object" && - value !== null && - typeof value.data === "string" && - FheAllUTypes.includes(value.utype) - ) - return value as SealedItem; - - return undefined; -} - -export function isSealedBool(value: SealedItem): boolean { - return parseInt(`${value.utype}`) === FheUType.bool; -} - -export function isSealedUint(value: SealedItem): boolean { - return FheUintUTypes.includes(parseInt(`${value.utype}`)); -} - -export function isSealedAddress(value: SealedItem): boolean { - return parseInt(`${value.utype}`) === FheUType.address; -} - -export type Result = - | { success: true; data: T; error: null } - | { success: false; data: null; error: E }; - -export const ResultErr = (error: E): Result => ({ - success: false, - data: null, - error, -}); - -export const ResultOk = (data: T): Result => ({ - success: true, - data, - error: null, -}); - -// Permit V2 Types - -export interface AbstractProvider { - getChainId(): Promise; - call(tx: { to: string; data: string }): Promise; -} - -export interface AbstractSigner { - getAddress(): Promise; - signTypedData( - domain: object, - types: Record>, - value: object, - ): Promise; -} - -/** - * Type representing the full PermitV2 - */ -export type PermitV2Interface = { - /** - * Name for this permit, for organization and UI usage, not included in signature. - */ - name: string; - /** - * The type of the PermitV2 (self / sharing) - * (self) Permit that will be signed and used by the issuer - * (sharing) Permit that is signed by the issuer, but intended to be shared with recipient - * (recipient) Permit that has been received, and signed by the recipient - */ - type: "self" | "sharing" | "recipient"; - /** - * (base) User that initially created the permission, target of data fetching - */ - issuer: string; - /** - * (base) Expiration timestamp - */ - expiration: number; - /** - * (base) List of contract addresses that can be accessed with this permission - */ - contracts: string[]; - /** - * (base) List of project identifiers (strings) that can be accessed - */ - projects: string[]; - /** - * (sharing) The user that this permission will be shared with - * ** optional, use `address(0)` to disable ** - */ - recipient: string; - /** - * (issuer defined validation) An id used to query a contract to check this permissions validity - * ** optional, use `0` to disable ** - */ - validatorId: number; - /** - * (issuer defined validation) The contract to query to determine permission validity - * ** optional, user `address(0)` to disable ** - */ - validatorContract: string; - /** - * (base) The publicKey of a sealingPair used to re-encrypt `issuer`s confidential data - * (non-sharing) Populated by `issuer` - * (sharing) Populated by `recipient` - */ - sealingPair: SealingKey; - /** - * (base) `signTypedData` signature created by `issuer`. - * (base) Shared- and Self- permissions differ in signature format: (`sealingKey` absent in shared signature) - * (non-sharing) < issuer, expiration, contracts, projects, recipient, validatorId, validatorContract, sealingKey > - * (sharing) < issuer, expiration, contracts, projects, recipient, validatorId, validatorContract > - */ - issuerSignature: string; - /** - * (sharing) `signTypedData` signature created by `recipient` with format: - * (sharing) < sealingKey, issuerSignature> - * ** required for shared permits ** - */ - recipientSignature: string; -}; - -/** - * Optional additional metadata of a PermitV2 - * Can be passed into the constructor, but not necessary - * Useful for deserialization - */ -export type PermitV2Metadata = { - /** - * Chain that this permit was signed on. In part used for mock encrypt/unseal on hardhat network. - * Should not be set manually, included in metadata as part of serialization flows. - */ - _signedChainId: string | undefined; -}; - -export type PickPartial = Expand< - Omit & Partial> ->; - -export type PermitV2Satisfiers = Expand< - Pick ->; - -export type PermitV2Core = Expand< - Pick & - Partial< - Pick< - PermitV2Interface, - | "contracts" - | "projects" - | "recipient" - | "validatorId" - | "validatorContract" - > - > ->; -// export type PermitV2Options = Expand< -// Partial & Pick -// >; - -export type PermitV2Options = - // Self permit requires at minimum `issuer`, excludes `recipient` and `recipientSignature` - | Expand< - Partial> & { - type: "self"; - issuer: string; - } - > - // Sharing permit requires at minimum `issuer` and `recipient`, excludes `recipientSignature` - | Expand< - Partial> & { - type: "sharing"; - issuer: string; - recipient: string; - } - > - // Recipient permit requires the full issuer's permit - | Expand< - Partial & { - type: "recipient"; - issuer: string; - recipient: string; - issuerSignature: string; - } - >; - -export type SerializedPermitV2 = Omit & - PermitV2Metadata & { - sealingPair: { - privateKey: string; - publicKey: string; - }; - }; - -/** - * A type representing the PermissionV2 struct that is passed to PermissionedV2.sol to grant encrypted data access. - */ -export type PermissionV2 = Expand< - Omit & { - sealingKey: string; - } ->; - -// Utils -export type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; diff --git a/src/extensions/access_control/EIP712.ts b/src/types/EIP712.ts similarity index 100% rename from src/extensions/access_control/EIP712.ts rename to src/types/EIP712.ts diff --git a/src/types/base.ts b/src/types/base.ts new file mode 100644 index 0000000..bb44184 --- /dev/null +++ b/src/types/base.ts @@ -0,0 +1,54 @@ +/** + * An enumeration of supported encryption types. + * uint8, uint16, and uint32 represent the different sizes of integers that can be encrypted. + */ +export enum EncryptionTypes { + bool = "bool", + uint8 = "uint8", + uint16 = "uint16", + uint32 = "uint32", + uint64 = "uint64", + uint128 = "uint128", + uint256 = "uint256", + address = "address", +} + +/** + * Mapping of encryption types to their utype integer + */ +export enum FheUType { + bool = 13, + uint8 = 0, + uint16 = 1, + uint32 = 2, + uint64 = 3, + uint128 = 4, + uint256 = 5, + address = 12, +} + +/** + * List of All FHE uint types (excludes bool and address) + */ +export const FheUintUTypes = [ + FheUType.uint8, + FheUType.uint16, + FheUType.uint32, + FheUType.uint64, + FheUType.uint128, + FheUType.uint256, +] as const; + +/** + * List of All FHE types (uints, bool, and address) + */ +export const FheAllUTypes = [ + FheUType.bool, + FheUType.uint8, + FheUType.uint16, + FheUType.uint32, + FheUType.uint64, + FheUType.uint128, + FheUType.uint256, + FheUType.address, +] as const; diff --git a/src/types/encryptable.ts b/src/types/encryptable.ts new file mode 100644 index 0000000..cfa4881 --- /dev/null +++ b/src/types/encryptable.ts @@ -0,0 +1,124 @@ +import { Primitive, LiteralToPrimitive } from "type-fest"; +import { FheAllUTypes, FheUType } from "./base"; +import { PermissionV2 } from "./permit"; +import { + CoFheEncryptedBool, + CoFheEncryptedUint8, + CoFheEncryptedUint16, + CoFheEncryptedUint32, + CoFheEncryptedUint64, + CoFheEncryptedUint128, + CoFheEncryptedUint256, + CoFheEncryptedAddress, +} from "./encrypted"; + +export type EncryptableBool = { + data: boolean; + securityZone?: number; + utype: FheUType.bool; +}; +export type EncryptableUint8 = { + data: number | string | bigint; + securityZone?: number; + utype: FheUType.uint8; +}; +export type EncryptableUint16 = { + data: number | string | bigint; + securityZone?: number; + utype: FheUType.uint16; +}; +export type EncryptableUint32 = { + data: number | string | bigint; + securityZone?: number; + utype: FheUType.uint32; +}; +export type EncryptableUint64 = { + data: string | bigint; + securityZone?: number; + utype: FheUType.uint64; +}; +export type EncryptableUint128 = { + data: string | bigint; + securityZone?: number; + utype: FheUType.uint128; +}; +export type EncryptableUint256 = { + data: string | bigint; + securityZone?: number; + utype: FheUType.uint256; +}; +export type EncryptableAddress = { + data: string; + securityZone?: number; + utype: FheUType.address; +}; + +export const Encryptable = { + bool: (data: EncryptableBool["data"], securityZone = 0) => + ({ data, securityZone, utype: FheUType.bool }) as EncryptableBool, + uint8: (data: EncryptableUint8["data"], securityZone = 0) => + ({ data, securityZone, utype: FheUType.uint8 }) as EncryptableUint8, + uint16: (data: EncryptableUint16["data"], securityZone = 0) => + ({ data, securityZone, utype: FheUType.uint16 }) as EncryptableUint16, + uint32: (data: EncryptableUint32["data"], securityZone = 0) => + ({ data, securityZone, utype: FheUType.uint32 }) as EncryptableUint32, + uint64: (data: EncryptableUint64["data"], securityZone = 0) => + ({ data, securityZone, utype: FheUType.uint64 }) as EncryptableUint64, + uint128: (data: EncryptableUint128["data"], securityZone = 0) => + ({ data, securityZone, utype: FheUType.uint128 }) as EncryptableUint128, + uint256: (data: EncryptableUint256["data"], securityZone = 0) => + ({ data, securityZone, utype: FheUType.uint256 }) as EncryptableUint256, + address: (data: EncryptableAddress["data"], securityZone = 0) => + ({ data, securityZone, utype: FheUType.address }) as EncryptableAddress, +} as const; + +export type EncryptableItem = + | EncryptableBool + | EncryptableUint8 + | EncryptableUint16 + | EncryptableUint32 + | EncryptableUint64 + | EncryptableUint128 + | EncryptableUint256 + | EncryptableAddress; + +// COFHE Encrypt +export type CoFheEncryptedItemMap = + E extends EncryptableBool + ? CoFheEncryptedBool + : E extends EncryptableUint8 + ? CoFheEncryptedUint8 + : E extends EncryptableUint16 + ? CoFheEncryptedUint16 + : E extends EncryptableUint32 + ? CoFheEncryptedUint32 + : E extends EncryptableUint64 + ? CoFheEncryptedUint64 + : E extends EncryptableUint128 + ? CoFheEncryptedUint128 + : E extends EncryptableUint256 + ? CoFheEncryptedUint256 + : E extends EncryptableAddress + ? CoFheEncryptedAddress + : never; + +export type MappedCoFheEncryptedTypes = T extends "permission" + ? PermissionV2 + : T extends Primitive + ? LiteralToPrimitive + : T extends EncryptableItem + ? CoFheEncryptedItemMap + : { + [K in keyof T]: MappedCoFheEncryptedTypes; + }; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export function isEncryptableItem(value: any): value is EncryptableItem { + return ( + typeof value === "object" && + value !== null && + ["string", "number", "bigint", "boolean"].includes(typeof value.data) && + typeof value.securityZone === "number" && + FheAllUTypes.includes(value.utype) + ); +} diff --git a/src/types/encrypted.ts b/src/types/encrypted.ts new file mode 100644 index 0000000..e140ab7 --- /dev/null +++ b/src/types/encrypted.ts @@ -0,0 +1,46 @@ +import { FheUType } from "./base"; + +export type EncryptedNumber = { + data: Uint8Array; + securityZone: number; +}; + +export interface EncryptedBool extends EncryptedNumber {} +export interface EncryptedUint8 extends EncryptedNumber {} +export interface EncryptedUint16 extends EncryptedNumber {} +export interface EncryptedUint32 extends EncryptedNumber {} +export interface EncryptedUint64 extends EncryptedNumber {} +export interface EncryptedUint128 extends EncryptedNumber {} +export interface EncryptedUint256 extends EncryptedNumber {} +export interface EncryptedAddress extends EncryptedNumber {} + +export type CoFheEncryptedNumber = { + securityZone: number; + hash: bigint; + signature: string; + utype: FheUType; +}; +export type CoFheEncryptedBool = CoFheEncryptedNumber & { + utype: FheUType.bool; +}; +export type CoFheEncryptedUint8 = CoFheEncryptedNumber & { + utype: FheUType.uint8; +}; +export type CoFheEncryptedUint16 = CoFheEncryptedNumber & { + utype: FheUType.uint16; +}; +export type CoFheEncryptedUint32 = CoFheEncryptedNumber & { + utype: FheUType.uint32; +}; +export type CoFheEncryptedUint64 = CoFheEncryptedNumber & { + utype: FheUType.uint64; +}; +export type CoFheEncryptedUint128 = CoFheEncryptedNumber & { + utype: FheUType.uint128; +}; +export type CoFheEncryptedUint256 = CoFheEncryptedNumber & { + utype: FheUType.uint256; +}; +export type CoFheEncryptedAddress = CoFheEncryptedNumber & { + utype: FheUType.address; +}; diff --git a/src/types/index.ts b/src/types/index.ts new file mode 100644 index 0000000..7f3fa5f --- /dev/null +++ b/src/types/index.ts @@ -0,0 +1,7 @@ +export * from "./encryptable"; +export * from "./encrypted"; +export * from "./permit"; +export * from "./result"; +export * from "./sealed"; +export * from "./base"; +export * from "./sdk"; diff --git a/src/types/permit.ts b/src/types/permit.ts new file mode 100644 index 0000000..9e928c5 --- /dev/null +++ b/src/types/permit.ts @@ -0,0 +1,152 @@ +import { SealingKey } from "../sdk/sealing"; + +/** + * Type representing the full PermitV2 + */ +export type PermitV2Interface = { + /** + * Name for this permit, for organization and UI usage, not included in signature. + */ + name: string; + /** + * The type of the PermitV2 (self / sharing) + * (self) Permit that will be signed and used by the issuer + * (sharing) Permit that is signed by the issuer, but intended to be shared with recipient + * (recipient) Permit that has been received, and signed by the recipient + */ + type: "self" | "sharing" | "recipient"; + /** + * (base) User that initially created the permission, target of data fetching + */ + issuer: string; + /** + * (base) Expiration timestamp + */ + expiration: number; + /** + * (base) List of contract addresses that can be accessed with this permission + */ + contracts: string[]; + /** + * (base) List of project identifiers (strings) that can be accessed + */ + projects: string[]; + /** + * (sharing) The user that this permission will be shared with + * ** optional, use `address(0)` to disable ** + */ + recipient: string; + /** + * (issuer defined validation) An id used to query a contract to check this permissions validity + * ** optional, use `0` to disable ** + */ + validatorId: number; + /** + * (issuer defined validation) The contract to query to determine permission validity + * ** optional, user `address(0)` to disable ** + */ + validatorContract: string; + /** + * (base) The publicKey of a sealingPair used to re-encrypt `issuer`s confidential data + * (non-sharing) Populated by `issuer` + * (sharing) Populated by `recipient` + */ + sealingPair: SealingKey; + /** + * (base) `signTypedData` signature created by `issuer`. + * (base) Shared- and Self- permissions differ in signature format: (`sealingKey` absent in shared signature) + * (non-sharing) < issuer, expiration, contracts, projects, recipient, validatorId, validatorContract, sealingKey > + * (sharing) < issuer, expiration, contracts, projects, recipient, validatorId, validatorContract > + */ + issuerSignature: string; + /** + * (sharing) `signTypedData` signature created by `recipient` with format: + * (sharing) < sealingKey, issuerSignature> + * ** required for shared permits ** + */ + recipientSignature: string; +}; + +/** + * Optional additional metadata of a PermitV2 + * Can be passed into the constructor, but not necessary + * Useful for deserialization + */ +export type PermitV2Metadata = { + /** + * Chain that this permit was signed on. In part used for mock encrypt/unseal on hardhat network. + * Should not be set manually, included in metadata as part of serialization flows. + */ + _signedChainId: string | undefined; +}; + +export type PickPartial = Expand< + Omit & Partial> +>; + +export type PermitV2Satisfiers = Expand< + Pick +>; + +export type PermitV2Core = Expand< + Pick & + Partial< + Pick< + PermitV2Interface, + | "contracts" + | "projects" + | "recipient" + | "validatorId" + | "validatorContract" + > + > +>; +// export type PermitV2Options = Expand< +// Partial & Pick +// >; + +export type PermitV2Options = + // Self permit requires at minimum `issuer`, excludes `recipient` and `recipientSignature` + | Expand< + Partial> & { + type: "self"; + issuer: string; + } + > + // Sharing permit requires at minimum `issuer` and `recipient`, excludes `recipientSignature` + | Expand< + Partial> & { + type: "sharing"; + issuer: string; + recipient: string; + } + > + // Recipient permit requires the full issuer's permit + | Expand< + Partial & { + type: "recipient"; + issuer: string; + recipient: string; + issuerSignature: string; + } + >; + +export type SerializedPermitV2 = Omit & + PermitV2Metadata & { + sealingPair: { + privateKey: string; + publicKey: string; + }; + }; + +/** + * A type representing the PermissionV2 struct that is passed to PermissionedV2.sol to grant encrypted data access. + */ +export type PermissionV2 = Expand< + Omit & { + sealingKey: string; + } +>; + +// Utils +export type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; diff --git a/src/types/result.ts b/src/types/result.ts new file mode 100644 index 0000000..8aae068 --- /dev/null +++ b/src/types/result.ts @@ -0,0 +1,15 @@ +export type Result = + | { success: true; data: T; error: null } + | { success: false; data: null; error: E }; + +export const ResultErr = (error: E): Result => ({ + success: false, + data: null, + error, +}); + +export const ResultOk = (data: T): Result => ({ + success: true, + data, + error: null, +}); diff --git a/src/types/sdk.ts b/src/types/sdk.ts new file mode 100644 index 0000000..66102c0 --- /dev/null +++ b/src/types/sdk.ts @@ -0,0 +1,36 @@ +export interface AbstractProvider { + getChainId(): Promise; + getNetwork(): Promise<{ chainId: string }>; + call(tx: { to: string; data: string }): Promise; +} + +export interface AbstractSigner { + getAddress(): Promise; + signTypedData( + domain: object, + types: Record>, + value: object, + ): Promise; +} + +export type PermitV2AccessRequirements = { + contracts: string[]; + projects: string[]; +}; + +type PermitV2AccessRequirementsParams = + | { + contracts?: never[]; + projects: string[]; + } + | { + contracts: string[]; + projects?: never[]; + }; + +export type InitializationParams = { + provider: AbstractProvider; + signer?: AbstractSigner; + securityZones?: number[]; + coFheUrl?: string; +} & PermitV2AccessRequirementsParams; diff --git a/src/types/sealed.ts b/src/types/sealed.ts new file mode 100644 index 0000000..53b7899 --- /dev/null +++ b/src/types/sealed.ts @@ -0,0 +1,69 @@ +import { LiteralToPrimitive, Primitive } from "type-fest"; +import { FheAllUTypes, FheUintUTypes, FheUType } from "./base"; + +export type SealedBool = { + data: string; + utype: FheUType.bool; +}; +export type SealedUint = { + data: string; + utype: (typeof FheUintUTypes)[number]; +}; +export type SealedAddress = { + data: string; + utype: FheUType.address; +}; +export type SealedItem = SealedBool | SealedUint | SealedAddress; + +export type UnsealedItemMap = S extends SealedBool + ? boolean + : S extends SealedUint + ? bigint + : S extends SealedAddress + ? string + : never; + +export type MappedUnsealedTypes = T extends Primitive + ? LiteralToPrimitive + : T extends SealedItem + ? UnsealedItemMap + : { + [K in keyof T]: MappedUnsealedTypes; + }; + +// Determine if `value` is an instance of a `sealedItem` { data: string, utype: 0-5 | 12 | 13 } +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export function getAsSealedItem(value: any): SealedItem | undefined { + if ( + Array.isArray(value) && + value.length === 2 && + typeof value[0] === "string" && + FheAllUTypes.includes(parseInt(`${value[1]}`)) + ) + return { + data: value[0], + utype: value[1], + }; + + if ( + typeof value === "object" && + value !== null && + typeof value.data === "string" && + FheAllUTypes.includes(value.utype) + ) + return value as SealedItem; + + return undefined; +} + +export function isSealedBool(value: SealedItem): boolean { + return parseInt(`${value.utype}`) === FheUType.bool; +} + +export function isSealedUint(value: SealedItem): boolean { + return FheUintUTypes.includes(parseInt(`${value.utype}`)); +} + +export function isSealedAddress(value: SealedItem): boolean { + return parseInt(`${value.utype}`) === FheUType.address; +} diff --git a/test/instance.test.ts b/test/instance.test.ts deleted file mode 100644 index ed6c608..0000000 --- a/test/instance.test.ts +++ /dev/null @@ -1,412 +0,0 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -/* eslint-disable @typescript-eslint/no-unused-vars */ -import { JsonRpcProvider } from "ethers"; -import { beforeAll, describe, expect, it } from "vitest"; -import { - createTfhePublicKey, - FhenixClient, - FhenixClientSync, - GenerateSealingKey, - getPermit, - Permit, - SealingKey, -} from "../lib/esm"; -import { MockProvider } from "./utils"; - -describe("Instance", () => { - let tfhePublicKey: string; - const contractAddress = "0x1c786b8ca49D932AFaDCEc00827352B503edf16c"; - - const createAsyncSyncInstancePair = async (provider: any) => { - const instanceAsync = new FhenixClient({ provider }); - - const instanceSync = await FhenixClientSync.create({ provider }); - - return [ - { type: "Async", instance: instanceAsync }, - { type: "Sync", instance: instanceSync }, - ]; - }; - - beforeAll(async () => { - tfhePublicKey = createTfhePublicKey(); - }); - - it("creates an instance", async () => { - const instances = await createAsyncSyncInstancePair( - new MockProvider(tfhePublicKey), - ); - - for (let i = 0; i < instances.length; i++) { - const { type, instance } = instances[i]; - - expect(instance.encrypt_bool).toBeDefined(); - expect(instance.encrypt_uint8).toBeDefined(); - expect(instance.encrypt_uint16).toBeDefined(); - expect(instance.encrypt_uint32).toBeDefined(); - expect(instance.encrypt_uint64).toBeDefined(); - expect(instance.encrypt_uint128).toBeDefined(); - expect(instance.encrypt_uint256).toBeDefined(); - expect(instance.encrypt_address).toBeDefined(); - expect(instance.unseal).toBeDefined(); - expect(instance.storePermit).toBeDefined(); - expect(instance.encrypt).toBeDefined(); - expect(instance.hasPermit).toBeDefined(); - } - }); - - it("creates an instance with ethers provider - unreachable endpoint", async () => { - const provider = new JsonRpcProvider("http://localhost:1234") as any; - // prevent endless fetching - await provider.on("error", (_) => provider.destroy()); - - await expect( - new FhenixClient({ provider }).fhePublicKeys[0], - ).rejects.toThrow( - /.*Error while requesting network public key from provider for security zone 0:*/i, - ); - - // SYNC - - const providerSync = new JsonRpcProvider("http://localhost:1234") as any; - // prevent endless fetching - await providerSync.on("error", (_) => providerSync.destroy()); - - await expect( - FhenixClientSync.create({ provider: providerSync }), - ).rejects.toThrow( - /.*Error while requesting network public key from provider for security zone 0:*/i, - ); - }); - - it("creates an unsupported provider", async () => { - const provider = new JsonRpcProvider("http://localhost:1234") as any; - // prevent endless fetching - await provider.on("error", (_) => provider.destroy()); - - // destroy send method - Object.assign(provider, { send: undefined }); - - await expect( - new FhenixClient({ provider }).fhePublicKeys[0], - ).rejects.toThrow( - "Received unsupported provider. 'send' or 'request' method not found", - ); - - // SYNC - - const providerSync = new JsonRpcProvider("http://localhost:1234") as any; - // prevent endless fetching - await providerSync.on("error", (_) => providerSync.destroy()); - - // destroy send method - Object.assign(providerSync, { send: undefined }); - - await expect( - FhenixClientSync.create({ provider: providerSync }), - ).rejects.toThrow( - "Received unsupported provider. 'send' or 'request' method not found", - ); - }); - - it("skips public key fetching", async () => { - const mockProvider = new MockProvider(BigInt(10)); - const instance = new FhenixClient({ - provider: mockProvider, - skipPubKeyFetch: true, - }); - expect(instance.encrypt_bool).toBeDefined(); - expect(instance.encrypt_uint8).toBeDefined(); - expect(instance.encrypt_uint16).toBeDefined(); - expect(instance.encrypt_uint32).toBeDefined(); - expect(instance.encrypt_uint64).toBeDefined(); - expect(instance.encrypt_uint128).toBeDefined(); - expect(instance.encrypt_uint256).toBeDefined(); - expect(instance.encrypt_address).toBeDefined(); - expect(instance.unseal).toBeDefined(); - expect(instance.storePermit).toBeDefined(); - expect(instance.encrypt).toBeDefined(); - expect(instance.hasPermit).toBeDefined(); - }); - - it("fails to create an instance", async () => { - const secondProvider = new MockProvider(BigInt(10)); - await expect( - new FhenixClient({ provider: secondProvider }).fhePublicKeys[0], - ).rejects.toThrow("Error using publicKey from provider: expected string"); - - // SYNC - - await expect( - FhenixClientSync.create({ provider: secondProvider }), - ).rejects.toThrow("Error using publicKey from provider: expected string"); - }); - - it("creates an instance and uses it to unseal data", async () => { - const keypair = await GenerateSealingKey(); - const value = 937387; - - const permit: Permit = { - contractAddress, - publicKey: keypair.publicKey, - sealingKey: keypair, - signature: "", - }; - - const provider = new MockProvider(tfhePublicKey); - const signerAddress = await (await provider.getSigner()).getAddress(); - - const instances = await createAsyncSyncInstancePair(provider); - - for (let i = 0; i < instances.length; i++) { - const { type, instance } = instances[i]; - - instance.storePermit(permit, signerAddress); - - const ciphertext = SealingKey.seal(value, keypair.publicKey); - - const cleartext = instance.unseal( - contractAddress, - ciphertext, - signerAddress, - ); - expect(cleartext).toBe(BigInt(value)); - } - }); - - it("checks that encrypting a malformed input throws the correct error", async () => { - const provider = new MockProvider(tfhePublicKey); - - const instanceAsync = new FhenixClient({ provider }); - - expect(() => instanceAsync.encrypt_uint8(undefined as any)).rejects.toThrow( - "Expected value which is `number`, received value of type `undefined`.", - ); - expect(() => instanceAsync.encrypt_uint8(undefined as any)).rejects.toThrow( - "Expected value which is `number`, received value of type `undefined`.", - ); - expect(() => - instanceAsync.encrypt_uint16(undefined as any), - ).rejects.toThrow( - "Expected value which is `number`, received value of type `undefined`.", - ); - expect(() => - instanceAsync.encrypt_uint32(undefined as any), - ).rejects.toThrow( - "Expected value which is `number`, received value of type `undefined`.", - ); - expect(() => - instanceAsync.encrypt_uint64(undefined as any), - ).rejects.toThrow( - "Expected value which is `bigint or hex string`, received value of type `undefined`.", - ); - expect(() => - instanceAsync.encrypt_uint128(undefined as any), - ).rejects.toThrow( - "Expected value which is `bigint or hex string`, received value of type `undefined`.", - ); - expect(() => - instanceAsync.encrypt_uint256(undefined as any), - ).rejects.toThrow( - "Expected value which is `bigint or hex string`, received value of type `undefined`.", - ); - expect(() => - instanceAsync.encrypt_address(undefined as any), - ).rejects.toThrow( - "Expected value which is `bigint or hex string`, received value of type `undefined`.", - ); - expect(() => instanceAsync.encrypt(undefined as any)).rejects.toThrow( - "Expected value which is `number`, received value of type `undefined`.", - ); - - expect(() => - instanceAsync.encrypt_uint8("wrong value" as any), - ).rejects.toThrow( - "Expected value which is `number`, received value of type `string`.", - ); - expect(() => - instanceAsync.encrypt_uint16("wrong value" as any), - ).rejects.toThrow( - "Expected value which is `number`, received value of type `string`.", - ); - expect(() => - instanceAsync.encrypt_uint32("wrong value" as any), - ).rejects.toThrow( - "Expected value which is `number`, received value of type `string`.", - ); - expect(() => instanceAsync.encrypt_uint64(222 as any)).rejects.toThrow( - "Expected value which is `bigint or hex string`, received value of type `number`.", - ); - expect(() => instanceAsync.encrypt_uint128(222 as any)).rejects.toThrow( - "Expected value which is `bigint or hex string`, received value of type `number`.", - ); - expect(() => instanceAsync.encrypt_uint256(222 as any)).rejects.toThrow( - "Expected value which is `bigint or hex string`, received value of type `number`.", - ); - expect(() => instanceAsync.encrypt_address(222 as any)).rejects.toThrow( - "Expected value which is `bigint or hex string`, received value of type `number`.", - ); - expect(() => instanceAsync.encrypt("wrong value" as any)).rejects.toThrow( - "Expected value which is `number`, received value of type `string`.", - ); - - // Sync - - const instanceSync = await FhenixClientSync.create({ provider }); - - expect(() => instanceSync.encrypt_uint8(undefined as any)).toThrow( - "Expected value which is `number`, received value of type `undefined`.", - ); - expect(() => instanceSync.encrypt_uint8(undefined as any)).toThrow( - "Expected value which is `number`, received value of type `undefined`.", - ); - expect(() => instanceSync.encrypt_uint16(undefined as any)).toThrow( - "Expected value which is `number`, received value of type `undefined`.", - ); - expect(() => instanceSync.encrypt_uint32(undefined as any)).toThrow( - "Expected value which is `number`, received value of type `undefined`.", - ); - expect(() => instanceSync.encrypt_uint64(undefined as any)).toThrow( - "Expected value which is `bigint or hex string`, received value of type `undefined`.", - ); - expect(() => instanceSync.encrypt_uint128(undefined as any)).toThrow( - "Expected value which is `bigint or hex string`, received value of type `undefined`.", - ); - expect(() => instanceSync.encrypt_uint256(undefined as any)).toThrow( - "Expected value which is `bigint or hex string`, received value of type `undefined`.", - ); - expect(() => instanceSync.encrypt_address(undefined as any)).toThrow( - "Expected value which is `bigint or hex string`, received value of type `undefined`.", - ); - expect(() => instanceSync.encrypt(undefined as any)).toThrow( - "Expected value which is `number`, received value of type `undefined`.", - ); - - expect(() => instanceSync.encrypt_uint8("wrong value" as any)).toThrow( - "Expected value which is `number`, received value of type `string`.", - ); - expect(() => instanceSync.encrypt_uint16("wrong value" as any)).toThrow( - "Expected value which is `number`, received value of type `string`.", - ); - expect(() => instanceSync.encrypt_uint32("wrong value" as any)).toThrow( - "Expected value which is `number`, received value of type `string`.", - ); - expect(() => instanceSync.encrypt_uint64(222 as any)).toThrow( - "Expected value which is `bigint or hex string`, received value of type `number`.", - ); - expect(() => instanceSync.encrypt_uint128(222 as any)).toThrow( - "Expected value which is `bigint or hex string`, received value of type `number`.", - ); - expect(() => instanceSync.encrypt_uint256(222 as any)).toThrow( - "Expected value which is `bigint or hex string`, received value of type `number`.", - ); - expect(() => instanceSync.encrypt_address(222 as any)).toThrow( - "Expected value which is `bigint or hex string`, received value of type `number`.", - ); - expect(() => instanceSync.encrypt("wrong value" as any)).toThrow( - "Expected value which is `number`, received value of type `string`.", - ); - }); - - it("checks that encrypting an input succeeds", async () => { - const provider = new MockProvider(tfhePublicKey); - - const instanceAsync = new FhenixClient({ provider }); - await instanceAsync.encrypt_bool(true); - - const instanceSync = await FhenixClientSync.create({ provider }); - instanceSync.encrypt_bool(true); - }); - - it("check that a permit gets generated, loaded to the instance and can unseal data for a specific contract", async () => { - const provider = new MockProvider(tfhePublicKey); - const signerAddress = await (await provider.getSigner()).getAddress(); - const value = 100; - - const instances = await createAsyncSyncInstancePair(provider); - for (let i = 0; i < instances.length; i++) { - const { type, instance } = instances[i]; - - const permit = await getPermit(contractAddress, provider); - - const sealed = SealingKey.seal(value, permit!.sealingKey.publicKey); - - instance.storePermit(permit!, signerAddress); - - const cleartext = instance.unseal(contractAddress, sealed, signerAddress); - expect(cleartext).toBe(BigInt(value)); - } - }); - - it("checks that a permit will not decrypt data for a different contract", async () => { - const provider = new MockProvider(tfhePublicKey); - const signerAddress = await (await provider.getSigner()).getAddress(); - const value = 100; - - const instances = await createAsyncSyncInstancePair(provider); - for (let i = 0; i < instances.length; i++) { - const { type, instance } = instances[i]; - - const permit = await getPermit(contractAddress, provider); - - const sealed = SealingKey.seal(value, permit!.sealingKey.publicKey); - - instance.storePermit(permit!, signerAddress); - - expect(() => - instance.unseal("0x000000000000000000000000000", sealed, signerAddress), - ).toThrow( - /Address 0x000000000000000000000000000 is not valid EVM address/, - ); - } - }); - - it("Checks with a real chain that we can create an instance and use it", async () => { - const provider = new JsonRpcProvider("http://localhost:8545") as any; - - const instance = new FhenixClient({ - provider, - }); - - await instance.encrypt(10, undefined, 0); - - // SYNC - - const instanceSync = await FhenixClientSync.create({ - provider, - }); - - instanceSync.encrypt(10, undefined, 0); - }); - - it("sync fhenix client should revert on second uninitialized security zone", async () => { - const provider = new JsonRpcProvider("http://localhost:8545") as any; - - const instanceSync = await FhenixClientSync.create({ - provider, - }); - - expect(() => instanceSync.encrypt(11, undefined, 1)).toThrow( - "Public key for security zone 1 not initialized", - ); - }); - - it("encrypt with instance on second security zone", async () => { - const provider = new JsonRpcProvider("http://localhost:8545") as any; - - const instance = new FhenixClient({ - provider, - }); - - await instance.encrypt(11, undefined, 1); - - // SYNC - - const instanceSync = await FhenixClientSync.create({ - provider, - securityZones: [0, 1], - }); - - instanceSync.encrypt(11, undefined, 1); - }); -}); diff --git a/test/permit.test.ts b/test/permit.test.ts deleted file mode 100644 index 26dbf88..0000000 --- a/test/permit.test.ts +++ /dev/null @@ -1,174 +0,0 @@ -/** - * @vitest-environment happy-dom - */ - -/* eslint-disable @typescript-eslint/no-unused-vars */ -/* eslint-disable @typescript-eslint/no-explicit-any */ -import { beforeAll, describe, expect, it } from "vitest"; -import { - createTfhePublicKey, - FhenixClient, - FhenixClientSync, - GenerateSealingKey, - getAllExistingPermits, - getPermit, - Permit, - SealingKey, -} from "../lib/esm"; -import { MockProvider } from "./utils"; -import { afterEach } from "vitest"; - -describe("Permit Tests", () => { - let tfhePublicKey: string; - let provider: MockProvider; - let signerAddress: string; - const contractAddress = "0x1c786b8ca49D932AFaDCEc00827352B503edf16c"; - const contractAddress2 = "0xB170fC5BAC4a87A63fC84653Ee7e0db65CC62f96"; - - const createAsyncSyncInstancePair = async (provider: any) => { - const instanceAsync = new FhenixClient({ provider }); - - const instanceSync = await FhenixClientSync.create({ provider }); - - return [ - { type: "Async", instance: instanceAsync }, - { type: "Sync", instance: instanceSync }, - ]; - }; - - beforeAll(async () => { - tfhePublicKey = createTfhePublicKey(); - provider = new MockProvider(tfhePublicKey); - signerAddress = await (await provider.getSigner()).getAddress(); - }); - - afterEach(() => { - localStorage.clear(); - }); - - it("should be in happy-dom environment", async () => { - expect(typeof window).not.toBe("undefined"); - }); - - it("creates an instance", async () => { - const instance = new FhenixClient({ provider }); - expect(instance).to.not.be.null; - - const instanceSync = await FhenixClientSync.create({ provider }); - expect(instanceSync).to.not.be.null; - }); - - it("creates an instance with a permit", async () => { - const keypair = await GenerateSealingKey(); - - const permit: Permit = { - contractAddress, - publicKey: keypair.publicKey, - sealingKey: keypair, - signature: "", - }; - - const instances = await createAsyncSyncInstancePair(provider); - for (let i = 0; i < instances.length; i++) { - const { type, instance } = instances[i]; - - instance.storePermit(permit, signerAddress); - - const value = 937387; - const ciphertext = SealingKey.seal(value, keypair.publicKey); - - const cleartext = instance.unseal( - contractAddress, - ciphertext, - signerAddress, - ); - expect(cleartext).toBe(BigInt(value)); - } - }); - - it("try to load permit without auto generating a new one", async () => { - const permit = await getPermit(contractAddress, provider, false); - expect(permit).toBe(null); - }); - - it("generates a permit and loads it to the instance", async () => { - await expect(getPermit(undefined as any, provider)).rejects.toThrow( - "Address undefined is not valid EVM address", - ); - await expect( - getPermit(contractAddress.slice(0, 10), provider), - ).rejects.toThrow("Address 0x1c786b8c is not valid EVM address"); - await expect(getPermit(contractAddress, undefined as any)).rejects.toThrow( - "Missing provider", - ); - - const permit = await getPermit(contractAddress, provider); - expect(permit!.contractAddress).toBe(contractAddress); - expect(permit!.signature.startsWith("0x")).toBe(true); - - const instances = await createAsyncSyncInstancePair(provider); - for (let i = 0; i < instances.length; i++) { - const { type, instance } = instances[i]; - - instance.storePermit(permit!, signerAddress); - expect(instance.hasPermit(contractAddress, signerAddress)).toBeTruthy(); - } - }); - - it("returns a saved permit from localStorage", async () => { - const permit = await getPermit(contractAddress, provider); - - const savedPermit = await getPermit(contractAddress, provider); - expect(JSON.stringify(savedPermit)).toEqual(JSON.stringify(permit)); - }); - - it("decrypts data using the sealing key from the permit", async () => { - const permit = await getPermit(contractAddress, provider); - - const instances = await createAsyncSyncInstancePair(provider); - for (let i = 0; i < instances.length; i++) { - const { type, instance } = instances[i]; - - instance.storePermit(permit!, signerAddress); - - const value = 89290; - const ciphertext = SealingKey.seal(value, permit!.publicKey); - const cleartext = permit!.sealingKey.unseal(ciphertext); - expect(cleartext).toBe(BigInt(value)); - } - }); - - it("loading all existing permits succeeds", async () => { - const permit = await getPermit(contractAddress, provider); - const permit2 = await getPermit(contractAddress2, provider); - - const existingPermits = await getAllExistingPermits( - await (await provider.getSigner()).getAddress(), - ); - - expect(JSON.stringify(existingPermits[contractAddress])).toEqual( - JSON.stringify(permit), - ); - expect(JSON.stringify(existingPermits[contractAddress2])).toEqual( - JSON.stringify(permit2), - ); - }); - - it("loading all existing permits via client succeeds", async () => { - const instance = new FhenixClient({ provider }); - - const permit = await instance.generatePermit(contractAddress); - const permit2 = await instance.generatePermit(contractAddress2); - - const existingPermits = instance.loadAllPermitsFromLocalStorage( - await (await provider.getSigner()).getAddress(), - ); - - expect(JSON.stringify(existingPermits[contractAddress])).toEqual( - JSON.stringify(permit), - ); - expect(JSON.stringify(existingPermits[contractAddress2])).toEqual( - JSON.stringify(permit2), - ); - }); -}); diff --git a/test/v2.sdk.test.ts b/test/v2.sdk.test.ts index 5ced0fb..385de40 100644 --- a/test/v2.sdk.test.ts +++ b/test/v2.sdk.test.ts @@ -5,40 +5,28 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ /* eslint-disable @typescript-eslint/no-explicit-any */ import { beforeAll, describe, expect, expectTypeOf, it } from "vitest"; -import { - AdaWallet, - BobWallet, - MockProvider, - MockSigner, - uint8ArrayToString, -} from "./utils"; +import { AdaWallet, BobWallet, MockProvider, MockSigner } from "./utils"; import { afterEach } from "vitest"; import { getAddress } from "ethers"; import { + CoFheEncryptedAddress, + CoFheEncryptedBool, + CoFheEncryptedUint64, + CoFheEncryptedUint8, createTfhePublicKey, Encryptable, - EncryptedAddress, - EncryptedBool, - EncryptedUint64, - EncryptedUint8, - EncryptionTypes, fhenixsdk, + FheUType, PermissionV2, - permitStore, PermitV2, + Result, SealedAddress, SealedBool, SealedUint, SealingKey, } from "../lib/esm"; -import { _permitStore } from "../lib/esm/sdk/v2/permit.store"; -import { - _store_chainId, - _store_getFheKey, - InitParams, -} from "../lib/esm/sdk/v2/sdk.store"; -import { FheUType } from "../lib/esm/sdk/v2/types"; -import { Result } from "../src/sdk/v2/types"; +import { _permitStore, permitStore } from "../lib/esm/sdk/permit/store"; +import { InitializationParams } from "../src"; describe("Sdk Tests", () => { let bobPublicKey: string; @@ -55,12 +43,14 @@ describe("Sdk Tests", () => { const contractAddress2 = "0xB170fC5BAC4a87A63fC84653Ee7e0db65CC62f96"; const counterProjectId = "COUNTER"; const uniswapProjectId = "UNISWAP"; + const coFheUrl = "http://127.0.0.1:8448"; const initSdkWithBob = async () => { return fhenixsdk.initialize({ provider: bobProvider, signer: bobSigner, projects: [counterProjectId], + coFheUrl, }); }; const initSdkWithAda = async () => { @@ -68,6 +58,7 @@ describe("Sdk Tests", () => { provider: adaProvider, signer: adaSigner, projects: [counterProjectId], + coFheUrl, }); }; @@ -109,7 +100,8 @@ describe("Sdk Tests", () => { const initWithoutProviderResult = await fhenixsdk.initialize({ // provider: bobProvider, // signer: bobSigner, - } as unknown as InitParams); + coFheUrl, + } as unknown as InitializationParams); expect(initWithoutProviderResult.success).toEqual(false); expect(initWithoutProviderResult.error).toEqual( "initialize :: missing provider - Please provide an AbstractProvider interface", @@ -119,7 +111,8 @@ describe("Sdk Tests", () => { provider: bobProvider, signer: bobSigner, securityZones: [], - } as unknown as InitParams); + coFheUrl, + } as unknown as InitializationParams); expect(initWithoutSecurityZonesResult.success).toEqual(false); expect(initWithoutSecurityZonesResult.error).toEqual( "initialize :: a list of securityZones was provided, but it is empty", @@ -158,6 +151,55 @@ describe("Sdk Tests", () => { it("encrypt", async () => { await initSdkWithBob(); + const nestedEncryptArr = await fhenixsdk.encrypt([ + Encryptable.uint8(8), + Encryptable.uint64(64n), + Encryptable.uint256(256n), + ] as const); + + expect(nestedEncryptArr.success).to.equal(true); + if (!nestedEncryptArr.success) return; + + nestedEncryptArr.data.forEach((coFheEncryptedInput) => { + expect(coFheEncryptedInput.securityZone).to.equal(0); + // (example hash: 53077133949660154852355738254566001437975918234711977485445625445799159290262n) + // Observed lengths [77, 78]. Please update array if you are here because this test failed. - arch + expect(coFheEncryptedInput.hash.toString().length).to.be.gte(76); + // TODO: Fix after real signature is included (test will fail) + expect(coFheEncryptedInput.signature).to.equal("Haim"); + }); + + expect(nestedEncryptArr.data[0].utype).to.equal(FheUType.uint8); + expect(nestedEncryptArr.data[1].utype).to.equal(FheUType.uint64); + expect(nestedEncryptArr.data[2].utype).to.equal(FheUType.uint256); + + const nestedEncryptObj = await fhenixsdk.encrypt({ + uint8: Encryptable.uint8(8), + uint64: Encryptable.uint64(64n), + uint256: Encryptable.uint256(256n), + } as const); + + expect(nestedEncryptObj.success).to.equal(true); + if (!nestedEncryptObj.success) return; + + Object.entries(nestedEncryptObj.data).forEach( + ([utype, coFheEncryptedInput]) => { + expect(coFheEncryptedInput.securityZone).to.equal(0); + expect(coFheEncryptedInput.utype).to.equal( + FheUType[utype as unknown as FheUType], + ); + // (example hash: 53077133949660154852355738254566001437975918234711977485445625445799159290262n) + // Observed lengths [77, 78]. Please update array if you are here because this test failed. - arch + expect(coFheEncryptedInput.hash.toString().length).to.be.gte(76); + // TODO: Fix after real signature is included (test will fail) + expect(coFheEncryptedInput.signature).to.equal("Haim"); + }, + ); + }); + + it("encrypt (type check)", async () => { + await initSdkWithBob(); + await fhenixsdk.createPermit({ type: "self", issuer: bobAddress, @@ -166,10 +208,10 @@ describe("Sdk Tests", () => { const PermissionSlot = "permission" as const; - const injectedPermission = fhenixsdk.encrypt(PermissionSlot); + const injectedPermission = await fhenixsdk.encrypt(PermissionSlot); expectTypeOf(injectedPermission.data!).toEqualTypeOf(); - const nestedEncrypt = fhenixsdk.encrypt([ + const nestedEncrypt = await fhenixsdk.encrypt([ PermissionSlot, { a: Encryptable.bool(false), b: Encryptable.uint64(10n), c: "hello" }, ["hello", 20n, Encryptable.address(contractAddress)], @@ -178,9 +220,9 @@ describe("Sdk Tests", () => { type ExpectedEncryptedType = [ PermissionV2, - Readonly<{ a: EncryptedBool; b: EncryptedUint64; c: string }>, - Readonly<[string, bigint, EncryptedAddress]>, - EncryptedUint8, + Readonly<{ a: CoFheEncryptedBool; b: CoFheEncryptedUint64; c: string }>, + Readonly<[string, bigint, CoFheEncryptedAddress]>, + CoFheEncryptedUint8, ]; expectTypeOf>().toEqualTypeOf( @@ -391,52 +433,57 @@ describe("Sdk Tests", () => { expect(nestedCleartext).toEqual(expectedCleartext); }); - it("hardhat encrypt/unseal", async () => { - const hardhatChainId = "31337"; - - bobProvider = new MockProvider(bobPublicKey, BobWallet, hardhatChainId); - bobSigner = await bobProvider.getSigner(); - - // Should initialize correctly, but fhe public key for hardhat not set - await fhenixsdk.initialize({ - provider: bobProvider, - signer: bobSigner, - projects: [counterProjectId], - }); - await fhenixsdk.createPermit(); - - expect(fhenixsdk.store.getState().chainId).toEqual(hardhatChainId); - expect(_store_chainId()).toEqual(hardhatChainId); - - expect(_store_getFheKey(hardhatChainId)).toEqual(undefined); - expect(fhenixsdk.store.getState().fheKeys).toEqual({}); - - // `unsealCiphertext` - - const encryptedValue = fhenixsdk.encryptValue(5, EncryptionTypes.uint8); - const unsealedValue = fhenixsdk.unsealCiphertext( - uint8ArrayToString(encryptedValue.data!.data), - ); - expect(unsealedValue.success).toEqual(true); - expect(unsealedValue.data).toEqual(5n); - - // `unseal` - - const intValue = 5; - const boolValue = false; - - const [encryptedInt, encryptedBool] = fhenixsdk.encrypt([ - Encryptable.uint8(intValue), - Encryptable.bool(boolValue), - ]).data!; - - const sealed = [ - { data: uint8ArrayToString(encryptedInt.data), utype: FheUType.uint8 }, - { data: uint8ArrayToString(encryptedBool.data), utype: FheUType.bool }, - ]; - - const [unsealedInt, unsealedBool] = fhenixsdk.unseal(sealed).data!; - expect(unsealedInt).to.eq(BigInt(intValue)); - expect(unsealedBool).to.eq(boolValue); - }); + // TODO: Re-enable once hardhat integration with CoFHE established + // it("hardhat encrypt/unseal", async () => { + // const hardhatChainId = "31337"; + + // bobProvider = new MockProvider(bobPublicKey, BobWallet, hardhatChainId); + // bobSigner = await bobProvider.getSigner(); + + // // Should initialize correctly, but fhe public key for hardhat not set + // await fhenixsdk.initialize({ + // provider: bobProvider, + // signer: bobSigner, + // projects: [counterProjectId], + // }); + // await fhenixsdk.createPermit(); + + // // Chain id set to hardhat Chain id + // expect(fhenixsdk.store.getState().chainId).toEqual(hardhatChainId); + // expect(fhenixsdk.store.getState().fheKeys).toEqual({}); + + // // `unsealCiphertext` + + // // const encryptedValue = fhenixsdk.encryptValue(5, EncryptionTypes.uint8); + // // const unsealedValue = fhenixsdk.unsealCiphertext( + // // uint8ArrayToString(encryptedValue.data!.data), + // // ); + // // expect(unsealedValue.success).toEqual(true); + // // expect(unsealedValue.data).toEqual(5n); + + // // `unseal` + + // const intValue = 5; + // const boolValue = false; + + // const encryptResult = ( + // await fhenixsdk.encrypt([ + // Encryptable.uint8(intValue), + // Encryptable.bool(boolValue), + // ]) + // ); + // expect(encryptResult.success).to.equal(true) + // if (!encryptResult.success) return; + + // const [ encryptedInt, encryptedBool ] = encryptResult.data + + // const sealed = [ + // { data: uint8ArrayToString(encryptedInt), utype: FheUType.uint8 }, + // { data: uint8ArrayToString(encryptedBool), utype: FheUType.bool }, + // ]; + + // const [unsealedInt, unsealedBool] = fhenixsdk.unseal(sealed).data!; + // expect(unsealedInt).to.eq(BigInt(intValue)); + // expect(unsealedBool).to.eq(boolValue); + // }); });